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

SPARQL Discussion :

skos:broader et skos:broaderTransitive sur DBPedia


Sujet :

SPARQL

  1. #1
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Points : 70
    Points
    70
    Par défaut skos:broader et skos:broaderTransitive sur DBPedia
    Bonjour,

    Sur l'entry point Sparql de DBPedia, je souhaite afficher tous les films de la catégorie "Comedy_films' et des catégories associées, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DEFINE input:inference "skos-trans"
    select distinct ?film where {?film dcterms:subject ?sujet. ?sujet  skos:broaderTransitive category:Comedy_films } ORDER BY ?film
    En effet, sur DBPedia, la hiérarchie des genres filmographiques est définie comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ?film dcterms:subject ?genre1
    ?genre1 skos:broader ?genre2
    ?genre2 skos:broader ?genre3
    Si je veux tous les films de genre3, je dois donc utiliser la transitivité de la super-propriété skos:broaderTransitive, comme expliqué dans la doc, d'où ma requête formulée plus haut. Or elle ne fonctionne pas, je n'obtiens que les films directement liés par le genre Comedyf_films, et non les films liés aux sous-genres de Comedy-films.

    Ai-je mal compris l'utilisation de la transitivité avec skos:broader ? Quelqu'un l'a-t-il déjà utilisé ?

    Merci d'avance

  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
    Bonjour

    Je pense que tu n'as pas mal compris, mais que le endpoint DBPedia ne supporte pas l'inférence sur skos:broader. L'utilisation de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DEFINE input:inference "skos-trans"
    Dépend d'une déclaration préalable, voir http://virtuoso.openlinksw.com/prese....html#%2877%29, qui n'est sans doute pas effective sur DBPedia.

    D'autres ont eu les mêmes questions que toi : http://lists.w3.org/Archives/Public/...8Oct/0037.html, et si tu suis les réponses de ce post initial, tu verras qu'en particulier il est dit que les catégories de DBPedia ne sont pas vraiment cohérentes et qu'une inférence dessus n'aurait pas vraiment de sens.

    Si tout cela est exact, il te reste la solution de tester tous les niveaux explicitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select ?film where {
      { ?film dcterms:subject category:Comedy_films. }
      UNION
      {?film dcterms:subject ?sujet. ?sujet  skos:broader category:Comedy_films }
      UNION
      {?film dcterms:subject ?s1. ?s1  skos:broader ?s2 . ?s2  skos:broader category:Comedy_films }
    }

  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
    Avec SPARQL 1.1 Property Paths :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ?film WHERE {
        ?film  dcterms:subject/skos:broader* category:Comedy_films .
    }
    À condition d'avoir un triple store qui implémente SPARQL property paths.

    Oups, DBpedia ne semble pas gérer ça. En revanche, DBpedia sait faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ?film WHERE {
        { ?film  dcterms:subject category:Comedy_films . }
       UNION
        { ?film  dcterms:subject  ?subject .
           ?subject  skos:broader+  category:Comedy_films . }
    }
    Il y a un thread récent dans Développez.com sur le sujet.
    7susd bl'ham owsql wuul pô!

  4. #4
    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

    Oups, DBpedia ne semble pas gérer ça. En revanche, DBpedia sait faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ?film WHERE {
        { ?film  dcterms:subject category:Comedy_films . }
       UNION
        { ?film  dcterms:subject  ?subject .
           ?subject  skos:broader+  category:Comedy_films . }
    }
    J'avais essayé ça, mais ni l'opérateur *, ni l'opérateur + ne semblent pris en compte dans DBPedia (il renvoie une erreur de syntaxe).

  5. #5
    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
    Moi, quand j'exécute la requête que j'ai indiquée (avec skos:broader+) sur l'interface SNORQL de DBpedia, j'obtiens des résultats.
    7susd bl'ham owsql wuul pô!

  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
    Effectivement, hé bien il semble qu'il y ait un comportement différent entre http://dbpedia.org/sparql (où la requête renvoie une erreur) et http://dbpedia.org/snorql (où elle ne renvoie pas d'erreur).
    Dans http://dbpedia.org/snorql, que la requête contienne un "+" ou qu'elle n'en contienne pas, elle ramène toujours les mêmes résultats... (128 résultats).

    Alors que cette requête ramène 16533 (mais ce ne sont pas que des films) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select (count(?film) as ?count) where {
      { ?film dcterms:subject category:Comedy_films. }
      UNION
      {?film dcterms:subject ?sujet. ?sujet  skos:broader category:Comedy_films }
      UNION
      {?film dcterms:subject ?s1. ?s1  skos:broader ?s2 . ?s2  skos:broader category:Comedy_films }
    }

  7. #7
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Points : 70
    Points
    70
    Par défaut
    Merci pour vos réponses. Je ne sais pas si ça permet d'y voir plus clair, mais en tout cas, vos solutions fonctionnent.

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

Discussions similaires

  1. Requête sur DBpedia
    Par takatik dans le forum SPARQL
    Réponses: 0
    Dernier message: 08/03/2014, 06h17
  2. Requête sur dbpedia
    Par knebhi dans le forum SPARQL
    Réponses: 1
    Dernier message: 14/07/2013, 14h39
  3. Requête sur dbpedia
    Par ebenmous dans le forum SPARQL
    Réponses: 1
    Dernier message: 18/07/2011, 15h54

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