2015-05-04 3 views
1

Я пытаюсь объявить свойство phs:hasTheValue, чтобы добавить логическое или целое число в объект.Как определить цель rdfs: range в списке возможностей?

В настоящее время я написал этот код для определения свойства.

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

Моя проблема заключается в том, что я не могу открыть файл с Protégé 5.0 из-за owl:oneOf утверждения. Это неправильный синтаксис или неправильный способ объявить rdfs:range моей собственности?

ответ

2

Причина этого не работает потому, что owl:oneOf определяется как:

Перечисление является сова: 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>