как я могу использовать 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"?

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


person Engy    schedule 13.04.2011    source источник


Ответы (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.

Вы всегда можете обратиться за помощью в списки рассылки - [email protected] - если вы застряли

person RobV    schedule 14.04.2011
comment
Вам нужно заменить myfile.rdf на имя вашего файла относительно текущего каталога - person RobV; 15.04.2011