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

时间:2016-01-15 18:00:36

标签: rdf owl ontology protege protege4

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

Activity has Location
Household has Location
Intervention has CloseWork

我将Activity,Household,Location,Intervention和CloseWork声明为Protege中的类。我将“has”声明为ObjectProperty。为了显示类之间的关系,我设置了“has”ObjectProperty的域和范围。例如:要显示“Activity has Location”,我将Activity设置为域,将Location设置为范围。我将我的Ontology保存为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语句中,无法确定哪个域连接到哪个范围(例如,Activity有位置)。请让我知道如何解决它。

1 个答案:

答案 0 :(得分:4)

您不能以这种方式使用rdfs:domainrdfs:range。通过说has的域名由ActivityHouseholdIntervention组成,您实际上断言使用has属性的每个人都是这三个类的所有三个同时。这可能不是你想要的。

您需要使用OWL限制。在这种情况下,您需要owl:allValuesFrom限制。你在他们所持有的课堂上表达这些。因此,例如,在类Activity上,您将表达某些内容(在Turtle语法中):

  :Activity rdfs:subClassOf [ a owl:Restriction ; 
                              owl:onProperty :has ; 
                              owl:allValuesFrom :Location . ]

这表示如果Activity的实例使用has属性,则该属性的值必须为{{ 1}}。

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

另一种选择是使用更具体的属性,而不是一个相当无意义的一般性的“关联”。例如:

Location

这种方法的另一个优点是,您的数据在语义上变得更加丰富,并且更容易查询(假设这是您将来某个时候想要做的事情)。