3

SPARQL クエリを使用して、英国土地登記所から住居のタイプを取得しようとしています。

APIは、プロパティタイプと呼ばれ、戸建、フラットメゾネット、セミデタッチ、テラスの4つのタイプがあることを示しています. 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

それをコピーしてエンドポイントに貼り付けて、結果を取得できます。(残念ながら、結果に直接リンクする方法はないようです。)

答えを見つける

これが私がその物件を見つけた方法です。エンドポイントにはいくつかのサンプル クエリがあり、そのうちの 1 つは「使用中の 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>        |
----------------------------------------------------------------

これで、それらの 1 つに何が関連しているか、どのプロパティによって関連しているかがわかります。例えば

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

Land Registry データにアクセスする他の方法に興味があるかもしれません。これは、その背後にあるデータ モデルの詳細を確認するのにも役立つ可能性があります。

[スタック オーバーフローの初心者として - 私は 2 つのリンクしか投稿できません - 評判が高ければ (>10)、より多くのポインターを提供できます :-) 今のところ、landregistry.data.gov.uk に関連するポインターをいくつか提供します]

上記のクエリに埋め込まれた「質問」に関しては、次のことがわかります。

は、Malvern Hills 地区に住所を持つプロパティに関連付けられたトランザクション レコードのリストを開始し、レコードと住所の両方の詳細を表示します。

結果のページの右上に、.json、.csv、.rdf、および .ttl の代替レンダリングへのリンクがいくつか表示されます。

ページには、いくつかのプロパティ ベースのクエリを実行できる一連のコントロールもあります (数値プロパティの more-like-this リンク、less-than および greater-than リンク)。右側には、注意して使用する必要がある「並べ替え」セレクターがいくつかあります。大量のアイテムを並べ替えると、結果が生じる自然な順序を受け入れるのではなく、時間がかかる場合があります。

さまざまなコントロールをクリックすると、データへの実際のインターフェイスである要求 URI にさらにパラメーターが作成されます。ここでの機構は、リンクされたデータ api と呼ばれるものです (実際には、具体的な api ではなく、SPARQL データセットに URI 駆動型インターフェイスを作成するためのフレームワークです。実装がデプロイされた LDA であるhttps://code.google.com/p/elda/を参照してください)。この場合)。

また、基礎となる SPARQL クエリが使用され、html ページの下部に結果が生成されることもわかります。

すべてのプロパティ名とクラス名をクリックして、それらの定義を取得できることがわかるはずです。

  • /def/ppi/TransactionRecord

語彙/データ モデルを探索するには、クラス名を次のように切り戻すことができます。

  • /def/ppi

ppi (有料情報) 語彙の用語 (プロパティとクラス) のリストを取得します。さらにトリミングして次のようにします。

  • /定義

語彙のリストが表示されます。

  • /def/{vocab} は語彙の用語をリストします
  • /def/{vocab}/{term} は、個々の用語 defn を与えます

クラス用語について

  • /def/{vocab}/{term}/instance は、クラスのインスタンスを一覧表示します
  • /def/{vocab}/{term}/property は、そのクラスのデータ「上の」インスタンスで使用されるプロパティをリストします

LDA インストールによって提供される URI パターンのリストについては、以下を参照してください。

  • /api-config

また...「私の最初のSPARQLクエリ」と同等の道徳的なものとして、始めるだけです。

  • SELECT ?s ?p ?o WHERE {?s ?p ?o} LIMIT 10

試す:

  • /なんでも

より選択的にするために、URI &{P}={V} フィルターを追加できることに注意してください。

于 2013-08-02T09:22:20.387 に答える