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

OWLAPI-如何添加类似声明和基数的引用?

益炜
2023-03-14

我试图通过OWL-API3.5.0从数据模型以编程方式构建一个OWL文件。

通常,模型遵循A->B的形式,其中关系(“->”)可以是一个子类,也可以是一个属性。

我想我有子类工作,但我不确定如何添加以下内容。

    null

例如,对于#name,我有一个#firstname数据属性,还有一个#hasname。我当前的流程是:

val topProperty=df.getowltopdataproperty val hasChild=df.getowldataproperty(exampleIRI+“#has”+concept.getname)val child=df.getowldataproperty(exampleIRI+“#”+concept.getname)m.applychange(new AddAxiom(o,df.getowldeclarationaxiom(child))val parentConcept=findConcept(concept.getrelated,concepts).get val

我尝试用

val dataRange=df.getOwlDataType perestriction(df.getOwlDataType(“String”)val classExp=df.getOwlDataSomEvaluesFrom(child,dataRange)M.ApplyChange(new AddAxiom(o,df.getOwlSubClassoFaxiom(parent,classExp)))

但这个..不能正常工作。Protegé向我显示基数被破坏,在Protegé中,当我手动创建结构时,它用“&xsd;string”类型正确设置基数,我的代码不会复制这个类型。

我想我理解本体是如何构造的(我很痛苦地意识到我可能不知道我知道的有多少),但是我在Protegé中有一个工作的OWL(它可以转换为有效的XSD,这是这里的最终目标);我只是不知道如何弥补Protegé生成的文件和OWL-API生成的内容之间的差距。

我试过使用Jena,但对我来说更不清楚,Protegé应该有一个客户机库,看起来它将是OWL-API和我的数据模型之间的一个极好的层,但Protegé库甚至不会根据它们的文档从源代码为我构建。


共有1个答案

孙永思
2023-03-14
xml prettyprint-override"><Declaration>
   <DataProperty IRI="#foo"/>
</Declaration>

这种公理是一种声明公理。看看OWLDeclarationAxiom和getOWLDeclarationAxiom(OWLEntity OWLEntity)。如果您已经对使用OWLAPI感到有些舒服,那么这些链接应该足以让您继续使用。一旦您为实体创建了声明公理,您只需像任何其他公理一样将它添加到一个本体中。

实际上,您似乎已经在第二个Java代码示例中完成了这类工作。如果你没有得到你期望的结果,请提供一个更具体和最小的例子,说明什么是不起作用的。

我不太确定你在这里想要完成什么。也就是说,从您的代码中,我不清楚您试图最终得到什么公理。这听起来像是有一个类Person和一个属性hasFirstName,您想要断言

OWLDatatype string = OWL2Datatype.XSD_STRING.getDatatype(df)
OWLDatatype string = df.getOWLDatatype(XSDVocabulary.parseShortName("xsd:string"));
 类似资料:
  • 我有一个简单的本体(参见下面的OWL函数语法),它导入DCTerms。在dcterms中,我使用注释属性dcterms:title: 使用OWLAPI,如果我从本体论文件创建一个OWLOntology,然后简单地将其保存回文件或打印到控制台,那么以下注释属性声明将添加到本体论中: 鉴于dcterms:title是在 中声明的,它被导入到我的本体中,这是多余的。此外,它为我的本体添加了一个不必要的O

  • 这是我的SDN 4实体: 这是输出: 我有一个密码查询: AFAIK(Neo4j SDN4实体继承和索引)这样Neo4j索引将不会被使用,因为我试图到达d节点上:决策标签。 在SDN 4中,是否有任何方法通过类继承来定义索引(将CreateDate留在BaseEntity级别),以便能够在

  • 这是A.java 我想得到Newa. java 我想使用javaparser添加一个变量。

  • 问题内容: 我试图将项目添加到python中的数组。 我跑 然后,我尝试通过以下操作向此数组添加一些内容: 似乎没有办法。如何将项目添加到数组? 问题答案: 表示一个空字典,而不是数组/列表。对于列表或数组,您需要。 要初始化一个空列表,请执行以下操作: 要么 要将元素添加到列表,请使用 要在列表中包含其他列表中的元素,请使用 要从列表中删除元素,请使用 字典表示键/值对的集合,也称为关联数组或映

  • 本文向大家介绍如何使用JSP声明来声明类的对象?,包括了如何使用JSP声明来声明类的对象?的使用技巧和注意事项,需要的朋友参考一下 声明声明了一个或多个变量或方法,您可以稍后在JSP文件中的Java代码中使用它们。在JSP文件中使用变量或方法之前,必须先声明该变量或方法。 以下是JSP声明的语法- 您可以编写与上述语法等效的XML,如下所示- 以下是JSP声明中对象声明的示例-

  • 本文向大家介绍如何在Java 9的JShell中声明引用类型?,包括了如何在Java 9的JShell中声明引用类型?的使用技巧和注意事项,需要的朋友参考一下 与值类型不同,引用类型不会直接存储其值。相反,它将存储存储值的地址 。这意味着引用类型包含指向另一个保存数据的存储位置的指针。引用类型为String,数组,类和委托。 片段1 我n个下面的代码片段,两个新的动物对象是在堆上创建的。它们的存储