Как написать код в C #, чтобы добавить новые данные в базу данных - PullRequest
0 голосов
/ 23 апреля 2020

Добавление триплетов в GraphDB

SparqlRemoteEndpoint endpoint = new SparqlRemoteEndpoint(new Uri("http://localhost:7200/sparql"), "http://localhost:7200/");
SparqlResultSet results = endpoint.QueryWithResultSet("PREFIX : <http://www.example.org/> INSERT DATA {:test :test :hhrh }");

почему не работает?

StardogConnector stardog = new StardogConnector("http://localhost:7200", "test", "admin", "posw");
stardog.Begin();
string query = "PREFIX : <http://www.example.org/>SELECT * WHERE {:" + line[0] + " ?k :" + line[1] + "}";
stardog.Query(query);
stardog.Commit();

иначе, та же проблема. Создал БД на локалке


Да, я тоже пришел к такому выводу, использую GraphDB впервые. Ну, как я могу реализовать это с помощью файла? Я написал такой код.

IGraph g = new Graph();

string sql = "PREFIX : <http://www.example.org/> INSERT DATA {:test :test :hhrh }";
g.LoadFromFile("t.n3"); 

Object results = g.ExecuteQuery(sql);

вот такая ошибка

VDS.RDF.Parsing.RdfParseException
HResult = 0x80131500
Message = [InsertKeywordToken at Line 1 Column 36 to Line 1 Column 42] Unexpected Token encountered - expected a BASE / PREFIX directive or a Query Keyword to start a Query
Source = dotNetRDF
Stack trace:
in VDS.RDF.Parsing.SparqlQueryParser.ParseInternal (SparqlQueryParserContext context)
in VDS.RDF.Parsing.SparqlQueryParser.ParseInternal (TextReader input)
in VDS.RDF.Parsing.SparqlQueryParser.ParseFromString (String queryString)
in VDS.RDF.GraphExtensions.ExecuteQuery (IGraph g, String sparqlQuery)
in algorAutoText.Program.Main (String [] args) in C: \ Users \ Denis \ source \ repos \ algorAutoText \ algorAutoText \ Program.cs: line 43

судя по ошибке, якобы я не добавил BASE / PREFIX. Но он в просьбе

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Когда вы используете ключевые слова DELETE или INSERT, вы делаете SPARQL Обновление , а не запрос. SPARQL разделяет Query и Update на две отдельные спецификации, и большинство тройных хранилищ реализуют их как две отдельные конечные точки (например, из соображений безопасности).

Чтобы выполнить обновление из dotNetRDF в тройное хранилище, у вас есть две опции.

  1. Вы можете работать напрямую с конечной точкой обновления SPARQL, и в этом случае вам нужно будет проверить документацию для вашего тройного хранилища, чтобы узнать, как создать URL для этого - см. https://github.com/dotnetrdf/dotnetrdf/wiki/UserGuide-Updating-With-SPARQL#remote -обновления для деталей.

  2. В качестве альтернативы, если ваше тройное хранилище является одним из тех, которые поддерживаются dotNetRDF (Stardog и Sesame / GraphDB оба), то есть удобные оболочки, которые делают это немного проще - для получения дополнительной информации Об этом см. https://github.com/dotnetrdf/dotnetrdf/wiki/UserGuide-Triple-Store-Integration#update

0 голосов
/ 23 апреля 2020

Обновление и удаление запросов осуществляются через конечную точку операторов /,

, т.е. /repositories/{repository_id}/statements.

Вы можете увидеть REST API сервера RDF4J здесь:

http://docs.rdf4j.org/rest-api/#_the_rdf4j_server_rest_api

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...