2

dotNetRDF ライブラリを使用して、sparql クエリを記述します。「http://dbpedia.org/sparql」を DBPedia SPARQL エンドポイントとして、「http://dbpedia.org」をデフォルト グラフ URI として使用して、リモート エンドポイントを定義します。

 SparqlRemoteEndpoint endpoint = new SparqlRemoteEndpoint(new Uri("http://dbpedia.org/sparql"), "http://dbpedia.org");

これはうまくいきますが、rdf ファイルをデフォルトのグラフ URI "myuniversity.rdf" として使用する必要があります。これを Web サイトに追加しました。"http://dbpedia.org" の代わりに使用されるパラメータ

それを行うためにコンストラクターに渡す必要がある正しいパラメーターは何ですか?

4

1 に答える 1

1

示した方法は、HTTPを介してリモートエンドポイントをクエリするためだけのものです。

ローカルファイルをクエリするだけの場合は、次のようなものを使用します。

//Define your Graph here - it may be better to use a QueryableGraph if you plan
//on making lots of Queries against this Graph as that is marginally more performant
IGraph g = new Graph();

//Load some data into your Graph using the LoadFromFile() extension method
g.LoadFromFile("myfile.rdf");

//Use the extension method ExecuteQuery() to make the query against the Graph
try
{
  Object results = g.ExecuteQuery("SELECT * WHERE { ?s a ?type }");
  if (results is SparqlResultSet)
  {
     //SELECT/ASK queries give a SparqlResultSet
     SparqlResultSet rset = (SparqlResultSet)results;
     foreach (SparqlResult r in rset)
     {
       //Do whatever you want with each Result
     }
  } 
  else if (results is IGraph)
  {
     //CONSTRUCT/DESCRIBE queries give a IGraph
     IGraph resGraph = (IGraph)results;
     foreach (Triple t in resGraph.Triples)
     {
        //Do whatever you want with each Triple
     }
  }
  else
  {
     //If you don't get a SparqlResutlSet or IGraph something went wrong 
     //but didn't throw an exception so you should handle it here
     Console.WriteLine("ERROR");
  }
}
catch (RdfQueryException queryEx)
{
   //There was an error executing the query so handle it here
   Console.WriteLine(queryEx.Message);
}

その他のドキュメントについては、SPARQLクエリを作成するさまざまな方法をカバーするSPARQLを使用したクエリを参照してください。

複数のグラフがある場合は、IInMemoryQueryableStoreまたはLeviathanQueryProcessorとISparqlDatasetのいずれかを使用することをお勧めします。

行き詰まった場合は、いつでもメーリングリスト(dotNetRDF-support@lists.sourceforge.net)で助けを求めることができます。

于 2011-04-14T09:59:18.360 に答える