1

我能问你关于 Ontology 的 SPARQL 查询吗?我有一个 family.owl 文件是从 protege 3.4 构建的带有数据的本体:

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(真实结果必须是 Tuấn)

如果我将“where”子句替换为:WHERE { fm:Tùng fm:haschild ?child }则结果为空(真正的结果必须是 Tuấn)

我知道字符串“Tùng”和“Tuấn”的错误结果。这个字符串有字符 unicode ù, ấ</p>

你能让我在 CORESE API 中使用 unicode 字符来用 sparql 查询 owl 文件吗?

4

1 回答 1

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'
于 2010-10-30T22:13:02.680 回答