2016-04-22 2 views
1

Я хочу найти данные о продажах для 300 адресов с использованием базы данных Land Rover Великобритании. База данных разрешает запросы SPARQL, однако я совершенно не знаком с SPARQL и не знаю, как сделать сразу несколько запросов (например, поиск 300 адресов в одном запросе SPARQL).Поиск нескольких запросов из списка в SPARQL

This is an example land registry query для одного адреса.

Поэтому у меня есть два вопроса:

1) Как я могу найти несколько адресов в одном запросе?

2) Есть ли способ связать список адресов базы данных для автоматизации запроса?

Помощь и руководство будут очень благодарны.

ответ

1

В примере запроса первые пять тройных шаблонов в предложении WHERE связывают результат с конкретным результатом. Удалить эти или закомментировать с #, и вы получите список всех адресов, известных выбранной 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 

Второй вопрос остается неясным и, возможно, разрешаемые выше? То есть вам не нужно отправлять несколько запросов.

Если вы хотите запросить конкретный список адресов, вы можете использовать выражение SPARQL VALUES, см. VALUES: Providing inline data. Отправная точка может быть следующим (только осмотр - Вы должны были бы проверить это с данными):

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 . 

    ... 
} 

Обратите внимание, что VALUES связывает ?addr для каждой строки в списке между скобками в пункте VALUES. ?addr затем используется в тройном шаблоне вместо адреса в исходном запросе.

+0

Я не вижу, какие строки вы подразумеваете под «первыми пятью тройными узорами в разделе« WHERE ». Можете ли вы привести пример с комментариями? Было бы также очень полезно увидеть реализацию выражения VALUES. Чтобы быть ясным, я хочу отправить один запрос, который возвращает результаты для 300 адресов, которые у меня есть в CSV. – jds7117

+0

Добавлен ответ. Для 'VALUES' у меня есть ссылка с примерами. – scotthenninger

+0

Я не могу реализовать свой код без его взлома, и я не знаю, как правильно реализовать выражение «VALUES», запрашивая два отдельных адреса. – jds7117

Смежные вопросы