ISSUE: functional, inversefunctional

So, I got interested in this and tried to map out meaning and examples
for these related notions.  

Looking at this, my preference is for functional and inverseFunctional
because they seem to clearly identify that this is a feature of the
property.  Neither unambiguousProp nor uniqueProp makes clear the
direction of uniqueness.

- Mike

------------------------------------------------------------
1. functional (uniqueProp, uniqueObject)

If       R is functional
then     R(a,x) ^ R(a,y) -> x=y

Example: Birthdate(person,date)

We note that Birthdate(a,x) and Birthdate(b,x) does not imply anything
beyond what the clauses alone imply, other than that a and b share a
birthday.

------------------------------------------------------------
2. inverseFunctional (isTheOnlyOne, unambiguousProperty, uniqueSubject)

If we wanted to be totally parsimonious, I would not think we need
this, give FUNCTIONAL and INVERSEOF.  If it is hard to find meaningful
use cases, then perhaps we should leave it as something that needs to be
composed.  ???

If       R is inverseFunctional
then     R(a,x) ^ R(b,x) -> a=b

Example: AddressedBy(mailbox,address)

That is, various addresses may be routed to my mailbox (different
named persons, different ways of describing the address, zip
vs. zip+4) but they are uniquely associated with that single location.

I am excluding addresses like "Postmaster" and "Santa Claus, The North
Pole".  

Maybe US-SocialSecurityNumber makes more sense.  Until we are forced
to reuse social security numbers, assuming no errors in assignment,
there is only one person designated by each number (at least that's 
what most people think!)  This tags does permit people with multiple 
social security numbers (who surely exist).

We note that AddressedBy(a,addr1) and AddressedBy(a,addr1) does not
imply anything beyond what the clauses alone imply, other than that
addr1 and addr1 point back to the same location.

------------------------------------------------------------
3. oneToOne

We don't have this and it is easily composed from functional and
inverseFunctional.  But I put it in so that we can distinguish it and
provide an example.

If       R is oneToOne
then         R(a,x) ^ R(b,x) -> a=b
         and R(a,x) ^ R(a,y) -> x=y  

Example: Globally Unique Identifier (GUID)

         GUID(computer,id)

"A universally unique identifier (UUID) is a globally unique identifier
 (GUID). ... Every entity that needs to be uniquely identified (such as an
 interface) has a GUID." 

 From  http://msdn.microsoft.com/library/


Michael K. Smith, Ph.D., P.E.
EDS - Austin Innovation Centre
98 San Jacinto, #500
Austin, TX  78701

* phone: +01-512-404-6683
* mailto:michael.smith@eds.com
www.eds.com

Received on Thursday, 11 July 2002 16:04:03 UTC