我在Java应用程序中使用带有OWL-API的SPARQL-DL。 Maven依赖关系如下:
<dependency>
<groupId>edu.stanford.protege</groupId>
<artifactId>de-derivo-sparqldlapi</artifactId>
<version>2.0.0</version>
</dependency>
我认为它会下载正确(兼容)的OWL-API版本。 我有一个人和一些人。每个人都有一个名为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
我无法让所有名字都与冥王星相同的人。
SELECT ?p WHERE { PropertyValue(?p, my:name, "Pluto") }
返回一个空集和
SELECT ?p WHERE { PropertyValue(?p, my:name, "Pluto^^xsd:string") }
返回一个空集
有任何帮助吗? 提前谢谢。
答案 0 :(得分:1)
数据类型必须放在引号之外,即"Pluto"^^xsd:string
不幸的是,从源代码我可以看到SPARQL-DL API不支持数据类型,请参阅here。所有文字都作为普通文字处理。我认为你应该打开一个功能请求或者自己实现它,然后发出拉取请求。