如何在函数式语法中存储 OWL Ontology
How to Store OWL Ontology in Functional Syntax
我正在尝试使用 OWL API:
以功能格式创建和存储 ontology 文件
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ontology = manager.createOntology();
OWLDataFactory factory = manager.getOWLDataFactory();
PrefixManager pm = new FunctionalSyntaxDocumentFormat();
pm.setDefaultPrefix(" :");
OWLClass item = factory.getOWLClass(IRI.create("item"), pm);
manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(item));
manager.saveOntology(ontology, new FunctionalSyntaxDocumentFormat(), new FileOutputStream("FileName"))
这个公理的保存文件中的结果是这样的:
Declaration(Class(< :item>))
如何去掉实体周围的 < > 括号?它发生在我创建的所有实体上,它阻止我的文件被正确解析。
两个问题:默认前缀中不应有 space,并且您设置前缀的前缀管理器必须与调用 saveOntology() 时使用的相同。您可以将第一个功能文档格式传递给代码中的最后一个方法。
编辑:在尝试 运行 代码后,我认为 OWL API 中有一点错误。必须在管理器上设置格式才能正确拾取前缀。那应该没有必要。但是,有一个解决方法。
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ontology = manager.createOntology();
OWLDataFactory factory = manager.getOWLDataFactory();
FunctionalSyntaxDocumentFormat pm = new FunctionalSyntaxDocumentFormat();
pm.setPrefix(":", "http://test.owl/test#");
manager.setOntologyFormat(ontology, pm);
OWLClass item = factory.getOWLClass("item", pm);
manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(item));
manager.saveOntology(ontology, System.out);
我正在尝试使用 OWL API:
以功能格式创建和存储 ontology 文件OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ontology = manager.createOntology();
OWLDataFactory factory = manager.getOWLDataFactory();
PrefixManager pm = new FunctionalSyntaxDocumentFormat();
pm.setDefaultPrefix(" :");
OWLClass item = factory.getOWLClass(IRI.create("item"), pm);
manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(item));
manager.saveOntology(ontology, new FunctionalSyntaxDocumentFormat(), new FileOutputStream("FileName"))
这个公理的保存文件中的结果是这样的:
Declaration(Class(< :item>))
如何去掉实体周围的 < > 括号?它发生在我创建的所有实体上,它阻止我的文件被正确解析。
两个问题:默认前缀中不应有 space,并且您设置前缀的前缀管理器必须与调用 saveOntology() 时使用的相同。您可以将第一个功能文档格式传递给代码中的最后一个方法。
编辑:在尝试 运行 代码后,我认为 OWL API 中有一点错误。必须在管理器上设置格式才能正确拾取前缀。那应该没有必要。但是,有一个解决方法。
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ontology = manager.createOntology();
OWLDataFactory factory = manager.getOWLDataFactory();
FunctionalSyntaxDocumentFormat pm = new FunctionalSyntaxDocumentFormat();
pm.setPrefix(":", "http://test.owl/test#");
manager.setOntologyFormat(ontology, pm);
OWLClass item = factory.getOWLClass("item", pm);
manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(item));
manager.saveOntology(ontology, System.out);