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

Web sémantique Discussion :

Les catégories dans Dbpedia


Sujet :

Web sémantique

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Points : 64
    Points
    64
    Par défaut Les catégories dans Dbpedia
    Bonjour à Tous,

    Je travaille dans un projet ou j'ai besoin de déterminer les catégories (ou Topics) d'intérêts des utilisateurs.

    Pour cela, je suis entrain de chercher une base de connaissance générique (de préférence une taxonomie) qui peut me déterminer les centres d'intérêts des utilisateurs en reposant sur leurs activités.

    Je connais une taxonomie générique (DMOZ) qui permet de déterminer la catégorie (ou Topics) des activités des utilisateur en reposant sur une fonction de similarité entre des vecteurs définissant les contenus vus par l'utilisateur et des vecteurs des catégories de la taxonomie (sachant que chaque catégorie dans la taxonomie est définie par un ensemble des mots clés). En d'autres termes, si je le donne comme entrée un document ou un ensemble des mots clés, elle me renvoie la catégorie la plus proche de ce contenu. Le souci que cette taxonomie est en anglais et la version française est très limitée. Pour cela, je suis entrain d'investiguer et vérifier si avec DBpedia je peux faire ce que j'ai déjà expliqué.

    Dans DBpedia, j'ai vu le mot catégories mais savez vous s'ils ont tous le même niveau ou bien des niveaux différent selon une hiérarchie déjà clair. Également, les catégories dans DBpedia sont ils définie en reposant sur un vocabulaire des mots qu'ont peut les utiliser après pour identifier la distance entre les catégories de Dbpedia et les mots clés définissant chacun des contenus ?

    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

    Citation Envoyé par daniel1985 Voir le message
    Dans DBpedia, j'ai vu le mot catégories mais savez vous s'ils ont tous le même niveau ou bien des niveaux différent selon une hiérarchie déjà clair
    Les catégories DBPEdia correspondent aux catégories Wikipedia, et à ce titre elles sont plus ou moins développées suivant la thématique, l'intérêt et l'humeur de la communauté des wikipediens qui administrent ces catégories. On trouve des catégories un peu farfelues du style (je cite de mémoire) "Jeux vidéos publiés en 1994".


    Citation Envoyé par daniel1985 Voir le message
    Également, les catégories dans DBpedia sont ils définie en reposant sur un vocabulaire des mots qu'ont peut les utiliser après pour identifier la distance entre les catégories de Dbpedia et les mots clés définissant chacun des contenus ?
    Non, pas directement. Mais par contre les catégories DBPedia référencent tous les articles de Wikipedia dans ces catégories. Et ces articles contiennent tout un tas de mots qu'il est possible de prendre et d'analyser comme base pour des algorithmes de rapprochement de contenus. C'est même une matière beaucoup plus riche que quelques mots-clés associés à chaque catégorie, je pense.

    Peut-être des services comme Faviki peuvent t'aider. C'est un système de social bookmarking qui utilise les pages wikipedia (donc par extension les entrées DBPedia) pour tagger des contenus.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Points : 64
    Points
    64
    Par défaut
    Merci beaucoup pour votre réponse rapide.

    Je cherche à définir un ensemble des catégories par des sacs des mots en reposant sur les articles de chacune de ces catégories. En d'autre termes, définir chacune des catégories Wikipedia par un sac de mots.

    Pourriez-vous me recommandez des apis, codes sources me permettant tout d'abord d'identifier tous les catégories Wikipedia ou même les sous catégories d'une catégories particulière. Avez-vous également une idée comment je peux extraire les articles wikipédia de chacune de ces catégories s'il vous plaît.

    Merci d'avance et très bonne journée !

  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
    1. Tu devrais trouver de la littérature scientifique là-dessus, car ce sont des approches qui ont déjà été explorées;
    2. Tu pourrais utiliser le service sparql de DBPedia (http://dbpedia.org/sparql ou http://fr.dbpedia.org/sparql pour DBPedia francophone) avec des requêtes SPARQL pour extraire à la fois la hiérarchie des catégories et les liens vers les pages wiki correspondantes. Si tu regardes une catégorie au hasard dans DBPedia, http://dbpedia.org/resource/Category...ries_in_Europe, tu verras que
      1. les sous-catégories sont indiquées avec la propriété "skos:broader" (de la catégorie fille vers la catégorie parente);
      2. les resources dans la catégorie sont indiquées avec la propriété "dcterms:subject" (de la resource vers sa catégorie);
      3. et sur une resource DBPedia le lien vers la page wiki est indiquée avec la propriété foaf:isPrimaryTopicOf

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Points : 64
    Points
    64
    Par défaut
    Je vous remercie encore une fois pour vos réponses pertinentes.

    En cherchant sur internet comment faire pratiquement pour extraire les catégories de Wikipédia, j'ai tombé sur ce tutoriel 'http://jplu.developpez.com/tutoriels/web-semantique/dbpedia-extraction-framework/'

    Comme vous avez déjà une expérience sur le sujet, pourrirez-vous me dire s'il s'agit de la bonne piste à suivre pour extraire pratiquement les catégories ainsi que les articles relative à chacune des catégories Wikipédia.


    Si j'ai bien compris, il faut tout d'abord installer Dbpedia et après utiliser des requêtes SparQL comme vous m'avez expliqué pour extraire les catégories Wikipedia.

    Avez-vous également une idée s'il y-a un autre tutoriel précisant comment le faire sur Windows car dans le Tutoriel ils assument qu'on utilise Ubuntu.

    Merci encore une fois pour votre aide et je vais vous tenez au courant à propos mon avancement dans ce sujet !

  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
    Citation Envoyé par daniel1985 Voir le message
    Je vous remercie encore une fois pour vos réponses pertinentes.

    En cherchant sur internet comment faire pratiquement pour extraire les catégories de Wikipédia, j'ai tombé sur ce tutoriel 'http://jplu.developpez.com/tutoriels/web-semantique/dbpedia-extraction-framework/'

    Comme vous avez déjà une expérience sur le sujet, pourrirez-vous me dire s'il s'agit de la bonne piste à suivre pour extraire pratiquement les catégories ainsi que les articles relative à chacune des catégories Wikipédia.
    Non. L'article explique comment traiter les articles de wikipedia pour générer la base DBPedia. La base DBPedia est déjà en ligne et accessible en SPARQL à http://dbpedia.org/sparql (version anglaise) ou http://fr.dbpedia.org/sparql (version française). Inutile de refaire tourner les moulinettes d'extraction. Tu peux déjà interroger DBPedia en SPARQL.
    Si tu veux, tu peux télécharger les données RDF de DBPedia (http://wiki.dbpedia.org/Downloads) et les charger dans ton triplestore local, ce qui peux te donner de meilleures perfs, mais ce seront les mêmes données.

    Voilà une requête SPARQL qui te permet d'extraire les catégories sous une catégorie donnée (dans l'exemple la catégorie "Countries in Europe"), jusqu'au niveau 5 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select ?cat ?catLabel ?immediateParent ?level
    where {
      ?cat a skos:Concept .
      ?cat rdfs:label ?catLabel .
      {
              { ?cat skos:broader <http://dbpedia.org/resource/Category:Countries_in_Europe> . ?cat skos:broader ?immediateParent . BIND(1 AS ?level) }
        UNION { ?cat skos:broader/skos:broader <http://dbpedia.org/resource/Category:Countries_in_Europe> . ?cat skos:broader ?immediateParent . BIND(2 AS ?level) }
        UNION { ?cat skos:broader/skos:broader/skos:broader <http://dbpedia.org/resource/Category:Countries_in_Europe> . ?cat skos:broader ?immediateParent . BIND(3 AS ?level) }
        UNION { ?cat skos:broader/skos:broader/skos:broader/skos:broader <http://dbpedia.org/resource/Category:Countries_in_Europe> . ?cat skos:broader ?immediateParent . BIND(4 AS ?level) }
        UNION { ?cat skos:broader/skos:broader/skos:broader/skos:broader/skos:broader <http://dbpedia.org/resource/Category:Countries_in_Europe> . ?cat skos:broader ?immediateParent . BIND(5 AS ?level) }
      }
    }
    order by ?level ?immediateParent ?cat
    A essayer donc à http://dbpedia.org/sparql

    On trouve des catégories un peu "exotiques" comme "Badminton in Liechtenstein" (http://dbpedia.org/resource/Category..._Liechtenstein), ou encore "Ukrainian expatriate basketball people in China" (http://dbpedia.org/resource/Category...eople_in_China) qui ne contiennent qu'une seule page.

    Citation Envoyé par daniel1985 Voir le message
    Merci encore une fois pour votre aide et je vais vous tenez au courant à propos mon avancement dans ce sujet !
    Oui, si tu as un article ou des résultats, n'hésite pas à en parler ici.

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Points : 64
    Points
    64
    Par défaut
    Merci beaucoup pour votre réponse.

    J'ai testé la requête SPARQL sur la version français de DBpedia et voila ce que j'ai eu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Virtuoso 37000 Error SP030: SPARQL compiler, line 8: syntax error at 'BIND' before '('
     
    SPARQL query:
    define sql:big-data-const 0 
    #output-format:application/sparql-results+json
    define sql:signal-void-variables 1 select ?cat ?catLabel ?immediateParent ?level
    where {
      ?cat a skos:Concept .
      ?cat rdfs:label ?catLabel .
      {
              { ?cat skos:broader <http://dbpedia.org/resource/Category:Countries_in_Europe> . ?cat skos:broader ?immediateParent . BIND(1 AS ?level) }
        UNION { ?cat skos:broader/skos:broader <http://dbpedia.org/resource/Category:Countries_in_Europe> . ?cat skos:broader ?immediateParent . BIND(2 AS ?level) }
        UNION { ?cat skos:broader/skos:broader/skos:broader <http://dbpedia.org/resource/Category:Countries_in_Europe> . ?cat skos:broader ?immediateParent . BIND(3 AS ?level) }
        UNION { ?cat skos:broader/skos:broader/skos:broader/skos:broader <http://dbpedia.org/resource/Category:Countries_in_Europe> . ?cat skos:broader ?immediateParent . BIND(4 AS ?level) }
        UNION { ?cat skos:broader/skos:broader/skos:broader/skos:broader/skos:broader <http://dbpedia.org/resource/Category:Countries_in_Europe> . ?cat skos:broader ?immediateParent . BIND(5 AS ?level) }
      }
    }
    order by ?level ?immediateParent ?cat
    Avez-vous également le code de la requête SPARQL permettant d'identifier les articles Wikipédia d'une catégorie spécifique s'il vous plaît ? ou bien vous me conseillez une autre requête SparQL qui permettent d'extraire le deux informations à la fois, ç-a-d les catégories ainsi que les articles Wikipédia qui appartiennent à chacune de ces catégories.

    Merci d'avance !

    .

  8. #8
    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
    Une requếte pour récupérer les pages d'une catégorie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select ?uri ?wikiPage
    where {
      ?uri dcterms:subject <http://fr.dbpedia.org/resource/Catégorie:France> .
      ?uri foaf:isPrimaryTopicOf ?wikiPage .
    }
    Je te laisse adapter ensuite à ton besoin.

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Points : 64
    Points
    64
    Par défaut
    Merci Beaucoup Sapience !

    Pour la première requête SparQL, c'était quoi l'erreur s'il vous plaît ? j'arrive pas à l'exécuter et j'ai eu l'erreur metionéee dans le message précédent

    Merci d'avance !

  10. #10
    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
    Aucune idée. Tu peux enlever tous les "BIND(...)" et toutes les références à la variable "?level" dans le select et le order by, et voir ce que ca donne. Tu n'auras plus le niveau de profondeur de la catégorie, mais je ne sais pas si tu en as besoin.

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Points : 64
    Points
    64
    Par défaut
    Avez-vous une idée s'il existe déjà des Apis permettant d'interroger DBpedia via des programmes Java s'il vous plaît ?

    En effet, il me faut faire des itérations des requêtes SparQl pour avoir les données que j'aurai besoin. Donc, un api me permettant d'interroger Dbpedia sera la meilleur solution.

    Merci d'avance

  12. #12
    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
    Sesame (http://rdf4j.org) ou Jena (http://jena.apache.org) ou n'importe quelle bibliothèque de programmation RDF/SPARQL.
    Sur Sesame et ses API voir ce petit tuto : http://blog.sparna.fr/2012/05/20/tut...pi-sesame-rdf/

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Points : 64
    Points
    64
    Par défaut
    Merci beaucoup Sapience !

    j'ai essayé l'api Sesame.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    package mongo;
     
    import com.mongodb.BasicDBObject;
    import com.mongodb.DBCollection;
    import com.mongodb.DBCursor;
    import com.mongodb.DBObject;
    import com.mongodb.Mongo;
    import com.mongodb.DB;
    import com.mongodb.ParallelScanOptions;
     
    import java.util.List;
    import java.util.Set;
     
    import org.openrdf.Sesame;
    import org.openrdf.query.BindingSet;
    import org.openrdf.query.MalformedQueryException;
    import org.openrdf.query.QueryEvaluationException;
    import org.openrdf.query.QueryLanguage;
    import org.openrdf.query.TupleQuery;
    import org.openrdf.query.TupleQueryResult;
    import org.openrdf.repository.Repository;
    import org.openrdf.repository.RepositoryConnection;
    import org.openrdf.repository.RepositoryException;
    import org.openrdf.repository.http.HTTPRepository;
    import org.openrdf.repository.sail.SailRepository;
    import org.openrdf.sail.memory.MemoryStore;
     
    public class Connection {
     
    	public static void main(String [] args) throws RepositoryException, MalformedQueryException, QueryEvaluationException, IllegalArgumentException
    	{
     
       		 Repository repository = new HTTPRepository("http://fr.dbpedia.org/sparql");
                     repository.initialize();
     
                     RepositoryConnection connection=repository.getConnection();
     
             // On initialise la query
             String Sparql_qyery="select ?cat ?catLabel ?immediateParent ?level where {  ?cat a skos:Concept . ?cat rdfs:label ?catLabel .{ { ?cat skos:broader <http://fr.dbpedia.org/resource/Catégorie:Art> . ?cat skos:broader ?immediateParent . BIND(1 AS ?level) }} } order by ?level ?immediateParent ?cat";
             TupleQuery selectQuery = connection.prepareTupleQuery(QueryLanguage.SPARQL, Sparql_qyery);
    	    // on l'exécute
             TupleQueryResult selectQueryResult = selectQuery.evaluate();
     
             // on itère sur les résultats
             while(selectQueryResult.hasNext()) 
              {
     
                   // chaque ligne du résultat est un BindingSet
                   BindingSet aBinding = selectQueryResult.next();
     
                  // on print les valeurs de cette ligne
                   System.out.println("Personne "+aBinding.getValue("x")+" a pour nom "+aBinding.getValue("foafName"));
     
             }
       }
    }
    Mais j'ai eu cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Exception in thread "main" java.lang.IllegalArgumentException: URL must be to a Sesame Repository (not just the server)
    	at org.openrdf.repository.http.HTTPRepository.<init>(HTTPRepository.java:118)
    	at mongo.Connection.main(Connection.java:45)
    La ligne 45 concerne la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Repository repository = new HTTPRepository("http://fr.dbpedia.org/sparql");
    J'ai cherché partout pour comprendre cet erreur et le corriger mais toujours sans résultat. Avez-vous une idée comment surmonter ce soucis s'il vous plait ?

  14. #14
    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
    Tu utilises HTTPRepository, ce n'est pas bon, il ne sert pas à ça. Voir sa Javadoc à http://rdf4j.org/sesame/2.8/apidocs/...epository.html, qui dit : "For communicating with a non-Sesame-based SPARQL endpoint, it is recommend to use SPARQLRepository instead".
    Tu dois utiliser SPARQLRepository à la place.

  15. #15
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Points : 64
    Points
    64
    Par défaut
    J'ai essayé même avec SPARQLRepository mais sans résultat. voila mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    package mongo;
     
    import com.mongodb.BasicDBObject;
    import com.mongodb.DBCollection;
    import com.mongodb.DBCursor;
    import com.mongodb.DBObject;
    import com.mongodb.Mongo;
    import com.mongodb.DB;
    import com.mongodb.ParallelScanOptions;
     
    import java.util.List;
    import java.util.Set;
     
    import org.openrdf.Sesame;
    import org.openrdf.query.BindingSet;
    import org.openrdf.query.MalformedQueryException;
    import org.openrdf.query.QueryEvaluationException;
    import org.openrdf.query.QueryLanguage;
    import org.openrdf.query.TupleQuery;
    import org.openrdf.query.TupleQueryResult;
    import org.openrdf.repository.Repository;
    import org.openrdf.repository.RepositoryConnection;
    import org.openrdf.repository.RepositoryException;
    import org.openrdf.repository.http.HTTPRepository;
    import org.openrdf.repository.sail.SailRepository;
    import org.openrdf.repository.sparql.SPARQLConnection;
    import org.openrdf.repository.sparql.SPARQLRepository;
    import org.openrdf.sail.memory.MemoryStore;
     
    public class Connection {
     
    	public static void main(String [] args) throws RepositoryException, MalformedQueryException, QueryEvaluationException, IllegalArgumentException
    	{
     
    //		Mongo mongoClient = new Mongo(); 
     
    //		DB db = mongoClient.getDB("test");
            /** 
             DBCollection coll= db.getCollection("test");
             DBObject myDoc= coll.findOne();
             System.out.println(myDoc);
            **/
    		//Repository repository= new SailRepository(new MemoryStore());
            //repository.initialize();
     
     
    		 SPARQLRepository repository = new SPARQLRepository("http://fr.dbpedia.org/sparql");
             repository.initialize();
     
             RepositoryConnection connection=repository.getConnection();
     
             // On initialise la query
             String Sparql_qyery="select ?cat ?catLabel ?immediateParent ?level where {  ?cat a skos:Concept . ?cat rdfs:label ?catLabel .{ { ?cat skos:broader <http://fr.dbpedia.org/resource/Catégorie:Art> . ?cat skos:broader ?immediateParent . BIND(1 AS ?level) }} } order by ?level ?immediateParent ?cat";
             TupleQuery selectQuery = connection.prepareTupleQuery(QueryLanguage.SPARQL, Sparql_qyery);
    	    // on l'exécute
             TupleQueryResult selectQueryResult = selectQuery.evaluate();
     
             // on itère sur les résultats
             while(selectQueryResult.hasNext()) 
              {
     
                   // chaque ligne du résultat est un BindingSet
                   BindingSet aBinding = selectQueryResult.next();
     
                  // on print les valeurs de cette ligne
                   System.out.println("Personne "+aBinding.getValue("x")+" a pour nom "+aBinding.getValue("foafName"));
     
                 // si on ne connait pas les noms de variables de la query, on peut les récupérer dynamiquement
     
                   for (String aBindingName : selectQueryResult.getBindingNames()) 
                       {
                         System.out.println("La valeur de "+aBindingName+" est "+aBinding.getValue(aBindingName));
                       }
             }
       }
    }
    Ainsi ce que j'ai eu comme erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/impl/client/HttpClients
    	at org.openrdf.http.client.SesameClientImpl.createHttpClient(SesameClientImpl.java:96)
    	at org.openrdf.http.client.SesameClientImpl.getHttpClient(SesameClientImpl.java:68)
    	at org.openrdf.http.client.SesameClientImpl.createSparqlSession(SesameClientImpl.java:101)
    	at org.openrdf.repository.sparql.SPARQLRepository.createHTTPClient(SPARQLRepository.java:130)
    	at org.openrdf.repository.sparql.SPARQLRepository.getConnection(SPARQLRepository.java:146)
    	at mongo.Connection.main(Connection.java:50)
    Caused by: java.lang.ClassNotFoundException: org.apache.http.impl.client.HttpClients
    	at java.net.URLClassLoader$1.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    	... 6 more
    Normalement c'est l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RepositoryConnection connection=repository.getConnection();
    qui a généré cette erreur !

  16. #16
    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
    Tu n'as pas bien suivi le tutorial. Tu n'as pas fait cette partie :

    Optionnellement, seulement si vous voulez vous connecter à un serveur Sesame distant, ou un endpoint SPARQL (en utilisant la classe HTTPRepository), ajoutez les étapes suivantes :

    • Téléchargez httpclient, en prenant le fichier commons-httpclient-3.0.zip. (Attention de ne pas confondre avec httpcomponents-client), et dézippez commons-httpclient-3.0.jar ;
    • Téléchargez commons-logging et dézippez commons-logging-1.1.1.jar
    • Téléchargez commons-codec et dézippez commons-codec-1.6.jar ;
    • ajoutez à votre classpath commons-httpclient-3.0.jar, commons-logging-1.1.1.jar et commons-codec-1.6.jar ;

  17. #17
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Points : 64
    Points
    64
    Par défaut
    Merci beaucoup Sapience !

    Pour extraire les contenus des articles Wikipédia lié à une catégorie spécifique. Faut-il extraire tout le contenu Dbpedia (avec la commande describe par exemple ) ou bien c'est différent et dans ce cas me faut pour chaque page Wikipédia extraire tout d'abord son contenu dans Wikipedia et après extraire son contenu infobox de Wikidata et enfin son contenu dans Dbpedia. Avez-vous une idée s'il vous plaît ? et comment faire si j'ai besoin juste des contenu français, car j'ai testé la commande describe (Dans DBpedia) pour un article et il m'a retourné ds contenus multilingues...

    Merci d'avance et désolé pour le dérangement !

  18. #18
    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
    Ce qu'il y a dans DBPedia c'est seulement le résumé de la page, effectivement dans plusieurs langues.
    Mais si c'est le texte complet de la page Wikipedia qui t'intéresse, cf. ma réponse du 14/07 : "sur une resource DBPedia le lien vers la page wiki est indiquée avec la propriété foaf:isPrimaryTopicOf". Si tu lis l'URL de la page wiki tu peux ensuite appeler cette URL pour récupérer le HTML; wikipedia a aussi une API JSON qui doit te permettre, je pense, de récupérer le contenu : https://www.mediawiki.org/wiki/API:Main_page/fr

    Bon courage

Discussions similaires

  1. [PrestaShop] Pas d'affichage des images dans les catégories, pas de page CMS
    Par IED factory dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 02/05/2015, 10h52
  2. Réponses: 2
    Dernier message: 02/09/2013, 12h25
  3. [2.x] Afficher les catégories dans la liste des films
    Par Elwood J. Blues dans le forum Symfony
    Réponses: 2
    Dernier message: 06/09/2011, 08h18
  4. Ordonner les catégories dans une PropertyGrid
    Par Papy214 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/02/2009, 10h27

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