4

次のエラーが発生します。

Virtuoso 22007 Error DT006: Cannot convert -0359 to datetime : Incorrect month field length

SPARQL query:
define sql:big-data-const 0 
#output-format:text/html
define sql:signal-void-variables 1 select ?item  bif:year(xsd:dateTime( str(?dob))) as ?m{
?item <h://f.cm/ns/common/topic/notable_types> <h://f.cm/ns/people/person> .
?item <h://f.cm/ns/people/person/date_of_birth> ?dob 
} limit 675

制限をに変更すると674、機能します。

私が疑ったのは、ある日時フィールドがどこかで間違っていて印刷されたということでした。?dobこれにより、値の1つがであることがわかり-0359ました。

解決策は、関数を適用する前に値を検証することbifです。

しかし、SPARQLで日時を検証するにはどうすればよいでしょうか?

4

1 に答える 1

5

私は同じ問題を抱えていたので、Google経由でこの質問を見つけました。他の場所でヘルプを探したところ、次の解決策が見つかりました。

SELECT * {

  ?s ?p ?o

  FILTER ( datatype(?o) = xsd:datetime )
  FILTER ( coalesce(xsd:datetime(str(?o)), '!') != '!')

}

これは私にとってはうまくいきました。

SemanticWebでこれに対する答えを見つけたことに注意してください。

于 2013-03-11T17:07:14.993 に答える