使用dotNetRDF删除RDF元组

使用dotNetRDF删除RDF元组,rdf,sparql,dotnetrdf,Rdf,Sparql,Dotnetrdf,我想使用dotNetRDF删除一个RDF元组。这是我的RDF文件: 0165a659-54ea-4e80-bee7-9d3951d47ae3 测试 17:00 17:55 130登。 --- 以下是我正在使用的代码: TripleStore Magacitorki=新的TripleStore(); //克里兰杰·纳格拉夫 图rdf=新图(); //创建一个数据集并使用命名图作为默认图 Load(rdf,rdfDatoteka,新的RdfXmlParser()); rdf.BaseUri=新U

我想使用dotNetRDF删除一个RDF元组。这是我的RDF文件:


0165a659-54ea-4e80-bee7-9d3951d47ae3
测试
17:00
17:55
130登。
---
以下是我正在使用的代码:

TripleStore Magacitorki=新的TripleStore();
//克里兰杰·纳格拉夫
图rdf=新图();
//创建一个数据集并使用命名图作为默认图
Load(rdf,rdfDatoteka,新的RdfXmlParser());
rdf.BaseUri=新Uri(“http://www.example.org/destDetails"); // 从图形中删除该名称
//如果图形没有名称,则将其添加为默认图形
添加(rdf);
SparqlUpdateParser=新的SparqlUpdateParser();
SparqlParameterizedString cmdString=新的SparqlParameterizedString();
cmdString.CommandText=@“前缀ns0:”
+“前缀rdf:”
+“删除”
+“其中{”
+“GRAPH@GRAPH{?dest?p?o”
+“?dest ns0:nodeID@destd}}”;
SetUri(“图形”,rdf.BaseUri);
SetLiteral(“destID”,destID);
SparqlUpdateCommandSet cmds=parser.ParseFromString(cmdString);
LeviathanUpdate处理器=新的LeviathanUpdate处理器(Magacitorki);
processor.ProcessCommandSet(cmds);
保存文件(rdfDatoteka);
但是,RDF文件没有发生任何变化


这段代码对我来说很好,因为我没有被要求使用SPARQL删除三元组

Graph rdf=newgraph();
//创建一个数据集并使用命名图作为默认图
Load(rdf,rdfDatoteka,新的RdfXmlParser());
rdf.BaseUri=新Uri(“http://www.example.org/destDetails");
INode n=rdf.GetUriNode(新Uri(“http://www.example.org/destDetails#“+D”);
如果(n!=null)
{
rdf.Retract(rdf.GetTriplesWithSubject(n));
}
保存文件(rdfDatoteka);

其中
destID
是所有三元组的主题。

您的查询实际上与您的数据不匹配,这就是为什么
删除
无效的原因


在您的数据中,您有
ns0:ID
,但在
DELETE
中,您试图匹配
ns0:nodeID
——因此不会匹配任何数据,也不会删除任何内容。

您不接受的@RobV中有什么不起作用的?这看起来是同一个问题。他确实评论道:“如果你不明白如何编写SPARQL更新来实现你的目标,那么这是一个与这个问题无关的单独问题”,但这看起来像是同一个问题。我想删除元组和元组本身的所有属性。RobV的回答只删除nodeID属性。他在中说,“如果你想删除与你所识别的三元组相关的所有三元组,那么将
?dest?p?o
作为一个附加的三元组模式添加到你的
delete
”。另外,还有一个术语说明:一般来说,三元组(即3元组)没有属性。每个三元组的形式为{主谓宾语}。在您的数据中,有七个三元组(让X代表节点):{X ID…};{X目的地…};{X DistricName“Test”};等等每一个三元组{xpo}都可以被视为表明“X的属性p的值为o”。听起来你只是想删除所有断言X属性的三元组,@RobV之前的评论解释了如何做。