获取导入的本体列表——OWL API

我正在使用 OWL API 以便从本体中获取信息。我需要检索加载的本体中使用的所有导入本体的列表。


OWL API 中是否有方法可以完成此任务?


我加载本体的代码是:


import org.semanticweb.owlapi.apibinding.OWLManager;

import org.semanticweb.owlapi.model.IRI;

import org.semanticweb.owlapi.model.OWLAnnotationProperty;

import org.semanticweb.owlapi.model.OWLClass;

import org.semanticweb.owlapi.model.OWLDataFactory;

import org.semanticweb.owlapi.model.OWLDataProperty;

import org.semanticweb.owlapi.model.OWLImportsDeclaration;

import org.semanticweb.owlapi.model.OWLObjectProperty;

import org.semanticweb.owlapi.model.OWLOntology;

import org.semanticweb.owlapi.model.OWLOntologyCreationException;

import org.semanticweb.owlapi.model.OWLOntologyManager;


public class NSExtractor {


@SuppressWarnings("deprecation")

public static void main(String[] args) throws FileNotFoundException, OWLOntologyCreationException {


    @SuppressWarnings("resource")       

    File testFile= new File("C:\\acco.n3");


    OWLOntologyManager m = OWLManager.createOWLOntologyManager();

    OWLDataFactory f = OWLManager.getOWLDataFactory();

    OWLOntology o; 

    o = m.loadOntologyFromOntologyDocument(testFile);


炎炎设计
浏览 293回答 2
2回答

jeck猫

o.importsDeclarations()将为您提供此本体的导入声明流。这是使用owl:imports属性声明的 IRI 列表。注意:这些是声明的导入,而不是导入闭包 - 不同之处在于导入闭包包括本体中导入的本体和这些本体导入的本体 - 递归地包括导入的本体。o.importsClosure() 将提供在解析您的本体期间加载的所有本体。

慕后森

经过大量搜索,我找到了解决此任务的方法。我使用了OWLOntologyXMLNamespaceManager(我使用的是 OWL API 5.1.6)。之后,使用 getPrefixes 和 getNameSpaces,您可以分别为加载的本体提取前缀和命名空间,如下所示:OWLDocumentFormat format = m.getOntologyFormat(ontology);OWLOntologyXMLNamespaceManager nsManager = new OWLOntologyXMLNamespaceManager(ontology, format);        for (String prefix : nsManager.getPrefixes()) {            System.out.println(prefix);        }        for (String ns : nsManager.getNamespaces()) {            System.out.println(ns);        }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java