あまり使わなくて、いつも忘れるのでメモ。
参考サイト
SPARQLの仕様
DBpedia
SPARQLを試すのに便利。
以下の説明で記載するSPARQLはDBpediaで試している。
基本の形
“?”で始まるトークンは変数。
慣例的に、主語(Subject)、述語(predicate)、目的語(object)の頭文字をとり、?s, ?p, ?oとする。WHERE句の最後には”.”をつける。
1行のみの場合は省略できる。“LIMIT”を指定することで件数を制限する。
SELECT ?s ?p ?o
WHERE {
?s ?p ?o .
}
LIMIT 100
SELECT
毎回フルIRIを書かなくていいように”PREFIX”を宣言できる。
PREFIX dbp:<http://ja.dbpedia.org/resource/>
PREFIX dbp-owl:<http://dbpedia.org/ontology/>
SELECT DISTINCT *
WHERE {
dbp:手塚治虫 dbp-owl:birthPlace ?o .
}
ASK
存在すればTrue, しなければFalseを返す。
PREFIX dbp:<http://ja.dbpedia.org/resource/>
PREFIX dbp-owl:<http://dbpedia.org/ontology/>
ASK
WHERE {
dbp:手塚治虫 dbp-owl:birthPlace ?o .
}
DESCRIBE
全部とってくる。
PREFIX dbp:<http://ja.dbpedia.org/resource/>
DESCRIBE dbp:手塚治虫
COUNT
PREFIX dbp:<http://ja.dbpedia.org/resource/>
PREFIX dbp-owl:<http://dbpedia.org/ontology/>
SELECT dbp:手塚治虫 AS ?author,COUNT(?o) AS ?countOfWorks
WHERE {
dbp:手塚治虫 dbp-owl:notableWork ?o .
}
GROUP BY
PREFIX dbp:<http://ja.dbpedia.org/resource/>
PREFIX dbp-owl:<http://dbpedia.org/ontology/>
SELECT ?author, (COUNT(?works) AS ?countOfWorks)
WHERE {
?author dbp-owl:notableWork ?works
}
GROUP BY ?author
ORDER BY DESC(?countOfWorks)
LIMIT 100
サブクエリとAVG
PREFIX dbp:<http://ja.dbpedia.org/resource/>
PREFIX dbp-owl:<http://dbpedia.org/ontology/>
SELECT AVG(?countOfWorks) AS ?avgOfWorks
WHERE{
SELECT ?author, (COUNT(?works) AS ?countOfWorks)
WHERE {
?author dbp-owl:notableWork ?works
}
GROUP BY ?author
}