在与
dotnetrdf
和 Virtuoso 努力保存我的图表之后,我尝试用我的更改更新图表。我再次按照UpdateGraph()
部分中的文档,并创建了以下代码:
// and store the graph
if (_virtuoso.UpdateSupported)
_virtuoso.UpdateGraph(insertGraph.BaseUri, insertGraph.Triples, null);
else
log.Add("Updating not supported. Changes not stored");
insertGraph
是包含我添加内容的图表。我检查了 BaseUri
是否具有正确的值,并且 insertGraph.Triples
包含我的新三元组。 _virtuoso
是 VirtuosoManager
的一个实例,通过它我可以 LoadGraph
和 SaveGraph
。
代码不会引发任何异常,但仍然没有在 Virtuoso 存储中插入三元组。知道吗,可能是什么问题或者我如何获得有关该问题的更多信息?
提前致谢,
弗兰克
您如何得出没有插入三元组的结论?您是否将 Virtuoso Server 置于前台调试模式,该模式将显示代码执行期间可能出现的任何问题。
您可以使用以下命令来测试数据是否已加载:
选择 COUNT (*) WHERE {GRAPH ?g {?s a ?o}}
您可以使用以下内容来确定 Virtuoso 的 RDF Quad Storage 领域中托管数据的命名图:
选择不同的 ?g WHERE {GRAPH ?g {?s a ?o}}
诀窍是调用 Virtuoso Manager 上的 Dispose 方法。只有这样才会强制存储更新。
VirtuosoManager virtuosoManager = new VirtuosoManager(Configuration.VirtuosoServerName, Configuration.VirtuosoServerPort, VirtuosoManager.DefaultDB, User, Password);
virtuosoManager.UpdateGraph(graphUri, TriplesToAdd, TriplesToRemove);
// NECESSARY!! Otherwise, the changes won't be commited!
virtuosoManager.Dispose();