LinqToRDF(http://code.google.com/p/linqtordf/)是一个著名的库,用于将Linq引入RDF数据。但是它近两年没有活跃。
因此,我正在寻找替代方案。我的基本要求是提供带有常规RDF数据源的基本Linq功能。商业图书馆也欢迎。
欢迎任何建议。
英
最佳答案
您可以尝试使用我的库dotNetRDF,该库旨在使Linq样式可以访问许多内容,即在整个库中大量广泛使用IEnumerable<T>
作为返回类型。
但是它没有像LinqToRdf一样提供完全的Linq风格的API,我的意思是它没有LinqToRdf所拥有的那种方法,它使您可以编写类似以下内容的内容并将库转换为SPARQL或其他方法适当的查询语言:
MusicDataContext ctx = new MusicDataContext(@"http://localhost/linqtordf/SparqlQuery.aspx");
var q = (from t in ctx.Tracks
where t.Year == "2006" &&
t.GenreName == "History 5 | Fall 2006 | UC Berkeley"
orderby t.FileLocation
select new {t.Title, t.FileLocation}).Skip(10).Take(5);
我的库的级别低得多,要么您必须自己编写等效的SPARQL查询,要么编写代码块以提取用于标识事物的各种三元组并进行所需的比较。
最终,我的意图是将LinqToRdf移植为使用dotNetRDF作为访问RDF的基础库,但是由于我正在开发核心库的主要版本,因此该列表在优先级列表上还处于较低水平,该版本增加了许多与之相关的新功能到SPARQL 1.1
关于商业选项,请看Intellidimension的Semantics Framework,这是一个商业库,尽管有免费的快速版本-我没有使用过库,所以不知道它对Linq的友好程度。免费版本的主要缺点是非常严格的重新分配策略。