SPARQL查询部分匹配语句(包含)

13

我想知道在SPARQL中是否有一种方法可以查询语句的部分匹配。例如,如果三元组存储中包含一个包含“blablablaUsefulblablabla”的对象,我希望能够查询Useful,即我想说应该找到该语句“Useful”,而不考虑该语句之前或之后的内容。

是否有一种方法可以实现这一点?

谢谢

1个回答

20
我有一个包含 "blablablaUsefulblablabla" 的对象。 如果我理解你的意思正确,那么你需要使用 contains 函数。例如,在 DBpedia 上:
select distinct ?city ?label where {
  ?city a dbpedia-owl:City ;
        rdfs:label ?label .
  filter contains(?label,"San")         #-- the important line
  filter langMatches(lang(?label),'en')
}
limit 100

SPARQL结果


@robinaugy,这不是标准规定,但一些端点支持属性函数,因此您可以编写类似?label bif:contains "san"的内容。这对于支持文本索引的端点非常有帮助。 - Joshua Taylor
约书亚或其他人,如果我看得正确,这个包含函数只适用于文本常量?有没有一种方法可以对URI进行部分匹配? - RobinAugy
5
编辑:找到了 :) 只需要将 str(?s) 替换为 ?s 即可。 - RobinAugy
你能否像使用“或”一样进行多重过滤,例如 filter contains(?label,"San" or "Ath" or "baa")? - GGEv
@GGEv 是的,你可以使用 in。大概是这样的:filter (?label in ("San", "Ath", "baa")) - Joshua Taylor
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接