Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre du Club Avatar de kululu
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2009
    Messages : 105
    Points : 49
    Points
    49

    Par défaut [SPARQL]Object-data Properties (edit)

    Bonjour

    Mon but est le suivant :
    Je liste toutes les classes de mon modèle et ensuite pour chaque classe j'affiche les object properties et les data properties.

    J'utilise l'api jena et j'ai un petit soucis pour la seconde tache :

    La methode ListDeclaredProperties ne renvoie pas exactement ce que je voudrais en effet certaines propriétés possèdent plusieurs "Domain" il sera alors représenté par une collection de classe dans le fichier owl et donc la propriété ne sera pas listé avec cette méthode.

    Comment faire pour que si la classe est présente dans la collection de classe d'une propriété alors cette dernière sera listé dans la méthode maClasse.ListDeclaredProperties()

    Merci de votre aide .

  2. #2
    Membre du Club Avatar de kululu
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2009
    Messages : 105
    Points : 49
    Points
    49

    Par défaut

    J'ai trouver une solution en parcourant alors la liste de collection.

    Mais entre temps j'ai eu une autre idée: le faire par requête SPARQL.

    Je suis pas un pro en SPARQL alors j'aimerais savoir déjà si c'est possible et ensuite savoir pourquoi la requête suivante ne me renvoie que Thing :

    Code :
    1
    2
    3
     
    SELECT ?range 
    WHERE { monOwl:test rdfs:range ?range }
    J'ai un ObjectProperty test qui a comme range test1 et test2

    merci pour votre aide

  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

    Pour lister les propriétés rattachées à une classe par le domaine avec une requête SPARQL, il faudrait plutôt écrire :
    Code :
    1
    2
    SELECT ?prop
    WHERE { ?prop  rdfs:domain  ont:maClasse }
    Cela dit, il y a également des propriétés supplémentaires pouvant être obtenues par inférence. Par exemple, `owl:Thing` est nécessairement dans le domaine de toute propriété, même si ce n'est pas précisé explicitement.
    7susd bl'ham owsql wuul pô!

  4. #4
    Membre du Club Avatar de kululu
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2009
    Messages : 105
    Points : 49
    Points
    49

    Par défaut

    Merci pour la réponse, j'ai dû testé cette solution dans le tas et cela me renvoie un tableau vide.


    Edit : oops cela viens de mon code Java un peu bancal
    Donc oui merci encore ça marche mais je rencontre le même problème qu'à mon post initial c'est à dire que si le "domain" d'une classe est une collection (en sachant que la classe en question est contenue dans la collection) la requête ne renverra pas cette solution.

  5. #5
    Membre habitué
    Avatar de cotechnoe
    Homme Profil pro Michel Héon
    Chercheur en informatique
    Inscrit en
    mars 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Nom : Homme Michel Héon
    Localisation : Canada

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2012
    Messages : 50
    Points : 115
    Points
    115

    Par défaut Faire une recherche à partir de propriétés

    On reviens à la question d'origine que je reformule pour m'assurer que l'on se comprenne bien.

    Ton ontologie possède un ensemble de classes et de propriétés et tu désires créer une méthode qui liste l'ensemble des propriétés qui a pour domaine la classe propriétaire de la méthode.

    Voici en pseudo-code ce que j'implanterais en OWL-API mais que je ne peux implanter (...par ignorance du langage...) en Jena ... à toi de traduire
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    Soit la Class C  /* la classe propriétaire de la méthode ListDeclaredProperties */
    Soit une collection RESU /* contenant la liste des propriétés contenant C dans son domaine */
    Pour-tout Property P /*de l'ontologie */
        pour-tout Class CD = P.getDomain() /* la collection de classe appartenant au domaine de P */
              si (CD.getId() == C.getId())
              alors RESU.add(P)
        fin-pour-tout
    fin-pour-tout

  6. #6
    Membre du Club Avatar de kululu
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2009
    Messages : 105
    Points : 49
    Points
    49

    Par défaut

    Oui c'est en quelque sorte quelque chose dans le genre (par que pour le domaine pour le range aussi). Mais j'ai réussi à implémenter un algo qui fait ça en java mais c'est pas très "instinctif" je pensais qu'en le faisant par requête SPARQL ça aurai été plus clair et plus simple dans l'implémentation.

+ 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
  •