OWL API V5 从本地文件读取 ontology

OWL API V5 read ontology from local file

在 link 的当前文档示例中: https://github.com/owlcs/owlapi/blob/version5/contract/src/test/java/org/semanticweb/owlapi/examples/Examples.java 没有关于如何从本地文件加载 ontology 的示例。只有一种方法可以从字符串中加载它。

以前用owl-api版本3的时候 以下代码完美运行:

    OWLOntologyManager manager =OWLManager.createOWLOntologyManager();
    File file = new File (path);
    OWLOntology ont = manager.loadOntologyFromOntologyDocument(IRI.create(file));

然而,在这个版本中,之前代码的最后一行:

manager.loadOntologyFromOntologyDocument(IRI.create(file));

returns 这个错误:

    Exception in thread "main" java.lang.NoSuchMethodError: 
    org.semanticweb.owlapi.util.SAXParsers.initParserWithOWLAPIStandards(Lorg/xml/sax/ext/DeclHandler;)Ljavax/xml/parsers/SAXParser; 
        at 
org.semanticweb.owlapi.rdf.rdfxml.parser.RDFParser.parse(RDFParser.java:148)
    at org.semanticweb.owlapi.rdf.rdfxml.parser.RDFXMLParser.parse(RDFXMLParser.java:62)
    at uk.ac.manchester.cs.owl.owlapi.OWLOntologyFactoryImpl.loadOWLOntology(OWLOntologyFactoryImpl.java:173)
    at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.load(OWLOntologyManagerImpl.java:954)
    at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadOntology(OWLOntologyManagerImpl.java:918)
    at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadOntologyFromOntologyDocument(OWLOntologyManagerImpl.java:859)
    at glass.main.ontology_Test_main2.readOntology(ontology_Test_main2.java:49)
    at glass.main.ontology_Test_main2.main(ontology_Test_main2.java:38)

请注意附件,小测试java项目,link:

dropbox.com/s/3787a3gsk2bwc26/test.tar.gz?dl=0

请问我做错了什么,我确定这段代码

请您提供正确的方法,并将其添加到 link https://github.com/owlcs/owlapi/blob/version5/contract/src/test/java/org/semanticweb/owlapi/examples/Examples.java

中的教程示例中

非常感谢您的宝贵时间。 诚挚的问候

你离解决方案很近了:

final OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
final OWLOntology ontology = manager.loadOntologyFromOntologyDocument(new File("/home/galigator/myLocalDir/aura.owl"));

只需使用 new File 而不是 IRI.create

问题原因是:

我使用的以前的版本: 我使用的是 Hermit 版本 1.3.8.500 和 OWL-API 以前的版本 5.0.5 似乎已经修改了。

解决方法:使用更新版本的Hermit 1.3.8.510和OWL-API 5.1.0.

我发布了这个答案以防其他人使用以前的版本并受到影响。 诚挚的问候。