【问题标题】:How to write code in C #, to add new data to the database如何在 C# 中编写代码,向数据库中添加新数据
【发布时间】:2020-04-23 08:23:38
【问题描述】:

向 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();

另一种方式,同样的问题。在 lokalka 上创建了一个数据库


是的,我也得出了这个结论,我是第一次使用 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。但他在请求中

【问题讨论】:

  • "同样的问题"...到底是什么问题?您需要先告诉我们问题,然后我们才能尝试解决它!
  • ` VDS.RDF.Query.RdfQueryException HResult=0x80131500 Сообщение = 尝试进行 SPARQL 查询时发生 HTTP 错误,请参阅内部异常了解详细信息 Источник = dotNetRDF Трассировка стека: в VDS.RDF.Query .SparqlRemoteEndpoint.QueryWithResultSet(ISparqlResultsHandler handler, String sparqlQuery) - VDS.RDF.Query.SparqlRemoteEndpoint.QueryWithResultSet(String sparqlQuery) - algorAutoText.Program.Main(String[] args) - C:\Users\Денис\source\repos\Program .cs:строка 98 Внутреннее исключение 1: WebException: Удаленный сервер возвратил ошибку: (404) Не найден.`
  • 好的,谢谢,但是:1)请将详细信息放入您的原始问题中。代码、错误消息、详细信息等不属于 cmets。您可以使用“编辑”按钮(就在蓝色的“c#”和“rdf”标签下方)更改您的问题并添加此信息。 2) 请将任何异常信息翻译成英文,因为这只是一个英语网站。 (P.S. 如果您说俄语,也可以使用 Stack Overflow на русском,如果您愿意的话。)
  • 很可能,主要问题是错误的 URI。参见例如这个问题:stackoverflow.com/a/46283806/7879193
  • 请求网址错误,请阅读文档

标签: c# sparql rdf graphdb dotnetrdf


【解决方案1】:

更新和删除查询来自 /statements 端点,

/repositories/{repository_id}/statements

您可以在此处查看 RDF4J 服务器 REST API:

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

【讨论】:

    【解决方案2】:

    当您使用 DELETE 或 INSERT 关键字时,您执行的是 SPARQL 更新,而不是查询。 SPARQL 将 Query 和 Update 分成两个独立的规范,大多数三重存储将它们作为两个独立的端点实现(例如,出于安全原因)。

    要从 dotNetRDF 更新到三重存储,您有两种选择。

    1. 您可以直接使用 SPARQL 更新端点,在这种情况下,您需要查看三重存储的文档以了解如何为其创建 URL - 有关详细信息,请参阅 https://github.com/dotnetrdf/dotnetrdf/wiki/UserGuide-Updating-With-SPARQL#remote-updates

    2. 1234563 987654322@

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      • 2013-04-19
      • 2016-10-21
      相关资源
      最近更新 更多