SPARQLクエリ集メモ
初見のSPARQLエンドポイントに向けて実行するSPARQLクエリをメモ。DBPediaのSPARQLエンドポイントでお試しください。
エンドポイントにどんなトリプルがあるのか
SELECT *
WHERE {
?s ?p ?o .
}
LIMIT 100
OFFSET 0
エンドポイントのトリプル数
SELECT (COUNT(*) AS ?count)
WHERE {
?s ?p ?o .
}
型の確認
SELECT DISTINCT ?type WHERE {
?s a ?type
}
どのようなプロパティがあるかを確認
SELECT DISTINCT ?p WHERE {
?s a <http://dbpedia.org/ontology/Anime> ;
?p ?o.
}
名前付きグラフも合算してトリプル数を検索する
SELECT (COUNT(*) AS ?count)
WHERE {
{
?s ?p ?o .
} UNION {
GRAPH ?g {
?s ?p ?o .
}
}
}
名前付きグラフの一覧を取得する
SELECT DISTINCT ?g
WHERE {
GRAPH ?g {
?s ?p ?o .
}
}
名前付きグラフ毎の件数を集計
SELECT ?g count(?g) WHERE {GRAPH ?g {?s ?p ?o}} GROUP BY ?g
名前付きグラフのデータを検索
SELECT * WHERE { GRAPH <あるグラフ> {?s ?p ?o }}
プロパティの一覧を取得する
SELECT DISTINCT ?p
WHERE {
?s ?p ?o .
}
LIMIT 100
プロパティの一覧を使用頻度順に取得する
SELECT ?p (COUNT(?p) AS ?count)
WHERE {
?s ?p ?o .
}
GROUP BY ?p
ORDER BY DESC(?count)
LIMIT 100
主語あたりの平均プロパティ数
SELECT (AVG(?count) AS ?average)
WHERE {
SELECT ?s (COUNT(?p) as ?count)
WHERE {
?s ?p ?o .
}
GROUP BY ?s
}
<検索データ>が含まれるデータを探したい(主語から探す)
SELECT * { GRAPH ?g { ?s ?p ?o . FILTER( contains(str(?s),'<検索データ>') ) }}
<検索データ>が含まれるデータを探したい(述語から探す)
SELECT * { GRAPH ?g { ?s ?p ?o . FILTER( contains(str(?p),'<検索データ>') ) }}
<検索データ>が含まれるデータを探したい(目的語から探す)
SELECT * { GRAPH ?g { ?s ?p ?o . FILTER( contains(str(?o),'<検索データ>') ) }}
グラフ完全一致でデータを探す
SELECT * { GRAPH <グラフ> {?s ?p ?o}}
主語完全一致でデータを探す
SELECT * { GRAPH ?g {<主語> ?p ?o}}
述語完全一致でデータを探す
SELECT * { GRAPH ?g {?s <述語> ?o}}
目的語完全一致でデータを探す
SELECT * { GRAPH ?g {?s ?p '目的語'}}
参考サイト:
よく使うSPARQLサンプル集 - Qiita https://qiita.com/hodade/items/30158fba9e943132023f
SPARQL入門 http://www.aise.ics.saitama-u.ac.jp/~gotoh/IntroSPARQL.html
関連しているかもしれない記事
- Amazon NeptuneのRDFデータをExportする
- SPARQLを使用して英語版DBpediaからディープインパクトの始祖を辿る
- SPARQLを使用して日本語版DBPediaから有馬記念の勝ち馬の始祖を辿る
- Amazon Neptuneのインスタンス作成からデータロード、クエリ実行までやってみる
- Neptuneへのバルクロード実行時に圧縮ファイルを使用する