3

ウィキデータのREST APIを使用した次の SPARQL クエリは、いずれもxsd:datetime1 月 1 日のタイプ の日付を返します。

>>> # Inception of Manchester United F.C. = in 1875
>>> wikidata_rest_query("SELECT ?date WHERE { wd:Q18656 wdt:P571 ?date }")
{'head': {'vars': ['date']},
 'results': {'bindings': [{'date': {'datatype': 'http://www.w3.org/2001/XMLSchema#dateTime',
     'type': 'literal',
     'value': '1875-01-01T00:00:00Z'}}]}}

>>> # Istanbul nightclub attack = on January 1st 2017
>>> wikidata_rest_query("SELECT ?date WHERE { wd:Q28094271 wdt:P585 ?date }")
{'head': {'vars': ['date']},
 'results': {'bindings': [{'date': {'datatype': 'http://www.w3.org/2001/XMLSchema#dateTime',
     'type': 'literal',
     'value': '2017-01-01T00:00:00Z'}}]}}

最初のケースでは、日付は「1875 年」を意味するだけであり、文字どおり 1875 年 1 月 1 日の午前 0 時ではありません。2 番目のケースでは、日付は実際には「2017 年 1 月 1 日」を意味しますが、厳密には午前 0 時ではありません。「1875」や「2017-01-01」などの応答が望ましいでしょう。

これらのトピック (マンチェスター ユナイテッド FC2017 年のイスタンブール ナイト クラブの攻撃)のウィキデータ ページを参照すると、正しいレベルの詳細が表示されます (つまり、最初のケースでは 1875 年ですが、2 番目のケースでは 2017 年 1 月 1 日)。データベースに正しい情報があり、それを照会する方法があることを願っています。

何か案は?

ノート

datatype(?date)違いが見られることを期待して、クエリを実行してみましたがxsd:datetime、両方の例で返されます。

編集

wikidata_rest_query()上記のクエリをテストする場合は、の python 3 コードを次に示します。

from urllib.request import urlopen, quote
import json

def wikidata_rest_query(query):
    url = "https://query.wikidata.org/sparql?query=%s&format=json" % quote(query)
    with urlopen(url) as f:
        response = f.read().decode("utf-8")
    return json.loads(response)
4

1 に答える 1