Subquery 使用SPARQL 1.1选择有限的子查询数据

Subquery 使用SPARQL 1.1选择有限的子查询数据,subquery,sparql,Subquery,Sparql,我正在努力完成一些事情,但我遇到了性能问题 我有商店和产品。产品通过:inStore谓词链接到商店。这里的主要目的是从每个匹配的商店获得5种产品,总限量为75种产品。订单应该是最近的距离和最高的价格。我的问题是: SELECT ?store ?productID ?distance ?price { { SELECT ?store ?distance { ?store omgeo:nearby(51.5125591000 -0.1248754000

我正在努力完成一些事情,但我遇到了性能问题


我有商店和产品。产品通过:inStore谓词链接到商店。这里的主要目的是从每个匹配的商店获得5种产品,总限量为75种产品。订单应该是最近的距离和最高的价格。我的问题是:

SELECT ?store ?productID ?distance ?price {
    {
        SELECT ?store ?distance {
            ?store omgeo:nearby(51.5125591000 -0.1248754000 '100km') .
            ?store geo-pos:lat ?latBase .
            ?store geo-pos:long ?longBase .
            BIND (omgeo:distance(51.5125591000, -0.1248754000, ?latBase, ?longBase) AS ?distance)
        } ORDER BY (?distance)
    }
    OPTIONAL {
        {
            SELECT ?productID ?price {
                {
                    SELECT ?productID {
                        ?productID :inStore ?store . 
                    }
                }
                ?productID :price ?price .
            } ORDER BY DESC(?price) LIMIT 5
        }
    }
    FILTER (BOUND(?productID))
} LIMIT 75

这里的问题是,在一个功能强大的服务器上,这是非常缓慢的。有什么建议吗?

您使用的是什么查询系统?GraphDB(néOWLIM)?是的,我正在使用GraphDB“从每个匹配的商店获得5种产品,总限制为75种产品”。这些类型的查询很难用SPARQL编写。您可能会发现,它所链接的一些内容非常有用。