5.2 KiB
title | weight |
---|---|
複数エンドポイントの横断的活用 | 3 |
複数エンドポイントの横断的活用
SPARQLでは、1つのエンドポイントだけでなく、外部の複数のエンドポイントに対してクエリを実行することができるfederatedクエリという仕組みがあります。
federatedクエリを利用したクエリを紹介します。
SPARQLクエリエディタ
{{< yasgui id="federated" />}}
クエリ集
作品の多言語のタイトルを取得する
https://mediaarts-db.bunka.go.jp/id/C413599
{{< yasgui-query yasgui-id="federated" title="作品の多言語のタイトルを取得する" endpoint="https://mediag.bunka.go.jp/sparql" >}} PREFIX rdfs: http://www.w3.org/2000/01/rdf-schema# PREFIX schema: https://schema.org/ PREFIX ma: https://mediaarts-db.bunka.go.jp/data/property# PREFIX wdt: http://www.wikidata.org/prop/direct/
SELECT ?MADBLabel ?label (LANG(?label) AS ?lang) ?wikidataEntity WHERE { https://mediaarts-db.bunka.go.jp/id/C413599 schema:identifier ?MADBID ; rdfs:label ?MADBLabel .
Wikidataへクエリ
SERVICE https://query.wikidata.org/sparql { # P7886: メディア芸術データベース識別子 ?wikidataEntity wdt:P7886 ?MADBID ; rdfs:label ?label . } } {{< / yasgui-query >}}
メディア芸術データベースの責任主体の法人番号を取得する
Wikidataとメディア芸術データベースを連携したfederatedクエリ
法人番号からさらにgBizINFOのSPARQLエンドポイントなどとも繋げられそうですね。
{{< yasgui-query yasgui-id="federated" title="メディア芸術データベースの責任主体の法人番号を取得する" endpoint="https://mediag.bunka.go.jp/sparql" >}} PREFIX schema: https://schema.org/ PREFIX class: https://mediaarts-db.bunka.go.jp/data/class# PREFIX ma: https://mediaarts-db.bunka.go.jp/data/property# PREFIX wdt: http://www.wikidata.org/prop/direct/
SELECT ?agent ?name ?hojinBangou WHERE { ?agent a class:Agent; schema:name ?name ; ma:wikidata ?wikidataPage .
WikidataのリソースURIに変換
BIND (URI(REPLACE(?wikidataPage, "https://www.wikidata.org/wiki/", "http://www.wikidata.org/entity/")) AS ?wikidataEntity)
Wikidata
SERVICE https://query.wikidata.org/sparql { # P3225: 法人番号 ?wikidataEntity wdt:P3225 ?hojinBangou ; } } LIMIT 100 {{< / yasgui-query >}}
「日本ゲーム大賞」を受賞したゲームを取得する
DBpedia JapaneseとWikidataとメディア芸術データベースを連携したfederatedクエリ
{{< yasgui-query yasgui-id="federated" title="「日本ゲーム大賞」を受賞したゲームを取得する" endpoint="https://mediag.bunka.go.jp/sparql" >}} PREFIX rdfs: http://www.w3.org/2000/01/rdf-schema# PREFIX owl: http://www.w3.org/2002/07/owl# PREFIX dcterms: http://purl.org/dc/terms/ PREFIX schema: https://schema.org/ PREFIX skos: http://www.w3.org/2004/02/skos/core# PREFIX class: https://mediaarts-db.bunka.go.jp/data/class# PREFIX ma: https://mediaarts-db.bunka.go.jp/data/property# PREFIX wdt: http://www.wikidata.org/prop/direct/ PREFIX hint: http://aws.amazon.com/neptune/vocab/v01/QueryHints#
SELECT ?MADBID ?genre ?label WHERE { hint:Query hint:joinOrder "Ordered" .
DBpedia Japanese
SERVICE https://ja.dbpedia.org/sparql { SELECT DISTINCT (URI(REPLACE(STR(?wikidataEntity), "http://wikidata.dbpedia.org/resource/", "http://www.wikidata.org/entity/")) AS ?wikidataEntity) { http://ja.dbpedia.org/resource/Category:日本ゲーム大賞受賞ソフト ^skos:broader* ?category . ?dbpediaEntity dcterms:subject ?category; ^owl:sameAs ?wikidataEntity . FILTER(STRSTARTS(STR(?wikidataEntity), "http://wikidata.dbpedia.org/resource/")) } }
Wikidata
SERVICE https://query.wikidata.org/sparql { # P7886: メディア芸術データベース識別子 ?wikidataEntity wdt:P7886 ?MADBID . }
メディア芸術データベース
?MADBResource schema:identifier ?MADBID ; schema:genre ?genre ; rdfs:label ?label . } LIMIT 100 {{< / yasgui-query >}}
{{< hint info >}} federatedクエリの実行順序によっては、正しく結果が得られないことがあります。
RDFストアによっては、クエリオプティマイザに実行順序を指示する方法が用意されており、メディア芸術データベースのSPARQLクエリサービスが使用しているAmazon Neptuneでは hint:Query hint:joinOrder "Ordered" .
というパターンを記述します。
参照: Amazon Neptune: SPARQL クエリヒント {{< /hint >}}