作为一名.NET开发者,我该如何开始使用Sparql?

13
我正在尝试解析Project Gutenberg的大型RDF文件。 我团队中的另一名成员很困扰,已经尝试了Semweb和一个Python库。
对于rdf我有点幼稚,我尝试用Ruby编写了一个普通的xml解析脚本。 很快我意识到它太复杂了,无法正常工作。
我已经下载了Intellidimension的工具,并考虑使用它。
我想我不理解如何使用SPARQL。 Java中似乎有一个叫做Jena的解析器。在.NET中是否有类似的东西?
对于显而易见的问题我感到抱歉...我只是不确定在哪里编写SPARQL查询。 是否有一个库,可以允许我像Data.SqlClient一样使用字符串构建查询,然后执行这些查询以针对某个Sparql处理器?
你需要用什么来执行Sparql查询呢?
4个回答

8

.Net 中的另一个选项是 dotNetRDF (免责声明 - 我是该项目的主要开发人员)。

它相比 SemWeb 的优势在于目前仍在维护中并有着积极的持续开发,此外还支持许多新的语义网技术,如 RDFa 和 SPARQL 1.1。

与 Intellidimension 相比,它的优势在于完全免费(根据您的需求选择 GPL、LGPL 或 MIT 许可证)。

关于 SPARQL

SemWeb 和 dotNetRDF 都包括用于执行查询的 SPARQL 解析器和引擎。SemWeb 的解析器基于旧版 Java SPARQL 引擎的 IKVM 移植版本,该版本早已被 Jena 框架中的 ARQ 引擎所代替,后者远比前者优秀。而 dotNetRDF 则使用 Leviathan 引擎,其功能几乎与 ARQ 相当(尽管对某些类型的查询可能不够高效)。

无论是 ARQ(Jena)还是 Leviathan(dotNetRDF),都支持正在出现的 SPARQL 1.1 规范的大部分内容。如果您已经掌握了 SQL 的知识,那么您最有可能想使用一个支持此项功能的引擎,因为这会将许多熟悉的 SQL 特性添加到 SPARQL 语言中,例如聚合函数(COUNT、MAX 等)、GROUP BY、HAVING 和 Project 表达式(fn:concat(?x, ?y) AS ?z)。


3
使用SemWeb Library来解析RDF文件并将其存储到内存和数据库中是可行的。您还可以导入相关本体。Semweb拥有嵌入式SPARQL库,因此您可以在数据库上运行SPARQL查询。如果您不熟悉SPARQL,可以使用LINQ。如果您是新手,我建议先阅读语义Web入门指南(可作为书籍和PowerPoint文件提供)。Jena网站上也有一个很好的SPARQL教程

2

另一个选项是dotSesame库。这是Java RDF框架Sesame的IKVM端口。它包括RDF解析器、写入器、SPARQL查询引擎和推理器。


0
使用RDFSharp(http://rdfsharp.codeplex.com/),您无需了解SPARQL,因为您可以流畅地创建SPARQL查询并将其应用于图形和存储。所有这些都不需要编写一行SPARQL查询。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接