SPARQL-запрос лица, использующего EasyRdf на DBpedia

Я хочу получить всю информацию о персоне из 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
(
)

)

0

Решение

Вы не получите результаты с чем-то вроде:

regex(?person,"John Lennon"

поскольку значение ?человек это URI, а не строка, и URI не содержат пробелов. Вместо этого вы можете запросить людей с фактическим именем (не забудьте языковой тег), как в:

select * where {
?resource foaf:name "John Lennon"@en
}

SPARQL результаты

Я хочу получить всю информацию

Если вы хотите получить все значения свойств человека, вы можете расширить запрос следующим образом:

select ?subject ?property ?object {
?resource foaf:name "John Lennon"@en ;
?property ?object .
}

Конечно, это будет только извлекать данные, где человек предмет троек, но вы также можете заботиться о вещах, где человек объект тройной тоже, в этом случае вы можете пойти на:

describe ?person where {
?person foaf:name "John Lennon"@en
}

Результаты SPARQL (N-Triples)

Результат описывать запросы зависят от реализации, но довольно часто получают все тройки, для которых ресурс является предметом или объектом.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]