LoginSignup
17
22

More than 5 years have passed since last update.

SPARQLの基本

Posted at

あまり使わなくて、いつも忘れるのでメモ。

参考サイト

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
}
17
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
22