我正在尋找返回一個匹配URI或包含其中的某個文本字符串的文本節點的列表。返回一個匹配搜索所有主題,謂詞和對象中的文本字符串的列表 - 在一個查詢中?
這允許我搜索任何具有匹配字符串的主題,但是我也想返回任何匹配的謂詞或對象 - 全部在相同的查詢中。
select ?s ?p ?o WHERE {
?s ?p ?o .
FILTER (REGEX(STR(?s), "SEARCHTEXT", "i"))
}
任何想法如何我可以修改此?
我正在尋找返回一個匹配URI或包含其中的某個文本字符串的文本節點的列表。返回一個匹配搜索所有主題,謂詞和對象中的文本字符串的列表 - 在一個查詢中?
這允許我搜索任何具有匹配字符串的主題,但是我也想返回任何匹配的謂詞或對象 - 全部在相同的查詢中。
select ?s ?p ?o WHERE {
?s ?p ?o .
FILTER (REGEX(STR(?s), "SEARCHTEXT", "i"))
}
任何想法如何我可以修改此?
您打算使用哪種用例?既然你想搜索它,你的正則表達式似乎表達了它匹配的令牌的一些有價值的信息。如果是這種情況,那麼使用這種知識明確地標記數據似乎是明智的!
正如您打算的正則表達式搜索似乎只在極少數情況下才是明智的,例如,爲DBMS管理前端。如果你只是想解決的問題,我會做這樣的事情(在代碼中,而不是作爲一個查詢):
result = data.subjectSet().add(data.predicateSet()).add(data.objectSet())
FOREACH (token ε result) {
result.remove(token) unless(token ≙ regex)
}
return result;
select ?s ?p ?o WHERE {
?s ?p ?o .
FILTER (REGEX(STR(?s), "SEARCHTEXT", "i") ||
REGEX(STR(?p), "SEARCHTEXT", "i") ||
REGEX(STR(?o), "SEARCHTEXT", "i"))
}
這確實可行!有什麼方法可以將結果作爲一列回來嗎?我將不得不對這個結果集進行一些修改,以便爲「SEARCHTEXT」獲得一組可能的結果 - 刪除主題,謂詞,不匹配的對象......謝謝! –
我想要做的只是匹配特定字符串的任何實體的搜索 - 所以URI的,文本等我認爲這可能有可能以某種方式與sparql - 謝謝! –