I was reading what I think is a good introductory book, "A Semantic Web Primer" at the same time reading "OWL and Cardinality".
In the Primer book it states: "...the non-unique-names assumption is the most plausible one to make on the World Wide Web..." Which I didn't think made sense.
In Cardinality: "The difficulty in checking this for consistency is that an <owl:sameAs> statement can make it all valid:
<ns:firstPropertyObject> <owl:sameAs> <ns:secondPropertyObject>" Which did make sense.
The thing that eventually struck me was that the assumption Paul makes, and I have made, is something very common - names are unique. However, this is not the case in OWL: "Just because two names are different does not mean they refer to different individuals."
So using cardinality restrictions, systems can infer that if you have two values for a property when the ontology defines you should have one, it's not that you've broken cardinality, it's that those values are actually the same/equal. In Paul's example sameAs isn't required - firstPropertyOne and firstPropertyTwo are the same. This seems weird, completely backwards and very non-intuitive.
Looking around I found Pellet: An OWL DL Reasoner which says: "In general, a Semantic Web reasoner should handle individuals (provide ABox reasoning), should not make the Unique Name Assumption..."
It doesn't really say, though, why you need non-unique names. It does seem perverse that the basis for this, the URI, is unique.
In fact, the opposite case seems to be well stated in "OWL Flight vs. OWL DL": "We argue that very few equalities can actually be resolved with reasoning and that many derived equalities are actually faulty. Thus, it makes more sense in our opinion to either resolve equalities beyond the logical language or to make strong assumptions on the available knowledge, i.e. assume that each identifier in the knowledge base uniquely identifies an individual..."
It was resolved as an issue by the Web Ontology group by having to use AllDifferent. Where a collection is used hold all your distinct items. This seems like a decision to make the usual case more difficult and less scalable.