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

 


Help: OASIS Mailing Lists Help | MarkMail Help

regrep message

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


Subject: Re: [regrep] [regrep - RIM draft 02 comment] Compendium


Richard Martell wrote:

> Hi,
>
>
> I've aggregated my comments regarding the latest RIM revision. Three
> levels of severity are distinguished:
>
> MAJOR    - significant impact, should be resolved
> MINOR    - inconsistency that might hinder implementation or
>            interoperability
> ADVISORY - an editorial tweak, correction, or clarification
>
> Again, no CRITICAL issues to report :-)

Hi Richard, Thanks very much for taking the time to provide comments in 
advance and with pre-triaging done.
It is very helpful to your over-worked editor ;-)

>
>
> 1 [MAJOR] RepositoryItem and ExtrinsicObject
>
>   In section 1.5, replace occurrences of RegistryObject with
>   ExtrinsicObject, since this is the actual type that serves as a proxy
>   for repository items that reflect some specified content (media) type.
>
>   Perhaps add a few words about using ExternalLink objects to reference
>   items located in external repositories maintained by a third party.
>   Or is this gambit frowned upon?

The approach we have taken in both specs is to start very simple and 
build up complexity incrementally. There is symmetry throughout teh 
specs between the duality posed by having both a Registry and a 
Repository. This is symmetrically posed throughout the spec in terms of 
RegistryObjects (metadata) and RepositoryItems (content). There is no 
telling whether there may be content associated with other 
RegistryObject types in future.

Also if you follow the library analogy through it fits very well with 
the RegistryObjects (metadata) and RepositoryItems duality.
Lastly, ExtrinsicObject is a name that throws peoples midns in a loop. I 
prefer to introduce it later rather than earlier.

For these reasons, I feel fairly certain that we should make no change 
for above.

>
>
> 2 [MINOR] In 2.5.6 a lid is required, but not in the schema. Modify
>   rim.xsd accordingly, and update the specification text such that
>   within a publication request the submitter must specify either (i)
>   a temporary (dummy) value that is subsequently replaced by the
>   registry, or (ii) an absolute URI assigned by some other naming
>   authority.

I think you may be mistaken. It is already in rim.xsd at line 161.
Suggest no change for this reason.

>
> 3 [MAJOR] In 2.5.9 the basic lifecycle of a registry object is ambiguous
>   and should be clarified with a simple state diagram (also in terms of
>   the canonical events listed in 7.1.2.1).
>
>   e.g.
>
>             approval          deprecated            deleted
>   Submitted -------> Approved ---------> Deprecated ------> Withdrawn
>
>   What triggers a state transition? Presumably a user can explicitly
>   approve, deprecate, or delete objects. In which case the registry
>   must not ignore the attribute in a request (which contravenes the spec
>   directives).

We used to have a state diagram but I removed it in version 3 as it 
seemed that there were links from nearly every state to every other 
state and it looked like one big ugly confusing mess. Plus it was a pain 
for me to keep up-to-date and looking pretty. I did not find it was 
helping readability and understandability that much. State transitions 
are triggered by LCM protocol request such as 
Submit/Approve/Deprecate/Undeprecate/RemoveObjectsReqest

Suggest no change for version 3.

> 4 [MINOR] In 2.7.1 the id and home attributes are specified for
>   ObjectRef, but these are inherited from Identifiable and are therefore
>   redundant here.

This point was raised and resolved (to no change) during review of draft 
01. It is deliberately duplicated because it has soem special semantics 
for ObjectRef such as caching a local replica of remote ObjectRef.

> 5 [ADVISORY] In 2.8.1 perhaps change values to type Set<LongName>
>   instead of Bag, since duplicate values don't appear to be meaningful
>   in this context.

Duplicate for values of a Slot do make sense. For example lets say the 
Slot  values store the Gender of each student in a class. I know it is a 
dumb example but thats the best I can think of at present. Suggest no 
change.

>
>
> 6 [ADVISORY] In 2.8.3 append the following sentence: "The slotType
>   attribute may also be used to indicate the type or value domain for
>   the slot value(s)."

