質問

linkedMDB Sparql Endpoint で、次のクエリを実行しています。これにより、ムービーのディレクタについて必要とするすべての情報がID 72であり、これは Titanic であるので、James Cameronに関する情報を入手します。

PREFIX mdb: <http://data.linkedmdb.org/resource/movie/>
SELECT ?director?nombre_director?id_director WHERE {
  ?pelicula mdb:filmid ?id .
  ?pelicula <http://data.linkedmdb.org/resource/movie/director> ?director .
  ?director <http://data.linkedmdb.org/resource/movie/director_name> ?nombre_director .
  ?director <http://data.linkedmdb.org/resource/movie/director_directorid> ?id_director .
  FILTER (?id = 72).
}
.

映画が高い映画、例(例)、例 star trek <44396 72を44396に置き換えると、クエリは結果を返します。 entry は、ディレクトリ、ID、および名前を明確にしています。さまざまなクエリワークではないのはなぜですか?

役に立ちましたか?

解決

SPARQLは、リテラル72の代わりに"72"^^xsd:integerを書き込むことができます。あなたが見たように、あなたは問題なくID "72"^^xsd:integerを使ってフィルムを取得することができます。ただし、あなたが探している他のフィルムにはID "44396"^^xsd:intがあります(データ型はxsd:int Not xsd:integerです)。 の理由のデータ型が異なるのですが、欲しいものを取得するのに十分です。

PREFIX mdb: <http://data.linkedmdb.org/resource/movie/>
SELECT ?director?nombre_director?id_director WHERE {
  ?pelicula mdb:filmid "44396"^^xsd:int .
  ?pelicula <http://data.linkedmdb.org/resource/movie/director> ?director .
  ?director <http://data.linkedmdb.org/resource/movie/director_name> ?nombre_director .
  ?director <http://data.linkedmdb.org/resource/movie/director_directorid> ?id_director .
}
.

SPARQLの結果(1)

director          nombre_director  id_director
----------------------------------------------
db:director/9025  "J.J. Abrams"    9025
.

filteringではなく、実際の希望の値をクエリパターンに入れます。これは少し単純化されていると思います。クエリエンジンが最適化されていない場合は、パフォーマンスが優れている可能性があります(大きな結果セットを構築していないため、物事をフィルタリングする)。実際、クエリが返される可能性がある結果の数に制限がある場合は、変数を使用する意味的に同等のクエリが結果を返す理由を説明するかもしれません。 (ただしこれは純粋な憶測です。)いずれにせよ、次のクエリは機能しませんが、それはそれがあるべきだと思います:

PREFIX mdb: <http://data.linkedmdb.org/resource/movie/>
SELECT ?director?nombre_director?id_director WHERE {
  ?pelicula mdb:filmid ?id .
  ?pelicula <http://data.linkedmdb.org/resource/movie/director> ?director .
  ?director <http://data.linkedmdb.org/resource/movie/director_name> ?nombre_director .
  ?director <http://data.linkedmdb.org/resource/movie/director_directorid> ?id_director .
  filter ( ?id = "44396"^^xsd:int ) 
}
.

SPARQLの結果(なし)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top