SPARQL仅搜索xsd:integer,无小数

vin*_*ine 5 rdf owl pellet sparql jena

使用以下查询:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX uni: <http://localhost/SemanticSearch/semanticsearch.owl#>

SELECT
    DISTINCT * 
WHERE {
    ?uri uni:altLabel "5"^^xsd:integer.
    ?uri rdf:type ?type
}
Run Code Online (Sandbox Code Playgroud)

也返回其具有的URI altLabelxsd:decimal5.x的我真的需要它来只返回?uri具有altLabelxsd:integer.反正有没有实现这个目标?

Jos*_*lor 5

如果您可以提供我们可以查询的实际数据,总是比较容易。将来,请提供我们可以查询的数据。因为这样我们才能实际针对它测试查询。无论如何,这是一个非常简单的数据集,其中包含两个资源,一个具有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 .
Run Code Online (Sandbox Code Playgroud)

您可以使用datatype函数过滤所需的特定数据类型

@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 .
Run Code Online (Sandbox Code Playgroud)

-----------------------------------------------------------
| uri        | altLabel | type                            |
===========================================================
| <urn:ex:a> | 5        | <urn:ex:somethingWithAnInteger> |
-----------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)