Bonsoir,
lors de l'affichage de mes données ils s'affichent avec leurs uri par exemple:
<http://lacot.org/public/owl/famille#Femme>
est ce qu'on peut pas seulement afficher le mot Femme sans http://lacot.org/public/owl/famille ? :?
Merci d'avance
Version imprimable
Bonsoir,
lors de l'affichage de mes données ils s'affichent avec leurs uri par exemple:
<http://lacot.org/public/owl/famille#Femme>
est ce qu'on peut pas seulement afficher le mot Femme sans http://lacot.org/public/owl/famille ? :?
Merci d'avance
En java :
Voilà, ça affichera Femme sans afficher le reste de l'URI.Code:System.out.println("Femme");
ce n'est plus simple que ça en fait, c'est pas ça ce que je veux, tu n'as pas compris mon problème
lors de l'affichage de mes données(extraction de mes données) à partir d'une requete select en utilisant "Sparql" ils s'affichent avec leurs uri par exemple:
<http://lacot.org/public/owl/famille#Femme>
est ce qu'on peut pas seulement afficher la donnée c'est à dire le mot Femme sans http://lacot.org/public/owl/famille ?
Pour cela il faut manipuler les namespaces. Je ne sais pas s'il existe des fonctions comme ca dans Jena, mais sinon c'est du java basique :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 java.net.URI anURI = new URI("http://lacot.org/public/owl/famille#Femme"); // si on connait la racine sous la forme d'une URI java.net.URI rootURI = new URI("http://lacot.org/public/owl/famille#"); System.out.println(rootURI.relativize(anURI)); // sinon, sans se compliquer la vie System.out.println(anURI.toString().substring(rootURI.toString().length())); // si on ne connait pas la racine, on peut tenter ca if(anURI.toString().lastIndexOf("#") > -1) { // si c'est une URI avec un # System.out.println(anURI.toString().substring(anURI.toString().lastIndexOf("#"))); } else { // sinon on prend tout ce qui est après le dernier / System.out.println(anURI.toString().substring(anURI.toString().lastIndexOf("/"))); }
Bonjour,
Quel API utilisez-vous pour manipuler votre ontologie?
Si vous utilisez Jena, la fonction getLocalName() peut être utilisée.
La bonne réponse est probablement celle de Metafire18, mais comme on n'a aucun détail dans la question, c'est pas évident. Ma première réponse était volontairement sarcastique parce que ta question ne disait quasiment rien. On ne sait pas dans quel langage tu programmes, ni même si tu programmes car tu pourrais utiliser une interface type Snorq pour envoyer des requêtes SPARQL et tu voudrais peut-être que ces requêtes contiennent directement le nom local. On ne sait pas si tu veux résoudre le problème spécifiquement pour ce namespace ou pour n'importe quel namespace, on ne sait pas si il faut le résoudre pour le cas où le namespace finit par un '/' ou bien seulement pour les URIs avec un '#'. On ne sait pas ce que tu entends par "afficher" : afficher sur la console ou bien dans une interface graphique ? Et d'abord, est-ce que c'est vraiment un problème d'affichage ? Il me semble que tu veux simplement récupérer le nom local, comme indique Metafire18.
Bref, en tout cas, au cas où, voici une requête SPARQL 1.1 qui renvoie le local name pour des URI de type '#' :
Pour les URI de type '/', c'est compliqué car le '/' peut être présent à plusieurs endroits de l'URI. À vrai dire, je ne sais pas comment faire dans ce cas.Code:
1
2
3
4
5 SELECT ?localName WHERE { <x> <y> ?uri # <-- peu importe la requête, pourvu qu'elle cherche un URI BIND (STRAFTER(STR(?uri),"#") AS ?localName) FILTER (isIRI(?uri)) }
tout d'abord,
merci pour vos réactivité,
j'ai essayé tous vos réponses mais j'ai pas réussi malheureusement à afficher mes données sans leur URI.
je me demande comment je peux utiliser la méthode getLocalName() dans une requête sparql puisque cette méthode n'est pas définie dans ResultSet :calim2:
Merci
enfin, j'ai résolu mon problème grâce a ce lien
http://stackoverflow.com/questions/1...02167#12802167
Bon travail à tous :ccool: