2012-12-05 37 views
1

我正在尋找返回一個匹配URI或包含其中的某個文本字符串的文本節點的列表。返回一個匹配搜索所有主題,謂詞和對象中的文本字符串的列表 - 在一個查詢中?

這允許我搜索任何具有匹配字符串的主題,但是我也想返回任何匹配的謂詞或對象 - 全部在相同的查詢中。

select ?s ?p ?o WHERE { 
    ?s ?p ?o . 
    FILTER (REGEX(STR(?s), "SEARCHTEXT", "i")) 
} 

任何想法如何我可以修改此?

回答

1

您打算使用哪種用例?既然你想搜索它,你的正則表達式似乎表達了它匹配的令牌的一些有價值的信息。如果是這種情況,那麼使用這種知識明確地標記數據似乎是明智的!

正如您打算的正則表達式搜索似乎只在極少數情況下才是明智的,例如,爲DBMS管理前端。如果你只是想解決的問題,我會做這樣的事情(在代碼中,而不是作爲一個查詢):

result = data.subjectSet().add(data.predicateSet()).add(data.objectSet()) 
FOREACH (token ε result) { 
    result.remove(token) unless(token ≙ regex) 
} 
return result; 
+0

我想要做的只是匹配特定字符串的任何實體的搜索 - 所以URI的,文本等我認爲這可能有可能以某種方式與sparql - 謝謝! –

2
select ?s ?p ?o WHERE { 
    ?s ?p ?o . 
    FILTER (REGEX(STR(?s), "SEARCHTEXT", "i") || 
      REGEX(STR(?p), "SEARCHTEXT", "i") || 
      REGEX(STR(?o), "SEARCHTEXT", "i")) 
} 
+0

這確實可行!有什麼方法可以將結果作爲一列回來嗎?我將不得不對這個結果集進行一些修改,以便爲「SEARCHTEXT」獲得一組可能的結果 - 刪除主題,謂詞,不匹配的對象......謝謝! –

相關問題