我有一个简单的本体(参见下面的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是在&lt; http://purl.org/dc/terms/title&gt;中声明的,它被导入到我的本体中,这是多余的。此外,它为我的本体添加了一个不必要的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")
)
答案 0 :(得分:0)
声明并不是多余的,因为它声明tuple()
是一个OWL AnnotationProperty,而http://purl.org/dc/terms/的文件中没有说明这一点,这不是&#39;&#34} ;声明&#34; dcterms:OWL意义上的标题。需要在本体中声明属性的OWL类型,以避免RDF序列化中的歧义。
顺便说一下,由于http://purl.org/dc/terms/并没有宣称自己是一只猫头鹰:本体,导入的语义与正常的OWL导入略有不同 - 三元组是included rather than imported,这可能有对事物宣告的影响。