2017-10-23 2 views
1

私は、1990年生まれの人を選択するSPARQLクエリを持っています。xsd:date形式からどのように年を取ることができますか?私はyear()を使ってxsd:dateTimeからyearを得る方法を見ることができますが、xsd:dateでは動作しません。SPARQL xsd:dateから整数を取得する方法

PREFIX dbr: <http://dbpedia.org/resource/> 
PREFIX dbo: <http://dbpedia.org/ontology/> 
SELECT ?birthYear 
WHERE 
{dbr:Ilse_DeLange dbo:birthDate ?birth 
#how to get year only as a integer?} 
+0

一つの共通の問題は、データが面倒(即ち、誤った)そのようなないデータ型XSDとして日付を、有しています。どちらも拡張機能としてサポートされていてもYEAR()を失敗させます。 – AndyS

答えて

0

スペック、唯一xsd:dateTimeリテラルのyear()作品によります。

トリプル店によっては、最初xsd:dateTimeに変換しようとするかもしれません:XSD用の拡張機能のいずれかの仮定せずにそれを行うには

PREFIX dbr: <http://dbpedia.org/resource/> 
PREFIX dbo: <http://dbpedia.org/ontology/> 
SELECT DISTINCT (year(xsd:dateTime(?birthDate)) as ?birthYear) WHERE { 
    dbr:Ilse_DeLange dbo:birthDate ?birthDate 
} 
0

:日付文字列バッシングのビットを必要とします。

?birthDateの字句形式でREPLACEを使用すると、yearを文字列として取得し、それをxsd:integerにキャストすることができます。日付または悪い字句形式で:

REPLACE(str(?birthDate), "(\\d*)-.*", "$1")

関連する問題