Из документации по Работа с графиками см. Раздел «Утверждение и втягивание троек», в котором упоминаются методы Assert () и Retract () который можно использовать, чтобы сделать то, что вы просили.
Например, чтобы удалить конкретную тройку:
//Assuming you already have the triple to delete in a variable t
g.Retract(t);
Или, возможно, более целесообразно удалить все тройки, которые соответствуют определенному узлу:
g.Retract(g.GetTriplesWithSubject(g.CreateUriNode(new Uri("http://example.org"))));
Если вы не уверены, существует ли конкретный узел, вы можете сделать что-то вроде следующего:
INode n = g.GetUriNode(new Uri("http://example.org"));
//If n is null then the specified Node does not exist in the Graph
if (n != null)
{
g.Retract(g.GetTriplesWithSubject(n));
}
Обратите внимание, что вы не можете напрямую удалить узел из графика, кроме как путем удаления всех троек, которые имеют его в позиции субъекта / объекта. Также обратите внимание, что это не удаляет его из коллекции, предоставленной в настоящее время свойством Nodes для Graph.
Да, вы также можете сделать это с помощью SPARQL, но просто для удаления нескольких троек, что является слишком избыточным, если только вам не нужно удалять тройки, основанные на некоторых сложных критериях, которые нелегко выразить напрямую с помощью методов выбора и отвода API.