【发布时间】:2014-03-28 22:53:18
【问题描述】:
我正在尝试创建一个 SPARQL 查询来查找 Jim 认识的所有人,然后查找 Jim 的认识者认识哪些人,然后找到像链一样的东西。
例如我有:
Jim knows Clare and Antoine
Clare knows Jim and David
Antoine knows David and Clare
David knows Clare
那么结果是:
result1: Clare, Antoine
result2: Jim, David, David, Clare
result3: Clare, David, Clare, Clare, Jim, David
我或多或少地做了一棵树。
我想要的是将result1、result2 和result3 合并为result4。所以result4 将是:
result4: clare, antoine, jim, david, david, clare, clare, david, clare, clare, jim, david.
然后使用DISTINCT 删除重复项。请问我怎样才能做到这一点?
SELECT ?Result1 ?Result2 ?Result3
WHERE{
{
base:Knows dc:Names _:BN1 .
_:BN1 dc:FName "Jim";
dc:KnownFName ?Result1 .
}
.
{
base:Knows dc:Names _:BN2 .
_:BN2 dc:FName ?Result1;
dc:KnownFName ?Result2 .
}
.
{
base:Knows dc:Names _:BN3 .
_:BN3 dc:FName ?Result2;
dc:KnownFName ?Result3 .
}
}
【问题讨论】: