问题标签 [dotnetrdf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 对 dbpedia Endpoint 执行 sparql 查询
我正在尝试使用此 C# 代码对 DBpedia 端点执行 SPARQL 查询:
我仍然遇到异常
尝试进行 SPARQL 查询时发生 HTTP 错误,有关详细信息,请参阅内部异常
这可能是什么原因造成的?
rdf - 基于谓词节点检索特定 RDF 图三元组
我正在使用dotnetrdf发送 SparqlCONSTRUCT
查询并评估结果IGraph
。
首先,我试图找到代表给定类型个体的所有 Uri 节点,例如,
所以,我想使用GetTriplesWithPredicateObject
方法http://www.w3.org/1999/02/22-rdf-syntax-ns#type
,作为谓词和对象传递http://www.example.com/InterestingThing
。该方法需要两个对象实现INode
接口,所以我试图用图形的GetUriNode
方法找到相应的节点。
问题:未找到谓词。
在调试器中查看IGraph
对象时,似乎GetUriNode
只能找到图形Nodes
枚举中包含的内容 - 并且仅包含已用作主题或对象的 Uri 节点,但没有用作谓词。
现在,谓词 Uri 节点显然在那里——我可以在探索图形Triples
对象时看到它们。它们出现在可以直接从该对象检索的Triple
实例中,也可以在同一对象的PredicateNodes
属性中找到。
有趣的是,IGraph
诸如GetTriplesWithObject
or的某些查询方法GetTriplesWithPredicate
具有仅接受 aUri
而不是INode
- 但GetTriplesWithPredicateObject
不接受的重载。
现在,各种可能的解决方法很明显:
- 使用
GetTriplesWithPredicate
仅需要一个Uri
实例的重载,然后手动过滤生成的三元组。 - 手动搜索所有三元组以获得所需的三元组。
- 手动搜索列表
PredicateNodes
并找到搜索到 Uris 的列表。
不过,所有这些似乎都不必要地繁琐——因为现有方法乍一看表明应该能够简单地使用来GetUriNode
检索两个节点,然后将它们传递给现成的查询方法之一,例如GetTriplesWithObjectPredicate
.
因此,我的问题是:
我是否遗漏了任何东西,无论是在 dotnetrdf 库中还是在概念上,在 RDF 中,或者这种行为是否存在设计给开发人员带来的障碍?
这是一个重现问题的 C# 测试用例(查询 DBpedia):
这是示例程序的输出:
可以看出,IGraph.Nodes
枚举不包括谓词 Uris,例如http://www.example.com/prop1
or http://www.w3.org/1999/02/22-rdf-syntax-ns#type
。同样,输出显示谓词不是由 找到的GetUriNode
,而主语和宾语是。
sparql - SPARQL 删除查询 dotNetRDF 不修改 RDF 文件
我喜欢使用 dotNetRDF 从 RDF 文件中删除 RDF 元组。这是我正在使用的代码
这是我的RDF文件的结构
但是,不会对 RDF 文件应用任何更改。
c# - 在 C# 中使用 dotnet rdf 从 N3 添加和删除查询
我已将我的 RDF 文件更改为 N3,并在 C# 中使用 dotNetRDF。我可以解析和查询这个 N3 文件。我的问题是如何在我的 N3 文件中添加和删除语句。这是一个示例 N3 语句,我需要在我的 N3 文件中添加和删除这样的语句。
这些语句构成了我的层次结构,因此通过添加或删除语句,这些语句应该在正确的位置。
rdf - 使用 dotNetRDF 删除 RDF 元组
我想使用 dotNetRDF 删除一个 RDF 元组。这是我的 RDF 文件:
这是我正在使用的代码:
然而,RDF 文件没有发生任何事情。
这段代码对我来说很好,因为没有要求我使用 SPARQL 删除三元组
wheredestID
是所有三元组的主题。
rdf - RdfParseException:遇到意外字符(代码 114)r
我正在尝试使用dotNetRDF将以下查询发送到DBpedia:
但是,我听说发现RdfParseException
了一个意外r
字符(114 是 的十进制字符代码r
)。
当我对同一个查询使用基于 Web 的 DBpedia SPARQL 表单时,我得到了看起来合理的结果。因此,我认为我的 SPARQL 查询没有问题,或者至少没有 DBpedia 无法处理的问题。
我试图通过启用和来遵循这个问题关于类似问题的建议。如该问题的已接受答案中所述,这确实会将收到的响应打印到 stderr。但是,它不会引起“不同的错误”;相反,查询似乎是成功的,但是返回的图是空的(它不包含三元组)。Options.HttpDebugging
Options.HttpFullDebugging
这是重现该问题的最小示例:
这会产生以下输出:
从那里可以看出,结果图仅包含一些前缀,但不包含任何节点或三元组。
异常指向结果图的第 1 行第 9 列,当查看收到的响应时,它将是rdf
前缀声明的前缀的开头
我觉得奇怪的一件事是异常是由NTriplesTokeniser
内部的某个地方引发的NTriplesParser
,但返回的图形在我看来像Turtle而不是N-Triples
我正在使用来自 NuGet 的最新 dotNetRDF 版本,目前是 1.0.1.2809。
我在那里做错了什么,或者在这种情况下是否需要对 dotNetRDF 进行任何其他设置?
编辑:为了完整起见,我应该在带有一些 DBpedia 数据的本地 Virtuoso 安装中添加,没有崩溃。
c# - dotNetRDF 与普通 SQL
我正在研究一个协同过滤推荐系统。我之前在并行线程环境中构建了这样一个系统,使用 SPARQL 查询 RDF。由于 SPARQL 和 RDF 图的并行性质,这很有效。但是,我现在在标准台式 PC 中工作,我想知道在很大程度上是串行环境中使用 SPARQL 是否仍然是一种方法。当我使用 C# 时,我查看了 dotNetRDF,并且想知道它是否比简单的 SQL 更有效,尤其是现在 dotNetRDF 似乎正在远离 SQL 后端。
那么就几个线程的性能而言,SQL 还是 dotNetRDF?表格还是图表?
timeout - 异步请求超时通知
我将 SPARQL 查询作为异步请求发送到 SPARQL 端点,目前DBpedia使用dotNetRDF 库。虽然更简单的查询通常可以工作,但更复杂的查询有时会导致超时。
我正在寻找一种通过在发生超时时捕获某些事件来处理超时的方法。
我使用类的异步QueryWithResultSet
重载之一发送我的查询。SparqlRemoteEndpoint
如前所述,如果异步请求失败SparqlResultsCallback
,state
对象将被替换为AsyncError
实例。这确实表明存在超时,但它似乎仅在请求发送后10 分钟才这样做。例如,当我的超时时间是 30 秒时,我想在 30 秒后知道请求是否成功。(35 秒也可以,但你明白了。)
这是一个发送两个请求的示例应用程序,第一个请求非常简单,很可能在超时(这里设置为 120 秒)内成功,而第二个请求相当复杂,很容易在 DBpedia 上失败:
当我运行它时,我可重复地得到如下输出:
显然,确切的时间会有所不同,但关键是基于第二个查询的错误消息是在请求发送后大约10 分钟收到的,与超时设置的 2 分钟相差甚远。
我是否在这里错误地使用了 dotNetRDF,或者我是否有意运行一个额外的计时器来自己测量超时并自行做出反应,除非同时收到任何响应?
rdf - 使用属性路径进行查询时“无法更改集合中变量的值”
我正在使用 DotNetRDF(从 BitBucket 下载)执行 SPARQL 查询,但是在使用带有属性路径的查询时出现异常:
Set 中变量的值不能改变
这是 RDF、SPARQL 查询和执行查询的 C# 代码的一部分。我希望查询返回id/002
and id/003
。
c# - 在不使用 ID 的情况下检索具有相同 RDF/XML 元素名称的所有资源
打印我所有图表三元组的主题,我看到我的数据中的主题始终是表单的 URI,GraphURI/#SubjectID.
我能够通过如下查询检索一个主题的属性和值:
不过,我想对由 cim:ACLineSegment
RDF/XML 序列化中的元素表示的所有资源执行此操作。这是序列化的样子:
我想要类似下面的东西。这可能吗?