2

特定の日付の間のすべてのレコードを取得しようとしています。日付フィールドは次の形式で表示されます:2012-01-31。私はそれがタイプだと思います:<http://www.w3.org/2001/XMLSchema#date>

以下のクエリを変更して、2012-01-31より後の日付のレコードを抽出するにはどうすればよいですか?

PREFIX xsd:     <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl:     <http://www.w3.org/2002/07/owl#>
PREFIX lrppi:   <http://landregistry.data.gov.uk/def/ppi/>
PREFIX skos:    <http://www.w3.org/2004/02/skos/core#>
PREFIX lrcommon: <http://landregistry.data.gov.uk/def/common/>

SELECT  ?county ?postcode ?amount ?date
WHERE
{    
    ?transx  lrppi:pricePaid ?amount .
    ?transx   lrppi:transactionDate ?date .
    ?transx   lrppi:propertyAddress ?addr.

    ?addr lrcommon:postcode "PL6 8RU"^^xsd:string .
    ?addr lrcommon:postcode ?postcode .

    # Cant get this line to work
    # ?date lrppi:transactionDate ?date . FILTER ( ?date >= "1327968000"^^xsd:date  )

    OPTIONAL {?addr lrcommon:county ?county .}
}
ORDER BY ?postcode

これを試してみたい場合は、ここにクエリを入力できます:http: //landregistry.data.gov.uk/landregistry/sparql/sparql.html

4

1 に答える 1

5

これは、FILTER条項が設計されている目的です。

SPARQL仕様の「式とテスト値」セクションでは、これについて詳しく説明しています。このセクションの最初の例では、日付のフィルタリングについて説明しています。

編集

SPARQLを初めて使用する場合は、仕様の作成者の1人が作成したSPARQLbyExampleのような優れたSPARQLチュートリアルを読むことをお勧めします。これにより、SPARQLのさまざまな部分を順を追って説明し、RDFデータモデルとクエリ言語をよりよく理解するのに役立つはずです。

日付に関しては、XMLスキーマデータ型を使用して表されます。たとえば、今日を日付として表すと、次のようになります。

"2013-03-22"^^xsd:date

リンクされた仕様は、さまざまなデータ型の字句形式をカバーしています。

したがって、あなたの例では、次のようになります。

FILTER ( ?date >= "2012-01-31"^^xsd:date )

UNIXタイムスタンプから開始し、シェルスクリプトでのxsd:dateTimeの生成xsd:dateを参照してください。これは有用な開始点を提供する可能性があります。

于 2013-03-22T18:37:03.507 に答える