2010-10-30 52 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'