2018/12/15
主語 | 述語 | 目的語 |
---|---|---|
Oda Nobunaga | instance of | human |
Oda Nobunaga | father | Oda Nobuhide |
Oda Nobunaga | mother | Dota Gozen |
主語 | 述語 | 目的語 |
---|---|---|
Oda Nobuhide | instance of | human |
Oda Nobuhide | father | Oda Nobusada |
SELECT ?human
WHERE
{
wd:Q171411 wdt:P22 ?human.
}
wd:Q171411
が織田信長のID、wdt:P22
が述語「父親」のID、 ?で始まる?human
が変数になります。
wd:Q171411
を主語、wdt:P22
を述語とするレコードを探し、そのレコードの目的語が?human
に入ります Wikidata Query Serviceで実際にwikidataにクエリを投げて、その結果を見ることができます。
主語を変数にすることもできます
SELECT ?human
WHERE
{
?human wdt:P22 wd:Q171411.
}
述語も変数にできます
SELECT ?rel
WHERE
{
wd:Q171411 ?rel wd:Q1153962.
}
複数条件も指定できます
SELECT ?human
WHERE
{
?human wdt:P22 wd:Q171411.
?human wdt:P21 wd:Q6581072
}
?human wdt:P22 wd:Q171411; wdt:P21 wd:Q6581072
というように;
を使って主語を省略することもできます。他にもたくさん指定できますが、きりがないので割愛します
SELECT ?id ?name ?deth_date ?article #1
WHERE
{
BIND("2018-01-01"^^xsd:date as ?birth_date) #2
?id wdt:P570 ?deth_date; wdt:P1559 ?name.
BIND(?birth_date - ?deth_date as ?diff)
FILTER( ?diff > 0 && ?diff < 365) #3
OPTIONAL { #4
?article schema:about wd:Q171411 .
?article schema:inLanguage "ja" .
FILTER (SUBSTR(str(?article), 1, 25) = "https://ja.wikipedia.org/")
}
}
ORDER BY ?diff
LIMIT 100
^^xsd:date
で文字列を日付に変換しています。 結果をBIND・ASで変数に格納します同様にして人のid(wd:Q171411)から仕事を問い合わせるクエリも作ってみます
SELECT ?jobLabel
WHERE
{
wd:Q171411 wdt:P106 ?job.
?job rdfs:label ?jobLabel #a
SERVICE wikibase:label { bd:serviceParam wikibase:language "ja". } #b
}
LIMIT 1
https://query.wikidata.org/sparql?format=json&query=${query文字列}
です
{
"head" : {
"vars" : [ "id", "name", "deth_date", "article" ]
},
"results" : {
"bindings" : [ {
"article" : {
"type" : "uri",
"value" : "https://ja.wikipedia.org/wiki/%E7%B9%94%E7%94%B0%E4%BF%A1%E9%95%B7"
},
"id" : {
"type" : "uri",
"value" : "http://www.wikidata.org/entity/Q11634158"
},
"name" : {
"xml:lang" : "ja",
"type" : "literal",
"value" : "豊田 達郎"
},
"deth_date" : {
"datatype" : "http://www.w3.org/2001/XMLSchema#dateTime",
"type" : "literal",
"value" : "2017-12-30T00:00:00Z"
}
}, {
...
Wikidataのクエリは30秒以上かかるとタイムアウトでエラーになります
その他同時アクセスは3つまで等の制限があります
ちょっと複雑なクエリを投げるとWikidataはかなり重いのですが、これはどうしようもなさそうです