如何使用 OWL 本体中的注释属性创建定义的类?
目前,我已经使用对象属性hasSubject创建了一个已定义的类。
定义的类:
我更愿意通过重新使用 DC-Terms 集中的注释“主题”而不是自定义对象属性来创建此类。
是否可以使用注释属性创建已定义的类?我将如何在 Protégé 中做到这一点?
您不能在 OWL 类限制中使用注释属性。您可以使用对象属性和数据类型属性,但不能使用注释属性。特别是,存在限制的抽象语法,如
isSubjectOf some Film
是,从8.2.1 存在量化:
ObjectSomeValuesFrom
:= 'ObjectSomeValuesFrom'
'('
ObjectPropertyExpression ClassExpression')'
当您使用注释属性时,您不会有ObjectPropertyExpression 。
但是,您可以做的是将dcterms:subject声明为本体中的对象属性,然后您就可以使用它了。根据dcterms:subject 的文档,IRI 是http://purl.org/dc/terms/subject。您可以像任何其他对象属性一样在 Protege 中声明:
然后你可以在类表达式中使用它:
请注意dcterms:subject的文档说:
注意:该术语旨在与 DCMI 抽象模型 ( http://dublincore.org/documents/abstract-model/ )中定义的非文字值一起使用。截至 2007 年 12 月,DCMI 使用委员会正在寻找一种方式来表达这一意图,并通过正式的范围声明。
这意味着您实际上是在说一些更具限制性的东西。通过将dcterms:subject声明为对象属性,您将能够推断出每当“X dcterms:subject Y”时,X 和 Y 都是 owl:Thing 的实例,以及您可能对域和财产的范围。由于其他人可能不会使用dcterms:subject作为对象属性,他们可能不会期望这些推断。
以下是本体的最终结果:
@prefix : <http://stackoverflow.com/q/29317444/1281433/> .
@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#> .
@base <http://stackoverflow.com/q/29317444/1281433/> .
<http://stackoverflow.com/q/29317444/1281433/> rdf:type owl:Ontology .
#################################################################
#
# Object Properties
#
#################################################################
### http://purl.org/dc/terms/subject
<http://purl.org/dc/terms/subject> rdf:type owl:ObjectProperty .
#################################################################
#
# Classes
#
#################################################################
### http://stackoverflow.com/q/29317444/1281433/FilmSubjectComposer
:FilmSubjectComposer rdf:type owl:Class ;
owl:equivalentClass [ rdf:type owl:Class ;
owl:intersectionOf ( <http://stackoverflow.com/q/29317444/1281433/#Composer>
[ rdf:type owl:Restriction ;
owl:onProperty [ owl:inverseOf <http://purl.org/dc/terms/subject>
] ;
owl:someValuesFrom <http://stackoverflow.com/q/29317444/1281433/#Film>
]
)
] .
### http://stackoverflow.com/q/29317444/1281433/#Composer
<http://stackoverflow.com/q/29317444/1281433/#Composer> rdf:type owl:Class .
### http://stackoverflow.com/q/29317444/1281433/#Film
<http://stackoverflow.com/q/29317444/1281433/#Film> rdf:type owl:Class .
### Generated by the OWL API (version 3.5.0) http://owlapi.sourceforge.net