我正在尝试声明属性 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
?
这不起作用的原因是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>