获得"新建"土地登记处SPARQL的状态

时间:2014-04-01 00:46:21

标签: sparql

抱歉,我无法理解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

1 个答案:

答案 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过滤掉所有重复项。但这只是挑剔。