3

我正在尝试使用 SPARQL 查询从英国土地注册处检索住宅类型。

API 显示它被称为属性类型,并显示有四种类型:独立式、平房式、半独立式、梯田式。API 在这里:http ://landregistry.data.gov.uk/def/common?_page=1 。

查询是:

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 ?propertytype ?paon ?saon ?street ?town ?county ?locality ?district ?postcode ?    amount ?date
WHERE
{    
SERVICE <http://landregistry.data.gov.uk/landregistry/sparql>
{ 
    ?transx  lrppi:pricePaid ?amount .
    ?transx   lrppi:transactionDate ?date .
    ?transx   lrppi:propertyAddress ?addr.

    ?addr lrcommon:district "MALVERN HILLS"^^xsd:string .

    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 .}
    OPTIONAL {?addr lrcommon:locality ?locality .}
    OPTIONAL {?addr lrcommon:postcode  ?postcode .}
}
}
ORDER BY ?postcode ?amount
LIMIT 1000

这会检索我期望的数据(速度限制为 1000),但我想提取显示它是分离的、梯形的等的数据。

非常感谢任何帮助!

4

2 回答 2

6

答案

你只需要添加三元组

?transx lrppi:propertyType ?propertytype .

到您的查询。例如,这是基于您的查询:

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 ?propertytype ?paon ?saon ?street ?town ?county ?locality ?district ?postcode ?amount ?date
WHERE {
    ?transx lrppi:pricePaid ?amount ;
            lrppi:transactionDate ?date ;
            lrppi:propertyAddress ?addr ;
            lrppi:propertyType ?propertytype .

    ?addr lrcommon:district "MALVERN HILLS"^^xsd:string .

    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 .}
    OPTIONAL {?addr lrcommon:locality ?locality .}
    OPTIONAL {?addr lrcommon:postcode  ?postcode .}
}
ORDER BY ?postcode ?amount
LIMIT 10

您可以将其复制并粘贴到端点并获取结果。(不幸的是,似乎没有办法直接链接到结果。)

寻找答案

这是我如何找到该属性的。端点有一些示例查询,其中之一是“列出正在使用的 RDF 类型”:

PREFIX rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:     <http://www.w3.org/2000/01/rdf-schema#>

# Get labels for types used in the data.
SELECT  ?type ?name
WHERE {
    ?type rdfs:label ?name .
     FILTER EXISTS {  ?something rdf:type ?type . }
}

该查询的结果包括

---------------------------------------------------------------------------------------------------------------------------------------------
| type                                                                           | name                                                     |
=============================================================================================================================================
| <http://landregistry.data.gov.uk/def/common/PropertyTypeConcept>               | "Property type concept"@en                               |
---------------------------------------------------------------------------------------------------------------------------------------------

由于我们现在关于类型<http://landregistry.data.gov.uk/def/common/PropertyTypeConcept>,我们可以询问它的实例:

PREFIX rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:     <http://www.w3.org/2000/01/rdf-schema#>

