Hello tous,

j'ai u petit soucis à formuler une requête sparql qui fasse ce que je souhaite.

Imaginez un ensemble de termes dans un vocabulaire Skos. Ceux-ci sont décrits de plusieurs manières : rdfs:label, skos:label, skos:altlabel.

Je veux exprimer une requête qui me permette de retourner le meilleur label, selon un ordre prédéfini. Si le label alternatif skos:altlabel est disponible le retourner, sinon, si le label skos:label est disponible le retourner et à défaut retourner le label rdfs:label.

Pour ça je faisais comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
 SELECT ?term ?label WHERE {
   ?term a skos:Concept .
   OPTIONAL { ?term skos:altLabel ?label } .
   OPTIONAL { ?term skos:prefLabel ?label } .
   OPTIONAL { ?term rdfs:label ?label . }
 }
 ORDER BY ?term
Malheureusement, il semble que cela ne fonctionne pas très bien. Est-ce la bonne voie ou existe-t-il une autre façon de faire ?

Merci.