Search Mailing List Archives
[protege-owl] the counterpart of primary key in relational db for owl?
tar at ISI.EDU
Wed Jan 30 10:59:13 PST 2008
On Jan 29, 2008, at 8:08 PM, shangrun du wrote:
> Hello everyone,
> I'd like to know whether it is possible to restrict a property in
> owl, so that it could be used to uniquely identify its domain
> concepts, similar like what primary key in relational database does.
> What I want to state in owl is for example:
> No two products should have the same serial number. Could I do it in
> owl or is there some other way to express this? Thanks a lot in
Well, for starters it is the case that each OWL class, property or
individual has a name (URI) that is distinct from all other such
names. In other words, no two different OWL objects will have the
same URI. It is important to note that this is somewhat different
from a primary key in a DB in that you could, in fact, have multiple
URIs that refer to the same OWL object. In other words, the mapping
from URI => Object is unique, but not the reverse mapping. Since
additional references and equality assertions can be made, it is
possible to prohibit the addition of other URI names for objects. The
best you could do is to make all known URIs be distinct with an
allDifferent assertion. But newly created URIs could still point to
existing objects and provide synonyms.
As for the serial number case, you can't express that in OWL because
you can't put restrictions on datatype values, since they are not OWL
objects. The closest you could come would be to use the serial number
in the URI naming the OWL object.
More information about the protege-owl