if I understand correctly, "describing an object property as functional we state that any given individual can be related to at most one other individual along that property", so, I created a functional property called hasNationality, then I added an individual called James with hasNationality English and hasNationality American. American and English are individuals from another class. When I run the Pellet reasoner nothing is wrong, I mean if the property hasNationality is functional, James has to have only one nationality, that's right?
the reasoner will assume that American & English are actually the same
individual..in your case, you should explicitly state alldifferent on
American and English first, to make it (a person having 2
Thanks fariz darari, but is there another way to do this without explicitly state alldiffentent individuals? I only want that any individual can be related to at most one other individual along hasNationality property.
> Thanks fariz darari, but is there another way to do this without explicitly
> state alldiffentent individuals? I only want that any individual can be
> related to at most one other individual along hasNationality property.
OWL does not use the Unique Name Assumption. That means that a single individual can be referred to by different names. And with open world semantics, that means that any individuals that are not KNOWN to be different COULD be the same individual.
The way that you know two individuals are different is to either explicitly say that the individuals are different (with differentFrom or allDifferent) or to have some other inference that can be used to show that considering the individuals to be the same leads to an inconsistency. Among the ways that can happen is if the two individuals belong to disjoint classes, or if there are other characteristics that make it impossible for the individuals to be the same while retaining consistency.
This is a fundamental semantic property of the OWL language, so it can't be changed.