我已经阅读了如何使用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建模我的本体。
答案 0 :(得分:2)
我已经阅读了如何使用SPARQL插入数据的方法。一些参考文献使用 INSERT ,而其他参考文献使用 INSERT DATA 。
插入数据用于将文字数据插入图表,还有一个更复杂的删除/插入(需要至少一个删除或插入,但您不必同时执行这两项操作),这样您就可以插入{...} {...} 。这些在标准中定义,可在线免费获取;你不必诉诸二手资源。该标准使用语法定义insert data:
插入数据 QuadData
和delete/insert语法:
( WITH IRIref )?
(( DeleteClause InsertClause ?)| InsertClause )
(使用( NAMED )? IRIref )*
WHERE GroupGraphPatternDeleteClause :: = 删除 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检查语法。