OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

provision message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: 20040824 Working Group Call.


Participants in Tuesday's working group call discussed
Gerry Woods' containment use case document.  This draft
illustrates three different approaches to modeling containment.
- Approach #1 (Schema) added a 'parent' attribute to the schema.
- Approach #2 (Jeff's) extends the core 'add' operation.
- Approach #3 (Generic) used a generic relationship capability.

Attendees:
- Doron Cohen (BMC)
- Gearard Woods (IBM)
- Jeff Bohren (Open Networks)
- Gary Cole (Sun)

With the "Schema" approach, the 'add' operation remains simple.
The downside is that interoperability suffers.  Without a
standard schema, the existence and semantics of a 'parent'
attribute are unknown.  Mr. Woods suggested (and participants
agreed) that schema approach was overall the least desirable.

The "Generic" approach assumes a generic relationships capability.
This approach further assumes that a capability can have a schema.
Mr. Woods pointed out that defining a schema for a capability
would require us to enrich the meta-data associated with a target.
Participants also pointed out that using a single and generic
capability to model both containment and reference relationships
would require additional meta-data to define each type of relationship.

Participants then discussed whether containment and reference
differ enough to justify using different mechanisms to model them.
The general conclusion that these two differ fundamentally.

Where targets use containment (e.g., in directory services):
- Containment is often *mandatory*.
  (i.e., Some objects cannot stand alone and
  can be bound only beneath other objects.)
- Containment is generally *hierarchical*.
  (i.e., An object can have at most one parent.)
- Containment requires *referential integrity*.
  (i.e., The parent must exist when a child is added.
  When one requests to delete a parent,
  either all descendants are automatically deleted
  or the request to delete a parent is refused--
  with a message saying the container isn't empty.

Where targets use reference relationships, by contrast:
- References are *optional*.
- References are generally "many-to-many".
- References can be "stale" or invalid.
  (i.e., The referent may not exist.)

In Jeff's approach (we could also call it the "Extension" approach),
an optional containment capability extends the core 'add' operation
to add a required 'parent' argument.  An optional reference capability
extends the containment 'add' operation to add optional reference
arguments.  The main criticism of this approach was that having
optional capabilities extend the core verbs sets a bad example.
You can't do this for long without painting yourself in a corner.
For example, the reference 'add' must extend the containment 'add'
(rather than the core 'add') in order to allow a single 'add'
that supports both containment and reference relationships.

In spite of these concerns, Mr. Bohren's "extension" approach
was considered to be by far the "cleanest" approach of the three.

A fourth approach was revived for discussion.  Mr. Bohren
several times mentioned that he wished the core operations
supported containment.  Participants recalled the main
objections raised when this approach was originally discussed:
- The burden (and oddity) of a provider implementing
  required containment operations
  when the underlying target does not do so.
- If a provider does not implement containment,
  the requestor must "program-by-exception".

Nonetheless, participants felt that it was worth
re-examining this "Core" approach in case it turns out
to be less heinous overall.


Action Items:
-------------
1)  Gerry Woods will enhance his draft to discuss
    a fourth approach: putting containment in the core.

2)  Jeff Bohren will add a 'getParent' operation
    to his proposal.  This permits upward traversal.
    (For downward traversal, 'search' should suffice.)

3)  Gary Cole will start an email thread to discuss
    issues related to the semantics of PSO ID:
    - scope of uniqueness
    - mutability
    In short, are IDs GUIDs or are IDs names?




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]