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

时间:2015-04-06 10:20:42

标签: subquery sparql

我试图完成某项工作,但我遇到了性能问题。

我有商店和产品。产品通过以下方式链接到商店: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

这里的问题是,在功能非常强大的服务器上,这种速度极慢。有什么建议吗?

0 个答案:

没有答案