我想知道如何在Cassandra集群上完成SPARQL查询处理。例如,我已将LUBM生成的大学数据存储在Cassandra集群中。现在我想在Cassandra节点A,B,C,D上执行以下查询,我将此查询交给节点A,因为此节点是我的主客户端节点,它将与使用Gossip协议的其他节点同步。
PREFIX ub: <http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#>
SELECT ?X WHERE
{
?X a ub:student .
?Y a ub:graduateCourse .
?X ub:takesCourse ?Y .
}
我的问题是如何在分布式Cassandra节点上执行查询的子部分?节点A是否将完整查询传递给所有节点并从每个其他节点获取结果?或者将一部分查询分发给所有节点并获得中间结果,然后再发送第二部分......?
答案 0 :(得分:3)
Cassandra本身不支持SPARQL查询语言。但是,CumulusRDF是位于Cassandra之上的RDF数据库,它支持SPARQL - 它可能就是您所需要的。
答案 1 :(得分:0)
我使用Redland为Cassandra创建了一个SPARQL端点。
这里有Cassandra的Redland模块:https://github.com/cybermaggedon/cassandra-redland
此外,Redland的包装器提供SPARQL端点:https://github.com/cybermaggedon/sparql-service
我已将SPARQL位打包为Docker容器: https://hub.docker.com/r/cybermaggedon/sparql-cassandra/容器命令行参数为:
/usr/local/bin/sparql <PORT> cassandra <CASSANDRAHOSTNAME>
缺少文档。如果您对此任何一项感兴趣并且无法解决如何使其工作,请告诉我,或者在github上提出问题,我会写自述文件。