2016-05-24 3 views
2

Я хочу ограничить экземпляры одного из моих классов OWL одним из нескольких перечисляемых лиц. В стандарте я нашел oneOf class expressions, например следующее. Как я понимаю стандарт, мы можем определить только особ. В oneOf выражения. Как я могу ссылаться на людей, которые уже были определены?Ссылка на экземпляр в owl: oneOf перечисление

<owl:Class rdf:ID="WineColor"> 
    <rdfs:subClassOf rdf:resource="#WineDescriptor"/> 
    <owl:oneOf rdf:parseType="Collection"> 
    <owl:Thing rdf:about="#White"/> 
    <owl:Thing rdf:about="#Rose"/> 
    <owl:Thing rdf:about="#Red"/> 
    </owl:oneOf> 
</owl:Class> 

ответ

3

Как я понимаю стандарт, мы можем определить только новые человек в oneOf выражений.

Неправильное использование. Вы можете использовать любые индивиды в выражении oneOf. Например, вот онтология (в Черепахе и RDF/XML) с классом Color, который содержит Красного, Синего и Green, а затем два перечисленных классов RedOrBlue ≡ {красных, синего}, и RedOrGreen ≡ {Красный, зеленый}.

@prefix :  <http://stackoverflow.com/q/37419182/1281433/> . 
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
@prefix owl: <http://www.w3.org/2002/07/owl#> . 
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . 
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 

:Green a  owl:NamedIndividual , :Color . 

:RedOrGreen a    owl:Class ; 
     owl:equivalentClass [ a   owl:Class ; 
           owl:oneOf (:Green :Red) 
          ] . 

:Red a  owl:NamedIndividual , :Color . 

:RedOrBlue a    owl:Class ; 
     owl:equivalentClass [ a   owl:Class ; 
           owl:oneOf (:Blue :Red) 
          ] . 

:Color a  owl:Class . 

:Blue a  owl:NamedIndividual , :Color . 

:  a  owl:Ontology . 
<rdf:RDF 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:owl="http://www.w3.org/2002/07/owl#" 
    xmlns="http://stackoverflow.com/q/37419182/1281433/" 
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"> 
    <owl:Ontology rdf:about="http://stackoverflow.com/q/37419182/1281433/"/> 
    <owl:Class rdf:about="http://stackoverflow.com/q/37419182/1281433/RedOrBlue"> 
    <owl:equivalentClass> 
     <owl:Class> 
     <owl:oneOf rdf:parseType="Collection"> 
      <owl:NamedIndividual rdf:about="http://stackoverflow.com/q/37419182/1281433/Blue"> 
      <rdf:type> 
       <owl:Class rdf:about="http://stackoverflow.com/q/37419182/1281433/Color"/> 
      </rdf:type> 
      </owl:NamedIndividual> 
      <owl:NamedIndividual rdf:about="http://stackoverflow.com/q/37419182/1281433/Red"> 
      <rdf:type rdf:resource="http://stackoverflow.com/q/37419182/1281433/Color"/> 
      </owl:NamedIndividual> 
     </owl:oneOf> 
     </owl:Class> 
    </owl:equivalentClass> 
    </owl:Class> 
    <owl:Class rdf:about="http://stackoverflow.com/q/37419182/1281433/RedOrGreen"> 
    <owl:equivalentClass> 
     <owl:Class> 
     <owl:oneOf rdf:parseType="Collection"> 
      <owl:NamedIndividual rdf:about="http://stackoverflow.com/q/37419182/1281433/Green"> 
      <rdf:type rdf:resource="http://stackoverflow.com/q/37419182/1281433/Color"/> 
      </owl:NamedIndividual> 
      <owl:NamedIndividual rdf:about="http://stackoverflow.com/q/37419182/1281433/Red"/> 
     </owl:oneOf> 
     </owl:Class> 
    </owl:equivalentClass> 
    </owl:Class> 
</rdf:RDF> 
+0

Я думал, что ссылка на уже определенный человек может быть сделано с РДФ: атрибута ресурса. В вашем примере ссылка на уже определенный «красный» человек создается с помощью rdf: об атрибуте? Правильно ли это? Чтобы определить и ссылаться, мы можем использовать rdf: об атрибуте? –

+1

@DenisSokolov rdf: ресурс используется при идентификации объекта тройки, например, в '' , тогда как 'gdf: about' используется в теме, например' ... '. Это не имеет никакого отношения к тому, были ли вещи «определены» раньше или нет. RDF/XML - очень сложный синтаксис с множеством краевых случаев. Гораздо лучше использовать читаемый человеком формат, такой как Turtle, и конвертировать в RDF/XML, если вам это нужно. –