2010-10-30 80 views
1

我可以問你關於本體上的SPARQL查詢。我有一個family.owl文件是本體構建從門生3.4數據:SPARQL查詢OWL文件

Lan haschild Tuấn, 
Tùng haschild Tuấn. 

我使用Java和現場CORESE API(http://www-sop.inria.fr/edelweiss/software/corese /v2_4_0/manual/index.php#coreseapi)來查詢上面的family.owl。用下面的SPARQL查詢:

PREFIX fm:< http://www.owl-ontologies.com/Ontology1287989576.owl#> 

SELECT ?child 
WHERE 
{ 
    fm:Lan fm:haschild ?child 
} 

結果是TuấN(真正的結果必然是疃)

如果我取代「其中」條款爲:WHERE { fm:Tùng fm:haschild ?child }那麼結果是空的(真正的結果必然是Tuấn)

我知道字符串「Tùng」和「Tuấn」的錯誤結果。這個字符串有字符Unicode,ấ

你可以讓我在CORESE API中使用unicode字符來用sparql查詢owl文件。

回答

1

一個可能的解決方案是爲了躲避這樣的URI代替:

fm:Tùng --> fm:T%C3%B9ng 

fm:Tuấn --> fm:Tu%E1%BA%A5n 

如果以這種方式創建你不應該有問題的數據。在URIS中使用重音並不是很明智的做法,因此人們傾向於爲此編碼/轉義URI,大多數語言都有庫來編碼URI。例如在Python中就像...

>>> import urllib 
>>> urllib.quote("Tùng") 
'T%C3%B9ng' 
>>> urllib.quote("Tuấn") 
'Tu%E1%BA%A5n'