В примере запроса первые пять тройных шаблонов в предложении 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
затем используется в тройном шаблоне вместо адреса в исходном запросе.
Я не вижу, какие строки вы подразумеваете под «первыми пятью тройными узорами в разделе« WHERE ». Можете ли вы привести пример с комментариями? Было бы также очень полезно увидеть реализацию выражения VALUES. Чтобы быть ясным, я хочу отправить один запрос, который возвращает результаты для 300 адресов, которые у меня есть в CSV. – jds7117
Добавлен ответ. Для 'VALUES' у меня есть ссылка с примерами. – scotthenninger
Я не могу реализовать свой код без его взлома, и я не знаю, как правильно реализовать выражение «VALUES», запрашивая два отдельных адреса. – jds7117