Hadoop sparql连接查询解释它是如何工作的?

Hadoop sparql连接查询解释它是如何工作的?,hadoop,sparql,bigdata,jena,Hadoop,Sparql,Bigdata,Jena,我的问题是: select ?x ?z where { ?x <http://purl.uniprot.org/core/name> ?y . ?x <http://purl.uniprot.org/core/volume> ?z . ?x <http://purl.uniprot.org/core/pages> "176-186" . } 我需要为此查询创建自定义解析器 当我在jena模型上执行此查询时,它返回一条记录。 有人能解释一下这个查询

我的问题是:

select ?x ?z
where
{
  ?x <http://purl.uniprot.org/core/name> ?y .
  ?x <http://purl.uniprot.org/core/volume> ?z .
  ?x <http://purl.uniprot.org/core/pages> "176-186" .
}
我需要为此查询创建自定义解析器

当我在jena模型上执行此查询时,它返回一条记录。 有人能解释一下这个查询实现吗

我将此查询分为三部分:

select ?x ?y where { ?x <http://purl.uniprot.org/core/name> ?y . }

Total Records Found : 3034

select ?x ?z where { ?x <http://purl.uniprot.org/core/name> ?y . ?x <http://purl.uniprot.org/core/volume> ?z . }

 Total Records Found : 2679

select ?x ?z where { ?x <http://purl.uniprot.org/core/name> ?y . ?x <http://purl.uniprot.org/core/volume> ?z . ?x <http://purl.uniprot.org/core/pages> "176-186" . }

 Total Records Found : 1
请帮我做一个自定义查询解析器

编辑以包含正确的代数链接

我能提供的最好的建议是查看并在该级别派生您的自定义评估引擎。另一个可能提供信息的参考是


从您选择的标记可以看出,您打算执行分布在map reduce作业中的查询操作,并且您正在查看代数应用的一个具体示例,作为概念证明。如果您的目的是将其集成到Jena的查询评估中,那么您将需要手动探索Jena的现有系统,以了解其行为方式的原因

听起来你在问为什么

select ?x ?z where {
  ?x <http://purl.uniprot.org/core/name> ?y .           # (a)
  ?x <http://purl.uniprot.org/core/volume> ?z .         # (b)
  ?x <http://purl.uniprot.org/core/pages> "176-186" .   # (c)
}
只返回一个结果,而每行单独返回更多结果。SPARQL中的三重模式是合取的:非可选模式必须与数据匹配才能返回结果。因此,您要求的是?x和?z的值,其中以下所有值均成立:

?x的名字是?y,和 ?x有一些体积值,和 ?x的具体值为176-186页。
根据属性的名称,听起来像是在查询一些双字典信息。在给定的书目数据库中,可能只有一篇文章的页数正好是176-186,这并不奇怪,因为这是一个非常具体的值。

您正在尝试计算三种模式的联接。关于ApacheHadoop上join实现的论文将是有用的背景资料

了解ApacheSpark和弹性分布式数据集RDD概念可能会有所帮助

同样重要的是考虑每种模式可能的选择性——正如约书亚所说,页面模式很可能产生一个独特的解决方案,并且使用它来简单地查找每个名称和卷并不是一项艰巨的任务。 ARQ的内存算法并不是为了实现最大的独立并行性,而这正是Hadoop所需要的。合并联接或排序合并联接对数据进行两次并行访问

您可以通过extends类OpExecutor在基本模式级别、整个代数执行级别或两者之间的任何点上扩展ARQ