For ontologies in which the unique-names assumption holds, the use of owl:differentFrom is likely to lead to a large number of statements, as all individuals have to be declared pairwise disjoint. For such situations OWL provides a special idiom in the form of the construct owl:AllDifferent. This is a special built-in OWL class, for which the property owl:distinctMembers is defined, which links an instance of owl:AllDifferent to a list of individuals. The intended meaning of such a statement is that all individuals in the list are all different from each other.


    <rdfs:Class rdf:ID="AllDifferent">



Example listing




owl:distinctMembers rdf:parseType="Collection">
           <Person rdf:about="#David"/>
           <Person rdf:about="#Alice"/>
           <Person rdf:about="#Jack"/>
           <Person rdf:about="#John"/>

This states that these four URI references all point to different persons.

NOTE: owl:distinctMembers is a special syntactical construct added for convenience and should always be used with an owl:AllDifferent individual as its subject.

Other information

Many languages have a so-called "unique names" assumption: different names refer to different things in the world. On the web, such an assumption is not possible. For example, the same person could be referred to in many different ways (i.e. with different URI references). For this reason OWL does not make this assumption. Unless an explicit statement is being made that two URI references refer to the same or to different individuals, OWL tools should in principle assume either situation is possible.

OWL provides three constructs for stating facts about the identity of individuals:

If a node x has rdf:type owl:AllDifferent, then the following should be the case:

owl:AllDifferent is the domain of owl:distinctMembers.

In general, blank nodes occurring in the graph either represent unnamed individuals, or should be exactly one of the following:

Orphan blank nodes, i.e. those which are not the object of a triple are, in general, not allowed (other than the owl:AllDifferentcase described above).

If we wanted to add a new member in some existing ontology and assert that it was disjoint from all of those that have already been defined, we would need to cut and paste the original owl:AllDifferentassertion and add the new maker to the list. There is not a simpler way to extend an owl:AllDifferentcollection in OWL DL. In OWL Full, using RDF triples and the rdf:List constructs, other approaches are possible.

Use in ISO 15926