Выполните INSERT в Jena Fuseki с помощью драгоценного камня SPARQL (Ruby)

Итак, я разрабатываю API в Rails и использую Jena Fuseki для хранения троек, и прямо сейчас я пытаюсь выполнить INSERT в именованном графе. Запрос правильный, так как я запускал его на Jena и работал отлично. Однако независимо от того, что я делаю при использовании интерфейса командной строки Rails, я продолжаю получать одно и то же сообщение об ошибке:

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. Любые идеи? заранее спасибо


person María Guillermina    schedule 27.10.2016    source источник


Ответы (1)


Ну... Вместо endpoint.query я попробовал

resultset = endpoint.update(query)

и работал. Метод возвращен

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

и данные отображаются в моей базе данных и на графике. Надеюсь, это поможет любому с той же проблемой.

person María Guillermina    schedule 27.10.2016