如何构建从提供的主题实体开始的 returns 所有路径(1-N 跳)的 N-hop SPARQL(virtuoso)查询?

How to build an N-hop SPARQL (virtuoso) query which returns all paths (1-N hops) starting from a provided topic entity?

我正在尝试基于给定的主题实体构建 freebase 的子图,因为查询完整的 freebase 所花费的时间太耗时了。

我第一次尝试构建 3 跳子图如下:

PREFIX ns:<http://rdf.freebase.com/ns/>
SELECT ?r0, ?e1, ?r1, ?e2, ?r2, ?e3 WHERE 
{
    ns:m.034rd ?r0 ?e1.
    ?e1 ?r1 ?e2.
    ?e2 ?r2 ?e3.
}

这不起作用,因为它忽略了距主题实体最大 1 和 2 跳的所有路径。

我的下一次尝试如下:

    PREFIX ns:<http://rdf.freebase.com/ns/>
    SELECT ?r0, ?e1, ?r1, ?e2, ?r2, ?e3 WHERE 
    {
        ns:m.034rd ?r0 ?e1.
        OPTIONAL{
            ?e1 ?r1 ?e2.
        }
        OPTIONAL{
        ?e2 ?r2 ?e3.
        }
    }

这也没有用,虽然我不知道为什么,或者我什至不知道我是否正确使用了 OPTIONAL 标签。

在构建单个 SPARQL 查询失败后,我尝试迭代查询 freebase,并以此构建图形。我尝试了两件事:

(1):

PREFIX ns:<http://rdf.freebase.com/ns/>
SELECT ?r0, ?e1 WHERE 
{
    ns:m.034rd ?r0 ?e1.
}

PREFIX ns:<http://rdf.freebase.com/ns/>
SELECT ?r0, ?e1, ?r1, ?e2 WHERE 
{
    ns:m.034rd ?r0 ?e1.
    ?e1 ?r1 ?e2.
}

PREFIX ns:<http://rdf.freebase.com/ns/>
SELECT ?r0, ?e1, ?r1, ?e2, ?r2, ?e3 WHERE 
{
    ns:m.034rd ?r0 ?e1.
    ?e1 ?r1 ?e2.
    ?e2 ?r2 ?e3.
}

我原以为这样做会为我提供源自主题实体的所有路径(1、2 和 3 跳)。

(2) :

PREFIX ns:<http://rdf.freebase.com/ns/>
SELECT ?r0, ?e1 WHERE 
{
    e0 ?r0 ?e1.
}

其中 e0 最初设置为主题实体。接下来,对于初始查询返回的每个 e1,上述查询为 运行。这个过程重复了 3 次(3 步)。

我离找到构建子图的正确方法还差得很远,如果有任何帮助,我们将不胜感激。

根据大家的意见,我在这里给大家一些指点。所问的问题不适合特定的答案。 OpenLink Community Forum 通常比 Whosebug 更适合深入了解 Virtuoso 等特定产品。

首先,通常也是最重要的,请确保您运行正在使用最新版本的 Virtuoso,无论是 Open Source Edition (a/k/a VOS), now 7.2.6.1 or Enterprise/Commercial Edition (a/k/a VEE or VCE), now 8.3+,两者均于 2021 年 7 月发货。

接下来,查看 basic Performance Tuning settings,并确保将 Virtuoso 设置为按预期使用尽可能多的 RAM 和其他系统资源——因为默认设置旨在最大程度地减少 Virtuoso 在计算机上的负载系统,而不是最大化查询或其他性能。

然后,有一个服务器端超时,MaxQueryExecutionTime,在 Virtuoso INI 文件的 [SPARQL] 部分中设置为 discussed in the product documentation注意: 此超时对通过 iSQL 会话 运行 的 SPARQL 查询没有影响(这只需要您在 sparql关键字,并在 SPARQL 查询中附加一个分号,您将通过 sparql 形式 运行;例如,sparql SELECT ?s ... ORDER BY ?s ;).

有一些额外的 Anytime Query settings 可能与针对您的部署调整此功能有关。

如果这些提示不够充分,OpenLink Community Forum 应该是您寻求帮助的下一个停靠点。