Rdf SPARQL只搜索xsd:integer,不搜索小数

Rdf SPARQL只搜索xsd:integer,不搜索小数,rdf,sparql,jena,owl,pellet,Rdf,Sparql,Jena,Owl,Pellet,使用以下查询: 前缀rdf: 前缀owl: 前缀rdfs: 前缀xsd: 前缀uni: 挑选 独特的* 在哪里{ ?uri uni:altLabel“5”^^xsd:integer。 ?uri rdf:类型?类型 } 还返回带有xsd:decimal5.x的altLabel的URI 我真的需要它只返回?uri,它具有xsd:integer的altLabel。有什么办法可以做到这一点吗?如果你能提供我们可以查询的实际数据,那就容易多了。今后,请提供我们可以查询的数据。因为这样我们就可以针对它测试

使用以下查询:

前缀rdf:
前缀owl:
前缀rdfs:
前缀xsd:
前缀uni:
挑选
独特的*
在哪里{
?uri uni:altLabel“5”^^xsd:integer。
?uri rdf:类型?类型
}
还返回带有
xsd:decimal
5.x的
altLabel
的URI
我真的需要它只返回
?uri
,它具有
xsd:integer
altLabel
。有什么办法可以做到这一点吗?

如果你能提供我们可以查询的实际数据,那就容易多了。今后,请提供我们可以查询的数据。因为这样我们就可以针对它测试查询了。无论如何,这里有一个非常简单的数据集,它有两个资源,一个有xsd:decimal值,另一个有xsd:integer值

@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix uni: <http://localhost/SemanticSearch/semanticsearch.owl#>.
@prefix : <urn:ex:>.

:a uni:altLabel "5"^^xsd:integer ; a :somethingWithAnInteger .
:b uni:altLabel "5"^^xsd:decimal ; a :somethingWithADecimal .
@前缀xsd:。
@前缀uni:。
@前缀:。
:一个uni:altLabel“5”^^xsd:integer;a:是关于整数的。
:b uni:altLabel“5”^^xsd:decimal;a:有点迷信。
您可以使用数据类型功能筛选所需的特定数据类型:

前缀rdf:
前缀xsd:
前缀uni:
选择DISTINCT*WHERE{
?uri uni:altLabel?altLabel。
?uri rdf:类型?类型
过滤器(?altLabel=“5”^^xsd:integer&&datatype(?altLabel)=xsd:integer)
}

-----------------------------------------------------------
|uri | altLabel |类型|
===========================================================
|  | 5        |  |
-----------------------------------------------------------
-----------------------------------------------------------
| uri        | altLabel | type                            |
===========================================================
| <urn:ex:a> | 5        | <urn:ex:somethingWithAnInteger> |
-----------------------------------------------------------