抱歉,我无法理解SPARQL!有人可以帮我编写一个查询来判断一个属性是否是来自land registry API的新版本吗?
这是我到目前为止的查询:
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
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 ?paon ?saon ?street ?town ?county ?postcode ?propertytype ?amount ?date
WHERE {
?transx lrppi:pricePaid ?amount .
?transx lrppi:transactionDate ?date .
?transx lrppi:propertyAddress ?addr .
?transx lrppi:propertyType ?propertytype .
?addr lrcommon:postcode "AB1 1AB" ^^xsd:string .
?addr lrcommon:postcode ?postcode .
OPTIONAL {?addr lrcommon:county ?county .}
OPTIONAL {?addr lrcommon:paon ?paon .}
OPTIONAL {?addr lrcommon:saon ?saon .}
OPTIONAL {?addr lrcommon:street ?street .}
OPTIONAL {?addr lrcommon:town ?town .}
} ORDER BY ?amount
答案 0 :(得分:1)
首先让我们重写您的查询,以便更容易阅读:
PREFIX lrppi: <http://landregistry.data.gov.uk/def/ppi/>
PREFIX lrcommon: <http://landregistry.data.gov.uk/def/common/>
SELECT ?paon ?saon ?street ?town ?county ?postcode ?propertytype ?amount ?date
WHERE {
?transx lrppi:pricePaid ?amount ;
lrppi:transactionDate ?date ;
lrppi:propertyAddress ?addr ;
lrppi:propertyType ?propertytype .
?addr lrcommon:postcode "AB1 1AB" ;
lrcommon:postcode ?postcode .
OPTIONAL {
?addr lrcommon:county ?county ;
lrcommon:paon ?paon ;
lrcommon:saon ?saon ;
lrcommon:street ?street ;
lrcommon:town ?town .
}
} ORDER BY ?amount
您可以使用;
仍然使用主题并要求新对象。虽然.
结束了您的查询。此外,您还可以合并OPTIONAL
,并且不需要^^xsd:string
作为字符串。
如果你没有得到任何结果,你的查询中的某些内容是错误的,可能是邮政编码。首先删除部分查询,看看是否得到任何结果,然后重新构建。在我看来,这是做SPARQL最简单的方法。如果您需要更多信息,请查看EUCLID-project webinar 2。这提供了对SPARQL的介绍,并使其更容易理解。
我找不到SPARQL端点,这就是为什么我不能不幸地测试你的查询...也许你可以提供一个SPARQL端点以获得更多帮助?
编辑:感谢@RobV找到SPARQL端点后,我测试了我的查询。在土地登记处SPARQL端点需要^^xsd:string
之后,但这并不重要,我们甚至都不需要它。此外,数据集中不存在设置的邮政编码,因此您无法获得任何结果。无论如何,这是获取所有邮政编码的所有新建造房屋的查询:
PREFIX lrppi: <http://landregistry.data.gov.uk/def/ppi/>
PREFIX lrcommon: <http://landregistry.data.gov.uk/def/common/>
SELECT ?paon ?saon ?street ?town ?county ?postcode ?propertytype ?amount ?date
WHERE {
?transx lrppi:pricePaid ?amount ;
lrppi:transactionDate ?date ;
lrppi:propertyAddress ?addr ;
lrppi:propertyType ?propertytype ;
lrppi:newBuild true .
OPTIONAL {
?addr lrcommon:county ?county ;
lrcommon:postcode ?postcode ;
lrcommon:paon ?paon ;
lrcommon:saon ?saon ;
lrcommon:street ?street ;
lrcommon:town ?town .
}
} LIMIT 100
由于土地注册表SPARQL端点的性能,我将其限制为100行。您还可以为完整结果集创建一些必需元素而不是可选元素,或者执行SELECT DISTINCT
过滤掉所有重复项。但这只是挑剔。