Kurze Antwort: Es gibt nichts, was Ihrer Anfrage entspricht. Sie können alles sehen, was Ihre Abfragestruktur ohne die gegebene Würzigkeit Wert durch Ausführen
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT * WHERE {
?topping rdfs:subClassOf pizza:PizzaTopping .
?topping rdfs:subClassOf ?restriction .
?restriction rdf:type owl:Restriction .
?restriction ?p ?o .
}
Ergebnis entsprechen würde:
+--------------------+---------------------+---------------------+
| topping | p | o |
+--------------------+---------------------+---------------------+
| pizza:FishTopping | rdf:type | owl:Restriction |
| pizza:FishTopping | owl:onProperty | pizza:hasSpiciness |
| pizza:FishTopping | owl:someValuesFrom | pizza:Mild |
| pizza:NutTopping | rdf:type | owl:Restriction |
| pizza:NutTopping | owl:onProperty | pizza:hasSpiciness |
| pizza:NutTopping | owl:someValuesFrom | pizza:Mild |
+--------------------+---------------------+---------------------+
Also, was ist das Problem? Der nächste Schritt in die andere Richtung zu gehen um sein würde, das heißt wir überprüfen alles, was zu heißen Würze verwandt ist:
PREFIX pizza: <http://www.co-ode.org/ontologies/pizza/pizza.owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT DISTINCT ?s WHERE {
?s rdfs:subClassOf ?restriction .
?restriction owl:onProperty pizza:hasSpiciness .
?restriction owl:someValuesFrom pizza:Hot .
}
Ergebnis:
+------------------------------+
| s |
+------------------------------+
| pizza:HotGreenPepperTopping |
| pizza:JalapenoPepperTopping |
| pizza:TobascoPepperSauce |
| pizza:CajunSpiceTopping |
| pizza:HotSpicedBeefTopping |
+------------------------------+
Also, wie kann das sein? Nun, die kurze Antwort ist, keine der würzigen Belag ist definiert als Instanz der Klasse pizza:PizzaTopping
, können Sie dies mit einem zusätzlichen optionalen Triple-Muster validieren können
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX pizza: <http://www.co-ode.org/ontologies/pizza/pizza.owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT distinct ?s ?type WHERE {
?s rdfs:subClassOf ?restriction .
?restriction owl:onProperty pizza:hasSpiciness .
?restriction owl:someValuesFrom pizza:Hot .
OPTIONAL {?s rdf:type ?type }
}
Ergebnis:
+------------------------------+------------+
| s | type |
+------------------------------+------------+
| pizza:HotGreenPepperTopping | owl:Class |
| pizza:JalapenoPepperTopping | owl:Class |
| pizza:TobascoPepperSauce | owl:Class |
| pizza:CajunSpiceTopping | owl:Class |
| pizza:HotSpicedBeefTopping | owl:Class |
+------------------------------+------------+
Und warum wählen Sie '? TargetPizza' anstelle der '? Topping'-Variable? – AKSW
Ich dachte, die Wahl der Variablen macht keinen großen Unterschied. Und sollte nicht alle Pizzas mit heißem Belag zurückgegeben werden? Aber selbst wenn ich es zum Topping ändere, ist es immer noch ein leeres Ergebnis. – Nick
"Die Wahl der Variablen macht keinen Unterschied"? Sie SELECT die Variable '? TargetPizza', die nicht in der Abfrage gebunden ist. Warum glaubst du, dass das nicht wichtig ist? – AKSW