| EntityId decision analysis page (was RE: [higgins-dev] entityID not an attribute?) |
|
I took the action item on the Higgins call
today to parse the key questions being raised about EntityId on this thread
into a decision analysis page on the Higgins wiki. I have posted this page at: http://wiki.eclipse.org/EntityId_Requirements …and placed a link to it on http://wiki.eclipse.org/Context_Data_Model_1.1_Open_Issues#Open_Issues. The ideal way to proceed is for folks to
post opinions to the page and then ping the list with a pointer. However, for
those who prefer responding in email, following is the wikitext version of the
page to which you can respond directly. =Drummond == About == This page is for discussing/documenting
the terminology, requirements, and design decisions for [[EntityId]]s. == Content Data Model Requirements == In terms of the underlying graph model,
following is a summary of the abstract requirements derived in a recent
(2008-09-11) thread on the email list. The first step is determining if there
is consensus about these requirements. '''Please post a note with your wiki
signature if you disagree with any of the following:''' # An [[Entity]] is a node in the graph
described by the Higgins [[Context Data Model]]. The CDM needs a consistent way
of representing arcs referencing that node. # There MAY be 0..n such arcs referencing
the node. (0 is possible for blank nodes.) # An arc MAY theoretically be represented
as either: ## A unique identifier. ## A set of [[Attribute]]s of that
[[Entity]], none of which itself is required to be a unique identifier. # If the arc is represented as a unique
identifier: ## It MUST be locally unique within the
[[Context]], and it MAY be globally unique across all [[Context]]s). == Higgins API Requirements == The second step, based on the above requirements,
is answering the following questions with respect to the Higgins API. '''Please
post your votes/answers (with your wiki signature).''' === #1: Unique Identifier vs. Attribute
Set === Should the Higgins API constrain an
[[EntityId]] to be a unique identifier, or can it be a set of [[Attribute]]s? === #2: Representation of an EntityId as a
Unique Identifier === If an [[EntityId]] is a unique identifier,
should this be represented as: # A type of [[Attribute]]? # A separate property of an [[Entity]]
that MAY be exposed as an [[Attribute]]? # Inherent in the definition of an
[[Entity]]? === #3: Cardinality === What is the cardinality of [[EntityId]]?
(The answer may depend on the answer to #2.) # 0..n? # 0..1? # 1 (whose value may be null)? From:
higgins-dev-bounces@xxxxxxxxxxx [mailto:higgins-dev-bounces@xxxxxxxxxxx] On Behalf Of Anthony Nadalin So there are a couple of things here, we have always
talked about the EntityID as being a reference to the Entity and not the unique
identifier. There are many ways to reference an Entity, so I don't believe that
this is limited to 0..1. I also believe that the EntityID encapsulates a given
set of attributes.The unique identifier is only has to be unique within a
context. So I believe that the unique identifier is an attribute, not a way to
reference the Entity.
Yea, there seems to be
disconnect here with usage of the term 'identifier' (or Id). The statement "An
Entity has 0..N Attributes some of which may be used as identifiers" tells
me that there is more than one identifier, and then the statement "An
Entity has 0..1 EntityId" says that there is one identifier (as i think
"EntityId" means "Entity Identifier"). This seems to be
contradicting statements in some sense, and maybe the cause of disconnect here.
· An Entity has 0..N
Attributes · An Entity has 1
UniqueIdentifier within a given context.
· An Entity has 0..1
EntityId (...and we expect almost all Entities will have an EntityId) · An Entity has 0..N
Attributes some of which may be used as identifiers (that is, these attributes
may singly or in combination uniquely identify an Entity within its Context)
· To no longer
consider the one, optional EntityId as an Attribute. · To have an IdAS
getEntityId() method to return this EntityId (or return null if it
doesn’t exist) whereas other getAttribute methods return Attributes/values
· NOTE: CP
developers remain free to present the EntityId value as the value of some
Attribute type that they define and use within their Context
|