簡答:沒有什麼與您的查詢匹配。你可以看到的一切,將通過運行
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 .
}
結果符合您查詢的結構沒有給出辣味值:
+--------------------+---------------------+---------------------+
| 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 |
+--------------------+---------------------+---------------------+
所以這裏有什麼問題嗎?下一步將圍繞走另一條路,即我們檢查是與熱辛辣的一切:
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 .
}
結果:
+------------------------------+
| s |
+------------------------------+
| pizza:HotGreenPepperTopping |
| pizza:JalapenoPepperTopping |
| pizza:TobascoPepperSauce |
| pizza:CajunSpiceTopping |
| pizza:HotSpicedBeefTopping |
+------------------------------+
那麼,怎麼會這樣?嗯,簡單的答案是,沒有辛辣配料被定義爲類pizza:PizzaTopping
的情況下,你可以用一個額外的可選三合一模式驗證此
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 }
}
結果:
+------------------------------+------------+
| s | type |
+------------------------------+------------+
| pizza:HotGreenPepperTopping | owl:Class |
| pizza:JalapenoPepperTopping | owl:Class |
| pizza:TobascoPepperSauce | owl:Class |
| pizza:CajunSpiceTopping | owl:Class |
| pizza:HotSpicedBeefTopping | owl:Class |
+------------------------------+------------+
爲什麼選擇'?targetPizza'而不是'?topping'變量? – AKSW
我認爲變量的選擇沒有太大的區別。不應該把所有比薩餅都用熱騰騰的麪包回來?但即使我把它改成一流,它仍然是一個空的結果。 – Nick
「變量的選擇沒有什麼區別」?您選擇未在查詢中綁定的變量'?targetPizza'。你爲什麼認爲這並不重要? – AKSW