SparQL插入的org.openrdf.query.MalformedQueryException

时间:2015-04-09 18:20:43

标签: insert sparql ontology triples

我已经阅读了如何使用SPARQL插入数据的方法。一些引用使用 INSERT ,而其他引用使用 INSERT DATA 。所以,我很困惑我将如何进行查询。我的目标是在我的本体中将一个数据属性 CourseName 插入到“课程”类中。这是我的疑问:

INSERT{
    <http://www.semanticweb.org/rocky/ontologies/2015/3/CurriculumOntology#Course> curr:CourseName "IT222".
            }

我已经尝试过此查询,并出现一个例外情况:

SparqlReasonerException: org.openrdf.query.MalformedQueryException: Encountered " "insert" "INSERT "" at line 9, column 1.
Was expecting one of:
    "base" ...
    "prefix" ...
    "select" ...
    "construct" ...
    "describe" ...
    "ask" ...

是三重错误的主题?或者我真的需要把三重主题放在什么主题上呢?为什么会出现异常?顺便说一句,我正在使用Protege建模我的本体。

1 个答案:

答案 0 :(得分:2)

  

我已经阅读了如何使用SPARQL插入数据的方法。一些参考文献使用 INSERT ,而其他参考文献使用 INSERT DATA

插入数据用于将文字数据插入图表,还有一个更复杂的删除/插入(需要至少一个删除插入,但您不必同时执行这两项操作),这样您就可以插入{...} {...} 。这些在标准中定义,可在线免费获取;你不必诉诸二手资源。该标准使用语法定义insert data

  

插入数据 QuadData

delete/insert语法:

  

WITH IRIref )?
  (( DeleteClause InsertClause ?)| InsertClause
  (使用 NAMED )? IRIref )*
   WHERE GroupGraphPattern

     

DeleteClause :: = 删除 QuadPattern
   InsertClause :: = INSERT QuadPattern

所以你的语法错误很简单。您需要 INSERT DATA ,而不是 DELETE / INSERT 。因此:

INSERT DATA {
  <http://www.semanticweb.org/rocky/ontologies/2015/3/CurriculumOntology#Course> curr:CourseName "IT222".
}

您可以使用sparql.org's update validator检查语法。