2009-05-09 5 views
0

ich eine Ontologie entwickle und ich habe ein Problem mit meiner Dl Abfragein owl „Dl Abfrage“, wie fortschrittlich valu Abfrage in Protege verwenden

es eine Klasse „Blume“

und diese Klasse genannt ist hat Unterklassen, die einige Blumen Namen

und es gibt auch eine andere Klasse namens „flowersColor“

und es hat diese Werte sind („rot“, „grün“ und „blau“) als Individuen nicht

subclass- jede Blume

hat eine Farbe oder mehr

ich für eine Blume suchen, die rote Farbe hat und nur rot

meine DL Query:

„Blume und hasColor Wert rot“

diese Abfrage gibt mir alle Blumen, die die Farbe rot hat, auch wenn es andere Farben

hat aber ich alle Blumen wollen, dass nur die Farbe rot

hat

Ich mag < so etwas wie diese

„Rot-Wert nur Blumen und hasColor“ schreiben - das ist nicht grammatisch korrekt ist

I Haupt wenn die Farbe eine Kombination von „rot“ hat und „grün“, dann ich will nicht, dass es in meinem Ergebnis sehen

ich hoffe, dass Sie mir in meiner Anfrage

Dank

Antwort

1
helfen können

Die Abfrage, die Sie nach its:

flower and (hasColor only {red}) 

Beachten Sie, dass die {.} Konstruktor eine Klasse von einem Individuum erzeugt, oder eine Liste von Personen. Sie können es also überall dort verwenden, wo eine Klasse syntaktisch benötigt wird, z.

(not {blue}) subClassOf 
      {red} and {green,blue} or (hasColor max 10 ({red} or {blue})) 
3

Denken Sie daran, dass OWL die Open-World-Annahme verwendet, so dass Sie etwas begrenzt sind, was durch die Beschreibungslogik abgeleitet werden kann.

So Ihre "Abfrage", wie Kaarel erwähnt, könnte sein:

flower and (hasColor only {red}) 

Doch dies ist nicht beweisbar in der offenen Welt Annahme. Es könnte im Universum Aussage, irgendwo sein, die behauptet:

<RedRose> :hasColor :StackOverflow . 

die, wenn sie mit Ihren Behauptungen kombiniert (die Sie versuchen, fragen):

<RedRose> :hasColor :Red . 
<RedRose> a :Flower . 

Wird die DL-Abfrage dazu führen, gib keine Ergebnisse zurück.Aufgrund der Annahme der offenen Welt und der theoretischen Existenz von wilden, ungenauen und irrelevanten Assertionen (zumindest aus Ihrer Perspektive) wird die DL-Abfrage fehlschlagen, da sie nur Aussagen ableiten kann, die sich als wahr erweisen können.

Ihre Beispielabfrage kann jedoch in einer OWL-Einschränkung verwendet werden, um festzustellen, ob etwas nicht nicht etwas anderes ist. Wenn Sie zum Beispiel eine Klasse haben (:OnlyRedFlower), die nur die Farbe Rot haben muss, aber die Farbe Blau hat (Sie haben diese zusätzliche Farbe geltend gemacht), dann können Sie daraus schließen, dass diese neue Blume nicht ist Satz von :OnlyRedFlower.

Update: Für diejenigen, die bei dem Versuch, diese selbst interessiert sind, hier ist die Ontologie ich auf diese Frage basiert erstellt:

<?xml version="1.0"?> 
<!DOCTYPE rdf:RDF [ 
    <!ENTITY owl "http://www.w3.org/2002/07/owl#" > 
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > 
    <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" > 
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > 
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > 
    <!ENTITY onto "http://www.elastra.com/onto/2009/5/30/onto.owl#" > 
]> 
<rdf:RDF xmlns="http://stackoverflow.com/users/64881/ontology_842588.rdf#" 
    xml:base="http://stackoverflow.com/users/64881/ontology_842588.rdf" 
    xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:owl="http://www.w3.org/2002/07/owl#" 
    xmlns:onto="http://www.elastra.com/onto/2009/5/30/onto.owl#"> 
    <owl:Ontology rdf:about=""> 
     <rdfs:comment xml:lang="en" 
      >Example for http://stackoverflow.com/questions/842588/in-owl-dl-query-how-to-use-advanced-valu-query-in-protege</rdfs:comment> 
    </owl:Ontology> 
    <owl:ObjectProperty rdf:about="&onto;hasColor"/> 
    <owl:Class rdf:about="&onto;Color"/> 
    <owl:Class rdf:about="&onto;ExampleFlower"> 
     <rdfs:subClassOf rdf:resource="&onto;Flower"/> 
    </owl:Class> 
    <owl:Class rdf:about="&onto;Flower"/> 
    <owl:Class rdf:about="&onto;OnlyRedFlower"> 
     <owl:equivalentClass> 
      <owl:Class> 
       <owl:intersectionOf rdf:parseType="Collection"> 
        <rdf:Description rdf:about="&onto;Flower"/> 
        <owl:Restriction> 
         <owl:onProperty rdf:resource="&onto;hasColor"/> 
         <owl:allValuesFrom> 
          <owl:Class> 
           <owl:oneOf rdf:parseType="Collection"> 
            <rdf:Description rdf:about="&onto;Red"/> 
           </owl:oneOf> 
          </owl:Class> 
         </owl:allValuesFrom> 
        </owl:Restriction> 
       </owl:intersectionOf> 
      </owl:Class> 
     </owl:equivalentClass> 
     <rdfs:subClassOf rdf:resource="&onto;Flower"/> 
    </owl:Class> 
    <owl:Class rdf:about="&onto;OtherFlower"> 
     <rdfs:subClassOf rdf:resource="&onto;Flower"/> 
    </owl:Class> 
    <onto:Color rdf:about="&onto;Blue"> 
     <rdf:type rdf:resource="&owl;Thing"/> 
    </onto:Color> 
    <onto:Flower rdf:about="&onto;BlueOrchid"> 
     <rdf:type rdf:resource="&owl;Thing"/> 
     <onto:hasColor rdf:resource="&onto;Blue"/> 
    </onto:Flower> 
    <onto:Color rdf:about="&onto;Red"> 
     <rdf:type rdf:resource="&owl;Thing"/> 
    </onto:Color> 
    <onto:Flower rdf:about="&onto;RedRose"> 
     <rdf:type rdf:resource="&owl;Thing"/> 
     <onto:hasColor rdf:resource="&onto;Red"/> 
    </onto:Flower> 
</rdf:RDF> 
Verwandte Themen