当您有多个单词和转义字符时,在 sparql 中进行自由文本搜索
Free text search in sparql when you have multiword and scaping character
我想知道如何在 sparql 查询中使用以下单词:
罗伯特·J·奥尼尔
我正在寻找在标签 属性.
中具有带配额或 unicode 字符的多词单元的资源
SELECT DISTINCT ?resource ?abstract
WHERE {?resource rdfs:label ?s.
?s <bif:contains> "'Robert J. O'Neill'"
?resource dbo:abstract ?abstract
}
'''
这里是将 return 所有标签为 "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"))
}
我发现以下代码比正则表达式更快:
SELECT ?s WHERE { ?s rdfs:label ?o FILTER ( bif:contains ( ?o, '"Robert" AND "J." AND "Neill"' ) ) }
我想知道如何在 sparql 查询中使用以下单词: 罗伯特·J·奥尼尔 我正在寻找在标签 属性.
中具有带配额或 unicode 字符的多词单元的资源 SELECT DISTINCT ?resource ?abstract
WHERE {?resource rdfs:label ?s.
?s <bif:contains> "'Robert J. O'Neill'"
?resource dbo:abstract ?abstract
}
'''
这里是将 return 所有标签为 "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"))
}
我发现以下代码比正则表达式更快:
SELECT ?s WHERE { ?s rdfs:label ?o FILTER ( bif:contains ( ?o, '"Robert" AND "J." AND "Neill"' ) ) }