Question

Je suis en train de se propager Pellet propriétés des classes jusqu'aux individus appartenant à ces classes. Par exemple, si je classe A avec la propriété X et individuelle B avec rdf: type = classe A, je veux la personne B d'avoir la propriété X après l'exécution du raisonneur. J'utilise la technique de l'inclusion de la chaîne de propriété référencée sur le OWL 2 nouvelles fonctionnalités . Cette technique fonctionne parfaitement si j'utiliser mes propres propriétés personnalisées dans la chaîne de propriété, mais il ne fonctionne pas si je tente d'utiliser rdf: se taper. Voici quelques Cisaille pertinentes de mon RDF / XML.

Ontological classe (générée par Jena, noter la propriété « spread », comme c'est ce que je suis en train de se propager aux individus de la classe Person):

<rdf:Description rdf:about="http://family/person">
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <owl:sameAs rdf:resource="http://family/person"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <owl:equivalentClass rdf:resource="http://family/person"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2002/07/owl#Nothing"/>
    <j.1:spread rdf:resource="http://spread/specificSpread"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>

« spread » propriété elle-même (écrit manuellement par moi, pas généré avec Jena depuis l'API Jena ne supporte pas les chaînes de propriétés d'objet):

<rdf:Description rdf:about="http://spread/generalSpread">
    <owl:propertyChainAxiom rdf:parseType="Collection">
        <owl:ObjectProperty rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#type"/>
        <owl:ObjectProperty rdf:about="http://spread/generalSpread"/>
    </owl:propertyChainAxiom>
</rdf:Description>

Avant le raisonnement, la personne Œdipe ressemble à ceci:

<rdf:Description rdf:about="http://family/Oedipus">
    <rdf:type rdf:resource="http://family/person"/>
</rdf:Description>

L'idée est que, après le raisonnement, il ressemblerait à quelque chose comme ceci:

<rdf:Description rdf:about="http://family/Oedipus">
    <rdf:type rdf:resource="http://family/person"/>
    <j.1:spread rdf:resource="http://spread/specificSpread"/>
</rdf:Description>

J'ai le sentiment que la référence à rdf: type comme rdf: ressource est probablement là où les choses se çela depuis que je suis sûr que ce n'est pas une ressource. Mais je ne suis pas sûr de savoir comment le résoudre. Je l'ai couru à travers le programme de fibre de ligne de commande de Pellet bien et il ne semble pas avoir un problème avec elle, sauf qu'il a créé une entrée explicite pour rdf: type qui ressemblait à ceci:

<owl:ObjectProperty rdf:about="&rdf;type"/>

Attend un peu étrange pour moi et peut-être aussi un soupçon qu'il ne comprend pas ma référence à rdf:. Tapez

Quelqu'un peut-il faire la lumière sur ce qui pourrait se passer? J'apprécierais vraiment tout quelqu'un d'aide pourrait fournir.

Était-ce utile?

La solution

Very Important Modifier

Il se fait que la propagation de la propriété est possible dans le domaine de OWL DL. Par exemple, si vous voulez propager la spread propriété avec la valeur simpleSpread (si les deux sont déjà définis dans votre RDF), vous pourriez faire quelque chose comme ça (en RDF / XML):

  <rdf:Description rdf:about="http://family/person">
    <rdfs:subClassOf>
        <owl:hasValue rdf:resource="http://spread/simpleSpread"/>
        <owl:onProperty rdf:resource="http://spread/hasSpread"/>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Restriction"/>
    </rdfs:subClassOf>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
  </rdf:Description> 

Pas si important plus

Ok donc pour l'exhaustivité de l'information, je posterai les informations de réponse pertinente ici. Ce truc vient de parler aux gens sur la liste de diffusion des utilisateurs de pellets. Le fil est archivé et commence par mon message initial . Suivez le fil pour savoir ce qui est arrivé en détail.

Pour l'essentiel, OWL DL ne permet pas la "réflexion" sur intégrée propriétés et types de données. Permettre cela pourrait violer la décidabilité polynomiale garantie par OWL DL. Pour ce faire, vous devez utiliser le profil OWL RL de OWL Full, qui traite toutes les choses dans OWL également, permettant ainsi l'utilisation d'une inférence sur rdf:type.

Le problème majeur avec c'est de trouver un raisonneur (ou une combinaison de raisonneurs) qui prennent en charge à la fois DL et RL, puisque RL est beaucoup plus léger et moins expressif que DL (pour ne pas mentionner non garantie décidable en temps polynomial) .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top