SPARQL日期范围

SPARQL日期范围,sparql,Sparql,我正在尝试获取特定日期之间的所有记录。日期字段已按以下格式显示:2012-01-31。我认为这是一种: 我如何修改下面的查询以提取日期大于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/200

我正在尝试获取特定日期之间的所有记录。日期字段已按以下格式显示:2012-01-31。我认为这是一种:

我如何修改下面的查询以提取日期大于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
如果你想玩这个游戏,你可以在这里输入你的查询: 这就是筛选子句的设计目的

SPARQL规范的一节详细介绍了这一点,该节中的第一个示例几乎涵盖了日期过滤

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

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

"2013-03-22"^^xsd:date
FILTER ( ?date >= "2012-01-31"^^xsd:date )
链接规范涵盖了各种数据类型的词汇形式

因此,对于您的示例,它将是以下内容:

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

如果您从UNIX时间戳开始,并试图获取xsd:date,请查看哪个可以提供有用的起点。

谢谢RobV。我遇到了filter命令并尝试了它,但无法让它工作。见更新的问题。我不知道如何计算出日期是如何存储的,如何转换为unix时间戳,以及如何准确地格式化查询。主要的问题是,我今天刚刚开始使用SPARQL,我无法理解它。特别是当我无法准确地找出数据的来源时,例如,列来自何处,数据的格式是什么。@spiderplant0我已经在我的问题中添加了一些更详细的信息,希望这能帮助您继续