-1

这个本体有这些和这个数量的 三元组。为了完整起见,这里是三元组

此查询按预期工作:

 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
 }

如此处所示。

但是,此查询不会产生预期的结果:

 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
       }

 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 ] .
 }

我究竟做错了什么?

4

1 回答 1

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仅作为主题出现,从不作为对象出现。你有什么理由期望这个查询返回一些结果吗?

于 2014-09-06T16:05:36.277 回答