2014-09-06 164 views
-1

ontology有這些classes和這個數字triples。爲了完整性,這裏是triplesSPARQL查詢失敗

該查詢按預期工作:

PREFIX pizza: <http://www.ncl.ac.uk/pizza#> 
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> 
SELECT ?p 
FROM <http://homepages.cs.ncl.ac.uk/phillip.lord/scratch/pizza.rdf> 
WHERE { 
    ?p rdfs:subClassOf pizza:PizzaTopping 
} 

如圖所示here

但是,此查詢不產生預期的結果:

PREFIX pizza: <http://www.ncl.ac.uk/pizza#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX owl: <http://www.w3.org/2002/07/owl#> 
SELECT DISTINCT * 
FROM <http://homepages.cs.ncl.ac.uk/phillip.lord/scratch/pizza.rdf> 
WHERE { 
?Name ?Relation pizza:MushroomTopping . 
?Relation owl:inverseOf pizza:isToppingOf . 
OPTIONAL { 
    ?Name2 ?Relation2 pizza:HamTopping . 
    ?Relations2 owl:inverseOf pizza:isToppingOf . 
} 
FILTER(?Name2 = ?PizzaName) 
} 

的簡化版本也將失敗:

PREFIX pizza: <http://www.ncl.ac.uk/pizza#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX owl: <http://www.w3.org/2002/07/owl#> 
SELECT * 
FROM <http://homepages.cs.ncl.ac.uk/phillip.lord/scratch/pizza.rdf> 
WHERE { 
?Name ?Relation pizza:NonVegetarianPizza . 
} 

這些所需的查詢可能共享同一個錯誤:

PREFIX pizza: <http://www.ncl.ac.uk/pizza#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
SELECT * 
FROM <http://homepages.cs.ncl.ac.uk/phillip.lord/scratch/pizza.rdf> 
WHERE { ?p rdf:type pizza:Pizza; 
      pizza:hasTopping ?t. 
     ?t rdf:type pizza:TomatoTopping 
     } 

and

PREFIX pizza: <http://www.ncl.ac.uk/pizza#> 
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 * 
FROM <http://homepages.cs.ncl.ac.uk/phillip.lord/scratch/pizza.rdf> 
WHERE 
{ 
    ?pizza rdfs:subClassof [ 
    owl:onProperty pizza:hasTopping; 
    owl:someValuesFrom pizza:MushroomTopping ] . 
} 

PREFIX pizza: <http://www.ncl.ac.uk/pizza#> 
PREFIX owl:<http://www.w3.org/2002/07/owl#> 
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> 
SELECT * 
FROM <http://homepages.cs.ncl.ac.uk/phillip.lord/scratch/pizza.rdf> 
WHERE 
{ 
    ?pizza rdfs:subClassOf [ 
    owl:onProperty pizza:hasTopping; 
    owl:someValuesFrom pizza:MozzarellaTopping ] . 
    ?pizza rdfs:subClassof [ 
    owl:onProperty pizza:hasTopping; 
    owl:someValuesFrom pizza:PeperonSausageTopping ] . 
    ?pizza rdfs:subClassof [ 
    owl:onProperty pizza:hasTopping; 
    owl:someValuesFrom pizza:TomatoTopping ] . 
} 

我在做什麼錯?

回答

1

你簡化查詢:

PREFIX pizza: <http://www.ncl.ac.uk/pizza#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX owl: <http://www.w3.org/2002/07/owl#> 
SELECT * 
FROM <http://homepages.cs.ncl.ac.uk/phillip.lord/scratch/pizza.rdf> 
WHERE { 
?Name ?Relation pizza:NonVegetarianPizza . 
} 

不應返回任何東西。在您鏈接到的數據中,pizza:NonVegetarianPizza僅作爲主題出現,絕不作爲對象。你有沒有理由期望這個查詢返回一些結果?

+0

我的目標是確定與NonVegetarianPizza有關的頂部。其他查詢有類似的目標。我應該如何重新編寫來產生這些結果? – 2014-09-06 16:55:30

+0

您需要首先明確「與......相關」的含義。 – 2014-09-06 16:57:39

+0

我會再看一遍,回到你身邊: http://rhizomik.net/redefer-services/render?rdf=http://homepages.cs.ncl.ac.uk/phillip.lord/ scratch/pizza.rdf&format = RDF/XML&mode = svg&rules = http://rhizomik.net:8080/html/redefer/rdf2svg/showclasshierarchy.jrule – 2014-09-06 17:12:44