Итак, у вас есть доступ, чтобы напрямую манипулировать этой sql SPARQL-строкой?Если это так, просто удалите ?disc_jockey ?disc_jockeyLabel
из запроса:
<?php $endpointUrl = 'query.wikidata.org/sparql'; $sparqlQuery = <<< 'SPARQL' SELECT ?name WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } ?disc_jockey wdt:P106 wd:Q130857. OPTIONAL { ?disc_jockey wdt:P2561 ?name. } } SPARQL; echo file_get_contents( $endpointUrl . '?query=' . urlencode( $sparqlQuery ) );
Или я неправильно понял ваш вопрос?
Судя по возвращаемому значению, данных для * нет1009 * тег.Если вы вставите следующий URL в ваш браузер, вы получите файл, содержащий всю строку:
https://query.wikidata.org/sparql?query=%27SELECT%20%3Fname%20WHERE%20%7B%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22%5BAUTO_LANGUAGE%5D%2Cen%22.%20%7D%20%3Fdisc_jockey%20wdt%3AP106%20wd%3AQ130857.%20OPTIONAL%20%7B%20%3Fdisc_jockey%20wdt%3AP2561%20%3Fname.%20%7D%20%7D%27
Если вы посмотрите в этот файл, вы увидите, что естьнет "name
" узла xml.Возможно ли, что предложение where неверно?
Если вы удалите ?disc_jockey ?disc_jockeyLabel
, вы получите пустой набор результатов.Он содержит правильное количество записей, просто нет отображаемых узлов, потому что name
не является одним из узлов.
https://query.wikidata.org/sparql?query=SELECT%20%3Fname%20WHERE%20%7B%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22%5BAUTO_LANGUAGE%5D%2Cen%22.%20%7D%20%3Fdisc_jockey%20wdt%3AP106%20wd%3AQ130857.%20OPTIONAL%20%7B%20%3Fdisc_jockey%20wdt%3AP2561%20%3Fname.%20%7D%20%7D
Я запутался иличего-то не хватает?
Возможно, вы действительно хотите просто disc_jockeyLabel
?
https://query.wikidata.org/sparql?query=SELECT%20%3Fdisc_jockeyLabel%20WHERE%7BSERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22%5BAUTO_LANGUAGE%5D%2Cen%22.%20%7D%3Fdisc_jockey%20wdt%3AP106%20wd%3AQ130857.%20OPTIONAL%20%7B%20%3Fdisc_jockey%20wdt%3AP2561%20%3Fname.%20%7D%7D
Как только вы получите эту информацию, вы можете перебирать их, собирая всебуквальные узлы.