【问题标题】:Apache Fuseki HTTP method not allowed SPARQL Update: use POST ErrorApache Fuseki HTTP 方法不允许 SPARQL 更新:使用 POST 错误
【发布时间】:2016-05-13 21:41:26
【问题描述】:

我在尝试通过 php 脚本将数据插入 Fuseki 时遇到以下错误:

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

我正在使用 sparqllib.php 库和 我在 fuseki 控制面板中使用了相同的 sparql 请求,它可以工作!

这是我的 php 脚本:

      $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;
    }

那么如何将数据插入到我的本体中??

【问题讨论】:

  • 您可能需要在 fuseki 上开启更新。我认为默认设置只打开查询。例如,见stackoverflow.com/questions/21581018/…
  • 看起来更新已启用,因为错误消息来自更新 servlet 本身。它抱怨请求是 GET 而不是 POST,因为(我假设)sparql_query 是通过 GET 的查询请求。

标签: php sparql semantic-web fuseki


【解决方案1】:

仅 HTTP POST 支持更新。

请求是通过 HTTP GET 发送的。更改操作不应该通过 GET 进行(操作可能会被缓存,POST 不会)。

在 SPARQL 中查询和更新是不同的语言和协议。

sparql_query 可能会使用?query=... URL 查询字符串进行 HTTP GET。

您需要某种sparql_update(我不知道 sparqllib.php),它使用具有正确 MIME 类型的 HTTP POST 和正文中的更新。 (HTML 表单更新也适用于 Fuseki - 它将是 ?update=...

【讨论】:

    【解决方案2】:

    如果您使用的是 Apache Jena Fuseki,您应该通过清除“查询”并改为放置“更新”来编辑默认为“http://localhost:3030/myDataset/query”的 sparql 端点

    【讨论】:

      猜你喜欢
      • 2017-10-16
      • 2016-06-27
      • 2012-08-26
      • 2018-11-12
      • 2018-12-20
      • 2018-02-16
      • 1970-01-01
      • 2021-09-09
      • 2013-10-10
      相关资源
      最近更新 更多