Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    avril 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : avril 2012
    Messages : 66
    Points : 18
    Points
    18

    Par défaut Règles SWRL et règles DL-Safe

    Quelqu'un peut m'expliquer avec un exemple la différence entre une règle SWRL et DL-Safe rules SWRL ? J'arrive pas à saisir au juste la différence entre les deux.

  2. #2
    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 : 215
    Points
    215

    Par défaut

    Supposons qu'on ait une ontologie qui indique (syntaxe Turtle) :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    :BrotherOfJoe  a  owl:Class;
            rdfs:subClassOf  [
            a  owl:Restriction;
            owl:onProperty  :hasBrother;
            owl:hasValue  :joe
        ] .
    :toto  a  [
            a  owl:Restriction;
            owl:onProperty  :hasParent;
            owl:someValuesFrom  :BrotherOfJoe
        ] .
    :joe  a  :Person .
    La première partie indique qu'un frère de Joe (:BrotherOfJoe) a nécessairement un frère qui est Joe. La seconde indique que Toto a un parent qui est un frère de Joe. On voudrait en conclure que Joe est l'oncle de Toto. On pourrait écrire la règle SWRL suivante :
    Code :
    :hasParent(?x,?y), :hasBrother(?y,?z) -> :hasUncle(?x,?z)
    Si la règle est une règle SWRL normale, on obtient bien la conclusion voulu. Si en revanche on interprète cette règle comme une règle DL-safe, on ne peut l'appliquer que si l'on peut remplacer les variables ?x, ?y et ?z par une instance nommée. Or, l'ontologie ne dit pas quelle personne joue le rôle de ?y ici. En fait, une règle DL-safe fonctionne comme si on avait une classe supplémentaire :Nom dont les instances sont tous les individus nommés. La règle DL-safe est équivalent à une règle SWRL normale comme suit :
    Code :
    :hasParent(?x,?y), :hasBrother(?y,?z), :Nom(?x), :Nom(?y), :Nom(?z) -> :hasUncle(?x,?z)
    7susd bl'ham owsql wuul pô!

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    avril 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : avril 2012
    Messages : 66
    Points : 18
    Points
    18

    Par défaut

    sachant que Nom est un concept qui doit être rajouté à l'ontologie, si non ca va générer une erreur lors de l'interprétation de la règle, n'est ce pas ??

    Autre question s'il vous plait, c'est quoi l'atout principal de l'utilisation des règles DL-Safe par rapport aux règles SWRL. Si c'est un choix, je peux utiliser dans ce cas les règles SWRL tout court..

    Merci bien pour votre aide

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    avril 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : avril 2012
    Messages : 66
    Points : 18
    Points
    18

    Par défaut

    selon ce que j'ai compris, la règle suivante est une règle Dl-safe vu qu'elle attribue des rôles aux différents individus :

    pere(rami) ∧ enfant(marwa) ∧ soeur(jamila) ∧ est_pere_de(rami, marwa) ∧ est_soeur_de(jamila, rami) → est_tante_de(jamila, marwa)

    sachant bien sure que pere, enfant et soeur ce sont des concepts défini au préalable.

  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 : 215
    Points
    215

    Par défaut

    sachant que Nom est un concept qui doit être rajouté à l'ontologie, si non ca va générer une erreur lors de l'interprétation de la règle, n'est ce pas ??
    Ca dépend. Si on veut s'assurer qu'on a bien des règles DL-safe, on peut utiliser un concept auxiliaire (comme Nom par exemple) qui devra contenir la totalité des instances nommées de la base de connaissance. Il faut que Nom ne soit relié à aucun autre concept ou terme.

    Mais certains raisonneurs n'ont pas besoin de cela. Ils appliquent les règles uniquement aux instances nommées sans qu'on leur dise, comme s'il y avait implicitement ce concept Nom dans toutes les règles.

    Autre question s'il vous plait, c'est quoi l'atout principal de l'utilisation des règles DL-Safe par rapport aux règles SWRL.
    Les règles DL-safe, ajoutées aux ontologies OWL DL, forment une logique décidable, de complexité à peu près équivalente à OWL DL. Les règles SWRL en général sont indécidables.

    selon ce que j'ai compris, la règle suivante est une règle Dl-safe vu qu'elle attribue des rôles aux différents individus :

    pere(rami) ∧ enfant(marwa) ∧ soeur(jamila) ∧ est_pere_de(rami, marwa) ∧ est_soeur_de(jamila, rami) → est_tante_de(jamila, marwa)

    sachant bien sure que pere, enfant et soeur ce sont des concepts défini au préalable.
    La règle donnée en exemple est DL-safe parce qu'elle ne contient pas de variable (à moins que rami, marwa et jamila soient des variables ?). En revanche, la règle :
    Code :
    pere(?r), enfant(?m), soeur(?j), est_pere_de(?r, ?m), est_soeur_de(?j, ?r) -> est_tante_de(?j, ?m)
    n'est pas DL-safe puisqu'on n'indique pas que les variables ?r, ?m et ?j doivent correspondre à des instances nommées.
    7susd bl'ham owsql wuul pô!

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    avril 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : avril 2012
    Messages : 66
    Points : 18
    Points
    18

    Par défaut

    Merci beaucoup, mais c'est quoi au juste la différence entre des règles décidables et des règles indécidables ?

  7. #7
    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 : 215
    Points
    215

    Par défaut

    En réalité, ce ne sont pas les règles qui sont décidables ou non, c'est le langage qui permet de les écrire qui est indécidable.
    On dit qu'un langage est décidable s'il est possible de faire un programme qui permet de trouver chaque déduction possible en un temps fini. Lorsque c'est indécidable, on ne peut pas trouver de programme qui fait ça. Il y a donc, quel que soit le raisonneur qu'on utilise, des cas où le raisonnement sera soit bloqué dans une procédure infiniment longue, soit où le raisonnement donne une conclusion fausse, ou encore la fin de la procédure sera déclenché arbitrairement en indiquant "je ne sais pas".

    Pour les règles DL-safe, c'est logique que l'on puisse faire un programme qui termine toujours de façon correcte. Puisque l'on n'applique les règles qu'aux instances nommées, et qu'il ne peut y avoir qu'un nombre fini d'instances nommées dans la base de connaissance, on peut donc tester toutes les possibilités avec ces instances. Par exemple, si ma base ne contient que les instances "rami", "marwa" et "jamila", je peux vérifier si rami est le père de marwa, puis si rami est la soeur de marwa, puis si rami est l'enfant de marwa, et ainsi de suite. Je tomberai forcément à la fin sur une réponse correcte.

    En revanche, si les règles ne sont pas "safe", il est possible qu'il existe des instances sans qu'elles soient explicitement mentionnées dans la base. C'est le cas que j'ai montré dans mon premier message, qui survient par exemple en OWL lorsqu'on a une restriction de type "someValuesFrom".
    7susd bl'ham owsql wuul pô!

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    avril 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : avril 2012
    Messages : 66
    Points : 18
    Points
    18

    Par défaut

    Merci, c'est trèèèèèèèèèèès gentil de ta part

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
  •