0

n3 ファイル形式がありますが、そこからノードまたはトリプルを削除したいのですが、どうすればよいですか? sparql クエリを使用する必要がありますか? n3 ファイルが必要で、そこからノードを削除したいのですが、助けてください。親フォームで使用するグラフをこの削除フォームに渡し、n3 ファイルから作成したこのグラフを操作したいということは、この n3 ファイルを読み込んでグラフに変換し、このフォームに送信するということです。

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

1 に答える 1

0

グラフの操作に関するドキュメントから、要求したことを実行するために使用できるAssert()およびRetract()メソッドについて言及している Asserting and Retracting triples というタイトルのセクションを参照してください。

たとえば、特定のトリプルを削除するには:

//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 プロパティによって提供されるコレクションから削除されないことにも注意してください。

はい、SPARQL を介してこれを行うこともできますが、API 選択および撤回メソッドを使用して直接表現するのが容易ではないいくつかの複雑な基準に基づいてトリプルを削除する必要がない限り、いくつかのトリプルを削除するだけでは非常にやり過ぎです。

于 2011-09-24T16:02:27.127 に答える