SPARQL-DL:查询文字

SPARQL-DL: query for literals

我在 Java 应用程序中将 SPARQL-DL 与 OWL-API 一起使用。 Maven 依赖项如下:

<dependency>
    <groupId>edu.stanford.protege</groupId>
    <artifactId>de-derivo-sparqldlapi</artifactId>
    <version>2.0.0</version>
</dependency>

我假设它下载了 OWL-API 的正确(兼容)版本。 我有一个 class 人和一些人。每个人都有一个名为 name 的数据 属性,它的范围是一个字符串。

通过运行这个查询:

SELECT ?x WHERE { PropertyValue(?y, my:name, ?x) }

我明白了:

?de.derivo.sparqldlapi.Var@78 = ?"Andrea"^^xsd:string
?de.derivo.sparqldlapi.Var@78 = ?"Pippo"^^xsd:string
?de.derivo.sparqldlapi.Var@78 = ?"Pluto"^^xsd:string

我无法找到所有名字都与 Pluto 相同的人。

SELECT ?p WHERE { PropertyValue(?p, my:name, "Pluto") } 

returns 一个空集和

SELECT ?p WHERE { PropertyValue(?p, my:name, "Pluto^^xsd:string") }

returns空集

有什么帮助吗? 提前致谢。

数据类型必须放在引号之外,即 "Pluto"^^xsd:string

不幸的是,从源代码中我可以看出 SPARQL-DL API 不支持数据类型,请参阅 here。所有文字都作为普通文字处理。我认为你应该打开一个功能请求或自己实现它,然后提出一个拉取请求。