Rdf 如何在Proté中定义多域和范围连接;gé;?

Rdf 如何在Proté中定义多域和范围连接;gé;?,rdf,owl,ontology,protege,protege4,Rdf,Owl,Ontology,Protege,Protege4,我是新来的。我正在开发一个本体。我的本体类的一部分通过“has”关系与其他类连接。例如: Activity has Location Household has Location Intervention has CloseWork :hasLocation a owl:ObjectProperty ; rdfs:range :Location . :hasCloseWork a owl:ObjectProperty ; rdfs:domain :Inte

我是新来的。我正在开发一个本体。我的本体类的一部分通过“has”关系与其他类连接。例如:

Activity has Location
Household has Location
Intervention has CloseWork
:hasLocation a owl:ObjectProperty ;
         rdfs:range :Location .

:hasCloseWork a owl:ObjectProperty ;
         rdfs:domain :Intervention ;
         rdfs:range :CloseWork .
我宣布活动、家庭、地点、干预和密室作业为Protege课程。我将“has”声明为ObjectProperty。为了显示类之间的关系,我设置了“has”ObjectProperty的域和范围。例如:要显示“活动具有位置”,我将活动设置为域,位置设置为范围。我将本体保存为RDF/XML语法。文件正在显示我的“has”对象属性,如下所示:

<owl:ObjectProperty rdf:about="www.ndssl.vbi.vt.edu/epidl#has">
    <rdfs:domain rdf:resource="www.ndssl.vbi.vt.edu/epidl#Activity"/>
    <rdfs:domain rdf:resource="www.ndssl.vbi.vt.edu/epidl#Household"/>
    <rdfs:range rdf:resource="www.ndssl.vbi.vt.edu/epidl#Location"/>
    <rdfs:domain rdf:resource="www.ndssl.vbi.vt.edu/epidl#Intervention"/>
    <rdfs:range rdf:resource="www.ndssl.vbi.vt.edu/epidl#CloseWork"/>
</owl:ObjectProperty>


从上面的RDF语句中,无法确定哪个域连接到哪个范围(例如,活动具有位置)。请让我知道如何修理它

您不能以这种方式使用
rdfs:domain
rdfs:range
。通过说
拥有
的领域由
活动
家庭
干预
组成,你可以有效地断言,使用
拥有
属性的每一个人都同时是这些类别中所有三个的实例。这可能不是你想要的

相反,您需要使用OWL限制。在这种情况下,您需要一个来自限制的
owl:allvalues。你把这些表达在他们所代表的班级上。例如,在类
Activity
中,您可以表达如下内容(用乌龟语法):

这意味着,如果类
活动
的实例使用
has
属性,则该属性的值必须是
位置

冲洗并重复其他特定类别的限制

另一种方法是使用更具体的属性,而不是毫无意义的一般“has”关系。例如:

Activity has Location
Household has Location
Intervention has CloseWork
:hasLocation a owl:ObjectProperty ;
         rdfs:range :Location .

:hasCloseWork a owl:ObjectProperty ;
         rdfs:domain :Intervention ;
         rdfs:range :CloseWork .
这种方法的另一个优点是,您的数据在语义上变得更加丰富,并且更易于查询(假设这是您在将来某个时候想要做的)