在OWL中的相同属性中定义多个域/范围

时间:2017-03-04 12:10:50

标签: rdf semantic-web owl owl-api rdfs

在OWL中设置数据/对象属性的域/范围的正确方法是什么?

如果我有两个课程AB和数据属性hasName

<Declaration><Class IRI="#A"/></Declaration>
<Declaration><Class IRI="#B"/></Declaration>
<Declaration><DataProperty IRI="#hasName"/></Declaration>
<FunctionalDataProperty>
    <DataProperty IRI="#hasName"/>
</FunctionalDataProperty>
<DataPropertyRange>
    <DataProperty IRI="#hasName"/>
    <Datatype abbreviatedIRI="xsd:string"/>
</DataPropertyRange>

我想将课程A和课程B设为hasName的唯一域名。我尝试用三种方式做到这一点,这种方法是否正确?

  • 选项1 - 感染域名结果:ABowl:Thing

    <DataPropertyDomain>
        <DataProperty IRI="#hasName"/>
        <Class IRI="#A"/>
    </DataPropertyDomain>
    <DataPropertyDomain>
        <DataProperty IRI="#hasName"/>
        <Class IRI="#B"/>
    </DataPropertyDomain>
    
  • 选项2 - 推理域名结果:owl:Thing

    <DataPropertyDomain>
        <DataProperty IRI="#hasName"/>
        <ObjectUnionOf>
            <Class IRI="#A"/>
            <Class IRI="#B"/>
        </ObjectUnionOf>
    </DataPropertyDomain>
    
  • 选项3 - 推理域名结果:owl:Thing

    <EquivalentClasses>
        <Class IRI="#A"/>
        <DataExactCardinality cardinality="1">
            <DataProperty IRI="#hasName"/>
            <Datatype abbreviatedIRI="xsd:string"/>
        </DataExactCardinality>
    </EquivalentClasses>
    <EquivalentClasses>
        <Class IRI="#B"/>
        <DataExactCardinality cardinality="1">
            <DataProperty IRI="#hasName"/>
            <Datatype abbreviatedIRI="xsd:string"/>
        </DataExactCardinality>
    </EquivalentClasses>
    

从选项1开始,我得到了来自HermiT推理器的3个结果:ABowl:Thing,但当我读到this post时,他说我写了错误的语义并且应该使用owl:unionOf

然后我尝试在选项2中表达类,但是当我再次感染时,我只获得了课程owl:Thing,而不是AB

使用选项3,我将类设置为等效类公理中的域。它可以工作,但我不能使用强大的推理工具来推断:

Set<OWLClass> classes = reasoner.getDataPropertyDomains(hasNameProperty, false).getFlattened();

1 个答案:

答案 0 :(得分:3)

首先也是最重要的一点:OWL语义中属性hasName的域和范围是{strong> 对hasName的限制!相反,这些公理用于推断通过属性hasName相关的个体类型。

选项1

关于您的示例,它为属性hasName声明了多个域,这意味着这些类的交集,即A and B

选项2

这确实是最常见的方式。

选项3

我不知道你在这里做了什么。但是在OWL中,开放世界假设(OWA)成立,这意味着未知的信息不被认为是错误的。它只是未知数。因此,如果您的个人a仅通过属性x与个人hasName相关联,则标准OWL推理者不能(并且必须)得出a所属的结论班A

注意,OWL中域公理的语义等价subClassOf公理是(伪曼彻斯特语法中)

hasName Domain: A

(hasName some owl:Thing) SubClassOf: A