我想知道如果我有一个单词,我可以在sparql查询中使用: 罗伯特·奥尼尔 我正在寻找在Label属性中具有配额或unicode字符的多字符单元的资源。
SELECT DISTINCT ?resource ?abstract
WHERE {?resource rdfs:label ?s.
?s <bif:contains> "'Robert J. O'Neill'"
?resource dbo:abstract ?abstract
}
'''
答案 0 :(得分:0)
这是一个查询,它将返回所有以“Robert J. O'Neill”为标签的元素。
SELECT DISTINCT ?s WHERE
{
?s rdfs:label ?label .
FILTER(regex(?label, "Robert J. O'Neill", "i"))
}
如果您确定需要特定的字符串匹配。这更快:
SELECT DISTINCT ?s WHERE
{
?s rdfs:label ?label .
?label bif:contains "Robert J. O'Neill"
}
但请注意,例如,由于字符串中的空格,Virtuoso不支持此类查询。所以另一种方法是避免它:
SELECT DISTINCT * WHERE
{
?s rdfs:label ?label .
?label bif:contains "Robert" .
FILTER (CONTAINS(?label, " J. O'Neill"))
}
答案 1 :(得分:0)
我发现以下代码比正则表达式更快:
SELECT ?s WHERE { ?s rdfs:label ?o FILTER ( bif:contains ( ?o, '"Robert" AND "J." AND "Neill"' ) ) }