2

たとえば、このサイトでは、最初のSPARQLクエリを取得して、非常によく似たものを作成します

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX p: <http://dbpedia.org/property/>
SELECT *
WHERE {
    ?name p:name <http://dbpedia.org/resource/Olivier_Theyskens> .
}

それを実行してみてください:ここ

そして、私は結果を得ることができません。ただし、クエリを次のように変更します。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX p: <http://dbpedia.org/property/>
SELECT *
WHERE {
    ?name p:name ?otherthing.
}

そして、私が望む結果ではないのに、私は結果を得る。

最初のクエリが機能しないのはなぜですか?何が間違っているのですか?:/

4

2 に答える 2

6

この場合、クエリステートメントを逆順に並べているためだと思います。

DBpediaリソース(<http://dbpedia.org/resource/Olivier_Theyskens>)はエンティティまたはサブジェクト?s)であり、プロパティ(p:name)は属性または述語?p)であり、そのプロパティの値(?name)は値またはオブジェクト(?o)です。

SPARQLはすべてのステートメントがであると想定しています{ ?s ?p ?o }が、あなたのステートメントは{ ?o ?p ?s }...と書かれているようです。

要約すると、このクエリを試してみると-

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX p: <http://dbpedia.org/property/>
SELECT *
WHERE 
  {
    <http://dbpedia.org/resource/Olivier_Theyskens>  p:name  ?name  .
  }

-あなたは私が望むと思う結果を得るでしょう。

于 2011-05-18T13:43:19.767 に答える
4

最初のクエリの問題は、p:nameリテラルにリンクしていて、URIを一致させようとすることです。

最初のクエリを機能させるにhttp://dbpedia.org/ontology/artistは、リテラルではなく、URIにリンクするプロパティを使用する必要があります。

SELECT *
WHERE {
    ?s <http://dbpedia.org/ontology/artist> <http://dbpedia.org/resource/The_Velvet_Underground> .
}

-の代わりに<http://dbpedia.org/ontology/artist>この名前空間に含まれるプロパティの異なる名前空間がオブジェクトプロパティに使用されることに注意してください。ontologypropertyontology

于 2011-05-17T15:36:51.557 に答える