我一直在为OWL本体寻找一个好的解析器 - 最初是在Python中,因为我对Java的经验非常有限。据我所知,似乎OWLAPI是最好的选择,而且是 Java。
所以,我正在尝试解析.owl文件并从中构建AST。我下载了owlapi并且我遇到了问题,因为它似乎没有太多的文档。
我的基本问题是 - 例如 - OWLXMLParser()的两个第一个参数是什么,代表: - 文档源:这是.owl文件读取为流(在下面的getDocument中)? - root本体论:这里有什么?最初我认为这个是 .owl文件的去处,似乎并非如此。
parse方法是构造AST还是我咆哮错误的树?
我正在粘贴下面的一些意图 - 其中有更多意思但是我试图减少冗长:)
[我得到的错误就是这个 - 如果有人关心 - 虽然问题更为基础:
java.lang.NullPointerException:stream不能为null at org.semanticweb.owlapi.util.OWLAPIPreconditions.checkNotNull(OWLAPIPreconditions.java:102) 在org.semanticweb.owlapi.io.StreamDocumentSourceBase。(StreamDocumentSourceBase.java:107) 在org.semanticweb.owlapi.io.StreamDocumentSource。(StreamDocumentSource.java:35) at testontology.testparsers.OntologyParser.getDocument(App.java:72) 在testontology.testparsers.OntologyParser.test(App.java:77) 在testontology.testparsers.App.main(App.java:58)]
非常感谢你的帮助。
public class App
{
public static void main( String[] args )
{
OntologyParser o = new OntologyParser();
try {
OWLDocumentFormat p = o.test();
} catch (Exception e) {
e.printStackTrace();
}
}
}
class OntologyParser {
private OWLOntology rootOntology;
private OWLOntologyManager manager;
private OWLOntologyDocumentSource getDocument() {
System.out.println("access resource stream");
return new StreamDocumentSource(getClass().getResourceAsStream(
"/home/mmarines/Desktop/WORK/mooly/smart-cities/data/test.owl"));
}
public OWLDocumentFormat test() throws Exception {
OWLOntologyDocumentSource documentSource = getDocument();
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology rootOntology = manager.loadOntologyFromOntologyDocument (new FileDocumentSource(new File("/home/mmarines/Desktop/WORK/mooly/smart-cities/data/test.owl")));
OWLDocumentFormat doc = parseOnto(documentSource, rootOntology);
return doc;
}
private OWLDocumentFormat parseOnto(
@Nonnull OWLOntologyDocumentSource initialDocumentSource,
@Nonnull OWLOntology initialOntology) throws IOException {
OWLParser initialParser = new OWLXMLParser();
OWLOntologyLoaderConfiguration config = new OntologyConfigurator().buildLoaderConfiguration();
//// option 1:
//final OWLOntologyManager managerr = new OWLOntologyManagerImpl(new OWLDataFactoryImpl(), new ReentrantReadWriteLock(true));
//final IRI iri = IRI.create("testasdf");
//final IRI version = IRI.create("0.0.1");
//OWLOntologyDocumentSource source = new FileDocumentSource(new File("/home/mmarines/Desktop/WORK/mooly/smart-cities/data/test.owl"));
//final OWLOntology onto = new OWLOntologyImpl(managerr, new OWLOntologyID(iri,version));
//return initialParser.parse(initialDocumentSource, onto, config);
////
//option 2:
return initialParser.parse(initialDocumentSource, initialOntology, config);
}
点击此处回复或转发 使用115 GB的15.32 GB(13%) 管理 条款 - 隐私 上次帐户活动:1小时前 细节
答案 0 :(得分:0)
owlapi解析器设计用于OWLOntologyManager实现,这些实现由OWLManager单例管理(除非您正在编写新的owlapi实现)。关于如何在维基页面中使用该类的大量示例。
owlapi发行版中包含的所有解析器都是为了在OWLOntology中创建OWLAxiom实例,而不是创建owl文件的AST - 文件的语法形状取决于特定格式,编写器的首选项等等。虽然api的目的是为调用者提供本体操作功能。可以调整输出格式的细节,但将它们暴露给调用者不是主要设计的一部分。