2011-09-24 2 views
0

J'ai un formate de fichier n3 et je veux supprimer un nœud ou un triple de celui-ci comment puis-je le faire? devrais-je utiliser sparql query? s'il vous plaît aidez-moi je veux avoir un fichier n3 et que vous voulez supprimer un nœud de celui-ci. Je passe un graphique qui utilise dans mon formulaire parent à cette forme de suppression et je veux travailler avec ce graphique que je crée à partir d'un fichier n3 je veux dire que je lis ce fichier n3 et le convertir en un graphique et l'envoyer à ce formulaire.supprimer un noeud ou tripler en utilisant dotenetrdf librery?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using VDS.RDF; 
using VDS.RDF.Parsing; 
using VDS.RDF.Query; 
using System.IO; 
using System.Windows; 
using System.Runtime.InteropServices; 
using VDS.RDF.Writing; 

namespace WindowsFormsApplication2 
{ 
    public partial class delete : Form 
    { 
     Graph gra = new Graph(); 
     public delete(Graph initialValue) 
     { 
      InitializeComponent(); 
      ValueFromParent = initialValue; 
     } 

     private void delete_Load(object sender, EventArgs e) 
     { 

     } 
     public Graph ValueFromParent 
     { 
      set 
      { 
       this.gra = value; 
      } 
     } 
    } 
} 

Répondre

0

De la documentation sur Working with Graphs s'il vous plaît voir la section intitulée Affirmer et triplets qui fait mention escamotables des assert() et Retract() méthodes qui peuvent être utilisées pour faire ce que vous avez demandé.

Par exemple, pour supprimer un Triplé:

//Assuming you already have the triple to delete in a variable t 
g.Retract(t); 

Ou peut-être plus utile de supprimer tous les triplets qui correspondent à un nœud spécifique:

g.Retract(g.GetTriplesWithSubject(g.CreateUriNode(new Uri("http://example.org")))); 

Si vous n'êtes pas sûr que existe un nœud spécifique vous pouvez faire quelque chose comme ce qui suit:

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)); 
} 

Notez que vous ne pouvez pas directement supprimer un noeud du graphe autrement qu'en supprimant tous les triplets qui l'ont dans la position Objet/Objet. Notez également que cela ne le supprime pas de la collection fournie par la propriété Nodes du graphique en cours. Oui, vous pouvez également le faire via SPARQL, mais juste pour supprimer quelques triplets, à moins de devoir supprimer des triplets basés sur des critères complexes qui ne s'expriment pas facilement en utilisant les méthodes de sélection et de retrait de l'API.

+0

merci pour votre réponse qui est si utile pour moi – ghasedak

Questions connexes