-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 に答える