2

如何使用 OWL 本体中的注释属性创建定义的类?

目前,我已经使用对象属性hasSubject创建了一个已定义的类。

在此处输入图像描述

定义的类:

在此处输入图像描述

我更愿意通过重新使用 DC-Terms 集中的注释“主题”而不是自定义对象属性来创建此类。

是否可以使用注释属性创建已定义的类?我将如何在 Protégé 中做到这一点?

4

1 回答 1

4

您不能在 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 作为属性

然后你可以在类表达式中使用它:

在此处输入图像描述

请注意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
于 2015-03-29T21:54:23.380 回答