我试图在SPARQL中创建一个查询:

给定两个或多个节点(选定的子节点)及其父子关系,产生:

  • 所选子女中最不常见的父母

  • 从每个孩子到最不常见的父母的最短路径

我在Neo4j中使用以下代码*(Cypher)执行此操作:

MATCH (children) where children.label IN ["rope", "pope", "dope"]
MATCH (root) where root.label="entity"
WITH * WHERE id(children) < id(root)
MATCH path = allShortestPaths( (children)-[*..100]->(root) )
RETURN path

我知道“最高共同祖先”是什么(根)虽然在这种情况下,并且正在检查从找到的子项到它的路径 .

我想知道如何使用SPARQL(1.1)解决这些问题,以及是否可以进行这些类型的查询(如果是的话 - 有效地) .

我的示例RDF数据是WordNet RDF三元组和节点之间的“hypernym”关系 .