如何在SPARQL中将字符串与变量绑定

时间:2018-08-20 17:52:36

标签: sparql blazegraph federated-queries

以下查询

PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX edm: <http://www.europeana.eu/schemas/edm/>
PREFIX ore: <http://www.openarchives.org/ore/terms/>

SELECT *
{
        SERVICE <http://sparql.europeana.eu> {
              ?CHO ore:proxyIn ?proxy;
              dc:title ?title ;
              dc:creator ?creator ;
              dc:date ?date .
              FILTER REGEX(str(?creator),"corelli","i").
              ?proxy edm:isShownBy ?mediaURL .
            } 
}

从Europeana知识库中计算"corelli"的某些作品中的某些标题。但是,当我尝试将变量?surname与字符串"corelli"绑定在一起时,它什么也不返回。

例如

SELECT *
{
        values ?surname { "corelli" }
        SERVICE <http://sparql.europeana.eu> {

              ?CHO ore:proxyIn ?proxy;
              dc:title ?title ;
              dc:creator ?creator ;
              dc:date ?date .
              FILTER REGEX(str(?creator),?surname,"i").
              ?proxy edm:isShownBy ?mediaURL .
            } 
}

FILTER REGEX表达式似乎在那里不起作用(我正在使用Blazegraph实例来计算此查询)。如果我使用str(?surname)代替?surname,也不会。

为什么会这样?

任何人都知道如何设置带有某些字符串值的“姓”(我可能想从另一个端点收集)并让查询查找数据?

1 个答案:

答案 0 :(得分:0)

由于查询超时,很可能看不到结果。对于您正在使用的公共端点而言,它太重了。实际上,这两个查询都很繁琐,如果您尝试使用不同的字符串值进行几次尝试,您可能会发现有时第一个查询也会超时,而第二个查询有时会返回一些结果。