2012-05-25 52 views
0

我在C#中使用SemWeb.Sparql.dll在sparql中通過C#執行一些查詢 我需要將給定的字符串變量與我的本體中的字符串進行比較(rdfs:label )但我需要這種比較不區分大小寫,所以我使用了正則表達式函數。我用這個查詢:sparql - 正則表達式不會不區分大小寫

disease = "'^" + disease + "'"; 
string query = prefixes + @" 
       Select ?a ?name Where{ 
       ?a ?c owl:Class . 
       ?a rdfs:label ?name. 
       FILTER (Regex(?name," + @disease + ",'i'))}"; 

這是在某些情況下正常工作,並不在別人。任何人都可以幫助我。

+1

您是否有使用SemWeb的特殊原因? SemWeb在2010年停止了積極的開發,並且不支持任何新的SPARQL 1.1標準。你有沒有考慮過dotNetRDF(http://www.dotnetrdf.org)作爲替代方案? (*免責聲明 - 我開發這個*) – RobV

回答

0

你能嘗試以下方法:

FILTER (regex(str(?name), ... 

即在str()包裹?name。這將確保第一個參數是一個字符串。

+0

我用它,但結果是一樣的。在某些情況下,並不區分大小寫 – sofia

+0

好的,當您說'某些病例'是指「某些疾病不匹配」,或者「對於某種疾病,某些標籤應該匹配不會」? – user205512

+0

我的意思是:「對於某種疾病,應該匹配的某些標籤不要」 – sofia

相關問題