OWL API,在<!-- -->之间添加URI和Name,其他部分不添加URI
OWL API, adding the URI and Name between <!-- --> without adding URI to other sections
我在尝试显示 之间的 URI + 名称时遇到了 OWL API 的问题,而没有将 URI+名称添加到其他部分。
例如,我使用披萨 ontology 作为我的来源,ontology 文件显示了下面的个人代码集。
<!-- Individual: http://www.co-ode.org/ontologies/pizza/pizza.owl#America -->
<owl:Thing rdf:about="#America">
<rdf:type rdf:resource="#Country"/>
</owl:Thing>
使用下面的代码,我得到了几乎相同的结果,但是 <-- #America--> 之间的 URI 仍然缺失,我可以将 iri+name 添加到 getOWL类方法,但这最终会给我 和 namedIndividual 之间的 URI+Name,即 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>
我遗漏了什么以及如何让它看起来像披萨中的正确方式 ontology?我正在使用 OWL API 4.0.
编辑:
根据 Ignazio 的建议,我进行了更改但没有成功,这是代码。我再次使用 OWL API 4,URI 仍未添加到评论 < ! -- #美国 -- >.
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 < ! -- #美国 -- >:
<!-- #America-->
<owl:NamedIndividual rdf:about="#America">
<rdf:type rdf:resource="#Country"/>
</owl:NamedIndividual>
您正在尝试在 RDF/XML 中输出相对 IRI。 OWL API 不支持(除非像您在代码中那样实际创建具有相对 IRI 的实体。但是,生成的 ontology 违反了 OWL 2 个配置文件)。
你可以用实体得到类似的结果:
XMLWriterPreferences.getInstance().setUseNamespaceEntities(true);
ontology.getFormat()
.asPrefixOWLOntologyFormat()
.setPrefix("ns:",
"http://www.co-ode.org/ontologies/pizza/pizza.owl#");
然后保存 ontology。
我在尝试显示 之间的 URI + 名称时遇到了 OWL API 的问题,而没有将 URI+名称添加到其他部分。
例如,我使用披萨 ontology 作为我的来源,ontology 文件显示了下面的个人代码集。
<!-- Individual: http://www.co-ode.org/ontologies/pizza/pizza.owl#America -->
<owl:Thing rdf:about="#America">
<rdf:type rdf:resource="#Country"/>
</owl:Thing>
使用下面的代码,我得到了几乎相同的结果,但是 <-- #America--> 之间的 URI 仍然缺失,我可以将 iri+name 添加到 getOWL类方法,但这最终会给我 和 namedIndividual 之间的 URI+Name,即 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>
我遗漏了什么以及如何让它看起来像披萨中的正确方式 ontology?我正在使用 OWL API 4.0.
编辑:
根据 Ignazio 的建议,我进行了更改但没有成功,这是代码。我再次使用 OWL API 4,URI 仍未添加到评论 < ! -- #美国 -- >.
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 < ! -- #美国 -- >:
<!-- #America-->
<owl:NamedIndividual rdf:about="#America">
<rdf:type rdf:resource="#Country"/>
</owl:NamedIndividual>
您正在尝试在 RDF/XML 中输出相对 IRI。 OWL API 不支持(除非像您在代码中那样实际创建具有相对 IRI 的实体。但是,生成的 ontology 违反了 OWL 2 个配置文件)。
你可以用实体得到类似的结果:
XMLWriterPreferences.getInstance().setUseNamespaceEntities(true);
ontology.getFormat()
.asPrefixOWLOntologyFormat()
.setPrefix("ns:",
"http://www.co-ode.org/ontologies/pizza/pizza.owl#");
然后保存 ontology。