IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Frameworks Discussion :

Requête SPARQL sur une ontologie [Jena]


Sujet :

Frameworks

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 27
    Points
    27
    Par défaut Requête SPARQL sur une ontologie
    Bonjour, j'ai besoin de votre aide sur une requête sparql. En fait mon ontologie a le format suivant (une tout petite partie) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <rdf:Description rdf:about="http://www2.ademe.fr/servlet/KBaseShow?sort=-1&amp;cid=96&amp;m=3&amp;catid=12614" cos:graph="http://www.polytech.unice.fr/bookmark.rdfs-instances#3615moi_f8d6082576a0fc6ba41172245c1fe0a5_Logistique">
    <nicetag:isRelatedTo rdf:resource="http://www.polytech.unice.fr/bookmark.rdfs-instances#tag_Logistique"/>
    <sioc:has_creator rdf:resource="http://www.polytech.unice.fr/bookmark.rdfs-instances#deliciousUser_3615moi"/>
    </rdf:Description>
     
    <rdf:Description rdf:about="http://www2.ademe.fr/servlet/KBaseShow?sort=-1&amp;cid=96&amp;m=3&amp;catid=12614" cos:graph="http://www.polytech.unice.fr/bookmark.rdfs-instances#3615moi_f8d6082576a0fc6ba41172245c1fe0a5_DIDES">
    <nicetag:isRelatedTo rdf:resource="http://www.polytech.unice.fr/bookmark.rdfs-instances#tag_DIDES"/>
    <sioc:has_creator rdf:resource="http://www.polytech.unice.fr/bookmark.rdfs-instances#deliciousUser_3615moi"/>
    </rdf:Description>
    Et je dois faire une requête sparql dessus me permettant d'obtenir un résultat de la forme suivante :

    Utilisateur:<http://www.polytech.unice.fr/bookmark.rdfs-instances#deliciousUser_3615moi> | Ressources:<http://www.polytech.unice.fr/bookmark.rdfs-instances#tag_DIDES>,<http://www.polytech.unice.fr/bookmark.rdfs-instances#tag_Logistique>
    C'est-à-dire que sur chaque ligne on aura un utilisateur avec l'ensemble des ressources taguées... J'ai essayé plusieurs fois sans régler le problème... Apparemment je dois utiliser Group by mais pareil, je n'ai eu aucun résultat satisfaisant...

    PS: j'utilise l'API jena... Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé
    Avatar de Sapience
    Homme Profil pro
    Consultant sémantique & data à sparna.fr
    Inscrit en
    Avril 2005
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant sémantique & data à sparna.fr
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 305
    Points : 915
    Points
    915
    Par défaut
    (ton exemple de RDF contient un rdfescription sur 2 fois la même uri <http://www2.ademe.fr...;catid=12615>, c'est normal ?)

    Tu peux ramener tous les couples user/document avec cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ?creator ?document WHERE { ?document <http://rdfs.org/sioc/ns#has_creator> ?creator } ORDER BY ?creator
    Si un createur a écrit plusieurs documents, il y aura plusieurs lignes de résultats avec le même createur mais un document différent, il faudra ensuite que tu iteres sur les lignes de résultats pour générer l'affichage dont tu as besoin.

  3. #3
    Membre actif
    Avatar de April Fool
    Homme Profil pro
    Fou d'avril
    Inscrit en
    Février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Fou d'avril

    Informations forums :
    Inscription : Février 2012
    Messages : 99
    Points : 215
    Points
    215
    Par défaut
    Apparemment, ce que veut lalalala75, c'est plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ?Utilisateur ?Ressource WHERE {
        ?x  nicetag:isRelatedTo  ?Ressource ;
             sioc:has_creator  ?Utilisateur .
    }
    Dans ton code RDF/XML, tu utilises cos:graph, qui est un truc non standard proposé par l'INRIA mais qui, à ma connaissance, n'est interprété que par le système CORESE. Je ne pense pas que Jena implémente ce truc. Dans CORESE, ton RDF/XML est interprété comme deux graphes distincts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @prefix :  <http://www.polytech.unice.fr/bookmark.rdfs-instances> .
    @prefix nicetag:  <http://ns.inria.fr/nicetag/2010/09/09/voc> .
    @prefix sioc:  <http://rdfs.org/sioc/ns#> .
     
    :3615moi_f8d6082576a0fc6ba41172245c1fe0a5_Logistique {
        <http://www2.ademe...etc...>  nicetag:isRelatedTo  :tag_Logistique .
        <http://www2.ademe...etc...>  sioc:has_creator  :tag_Logistique .
    }
    :3615moi_f8d6082576a0fc6ba41172245c1fe0a5_DIDES {
        <http://www2.ademe...etc...>  nicetag:isRelatedTo  :tag_DIDES .
        <http://www2.ademe...etc...>  sioc:has_creator  :tag_Logistique .
    }
    ce qui permet de faire des requêtes sur l'un ou l'autre graphe RDF avec le mot clé SPARQL "GRAPH". Mais dans n'importe quel autre système que CORESE, on risque d'avoir un seul graphe RDF comme celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @prefix :  <http://www.polytech.unice.fr/bookmark.rdfs-instances> .
    @prefix nicetag:  <http://ns.inria.fr/nicetag/2010/09/09/voc> .
    @prefix sioc:  <http://rdfs.org/sioc/ns#> .
    @prefix cod:  <http://www.inria.fr/acacia/corese#> .
    <http://www2.ademe...etc...>  nicetag:isRelatedTo  :tag_Logistique .
    <http://www2.ademe...etc...>  sioc:has_creator  :deliciousUser_3615moi .
    <http://www2.ademe...etc...>  nicetag:isRelatedTo  :tag_DIDES .
    <http://www2.ademe...etc...>  cos:graph  "http://www.polytech....Logistique" .
    <http://www2.ademe...etc...>  cos:graph  "http://www.polytech....DIDES" .
    où l'on a deux litéraux non typés qui se promènent. Je ne conseille pas l'utilisation de cos:graph et si vraiment il faut séparer les triplets en différents graphes nommés, il vaut mieux utiliser TriG ou N-Quads pour la syntaxe parce que dans le projet Jena, il y a une librairie pour interpréter ces formats, et qu'en plus le W3C travaille sur une standardisation d'un format de ce genre (peut-être même une standardisation de TriG et N-Quads).

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 27
    Points
    27
    Par défaut reponse
    Merci Sapience pour votre réponse, mais en fait c'est pas le résultat que je voulait obtenir...Comme je l'ai cité plus haut...Je veux avoir un utilisateur avec la liste des ressources qu'il a tagué...Ce qui revient à dire les ressources situées derrière "nicetag:isRelatedTo".
    J'ai fait une requête qui me permet de donner un résultat semblable qui est :

    SELECT ?Util ?Tag WHERE {?r sioc:has_creator ?Util.?r nicetag:isRelatedTo ?Tag.}

    En tenant compte de la partie d'ontologie que j'ai cité plus haut,Cette requête me fournit la réponse suivante:

    Util: <http://www.polytech.unice.fr/bookmark.rdfs-instances#deliciousUser_3615moi> | Tag:<http://www.polytech.unice.fr/bookmark.rdfs-instances#tag_Logistique>

    Util: <http://www.polytech.unice.fr/bookmark.rdfs-instances#deliciousUser_3615moi> | Tag:<http://www.polytech.unice.fr/bookmark.rdfs-instances#tag_DIDES>

    Mais ce que je veut moi, c'est de ne pas répéter à chaque fois le nom du créateur==>Le citer une seule fois suivi de la liste des ressources qu'il a tagué..

    J'espère avoir bien expliqué le problème...Merci

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 27
    Points
    27
    Par défaut rep
    Merci April Fool pour votre réponse...Est ce que vous pouvez répondre à ma dernière intervention..Merci beaucoup d'avance

  6. #6
    Membre éprouvé
    Avatar de Sapience
    Homme Profil pro
    Consultant sémantique & data à sparna.fr
    Inscrit en
    Avril 2005
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant sémantique & data à sparna.fr
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 305
    Points : 915
    Points
    915
    Par défaut
    OK pour la requête, mais le point important est que (à mon avis), tu ne pourras pas obtenir directement le résultat que tu veux en retour de ta requête. Les utilisateurs seront forcément répétés dans les lignes, et tu devras interpréter ce résultat pour générer ton résultat.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Oui c'est ce qu'il faut apparemment...Merci

  8. #8
    Membre actif
    Avatar de April Fool
    Homme Profil pro
    Fou d'avril
    Inscrit en
    Février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Fou d'avril

    Informations forums :
    Inscription : Février 2012
    Messages : 99
    Points : 215
    Points
    215
    Par défaut
    On peut faire ça avec un agrégat si ton outil implémente SPARQL 1.1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ?Utilisateur (GROUP_CONCAT(?Tag;SEPARATOR=", ") AS ?Tags) WHERE {
        ?x  nicetag:isRelatedTo  ?Tag ;
             sioc:has_creator  ?Utilisateur .
    } GROUP BY ?Utilisateur

  9. #9
    Membre éprouvé
    Avatar de Sapience
    Homme Profil pro
    Consultant sémantique & data à sparna.fr
    Inscrit en
    Avril 2005
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant sémantique & data à sparna.fr
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 305
    Points : 915
    Points
    915
    Par défaut
    Citation Envoyé par April Fool Voir le message
    On peut faire ça avec un agrégat si ton outil implémente SPARQL 1.1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ?Utilisateur (GROUP_CONCAT(?Tag;SEPARATOR=", ") AS ?Tags) WHERE {
        ?x  nicetag:isRelatedTo  ?Tag ;
             sioc:has_creator  ?Utilisateur .
    } GROUP BY ?Utilisateur
    Trop cool ! :-)

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Salut, April Fool ,c'est la requête dont j'ai besoin en fait merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/02/2015, 10h38
  2. Requête SPARQL pour une ontologie OWL
    Par Assoumarh dans le forum SPARQL
    Réponses: 3
    Dernier message: 21/10/2014, 00h47
  3. Réponses: 1
    Dernier message: 18/03/2012, 09h59
  4. Requête sur une ontologie via un service Web
    Par naima2005 dans le forum Web sémantique
    Réponses: 2
    Dernier message: 26/02/2011, 19h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo