2017-09-19 39 views
-1

我剛剛學習如何在SPARQL中編寫查詢(通過protégé平臺)。所以,這是一個非常基本的問題,但我無法解決。在Protégé(正則表達式)中Sparql查詢(過濾)

我有一個名爲愛麗絲(它在貓頭鷹下:事情)。
這個人有一個名爲textualValue的數據屬性,它被指定爲xsd:normalizedString。

我寫下面的查詢來提取個人開始與阿里,這應該反過來導致愛麗絲。我基本上使用正則表達式操作數進行過濾。每當我按照這個規範執行SPARQL Query時,我都沒有得到任何結果,請問有人能指出我錯在哪裏?

SELECT distinct ?x 
WHERE { ?x rdf:type owl:NamedIndividual. 
FILTER regex(?textualValue, "^ali", "i") } 

回答

3

您需要獲取屬性textualValue的值 - 它不會自動放入變量中。

這裏是一個輪廓,根據您的描述:你需要完成的細節:

PREFIX owl: .... 
PREFIX rdf: .... 
PREFIX x: <InsertTheRightURIhere> 
SELECT distinct ?x 
WHERE { 
    ?x rdf:type owl:NamedIndividual ; 
     x:textualValue ?v . 
    FILTER regex(str(?v), "^ali", "i") 
} 

str?v得到公正的RDF術語的詞彙部分。

+0

謝謝你的解釋,但是我對理解'?v'代表什麼有點掙扎。如果你可以請指定或給我一個資料來源,這將是非常有用的。 @AndyS – Gamze

+0

'?v'是一個變量。它被設置爲'x:textualValue'三元組的對象。 – AndyS