2016-04-22 19 views
1

UK Land Registryデータベースを使用して、300のアドレスのセットの売上データを探したいと思います。データベースはSPARQLクエリを許可していますが、私はSPARQLを完全に新しくしており、一度に複数のクエリを作成する方法はわかりません(たとえば、1つのSPARQLクエリで300のアドレスを検索するなど)。SPARQLのリストから複数のクエリを検索

This is an example land registry query 1つのアドレス。

だから私は2つの質問がある:

1)私は1つのクエリで複数のアドレスを検索することができますどのように?

2)クエリを自動化するためにデータベースのアドレス一覧に接続する方法はありますか?

ヘルプと方向性は非常に高く評価されます。

答えて

1

例クエリでは、WHERE句の最初の5つのトリプルパターンは、結果を特定の結果に結び付けます。これらを削除するか、または#をコメントアウトし、あなたが選択したSPARQLエンドポイントに知られているすべてのアドレスのリストを取得します:

prefix ... 

SELECT ?item ?ppd_propertyAddress ?ppd_hasTransaction ?ppd_pricePaid ? ppd_transactionCategory ?ppd_transactionDate ?ppd_transactionId ?ppd_estateType ?ppd_newBuild ?ppd_propertyAddressCounty ?ppd_propertyAddressDistrict ?ppd_propertyAddressLocality ?ppd_propertyAddressPaon ?ppd_propertyAddressPostcode ?ppd_propertyAddressSaon ?ppd_propertyAddressStreet ?ppd_propertyAddressTown ?ppd_propertyType ?ppd_recordStatus 
WHERE 
{ #?ppd_propertyAddress text:query _:b0 . 
    #_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "paon: (12) AND street: (PATTINSON AND DRIVE)" . 
    #_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b1 . 
    #_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> 3000000 . 
    #_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . 
    ?item ppd:propertyAddress ?ppd_propertyAddress . 
    ?item ppd:hasTransaction ?ppd_hasTransaction . 
    ?item ppd:pricePaid ?ppd_pricePaid . 
    ?item ppd:transactionCategory ?ppd_transactionCategory . 
    ?item ppd:transactionDate ?ppd_transactionDate . 
    ?item ppd:transactionId ?ppd_transactionId 
    OPTIONAL 
    { ?item ppd:estateType ?ppd_estateType } 
    OPTIONAL 
    { ?item ppd:newBuild ?ppd_newBuild } 
    OPTIONAL 
    { ?ppd_propertyAddress lrcommon:county ?ppd_propertyAddressCounty } 
    OPTIONAL 
    { ?ppd_propertyAddress lrcommon:district ?ppd_propertyAddressDistrict } 
    OPTIONAL 
    { ?ppd_propertyAddress lrcommon:locality ?ppd_propertyAddressLocality } 
    OPTIONAL 
    { ?ppd_propertyAddress lrcommon:paon ?ppd_propertyAddressPaon } 
    OPTIONAL 
    { ?ppd_propertyAddress lrcommon:postcode ?ppd_propertyAddressPostcode } 
    OPTIONAL 
    { ?ppd_propertyAddress lrcommon:saon ?ppd_propertyAddressSaon } 
    OPTIONAL 
    { ?ppd_propertyAddress lrcommon:street ?ppd_propertyAddressStreet } 
    OPTIONAL 
    { ?ppd_propertyAddress lrcommon:town ?ppd_propertyAddressTown } 
    OPTIONAL 
    { ?item ppd:propertyType ?ppd_propertyType } 
    OPTIONAL 
    { ?item ppd:recordStatus ?ppd_recordStatus } 
} 
LIMIT 100 

2番目の質問は不明で、おそらく上記で解決しているのですか?私。複数のクエリを提出する必要はありません。

特定のアドレスリストを照会する場合は、SPARQL VALUES式を使用できます(VALUES: Providing inline dataを参照)。 VALUESVALUES句の中括弧の間に、リスト内の各文字列に?addrを結合すること

SELECT * 
WHERE { 
    VALUES ?addr {"address1" "paon: (12) AND street: (PATTINSON AND DRIVE)" ...} 
    ?ppd_propertyAddress text:query _:b0 . 
    _:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> ?addr . 
    ?item ppd:propertyAddress ?ppd_propertyAddress . 

    ... 
} 

注: - 出発点は(あなたがデータに対して、これをチェックする必要があると思います唯一の検査で)以下のかもしれません。元のクエリのアドレスの代わりに?addrがトリプルパターンで使用されます。

+0

「WHERE句の最初の5つのトリプルパターン」という意味の行はありません。コメントを付けた例を提供できますか?また、 'VALUES'式の実装を見るのも非常に便利です。明確にするために、私は現在CSVで持っている300のアドレスの結果を返す単一のクエリを提出したいと思います。 – jds7117

+0

答えに追加されました。 'VALUES'には例があるリンクがあります。 – scotthenninger

+0

私はそれを壊すことなくあなたのコードを実装することはできません。そして、 'VALUES'式を適切に実装して2つの別々のアドレスを照会する方法を知らない。 – jds7117

関連する問題