+1

Thanks for catching this important use of slotType. Will add in next 
version as follows:

"The slotType
  attribute may also be used to indicate the data type or value domain for
  the slot value(s)."

> 7 [MINOR] In 2.9.1 the default value for mimeType is
>   "application/octet-stream". But what if there is no corresponding
>   repository item? In this case, presumably the mimeType attribute
>   is empty (i.e., there is no default value). Or would this absence be
>   signalled by omitting ContentVersionInfo?

That is correct. ContentVersionInfo is the indicator of whether there is 
a RepositoryItem or not.
I can see how we could also use the mimeType to do the same but prefer 
no change since
change is not necessary.

> 8 [MINOR] In 2.9.4 append the following sentence: "The value
>   should be a registered MIME media type."


Oops. I missed this. It was pointed out in draft 01 review. Thanks.

Fixed in draft 03.

Here is proposed slightly modified text:

" The value of this attribute SHOULD be a registered MIME media type at 
http://www.iana.org/assignments/media-types ."

> 9 [MAJOR] In 3.6.1 (and elsewhere) ObjectRef is used as the type for
>   many attributes. However, rim.xsd employs simple URIs (referenceURI)
>   almost exclusively, rather than ObjectRefType (a complex type that
>   maps to the ObjectRef class).
>
>   The ObjectRef datatype in 2.2 has the same name as the RIM class. No
>   packages are defined, so this is somewhat confusing. Perhaps rename
>   the "ObjectRef" datatype in 2.2 so it doesn't clash with the class,
>   or reuse one of the other simple URI-based types, like UUID.

I understand how what you decsribe can be confusing to the reader. Let 
be give the rationale and thinking behind the way it is and see what 
needs to change in the verbiage.

 From a UML perspective, a reference attribute in a RegistryObject can 
reference a local or remote object via an ObjectRef instance. The reason 
it MUST be an ObjectRef is that that is the only way one can have a 
single Domain Data Type that can handle local *AND* remote references 
symmetrically.

Now when the UML Model is mapped to XML Schema a reference attribute 
always maps to a referenceURI. The referenceURI value references an 
ObjectRef instance within the same XML document that may be a local or 
remote ObjectRef. If the ObjectRef is missing then  the referenceURI is 
implicitly pointing to a local ObjectRef.

When a reference attribute is mapped to SQL Schema it maps to a 
VARCHAR(256), which is basically a string. The id value contained in 
reference attribute columns may be a foreign key linkage into an entry 
in the ObjectRef table and if none is found then similar to XML Schema 
it is implictly referencing a local object.

Maybe we need to:

a) Add the XML Schema related info from above, in the LCM chapter as a 
small section which is referenced in the Submit and Update protocol sections

b) Add the SQL Schema related info from above, in a section in SQL 
Schema section to with

But I am not sure that any change in Data Type is warranted in RIM. Lets 
discuss tomorrow.

> 10 [MINOR] In 4.2.4 the path attribute is required to be generated on
>   retrieval. But according to the production rules in 4.2.5 this cannot
>   be set if there is no value for the code attribute (which is
>   optional). Suggest that the specification text be amended such that
>   the path attribute is not required to be set, OR a looser directive
>   to include the path only if codes are available.

+1. Fixed in draft 03

Replaced Old:  "A registry MUST set the path attribute for a 
ClassificationNode when it is retrieved from the registry."
With New: "A registry MUST set the path attribute for any 
ClassificationNode that has a non-null code attribute value, when the 
ClassificationNode is retrieved from the registry."

>
>
> 11 [ADVISORY] In 5, "Responsible party information" might be a more
>   apt designation, since we're concerned not just with the origin
>   of an item but with identifying the owner and/or responsible party
>   (person and/or organization--this may differ from the creator or
>   source).
>
>   "This chapter describes the classes that enable the description of
>   the parties responsible for creating, publishing, or maintaining a
>   RegistryObject or RepositoryItem."

OK. Will use above text as is in draft 03