SELECT  ?x 
WHERE { ?x a <http://landregistry.data.gov.uk/def/common/PropertyTypeConcept> }
LIMIT 10 

----------------------------------------------------------------
| x                                                            |
================================================================
| <http://landregistry.data.gov.uk/def/common/detached>        |
| <http://landregistry.data.gov.uk/def/common/semi-detached>   |
| <http://landregistry.data.gov.uk/def/common/flat-maisonette> |
| <http://landregistry.data.gov.uk/def/common/terraced>        |
----------------------------------------------------------------

现在我们可以看到与其中之一相关的内容,以及与哪些属性相关的内容。例如

PREFIX rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:     <http://www.w3.org/2000/01/rdf-schema#>

SELECT  ?x ?y
WHERE { ?x ?y <http://landregistry.data.gov.uk/def/common/detached> }
LIMIT 10 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------
| x                                                                                                         | y                                                      |
======================================================================================================================================================================
| <http://landregistry.data.gov.uk/data/ppi/transaction/C7AE071D-242D-4825-9162-97BBF3B71840/2009-02-27233> | <http://landregistry.data.gov.uk/def/ppi/propertyType> |
| <http://landregistry.data.gov.uk/data/ppi/transaction/D0CDBC03-5147-4D93-BCE5-176AF007E391/2009-02-10191> | <http://landregistry.data.gov.uk/def/ppi/propertyType> |
| <http://landregistry.data.gov.uk/data/ppi/transaction/E37CAA33-CEF5-4162-8E07-918394B3C8AF/2009-02-00643> | <http://landregistry.data.gov.uk/def/ppi/propertyType> |
| <http://landregistry.data.gov.uk/data/ppi/transaction/E37CAA33-CEF5-4162-8E07-918394B3C8AF/2009-03-32825> | <http://landregistry.data.gov.uk/def/ppi/propertyType> |
| <http://landregistry.data.gov.uk/data/ppi/transaction/22276002-0030-4748-A7F6-C20F125DAC1C/2009-02-47264> | <http://landregistry.data.gov.uk/def/ppi/propertyType> |
| <http://landregistry.data.gov.uk/data/ppi/transaction/FA525F65-CC8E-4617-A682-F8B267319445/2009-02-38989> | <http://landregistry.data.gov.uk/def/ppi/propertyType> |
| <http://landregistry.data.gov.uk/data/ppi/transaction/3BFA438C-47AE-4B47-87AD-5DC365977619/2009-02-37729> | <http://landregistry.data.gov.uk/def/ppi/propertyType> |
| <http://landregistry.data.gov.uk/data/ppi/transaction/A5BED22B-F54B-4459-9BF9-18920B8CDBAA/2009-02-21721> | <http://landregistry.data.gov.uk/def/ppi/propertyType> |
| <http://landregistry.data.gov.uk/data/ppi/transaction/DDAAE7E0-B07F-49FF-AAB6-A2B96D8D4DE3/2009-02-11020> | <http://landregistry.data.gov.uk/def/ppi/propertyType> |
| <http://landregistry.data.gov.uk/data/ppi/transaction/5168D986-FAA2-42E8-B2C8-A04981C8BD0F/2009-02-09080> | <http://landregistry.data.gov.uk/def/ppi/propertyType> |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------

我们看到我们想要的属性是<http://landregistry.data.gov.uk/def/ppi/propertyType>,可以将其缩短为lrppi:propertyType使用您定义的前缀。它似乎将交易与属性类型相关联,并且由于您查询中的交易是?transx,我们添加

?transx lrppi:propertyType ?propertyType
于 2013-08-01T00:22:52.737 回答
1

您可能对访问土地注册处数据的其他一些方式感兴趣,这些方式也可以帮助您了解其背后的更多数据模型。

[作为 Stack Overflow 新手 - 我只能发布两个链接 - 具有较高声誉 (>10) 我可以提供更多指点 :-) 现在我将提供一些与landregistry.data.gov.uk 相关的指点]

就上述查询中嵌入的“问题”而言,您会发现:

将开始列出与在 Malvern Hills 区有地址的房产相关的交易记录 - 并显示记录和地址的详细信息。

在结果页面的右上角,您会看到一些 .json、.csv、.rdf 和 .ttl 替代渲染的链接。

页面上还有一个“一堆”控件,使您能够进行一些基于属性的查询(更多类似的链接,小于和大于数字属性的链接)。右边有一些“排序”选择器,您应该小心使用 - 订购大量项目可能会很慢,而不是接受结果出现的自然顺序。

单击各种控件会在请求 URI 中建立更多参数,这是数据的真实接口。这里的机器是一种称为链接数据 api 的东西(实际上是一个框架,用于在 SPARQL 数据集上创建 URI 驱动的接口而不是具体的 api - 请参阅https://code.google.com/p/elda/这是部署的 LDA在这种情况下)。

您还将看到使用的底层 SPARQL 查询在 html 页面的底部生成结果。

您应该会发现您可以单击所有属性名称和类名称来检索它们的定义:例如:

  • /def/ppi/TransactionRecord

要探索词汇表/数据模型,您可以将类名缩减为:

  • /def/ppi

您将获得 ppi(付费信息)词汇表中的术语列表(属性和类)。进一步修剪到:

  • /定义

你会得到一个词汇表。

  • /def/{vocab} 将列出词汇表中的术语
  • /def/{vocab}/{term} 将给出单独的术语 defn

对于类术语

  • /def/{vocab}/{term}/instance 列出类的实例
  • /def/{vocab}/{term}/property 列出了该类的“on”数据实例中使用的属性

有关 LDA 安装服务的 URI 模式列表......请查看

  • /api-配置

另外......只是开始,对于“我的第一个 SPARQL 查询”的道德等价物,即。

  • SELECT ?s ?p ?o WHERE {?s ?p ?o} 限制 10

尝试:

  • /任何事物

请注意,您可以添加 URI &{P}={V} 过滤器以更具选择性。

于 2013-08-02T09:22:20.387 回答