2

datetime が紀元前 36 年の日付である次の SPARQL を考えてみましょう。

SELECT ?date ?year WHERE {
  wd:Q1180731 wdt:P577 ?datetime .
  BIND(xsd:date(?datetime) AS ?date)
  # BIND(YEAR(?datetime) AS ?year)
}

このxsd:date(?datetime)関数は、ウィキデータ クエリ サービス Blazegraph インスタンスで失敗しますjava.lang.IllegalArgumentException: -036-01-01T00:00:00Z

それはうまくいくと思いますか?の行YEARは文句を言いません (コメントを外した場合)。

代わりに、このバリエーションを思いつきました:

SELECT ?date WHERE {
  wd:Q1180731 wdt:P577 ?datetime .
  BIND(REPLACE(STR(?datetime), 'T.*', '') AS ?date)
}

この場合、結果は-036-01-01です。このような BC 日付のソート可能性は良くない可能性があります。(文字列?) 1000 年より前の日付 (紀元前の日付を含む) をソート可能にする他のメソッド/関数はありますか?

4

1 に答える 1