SPARQL日期范围 [英] SPARQL date range

查看:14
本文介绍了SPARQL日期范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试获取特定日期之间的所有记录。日期字段以以下格式显示: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

推荐答案

这就是FILTER子句的设计目的。

SPARQL规范的Expressions and Testing Values部分详细介绍了这一点,该部分的第一个示例几乎涵盖了日期过滤。

编辑

如果您是SPARQL的新手,那么我建议您阅读一本很好的SPARQL教程,比如SPARQL by Example,它是由规范作者之一编写的。本文将引导您了解SPARQL的各个部分,并将帮助您更好地理解RDF数据模型和查询语言。

就日期而言,它们使用XML schema datatypes表示,例如,将今天表示为日期如下:

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

链接规范涵盖各种数据类型的词汇形式。

因此,对于您的示例,它将如下所示:

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

如果您从UNIX时间戳开始并尝试访问xsd:date,请参阅Generating an xsd:dateTime in shell script,这可能是一个有用的起点。

这篇关于SPARQL日期范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