我目前正在使用他们的 RDF4J API 与 ontext 的 GraphDB 集成。
我正在尝试插入和替换大量语句,理想情况下是一次性插入和替换。我目前正在我的 Fuseki 实例(我正在迁移)上执行此操作,方法是为我想要插入到我的图表中的每个三元组创建这个块(目前仅使用默认图表)并update
使用分号将其作为一个调用提交到将语句分开(进入post
正文的位置);
delete { <x:test> <y:name> ?o }
insert { <x:test> <y:name> "Test" }
where { optional{ <x:test> <y:name> ?o }};
delete { <x:test> <y:description> ?o }
insert { <x:test> <y:description> "Test" }
where { optional{ <x:test> <y:description> ?o }};
delete { <x:test2> <y:name> ?o }
insert { <x:test2> <y:name> "Test" }
where { optional{ <x:test2> <y:name> ?o }};
我一直在研究 API,据我所知,Statement Post Method( POST /repositories/{repositoryID}/statement
) 只允许在名为 的查询参数中使用类似的 SPARQL 1.1 更新字符串update
。
这意味着我最终会将数千个这样的 SPARQL 块附加到查询参数上,这确实感觉不对。
我是否遗漏了您如何更新 GraphDB 中的语句?我应该遵循更好的策略吗?
编辑 1
在玩了之后,我创建了以下似乎可行的方法,但是我不能说它是否被认为是一种好方法;
DELETE {
<x:test> ?p ?o
}
WHERE {
<x:test> ?p ?o .
VALUES (?p) {
(<y:name>)
(<y:description>)
}
};
INSERT DATA {
<x:test> <y:name> "New Name" .
<x:test> <y:description> "New Description" .
}
任何帮助将不胜感激。
非常感谢,约翰