Я пытаюсь выполнить INSERT на конечной точке SPARQL в PHP, используя СМ2 библиотека.
Это происходит с ошибкой «Не удалось правильно обработать« PREFIX dc: »
Запрос SPARQL UPDATE взят из Спецификация W3C и отлично работает на моей панели управления Jena-Fuseki:
$query = '
PREFIX dc: <http://purl.org/dc/elements/1.1/>
INSERT DATA
{
<http://example/book007> dc:title "A new book" ;
dc:creator "A.N.Other" .
}
';
Но даже вариации запроса без оператора PREFIX просто приводят к аналогичной ошибке «Не удалось правильно обработать« INSERT DATA {»в моем PHP-коде.
Мой PHP-код выглядит следующим образом:
include_once('./lib/arc2/ARC2.php');
$config = array(
//db
'db_name' => 'arc2',
'db_user' => 'root',
'db_pwd' => '-',
//store
'store_name' => 'arc_tests'
);
$store = ARC2::getStore($config);
if (!$store->isSetUp())
$store->setUp();
$res = $store->query($query);
echo var_dump($store->getErrors());
echo "<br><br>executed INSERT, returned: ";
echo var_dump($res);
Эта версия использует собственное хранилище ARC2 для уменьшения потенциальных источников ошибок. Я на самом деле пытаюсь взаимодействовать с удаленным магазином:
$config = array( 'remote_store_endpoint' => 'http://localhost:3030/data/update', );
$store = ARC2::getRemoteStore($config);
Оба дают мне ту же ошибку, однако.
В конце я хочу подключиться к дистанционный пульт Конечная точка SPARQL моего сервера Jena Fuseki и интерактивно вставляет и получает данные с помощью PHP. Если у вас есть другие библиотеки или чистые решения о том, как взаимодействовать через протокол SPARQL в PHP, я с радостью изменю свой подход.
Кажется, ARC2 делает не поддерживает синтаксический анализ SPARQL 1.1.
Вместо этого он поддерживает только упрощенный SPARQL + для запросов ОБНОВЛЕНИЕ. Следующий запрос успешно вставляет новую тройку в хранилище ARC2:
$query = 'INSERT DATA
{
<http://example/book1> dc:title "A new book" ;
dc:creator "A.N.Other" .
}';
К сожалению, с этим ограниченным SPARQL + кажется невозможным делать ОБНОВЛЕНИЯ через удаленное хранилище на моем экземпляре Jena Fuseki.
Либо ARC2 жалуется на синтаксис запроса соответствия SPARQL 1.1, как указано в вопросе,
или Jena Fuseki жалуется на синтаксис запроса SPARQL +, который кажется специфичным для ARC2.
Любой совет? Я разместил новый вопрос по этому поводу: https://stackoverflow.com/questions/26858594/php-sparql-1-1-library-for-semantic-web-stack-php-sparql-jena-fuseki
Других решений пока нет …