2014-09-06 140 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