我正试图获取某些日期之间的所有记录.日期字段以此格式显示: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
Run Code Online (Sandbox Code Playgroud)
如果你想玩这个,你可以在这里输入你的查询:http: //landregistry.data.gov.uk/landregistry/sparql/sparql.html
这是该FILTER子句的目的.
SPARQL规范的表达式和测试值部分详细介绍了这一点,该部分的第一个示例几乎涵盖了对日期的过滤.
如果您是SPARQL的新手,那么我建议您阅读一个很好的SPARQL教程,如SPARQL by Example,由一位规范作者编写.这将引导您完成SPARQL的各个部分,并且可以帮助您更好地了解RDF数据模型和查询语言.
就日期而言,它们使用XML模式数据类型表示,例如,将今天表示为日期将是以下内容:
"2013-03-22"^^xsd:date
Run Code Online (Sandbox Code Playgroud)
链接规范涵盖了各种数据类型的词法形式.
因此,对于您的示例,它将是以下内容:
FILTER ( ?date >= "2012-01-31"^^xsd:date )
Run Code Online (Sandbox Code Playgroud)
如果你是从UNIX时间戳开始并试图获得一个xsd:date见生成一个xsd:日期时间在shell脚本可以提供一个有用的起点.