Closed dr-shorthair closed 4 years ago
@jabhay @nicholascar any insight here?
The global domain constraint says that a :hasAlias
property goes from a :Alias
.
But the guarded owl:Restriction
constraints say that this property goes from a :Address
or :Locality
or :Street
.
Which is it?
It should be from an Address or other to an Alias so the hasAlias property domain and range are exactly the inverse of what they should be!
I guess you may want to remove the class Restrictions if the domain and range are set or perhaps the other way around. Not sure I was implementing any sound modelling pattern here with having both, and them being contradictory.
I can’t remember what the expected properties of an Alias are (on phone at airport now so can’t easily check). There’s the inverse property of hasAlias but I can’t remember how an Address with an Alias then is Linked to the alias’ details. Perhaps Alias is just a subClassOf Address (or Street or Locality) so an Address or other with an Alias is effectively just pointing to another Address.
I'm guessing that Alias
is an association class, which should have both an incoming and outgoing link to an :Address
or :Locality
or :Street
, but is missing one?
Looking at test data, I see that an Alias is just an alternative label, with a qualifier to say what the nature of the alias-ness is. So it looks like the domain and range of the hasAlias property got swapped.
Also - the guarded constraint on the Address/Locality/Street classes is hasAlias some Alias
which is the 'existential qualifier' - it says that every Address/Locality/Street has at least one hasAlias property whose value is an Alias. I don't think this was intended. The global constraint should be enough in this case.
Following on from #9
gnaf:hasAlias
is defined as follows:However,
:Street
,:Locality
and:Address
all have local constraints on the use of:hasAlias
in their context. So appearance of:hasAlias
in the context of an individual member of one of these classes would entail that the individual is also a member of the class:Alias
.There is something wrong with the modeling here ...