当前位置: 首页 > 知识库问答 >
问题:

OWL API,在之间添加URI和名称,而不向其他部分添加URI

卜昂熙
2023-03-14
<!-- Individual: http://www.co-ode.org/ontologies/pizza/pizza.owl#America -->

<owl:Thing rdf:about="#America">
    <rdf:type rdf:resource="#Country"/>
</owl:Thing>
 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。

 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);
 }
 <!-- #America-->

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

共有1个答案

邵祺
2023-03-14

您试图在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#");

并保存本体。

 类似资料:
  • 问题内容: 我试图将Gradle(1.4)添加到具有多个测试套件的现有项目中。位于中的标准单元测试已成功运行,但是我无法设置任务以运行位于中的JUnit测试。 当我运行时,我在遇到类错误。这使我相信依赖关系设置不正确。如何设置以便它将运行我的JUnit集成测试? build.gradle 详细信息: Gradle 1.4 解决方案: 我尚未为集成测试源集设置编译类路径(请参见下文)。在我的代码中,

  • 我使用文件路径解析 Spark 数据帧,但现在我想将路径与时间一起作为单独的列添加到生成的数据帧中。下面是一个当前的解决方案(pathToDF 是一个帮助器方法): 我正在尝试做这样的事情,但我不确定如何使用Column添加时间列: 实现它的更好方法是什么? 输入自由度: 当前结果: 预期结果:

  • 我正在开发一款使用强化学习的赛车游戏。为了训练模型,我在实现神经网络时面临一个问题。我找到了一些使用CNN的例子。但似乎添加额外的LSTM层将提高模型效率。我找到了以下示例。 https://team.inria.fr/rits/files/2018/02/ICRA18_EndToEndDriving_CameraReady.pdf 我需要实施的网络 问题是我不确定如何在这里实现LSTM层。我如何

  • 嗨,我正在调用一个endpoint,它返回一个包含byteArray的Spring资源,我需要将其传递给另一个需要Spring资源对象的endpoint。但是传入的资源没有文件名。传出的资源需要一个文件名,因为它将其转换为emai附件。 在此处添加文件名的最佳方法是什么?我一直在尝试将资源复制到文件并再次将该文件读取到新资源中,但它一直告诉会议该文件不存在于该位置。

  • 问题内容: 如何使用Twitter Bootstrap框架向元素添加边距顶部? 问题答案: 在Twitter引导程序中编辑或覆盖行是一个坏主意,因为这是页面支架的核心部分,并且您将需要没有上边距的行。 要解决此问题,请创建一个新类“ top-buffer”,添加所需的标准边距。 然后在需要上边距的行div上使用它。

  • 问题内容: 我有一个具有固定布局的应用程序,无法更改。我想使用setuptools将其包装起来,例如编写一个脚本。 使用官方文档,我能够编写第一个模板。但是,有问题的应用程序使用了很多其他数据文件,这些文件不是任何程序包的明确组成部分。这是一个示例源树: 这是麻烦所在:中的代码 读取文件和。对于前者,我可以通过添加一个空文件将其升级到程序包并由拾取来修补该问题。但是我怎么可能增加我的呢? 所提出的