dbpediasparql查询特定rdfs:label

dbpediasparql查询特定rdfs:label,sparql,jena,dbpedia,arq,Sparql,Jena,Dbpedia,Arq,基本上我有一个高效的查询(如下所示)。但是,我希望我的搜索更加精确,其中标签是实际字符串“yago”,而不是包含字符串“yago”。如果可能的话,我想尝试不使用过滤器,因为使用过滤器会使查询DBpedia花费更长的时间 SELECT ?uri ?label WHERE { ?uri rdfs:label ?label. ?label bif:contains "'yago'" . } 如果不想使用过滤器,可以尝试执行以下操作: SELECT ?uri ?label WHERE { ?uri

基本上我有一个高效的查询(如下所示)。但是,我希望我的搜索更加精确,其中标签是实际字符串“yago”,而不是包含字符串“yago”。如果可能的话,我想尝试不使用过滤器,因为使用过滤器会使查询DBpedia花费更长的时间

SELECT ?uri ?label 
WHERE {
?uri rdfs:label ?label.
?label bif:contains "'yago'" .
}

如果不想使用过滤器,可以尝试执行以下操作:

SELECT ?uri ?label
WHERE {
?uri rdfs:label "Yago"@en .
?uri rdfs:label ?label
}
我不确定它是否比使用过滤器的相应查询快得多:

SELECT ?uri ?label
WHERE {
?uri rdfs:label ?label .
filter(?label="Yago"@en)
}

对原始响应的关键更正。如果与语言标签完全匹配,则以下操作将起作用:

SELECT ?uri ?label
WHERE {
   ?uri rdfs:label "Yago"@en .
}
但是,如果精确匹配可能没有使用您想要的内容,SPARQL支持标准正则表达式:

SELECT ?uri ?label
WHERE {
   ?uri rdfs:label ?label .
   FILTER regex(str(?label), "yago", "i")
}

…它将匹配字符串,而不考虑大小写,您可以玩常见的正则表达式游戏以获得所需的字符串匹配。(当然,其他字符串函数,如STRSTARTS和strengs,如果它们满足所需的匹配条件,则效率会更高。)

我相信您的第一个查询复制了三重模式。