2017-09-19 4 views
-1

Je suis en train d'apprendre à écrire une requête dans SPARQL (via la plate-forme protégée). Donc, c'est une question très simple, mais je ne pouvais pas résoudre.Requête Sparql (filtrage) en Protégé (regex)

J'ai une personne nommée Alice (son hibou sous: Chose).
Cet individu possède une propriété de données appelée textualValue, qui est spécifiée en tant que xsd: normalizedString.

J'écris ci-dessous une requête pour extraire des individus commençant par ali, ce qui devrait à son tour donner alice. J'utilise essentiellement l'opérande regex pour le filtrage. Chaque fois que j'exécute une requête SPARQL avec cette spécification, je n'obtiens aucun résultat, quelqu'un peut-il indiquer où je me trompe, s'il vous plaît?

SELECT distinct ?x 
WHERE { ?x rdf:type owl:NamedIndividual. 
FILTER regex(?textualValue, "^ali", "i") } 

Répondre

3

Vous devez obtenir la valeur de la propriété textualValue - il n'est pas mis automatiquement dans une variable.

Voici un aperçu, en fonction de votre description: vous devez remplir les détails:

PREFIX owl: .... 
PREFIX rdf: .... 
PREFIX x: <InsertTheRightURIhere> 
SELECT distinct ?x 
WHERE { 
    ?x rdf:type owl:NamedIndividual ; 
     x:textualValue ?v . 
    FILTER regex(str(?v), "^ali", "i") 
} 

str pour obtenir seulement la partie lexicale du terme RDF dans ?v.

+0

Merci pour l'explication, mais j'ai un peu du mal à comprendre ce que signifie «? V». Si vous pouviez me préciser ou me conseiller une source, ce serait très utile. @AndyS – Gamze

+0

'? V' est une variable. Il est défini sur l'objet du triplet 'x: textualValue'. – AndyS