如何在函数式语法中存储 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);