>
>
> 12 [ADVISORY] In 5.3.5, the primaryContact for an Organization should
>   reference a Person, as the contact need not be a registered User.

+1 since a Person can also be a User. Will fix in draft 03.

>
>
>
> 13 [ADVISORY] In 5.5.6, consider replacing stateOrProvince attribute
>   with the more general attribute countrySubdivision (after ISO 3166-2).

I should definitely listen to you on this since you are a GIS man ;-)
But the ripple effect is cumbersome. There are bound to be
other little name differences with various standards and it is hard to 
decide
where do we draw the line. Given the minor nature and lateness of the 
release
I suggest No Change here.

> 14 [MINOR] In 5.6.5, shouldn't the number attribute at least be
>   required? Currently _all_ attributes of TelephoneNumber are optional.

Yes this was a change in version 3 based upon the realization that 
different use cases demanded different required fields and that it was 
best to leave outside the spec. A Validation Service could enforce it in 
a pluggable manner. Suggest no change.

> 15 [ADVISORY] In 7.2.4, a default value for notificationInterval is
>   specified but this does not appear in rim.xsd:
>
>   <attribute name="notificationInterval" type="duration"
>              use="optional" default="P1D" />

+1 Fixed in draft 03

>
> 16 [ADVISORY] In 7.4.1, the type of the <any> attribute of
>   QueryExpression should be anyType.

+1 Fixed in draft 03

>
>
> 17 [ADVISORY] In 7.7.3, amend the last sentence as follows: "The
>   registry MUST include Identifiable or RegistryObject instances as Set
>   elements depending upon the notificationOption specified for the
>   Subscription."

+1. Fixed in draft 03 with minor verbage change from above as follows:

"The
  registry MUST include ObjectRef or RegistryObject instances as Set
  elements depending upon the notificationOption specified for the
  Subscription."

Since the semantics require that set element be either ObjectRef or 
RegistryObject instances.

>
>
> 18 [MINOR] In 8.1, since a registry is itself a service it would be
>   sensible for Registry to extend Service instead of RegistryObject.
>   This would then permit bindings to be associated with affiliated
>   registries. Otherwise, how are they located?

That depends on how you look at it. One can veiw the Registry as having 
one or more services or one can view it as a Service. I find teh first 
one more flexible since it allows a Registry to offer any number of 
services. Also one goal is to make the Federation Info Model classes be 
as minimal as possible. Suggest No Change here.

>
>
>
> 19 [MAJOR] Section 9 refers to XACML 1.0, but XACML 2.0 is the current
>   standard. Should this section be updated accordingly?

I debated this one long and hard in my own mind. XACML 2.0 does not add 
that much to XACML 1.0 functionally. There are hardly any 
implementations of XACML 2.0 available (a barrier for registry 
implementors). All in all it seemed that being based on a stable XACML 
1.0 was better than moving to XACML 2.0 now. Suggest we defer moving to 
XACML 2.0 for version 4.

> 20 [MINOR] Section 9 says much about policy _definition_ but rather
>   little about policy _enforcement_. It seems to imply the existence of
>   an embedded policy engine that evaluates relevant policies and renders
>   appropriate access control decisions. That is, a registry is assumed
>   to function as both a Policy Enforcement Point (PEP) _and_ a Policy
>   Decision Point (PDP). If this is the case, it should be made explicit
>   in the preamble for section 9.

But is that an implementation detail? Do we need to be explicit about it 
any more than we are?
If you feel it is important please suggest the precise change.

>
>   Alternatively, these functions could be distributed. For example, a
>   registry could invoke a remote PDP using SAML (AuthzDecisionQuery) and
>   enforce the resulting authorization decision.

Indeed. That we did not specify the reliance on SAML 
(AuthzDecisionQuery)  was to keep the scope of the SAML 2 feature small 
(limited to SSO) and go for the 80-20 rule.

Suggest No Change on this.

Thanks again for your thoughtful comments.

PS:  Look forward to a solid turnout for our TC meeting tomorrow. See 
you all then.

-- 
Regards,
Farrukh



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