SPARQL查询的性能问题

SPARQL查询的性能问题,sparql,semantic-web,linked-data,federated-queries,Sparql,Semantic Web,Linked Data,Federated Queries,我最近一直在探索SPARQl查询,它们似乎速度很慢。我还尝试使用ApacheJenaFuseki运行联邦查询,这也非常慢,比使用一个SPARQL端点的查询慢。 有没有办法提高SPARQL查询的性能? 我在互联网上发现的一些建议是使用缓存查询结果,我认为这违背了将数据放入web的目的 下面是我尝试的联邦查询的一个示例。我是从你那里得到这个问题的 前缀owl: 前缀rdfs: 前缀电影: 前缀dcterms: 在哪里选择?胶片?标签?主题{ 服务{ 电影:电影。 ?胶片rdfs:标签?标签。 ?电影

我最近一直在探索SPARQl查询,它们似乎速度很慢。我还尝试使用ApacheJenaFuseki运行联邦查询,这也非常慢,比使用一个SPARQL端点的查询慢。 有没有办法提高SPARQL查询的性能? 我在互联网上发现的一些建议是使用缓存查询结果,我认为这违背了将数据放入web的目的

下面是我尝试的联邦查询的一个示例。我是从你那里得到这个问题的

前缀owl:
前缀rdfs:
前缀电影:
前缀dcterms:
在哪里选择?胶片?标签?主题{
服务{
电影:电影。
?胶片rdfs:标签?标签。
?电影猫头鹰:sameAs?dbpediaLink
过滤器(regex(str(?dbpediaLink),“dbpedia”,“i”))
}
服务{
?数据库链接dcterms:主题?主题
}
}
限制50

请显示您的查询。不可能,您正在查询托管在D2R服务器上的LinkedMDB,并使用需要对所有中间结果进行完全扫描的正则表达式。您可以在不使用正则表达式的情况下检查性能,我相信这会快得多。但是,您也在本地执行联合查询…还有指向DBpedia上LinkedMDB的“local”
owl:sameAs
链接。我必须改变我的观点:D我尝试了-它立即返回结果。这意味着联邦查询可能是瓶颈。考虑到
LIMIT 50
(不包括
ORDER BY
等),您不需要从LinkedMDB获取所有数据。在
服务
子句之后不允许使用解决方案修饰符,因此,只需将LinkedMDB服务调用包装到
{SELECT?film?label?dbpediaLink中,其中{
..
}LIMIT 100}
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX movie: <http://data.linkedmdb.org/resource/movie/>
PREFIX dcterms: <http://purl.org/dc/terms/>

SELECT ?film ?label ?subject WHERE {
SERVICE <http://data.linkedmdb.org/sparql> {
    ?film a movie:film .
    ?film rdfs:label ?label .
    ?film owl:sameAs ?dbpediaLink 
    FILTER(regex(str(?dbpediaLink), "dbpedia", "i"))
}
SERVICE <http://dbpedia.org/sparql> {
    ?dbpediaLink dcterms:subject ?subject
}
}
LIMIT 50