如何在可能性列表中定义rdfs:range目标?

时间:2015-05-04 10:29:23

标签: syntax rdf owl protege rdfs

我正在尝试声明属性phs:hasTheValue以向对象添加布尔值或整数。

目前,我已编写此代码来定义属性。

phs:hasTheValue a rdf:Property;
    rdfs:range [
            a owl:DataRange;
            owl:oneOf (xsd:boolean xsd:integer);
        ];
    .

我的问题是由于owl:oneOf断言,我无法使用Protégé5.0打开我的文件。这是一种错误的语法或错误的方式来声明我的财产的rdfs:range吗?

1 个答案:

答案 0 :(得分:3)

这不起作用的原因是因为owl:oneOf被定义为:

  

枚举是一个owl:oneOf元素,包含作为其实例的对象列表。   这使我们能够通过详尽地枚举其元素来定义类。由oneOf元素定义的类恰好包含枚举元素,不多也不少。例如:

<owl:oneOf rdf:parseType="Collection">
<owl:Thing rdf:about="#Eurasia"/>
<owl:Thing rdf:about="#Africa"/>
<owl:Thing rdf:about="#North_America"/>
<owl:Thing rdf:about="#South_America"/>
<owl:Thing rdf:about="#Australia"/>
<owl:Thing rdf:about="#Antarctica"/>
</oneOf>

您要定义的内容不符合owl:oneOf的定义。我认为你需要的是一个正常的联盟。

<owl:DatatypeProperty rdf:about="http://www.example.org/demo.owl#hasTheValue">
    <rdfs:range>
        <rdfs:Datatype>
            <owl:unionOf rdf:parseType="Collection">
                <rdf:Description rdf:about="&xsd;boolean"/>
                <rdf:Description rdf:about="&xsd;integer"/>
            </owl:unionOf>
        </rdfs:Datatype>
    </rdfs:range>
</owl:DatatypeProperty>