SPARQL 仅搜索 xsd:integer,没有小数
SPARQL search for xsd:integer only, no decimals
使用以下查询:
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
}
还有 returns URI 具有 altLabel
和 xsd:decimal
5.x
我真的需要它 return 只有 ?uri
有 altLabel
of xsd:integer
。有没有办法实现这个?
如果您能提供我们可以查询的实际数据,那就更容易了。以后请提供我们可以查询的数据。因为这样我们就可以实际测试针对它的查询。无论如何,这是一个非常简单的数据集,包含两种资源,一种具有 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 .
您可以使用 datatype 函数过滤您想要的特定数据类型:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX uni: <http://localhost/SemanticSearch/semanticsearch.owl#>
SELECT DISTINCT * WHERE {
?uri uni:altLabel ?altLabel .
?uri rdf:type ?type
filter(?altLabel = "5"^^xsd:integer && datatype(?altLabel) = xsd:integer)
}
-----------------------------------------------------------
| uri | altLabel | type |
===========================================================
| <urn:ex:a> | 5 | <urn:ex:somethingWithAnInteger> |
-----------------------------------------------------------
使用以下查询:
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
}
还有 returns URI 具有 altLabel
和 xsd:decimal
5.x
我真的需要它 return 只有 ?uri
有 altLabel
of xsd:integer
。有没有办法实现这个?
如果您能提供我们可以查询的实际数据,那就更容易了。以后请提供我们可以查询的数据。因为这样我们就可以实际测试针对它的查询。无论如何,这是一个非常简单的数据集,包含两种资源,一种具有 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 .
您可以使用 datatype 函数过滤您想要的特定数据类型:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX uni: <http://localhost/SemanticSearch/semanticsearch.owl#>
SELECT DISTINCT * WHERE {
?uri uni:altLabel ?altLabel .
?uri rdf:type ?type
filter(?altLabel = "5"^^xsd:integer && datatype(?altLabel) = xsd:integer)
}
-----------------------------------------------------------
| uri | altLabel | type |
===========================================================
| <urn:ex:a> | 5 | <urn:ex:somethingWithAnInteger> |
-----------------------------------------------------------