2015-04-20 11 views
5

die folgende Abfrage verwenden:SPARQL Suche nach xsd: integer nur, keine Dezimalzahlen

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 
} 

Auch gibt URIs, die eine altLabel mit xsd:decimal 5.x haben Ich brauche es wirklich nur für die Rückkehr der ?uri die altLabel haben von xsd:integer. Gibt es das überhaupt, um das zu erreichen?

Antwort

4

Es ist immer einfacher, wenn Sie tatsächliche Daten liefern können, die wir abfragen können. Bitte geben Sie in Zukunft Daten an, die wir abfragen können. denn dann können wir tatsächlich Abfragen darauf testen. In jedem Fall ist hier ein sehr einfaches Dataset mit zwei Ressourcen, eine mit einem xsd: Dezimalwert und eine mit einem xsd: Integer-Wert.

@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 . 

Sie für die jeweiligen Datentypen filtern können, dass Sie die Datentyp Funktion wollen:

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> | 
-----------------------------------------------------------