2

我已经阅读了有关如何使用 SPARQL 插入数据的方法。一些参考使用INSERT而其他参考使用INSERT DATA。所以,我对如何进行查询感到困惑。我的目标是将作为CourseName的数据属性插入到我的本体中的类“Course”中。这是我的查询:

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 对我的本体进行建模。

4

2 回答 2

3

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

有用于将文字数据插入图形的插入数据,还有更复杂的删除/插入(至少需要一个删除插入,但您不必同时执行这两个操作),这将让您执行insert { ... } where {…}。这些在标准中定义,可在线免费获得;您不必求助于二手资料。该标准使用以下语法定义插入数据:

插入数据 QuadData

并使用语法删除/插入:

IRIref)?
( ( DeleteClause InsertClause ? ) | InsertClause )
( USING ( NAMED )? IRIref )*
WHERE GroupGraphPattern

DeleteClause ::= DELETE 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 的更新验证器检查语法。

于 2015-04-09T18:48:29.917 回答
0

对不起我的五美分。但也许这是对 SPARQL 服务器的错误“GET”或“POST”请求的结果。

尝试捕获对服务器的请求。在我的情况下,我在请求字符串更正后设法解决了同样的问题。

.../sparql?query=...

.../sparql?update=...

我相信 Protege 可以选择正确发送更新数据查询。

于 2022-01-26T12:45:50.070 回答