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

OWLAPI从import添加冗余的AnnotationProperty声明

方斌
2023-03-14

我有一个简单的本体(参见下面的OWL函数语法),它导入DCTerms。在dcterms中,我使用注释属性dcterms:title:

AnnotationAssertion(<http://purl.org/dc/terms/title> :A "The title of A")

使用OWLAPI,如果我从本体论文件创建一个OWLOntology,然后简单地将其保存回文件或打印到控制台,那么以下注释属性声明将添加到本体论中:

Declaration(AnnotationProperty(<http://purl.org/dc/terms/title>))

鉴于dcterms:title是在 中声明的,它被导入到我的本体中,这是多余的。此外,它为我的本体添加了一个不必要的OWL构造。

有什么方法可以阻止OWLAPI将那个注释属性声明添加到我的本体中吗?

这里是本体论:

Prefix(:=<http://www.semanticweb.org/wmilnor/ontologies/2018/0/AnnotationProperties2#>)
Prefix(owl:=<http://www.w3.org/2002/07/owl#>)
Prefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
Prefix(xml:=<http://www.w3.org/XML/1998/namespace>)
Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)
Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)


Ontology(<http://www.semanticweb.org/wmilnor/ontologies/2018/0/AnnotationProperties2>
Import(<http://purl.org/dc/terms>)

Declaration(Class(:A))


############################
#   Classes
############################

# Class: :A (:A)

AnnotationAssertion(<http://purl.org/dc/terms/title> :A "The title of A")


)

共有1个答案

凌鹏程
2023-03-14

声明并不是多余的,因为它声明http://purl.org/dc/terms/title是一个OWL AnnotationProperty,这一点在http://purl.org/dc/terms/的文档中没有说,该文档没有“声明”OWL意义上的dcterms:title。属性的OWL类型需要在本体中声明,以避免RDF序列化中的歧义。

顺便提一下,由于http://purl.org/dc/terms/没有声明自己是一个OWL:ontology,导入的语义与正常的OWL导入有点不同--三元组是包含的,而不是导入的,这可能会对声明内容的位置产生影响。

 类似资料:
  • 我试图通过OWL-API3.5.0从数据模型以编程方式构建一个OWL文件。 通常,模型遵循A->B的形式,其中关系(“->”)可以是一个子类,也可以是一个属性。 我想我有子类工作,但我不确定如何添加以下内容。 null 例如,对于,我有一个数据属性,还有一个。我当前的流程是:

  • 问题内容: 我已经在$ PATH变量中定义了6次相同的路径。 我没有注销来检查它是否有效。 如何删除重复项? $ PATH变量如下所示: 我如何将其重置为 问题答案: 您只需执行: 如果您想永久更改,则将其添加到当前会话中,将其添加到任何.bashrc,bash.bashrc,/ etc / profile- 适合您的系统和用户需求的位置。 注意:这是针对Linux的。对于新的编码器,我们将予以明

  • 问题内容: 我刚刚发现,浮动元素也会使其成为一个块,因此指定float属性和 display:block 是多余的。 (如果您尝试指定 display:inline 和 float:left 会发生什么?) 还有其他需要注意的冗余组合示例吗?块和宽度?等等, 有没有可以检查这种情况的工具? 问题答案: 我刚刚发现,浮动元素也会使它成为一个块,因此指定一个属性是多余的。 是的,如果已指定(或),则是

  • 所以我有这个方法: 根据这篇文章: save方法没有任何作用。即使我们删除了它,Hibernate仍然会发出UPDATE语句,因为只要当前正在运行的EntityManager处于打开状态,实体是受管理的,任何状态更改都会传播。 并且确实发出了update语句,但是如果我在没有< code>@Transactional注释的情况下运行该方法: HiberNate不会发出更新语句,因此必须显式调用。

  • 问题内容: 有人可以给我一个SQL查询来帮助我清理此表吗?在清除locid(索引)后,应该重新设置,这是使用此查询的县城 。当我通过phpmyadmin的导入多次导入sql文本时,就会出现这种冗余数据,这就是结果, 问题答案: 在表位置添加唯一索引,这样就不会插入重复的记录 这将自动从表中删除重复的记录,对于以后的插入查询,您需要使用子句来避免出现重复的错误。 但正如注释中所建议的那样,它可能不适

  • 问题内容: Hibernate会生成包含所有列的语句,无论我是否更改了这些列中的值,例如: 发表以下声明: 因此B,C,D列已更新,而我没有更改它们。 说,项目会经常更新,并且所有列都已建立索引。 问题是:将Hibernate部分优化为如下所示是否有意义: 最让我困惑的是,“未优化”和“优化”查询版本的计划是相同的! 问题答案: 由于PostgreSQL MVCC,an 实际上更像是plus 。除