Я хочу получить всю информацию о персоне из API DBpedia SPARQL.
Первая проблема в том, что запрос занял слишком много времени.
Во-вторых, я не получаю никакой информации о человеке, которого я искал.
Я не знаю, что я делаю не так?
Мой код:
require_once "EasyRdf.php";
require_once "html_tag_helpers.php";
// Setup some additional prefixes for DBpedia
EasyRdf_Namespace::set('category', 'http://dbpedia.org/resource/Category:');
EasyRdf_Namespace::set('dbpedia', 'http://dbpedia.org/resource/');
EasyRdf_Namespace::set('dbo', 'http://dbpedia.org/ontology/');
EasyRdf_Namespace::set('dbp', 'http://dbpedia.org/property/');
$sparql = new EasyRdf_Sparql_Client('http://dbpedia.org/sparql');
$result = $sparql->query(
'SELECT *
WHERE {
?person foaf:name ?name.
?person foaf:name ?name.
FILTER(regex(?person,"John Lennon"))
}
'
);
echo "<pre>";
print_r($result);
Мой результат:
EasyRdf_Sparql_Result Object
(
[type:EasyRdf_Sparql_Result:private] => bindings
[boolean:EasyRdf_Sparql_Result:private] =>
[ordered:EasyRdf_Sparql_Result:private] =>
[distinct:EasyRdf_Sparql_Result:private] =>
[fields:EasyRdf_Sparql_Result:private] => Array
(
[0] => person
[1] => name
)
[storage:ArrayIterator:private] => Array
(
)
)
Вы не получите результаты с чем-то вроде:
regex(?person,"John Lennon"
поскольку значение ?человек это URI, а не строка, и URI не содержат пробелов. Вместо этого вы можете запросить людей с фактическим именем (не забудьте языковой тег), как в:
select * where {
?resource foaf:name "John Lennon"@en
}
Я хочу получить всю информацию
Если вы хотите получить все значения свойств человека, вы можете расширить запрос следующим образом:
select ?subject ?property ?object {
?resource foaf:name "John Lennon"@en ;
?property ?object .
}
Конечно, это будет только извлекать данные, где человек предмет троек, но вы также можете заботиться о вещах, где человек объект тройной тоже, в этом случае вы можете пойти на:
describe ?person where {
?person foaf:name "John Lennon"@en
}
Результат описывать запросы зависят от реализации, но довольно часто получают все тройки, для которых ресурс является предметом или объектом.
Других решений пока нет …