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

时间:2018-09-02 12:53:34

标签: java protege 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);

2 个答案:

答案 0 :(得分:0)

经过大量搜索,我找到了解决该任务的方法。我使用了 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);
        }

答案 1 :(得分:0)

o.importsDeclarations()将为您提供此本体的导入声明流。这是使用owl:imports属性声明的IRI的列表。

注意:这些是声明的导入,而不是导入闭包-区别在于导入闭包包括您的本体中导入的本体和这些本体中导入的本体-递归包括导入的本体。

o.importsClosure()将提供在解析您的本体期间加载的所有本体。