OWL API,在<! - - >之间添加URI和Name,而不向其他部分添加URI

时间:2015-04-07 21:23:18

标签: java owl owl-api

尝试在&lt;之间显示URI +名称时,我遇到了OWL API的问题。 ! - - &gt;没有它也将URI +名称添加到其他部分。

例如,我使用披萨本体作为我的来源,本体文件显示以下个人代码集。

<!-- Individual: http://www.co-ode.org/ontologies/pizza/pizza.owl#America -->

<owl:Thing rdf:about="#America">
    <rdf:type rdf:resource="#Country"/>
</owl:Thing>

使用下面的代码我得到了几乎相同的东西,但是在&lt; - #America - &gt;之间仍然缺少URI,我可以将iri + name添加到getOWLClass方法但是这将结束向我提供&lt;之间的URI +名称! - - &gt;以及在namedIndividual即rdf:about = http://www.co-ode.org/ontologies/pizza/pizza.owl#America而不仅仅是#America。

 OWLClass tClass = dataFactory.getOWLClass(IRI.create("#Country"));
 OWLNamedIndividual tIndividual = dataFactory.getOWLNamedIndividual(IRI.create("#America"));
 OWLClassAssertionAxiom classAssertion = dataFactory.getOWLClassAssertionAxiom(tClass, tIndividual);
 manager.addAxiom(ontology, classAssertion);

输出:

<!-- #America -->

<owl:NamedIndividual rdf:about="#America">
    <rdf:type rdf:resource="#Country"/>
</owl:NamedIndividual>

应该是什么:

<!-- http://www.co-ode.org/ontologies/pizza/pizza.owl#America -->

<owl:NamedIndividual rdf:about="#America">
    <rdf:type rdf:resource="#Country"/>
</owl:NamedIndividual>

我缺少什么,如何让它看起来像披萨本体中的正确方式?我使用的是OWL API 4.0。

编辑:

根据Ignazio的建议,我做了一个改变但没有成功,这是代码。我再次使用OWL API 4,URI仍未添加到评论&lt; ! - #America - &gt;。

 OWLClass tClass = dataFactory.getOWLClass(IRI.create("#Country"));
 OWLNamedIndividual tIndividual = dataFactory.getOWLNamedIndividual(IRI.create("#America"));
 OWLClassAssertionAxiom classAssertion = dataFactory.getOWLClassAssertionAxiom(tClass, tIndividual);
 XMLWriterPreferences.getInstance().setUseNamespaceEntities(true);
 OWLDocumentFormat format = m.getOntologyFormat(ontology);

 format.asPrefixOWLOntologyFormat()
    .setPrefix("ns:",
               "http://www.co-ode.org/ontologies/pizza/pizza.owl#");

 try
 {
     m.addAxiom(ontology, classAssertion);
     m.saveOntology(ontology, format, new SystemOutDocumentTarget());
 } catch (OWLOntologyStorageException e)
 {
     e.printStackTrace();
     System.exit(0);
 }

我还是很陌生,如果我多余的话,对不起。

输出仍然没有URI + #America in&lt; ! - #America - &gt;:

 <!-- #America-->

 <owl:NamedIndividual rdf:about="#America">
     <rdf:type rdf:resource="#Country"/>
 </owl:NamedIndividual>

1 个答案:

答案 0 :(得分:1)

您尝试在RDF / XML中输出相对IRI。 OWL API不支持这种情况(除了通过在代码中实际创建具有相对IRI的实体。但是,生成的本体违反了OWL 2配置文件。)

您可以通过实体获得类似的结果:

XMLWriterPreferences.getInstance().setUseNamespaceEntities(true);
ontology.getFormat()
            .asPrefixOWLOntologyFormat()
            .setPrefix("ns:",
                    "http://www.co-ode.org/ontologies/pizza/pizza.owl#");

此时保存本体论。