2016-05-13 6 views
0

Я получаю следующее сообщение об ошибке при попытке вставить данные в фусеки РНР скрипт:метод Apache HTTP фусеки не допускается обновление SPARQL: использование POST Error

405: Bad response, 405: Error 405: HTTP method not allowed: SPARQL Update : use POST Fuseki - version 2.3.1 

им с помощью sparqllib.php библиотеку и я использовали тот же запрос sparql в панели управления fuseki, и он работает!

это мой скрипт:

 $db = sparql_connect("http://localhost:3030/riimaOnto/update"); 

    if(!$db) 
    { 
     print sparql_errno() . ": " . sparql_error(). "\n"; 
     exit; 
    } 

    $id = "MyData"; 

    $sparql = "PREFIX onto:<http://www.semanticweb.org/riima/ontologies/#> 
    INSERT DATA 
    { 
     onto:$id a onto:Article 
    }"; 



    $result = sparql_query($sparql); 

    if (!$result) 
    { 
     print sparql_errno() . ": " . sparql_error(). " \n"; 
     exit; 
    } 

так, как я могу вставить данные в моей онтологии ??

+0

Возможно, вам придется включить обновления на fuseki. Я думаю, что настройки по умолчанию включают только запрос. Например, см. Http://stackoverflow.com/questions/21581018/fuseki-1-0-1-sparql-update-returns-404. –

+0

Похоже, обновление включено, потому что сообщение об ошибке происходит из самого сервлета обновления. Он жалуется, что запрос GET не POST, потому что (я полагаю) 'sparql_query' является запросом запроса через GET. – AndyS

ответ

1

Обновление поддерживается только HTTP POST.

Запрос был отправлен с HTTP GET. Операции с изменениями никогда не должны проходить через GET (операция может быть кеширована, POST - нет).

В запросе и обновлении SPARQL используются разные языки и протоколы.

sparql_query Предположительно, HTTP GET с ?query=... Строка запроса URL.

Вам нужен какой-то sparql_update (я не знаю sparqllib.php), который использует HTTP POST с правильным типом MIME и обновлением в теле. (HTML обновление формы также работает в фусеки - это будет ?update=...)

0

, если вы используете Apache Jena фусеки, вы должны отредактировать SPARQL конечную точку, которая по умолчанию является «http://localhost:3030/myDataset/query» очистив от подхода «запрос» и размещения ' update 'вместо