Stanislav a déjà donné une bonne réponse à cette question. Ce que je veux aborder ici est l'idée mentionnée dans le commentaire que "l'héritage des classes" est asymétrique avec "l'héritage des propriétés".
Orientation objet
(1) Dans les langages de programmation orientés objet, lorsque la classe A
hérite de la classe B
cela signifie que l'ensemble de toutes les instances de la classe A
est un sous-ensemble de l'ensemble de toutes les instances de la classe B
. De plus, comme les attributs appartiennent à une classe spécifique, cela signifie que la classe A
aura tous les attributs de la classe B
(c'est-à-dire classe A
hérite de tous les attributs de la classe B
).
(2) Lorsque la classe A
a un attribut c
de type C
elle affirme (plus ou moins) qu'il existe une association c
entre les classes A
y C
.
OWL/RDFS
(1) Une grande différence avec OWL/RDFS est que les propriétés ne pas appartiennent à une classe. Lorsque nous disons que A rdfs:subClassOf B
nous disons que l'ensemble A
est un sous-ensemble de B
. Il ne dit rien de plus. Par exemple, si nous avons
B a rdfs:Class .
B rdfs:label "Label for class B" .
A a rdfs:Class .
A rdfs:subClassOf B .
classe A
sera pas "hériter" de l'étiquette de la classe B
.
(2) Les propriétés dans OWL/RDFS sont spécifiées entre les instances, pas entre les cours. J'ai écrit sur ce en détail sur mon blog. Quand vous dites que P rdfs:subProperty R
cela signifie que l'ensemble des paires d'individus dans P
est un sous-ensemble de l'ensemble des paires d'individus dans R
.
Mais les propriétés fonctionnelles sont héritées...
Non, ils ne le sont pas. Cela semble juste être le cas en raison de la sémantique des propriétés fonctionnelles. Si nous avons une propriété R
c'est-à-dire fonctionnel, il signifie une affectation satisfaisante pour R
peut être {(a,1), (b,2)}
. C'est-à-dire que le même sujet ne peut pas être lié à 2 objets différents. C'est-à-dire que vous ne pouvez pas avoir {(a,1), (a,2)}
.
Maintenant, si vous avez ce P rdfs:subPropertyOf R
, P
est un sous-ensemble de R
et donc P
sera également fonctionnel. C'est-à-dire que si R = {(a,1), (b,2)}
tout sous-ensemble de R
seront également fonctionnels.