как я могу использовать sparql для запроса из моего собственного файла rdf с использованием библиотеки dotNetRDF?

#c# #asp.net #sparql #rdf #dotnetrdf

#c# #asp.net #sparql #rdf #dotnetrdf

Вопрос:

Я использую библиотеку 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» Я добавил его на веб-сайт, какой параметр будет вместо «http://dbpedia.org «?

Не могли бы вы, пожалуйста, помочь мне, какой правильный параметр я должен передать конструктору для этого?

Ответ №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 — если вы застряли

Комментарии:

1. Вам нужно заменить myfile.rdf на имя вашего файла относительно текущего каталога