使用 SPARQL gem (Ruby) 在 Jena Fuseki 中执行 INSERT

Perform an INSERT in Jena Fuseki with SPARQL gem (Ruby)

所以我正在 Rails 中开发一个 API 并使用 Jena Fuseki 来存储三元组,现在我正在尝试在命名图中执行 INSERT。查询是正确的,因为我 运行 它在 Jena 上并且工作得很好。但是,无论我在使用 Rails CLI 时做什么,我都会收到相同的错误消息:

SPARQL::Client::MalformedQuery: Error 400: SPARQL Update: No 'update=' parameter

我创建了一个方法,该方法采用我要插入的对象的参数,并在我想要的位置指定了图形。

def self.insert_taxon(uri, label, comment, subclass_of)
  endpoint = SPARQL::Client.new("http://app.talkiu.com:8030/talkiutest/update")
  query =
     "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
      PREFIX owl: <http://www.w3.org/2002/07/owl#>
      PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
      prefix gpc:<http://www.ebusiness-unibw.org/ontologies/pcs2owl/gpc/>
      prefix tk: <www.web-experto.com.ar/ontology#>

      INSERT DATA {
        GRAPH <http://app.talkiu.com:8030/talkiutest/data/talkiu> {
          <#{uri}> a owl:Class.
          <#{uri}> rdfs:label '#{label}'@es .
          <#{uri}> rdfs:comment '#{comment}' .
          <#{uri}> rdfs:subClassOf <#{subclass_of}> .
        }
      }"
  resultset = endpoint.query(query)
end 

如您所见,我正在使用 UPDATE 端点。有任何想法吗?提前致谢

好吧...我尝试了

而不是 endpoint.query
resultset = endpoint.update(query)

并工作。方法返回

<SPARQL::Client:0x2b0158a050e4(http://app.talkiu.com:8030/talkiutest/update)> 

并且数据显示在我的数据库和图表中。希望这对遇到同样问题的人有所帮助。