Précédent   Forum du club des développeurs et IT Pro > Webmasters - Développement Web > Web sémantique > SPARQL
SPARQL Forum d'entraide sur SPARQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/05/2012, 16h46   #1
Shargat
Nouveau Membre du Club
 
Stagiaire R&D
Inscription : 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
Shargat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2012, 21h44   #2
Sapience
Membre chevronné
 
Avatar de Sapience
 
Homme Thomas Francart
Consultant sémantique & data à sparna.fr
Inscription : avril 2005
Messages : 191
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 : 191
Points : 685
Points : 685
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 }
}
Sapience est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2012, 09h55   #3
April Fool
Membre confirmé
 
Avatar de April Fool
 
Homme Information Inexacte
Fou d'avril
Inscription : février 2012
Messages : 97
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 : 97
Points : 206
Points : 206
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ô!
April Fool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2012, 15h37   #4
Sapience
Membre chevronné
 
Avatar de Sapience
 
Homme Thomas Francart
Consultant sémantique & data à sparna.fr
Inscription : avril 2005
Messages : 191
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 : 191
Points : 685
Points : 685
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).
Sapience est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2012, 00h28   #5
April Fool
Membre confirmé
 
Avatar de April Fool
 
Homme Information Inexacte
Fou d'avril
Inscription : février 2012
Messages : 97
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 : 97
Points : 206
Points : 206
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ô!
April Fool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2012, 09h51   #6
Sapience
Membre chevronné
 
Avatar de Sapience
 
Homme Thomas Francart
Consultant sémantique & data à sparna.fr
Inscription : avril 2005
Messages : 191
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 : 191
Points : 685
Points : 685
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 }
}
Sapience est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/05/2012, 10h07   #7
Shargat
Nouveau Membre du Club
 
Stagiaire R&D
Inscription : 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
Merci pour vos réponses. Je ne sais pas si ça permet d'y voir plus clair, mais en tout cas, vos solutions fonctionnent.
Shargat est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h13.


 
 
 
 
Partenaires

Hébergement Web