LINQ与SPARQL的比较?

时间:2015-11-25 12:38:26

标签: linq sparql

我不是MS.NET的人,但对LINQ感到好奇,本文http://www.linqpad.net/WhyLINQBeatsSQL.aspx解释了为什么它比SQL更好。

我使用SPARQL工作很多,并且在很多方面它比SQL更糟糕(即使1.1有点不成熟恕我直言)。在上面的文章中是否有LINQ与SPARQL的比较?

我认为对RDF数据最感兴趣的LINQ方面是LINQ可以返回层次结构(在RDBMS中说的是表值变量;或者认为是XML结构)。 SPARQL无法做到这一点:

  • 您无法制作CONSTRUCT子查询,请参阅GroupGraphPattern 和语法中的SubSelect
  • 如果你试图返回一系列复杂的CONSTRUCTed对象,我打赌你会弄得一团糟。我也不相信你可以混合阵列和层次结构深层次。如果您不同意,请参阅此http://vocab.getty.edu/doc/queries/#All_Data_For_Subject并尝试编写查询以将其返回给所有?s gvp:broaderExtended aat:300264089(免责声明:我构建了该端点)

因此,使用SPARQL,我们要么返回表格数据,要么返回单个图形对象,但不能自由地混合它们。具有讽刺意味的是,因为RDF 图形数据模型。

有几个LINQ到SPARQL绑定:

但是他们中的任何人都处理这个"等级结构"方面?

1 个答案:

答案 0 :(得分:0)

(我更喜欢这是一个评论,但它太长了)

我不是专家,无论是LINQ还是SPARQL,我都没有检查你提供的链接,但最近我听了Anders Heilsberg,微软技术研究员和C#首席设计师的播客和LINQ。

http://www.se-radio.net/2008/05/episode-97-interview-anders-hejlsberg/

他说LINQ语法遵循FROM ... WHERE ... SELECT结构,以允许更好的类型推断。

当它知道表名(FROM ...子句)时,LINQ中的类型推理引擎可以在编译时开始工作,获取自动完成器的列名,例如与Visual Studio中的语法检查器交互。 / p>

我不认为这对于RDF三元组来说很容易/可能,其中属性/谓词(SELECT / WHERE)甚至可以为空,但不是FROM,(空白节点)。

这些空白节点表示存在具有特定属性但未提供标识或引用的个人。