Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Nouveau Membre du Club
    Stagiaire R&D
    Inscrit en
    janvier 2008
    Messages
    137
    Détails du profil
    Informations professionnelles :
    Activité : Stagiaire R&D
    Secteur : Communication - Médias

    Informations forums :
    Inscription : janvier 2008
    Messages : 137
    Points : 38
    Points
    38

    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 :
    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 :
    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 chevronné
    Avatar de Sapience
    Homme Profil pro Thomas Francart
    Consultant sémantique & data à sparna.fr
    Inscrit en
    avril 2005
    Messages
    231
    Détails du profil
    Informations personnelles :
    Nom : Homme Thomas Francart
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : avril 2005
    Messages : 231
    Points : 772
    Points
    772

    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 :
    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 :
    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 confirmé Avatar de April Fool
    Homme Profil pro Information Inexacte
    Fou d'avril
    Inscrit en
    février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Nom : Homme Information Inexacte
    Localisation : France

    Informations professionnelles :
    Activité : Fou d'avril

    Informations forums :
    Inscription : février 2012
    Messages : 99
    Points : 214
    Points
    214

    Par défaut

    Avec SPARQL 1.1 Property Paths :
    Code :
    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 :
    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 chevronné
    Avatar de Sapience
    Homme Profil pro Thomas Francart
    Consultant sémantique & data à sparna.fr
    Inscrit en
    avril 2005
    Messages
    231
    Détails du profil
    Informations personnelles :
    Nom : Homme Thomas Francart
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : avril 2005
    Messages : 231
    Points : 772
    Points
    772

    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 :
    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 confirmé Avatar de April Fool
    Homme Profil pro Information Inexacte
    Fou d'avril
    Inscrit en
    février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Nom : Homme Information Inexacte
    Localisation : France

    Informations professionnelles :
    Activité : Fou d'avril

    Informations forums :
    Inscription : février 2012
    Messages : 99
    Points : 214
    Points
    214

    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 chevronné
    Avatar de Sapience
    Homme Profil pro Thomas Francart
    Consultant sémantique & data à sparna.fr
    Inscrit en
    avril 2005
    Messages
    231
    Détails du profil
    Informations personnelles :
    Nom : Homme Thomas Francart
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : avril 2005
    Messages : 231
    Points : 772
    Points
    772

    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 :
    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
    Nouveau Membre du Club
    Stagiaire R&D
    Inscrit en
    janvier 2008
    Messages
    137
    Détails du profil
    Informations professionnelles :
    Activité : Stagiaire R&D
    Secteur : Communication - Médias

    Informations forums :
    Inscription : janvier 2008
    Messages : 137
    Points : 38
    Points
    38

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •