带有ARC2 PHP库的SPARQL INSERT

时间:2014-11-10 17:27:23

标签: php sparql semantic-web

我正在尝试使用ARC2库在PHP中的SPARQL端点上执行INSERT。 这失败,错误“无法正确处理”PREFIX dc:“

SPARQL UPDATE查询来自W3C specification,在我的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);

然而,两者都给了我同样的错误。


最后,我想连接到Jena Fuseki服务器的远程 SPARQL端点,并以交互方式插入和检索PHP中的数据。如果您有任何其他库或干净的解决方案如何通过PHP中的SPARQL协议进行交互,我很乐意改变我的方法。

1 个答案:

答案 0 :(得分:4)

看来,ARC2确实not support SPARQL 1.1 parsing

相反,它仅支持UPDATE查询的简化SPARQL+。以下查询成功将新三元组插入ARC2存储区:

$query = 'INSERT DATA
{ 
  <http://example/book1> dc:title "A new book" ;
                     dc:creator "A.N.Other" .
}';

不幸的是,使用这个有限的SPARQL +,似乎不可能通过我的Jena Fuseki实例上的远程存储进行UPDATE。 ARC2正在抱怨问题中给出的符合SPARQL 1.1的查询语法, 或Jena Fuseki抱怨似乎特定于ARC2的SPARQL +查询语法。

有什么建议吗?我发布了一个关于此问题的新问题:https://stackoverflow.com/questions/26858594/php-sparql-1-1-library-for-semantic-web-stack-php-sparql-jena-fuseki