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

 


Help: OASIS Mailing Lists Help | MarkMail Help

regrep-query message

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


Subject: Re: Revision of FilterQuery proposal



Farrukh,

You seem to be misunderstanding my proposal. I was "revising" the 
FilterQuery sections to accommodate recent revisions to RIM. Many of your 
comments below address features in FilterQuery that I'm not proposing any 
changes to -- they stay in the document whether my proposed revisions pass 
or fail. I thought I was being responsive to your previous request to 
include all of the subsections, even those I'm not proposing changes to.

But I'll address all comments as best I can. See in-line below.

-- Len



At 10:21 AM 9/28/01, Farrukh Najmi wrote:
>Len,
>
>Thanks for the update and for addressing several issues identified 
>previously by team.
>
>Below are the list of remaining issues that I feel are *MUST FIX*. Note 
>that this is a much pruned down sub-set of my previous issues list.
>
>We can test whether they are or not in the meeting:
>
>
>Need Pattern for Mapping RIM Methods (P1)
>
>
>
>The branch elements in queries are a mapping of RIM relationship methods. 
>However, they are named in an adhoc way rather than based on the RIM 
>method name using a fixed pattern. This should be fixed for coinsistency 
>and ease of understanding.


I don't have any inherent objection to letting method names from RIM 
influence branch names in FilterQuery, but it doesn't always make sense to 
do that.  For example, every RegistryEntry instance is required to have a 
unique submitting organization, but there is no explicit 
getSubmittingOrganization() method on RegistryObject or on RegistryEntry. 
Instead, the submitting organization is buried in the getOrganizations() 
method on RegistryObject. This is the type of thing I was referring to in 
my previous email message saying that sometimes the RIM model is too 
general and doesn't sufficiently call out very important concepts. 
FilterQuery chooses to make that very important concept, i.e. who submits 
stuff, more visible with an explicit SubmittingOrganizationBranch on 
important classes where the submitting organization is not easily derivable 
from some closely associated instance.

As a second example of where it doesn't make sense to use method names for 
XML branch names in FilterQuery, consider the methods that return 
collections, e,g, getClassifications(). The FilterQuery approach considers 
each of those classifications one at a time, so using the plural of the 
name would be inappropriate. Once the meaning is different, I submit that 
it is best to avoid too much similarity in the name.

I submit that there is no requirement that "Branch" elements in FilterQuery 
be in any sort of one-to-one correspondence with method names in RIM. The 
method names are at a different level of granularity.  Of course, any 
justification of a FilterQuery element should be able to show which methods 
are used to implement it. That's the intent of the Semantic Rules. It 
should be quite clear from the rules which methods would have to be invoked 
to evaluate the query and construct the query response.



>For example the getClassifications method in RegistryObjectClass in RIM 
>should map to a getClassificationBranch (notice mapping to method name 
>with plural suffix removed) instead of HasClassificationBranch.


Right -- this is the second example above. Since one is able to test 
classifications one at a time to see if the HasClassificationBranch is 
satisfied for one, two, or more classifications, it is better to do more 
than just drop the "s" on the name.



>
>Avoid Mapping RIM Relationship methods Bi-Directionally When Method is 
>only in one Class (P1)
>
>
>
>This is a recurring issue. For example according to RIM an AuditableEvent 
>has a User and a User does not have an AuditableEvent. AuditableEventQuery 
>correctly has a InvokedByBranch (should be named getUserBranch). However, 
>the InvokesEventBranch (should be getUsersBranch) in OrganizationQuery 
>also has a AuditableEventFilter. This is unnecessary and adds significant 
>complexity.


Many of us agree that the AuditableEvent class in RIM is weakly specified 
and will likely change in the near term. In anticipation of those 
modifications, the "revision" proposal didn't spend much time thinking 
about the AuditableEventQuery. Instead, I just made sure that there weren't 
any contradictions with the existing RIM.

Note that the Organization class doesn't have any getRegistryObjects() or 
getRegistryEntries() methods, even though it is a very important use case 
that one be able to "find all organizations that submitted new CPP's in the 
past 30 days". The existing OrganizationQuery assumes that it is possible 
to do these things even though there is no explicit method to do it.  The 
implicit method is to go through the Association instances that link an 
Organization to a RegistryObject (or in this use case a RegistryEntry). The 
Semantic Rules for OrganizationQuery make clear which associations need to 
be invoked!



>
>Need to Compensate for RIM 1.1 Moving Classes From registryEntry To 
>RegistryObject (P1)
>
>
>
>There are many places in filter query where this change in RIM 1.1 has 
>implication. One exaple is that we need to replace ReturnRegistryEntry 
>with ReturnRegistryObject.


I've pointed out previously that RIM makes no attempt to distinguish 
"abstract" classes from "concrete" classes. An abstract class has no 
persistent instances in the Registry, while a concrete class does. 
FilterQuery treats RegistryObject as an abstract class -- it's persistent 
instances can be viewed as the Union of all of the instances of concrete 
subclasses of it.

We could define a RegistryObjectQuery, but it would just be the combination 
of RegistryEntryQuery, OrganizationQuery, ClassificationNodeQuery, etc.

I do agree that it might be good to formalize the notion of being able to 
get back an arbitrary RegistryObject if you know it's "id" attribute. The 
existing FilterQuery cannot do that! See below for further discussion of 
this issue.


>
>
>Remove xxViews (P1)
>
>
>
>We should not have the xxView elements (e.g. RegistryEntryView) as defined 
>in section RS 1.0 section 8.2.1. They are defined in an ad hoc manner 
>instead of a mapping from RIM. xxViews are used in xxResult (response to 
>the query e.g. RegistryEntryQueryResult). Instead xxResult should return a 
>RegistryObject.

I'm proposing only very minimal changes to those "View" definitions to make 
sure the attribute names match up with new attribute names in RIM. As 
before, a ClassificationNodeQuery is required to return the node's "code" 
attribute (whoops -- should also add "parent"), which is NOT an attribute 
of RegistryObject, and an AuditableEventQuery is required to return the 
"timestamp" attribute of an auditable event, also NOT an attribute of 
RegistryObject, etc.

It would not make sense to just return "id", "name", and "objectType" for 
those types of query. Then we'd have to make a return trip to the Registry 
to get the information we really want.



>
>Need RegistryObjectQuery (P1)
>
>
>
>We need to be able to query on RegistryObjects in abstracts as we have 
>moved most classes in RIM 1.1 to be sub-classes of RegistryObject when 
>they used to be RegistryEntry sub-classes in RIM 1.0.


I wouldn't oppose adding a new RegistryObjectQuery defined as follows:

  <!ELEMENT RegistryObjectQuery
     (   RegistryObjectFilter
       | RegistryEntryQuery
       | OrganizationQuery
       | ClassificationNodeQuery
       | AuditableEventQuery )>

It would return RegistryObject instances, possibly including the id, name, 
and objectType attributes. But right now such is NOT included in the 
"revision" proposal I submitted.

NOTE: FilterQuery does not support AssociationQuery or ClassificationQuery 
because Association instances and Classification instances are just links 
between other classes. We've agreed that they don't necessarily have 128 
bit UUID's. Instead, they are uniquely determined by an explicit subset of 
their attributes. This is why the new ebRIM defines compound id's for these 
classes, cf ebRIM v1.1 Sections 6.8.4, 9.1.5, and 10.3.4. It is NOT 
NECESSARY to query classifications and associations directly because one 
can always get the desired information in other ways. Those link classes 
are supported by other query capabilities.


>
>
>What Is LocalNodeBranch In RegistryEntryQuery (P1)
>
>
>
>This is nowhere to be found in RIM. Where did it come from and what does 
>it mean?


The Sematic Rules of each relevant FilterQuery define the local node to be 
the ClassificationNode instance identified by the classificationNode 
attribute of the Classification class (cf ebRIM Section 10.3.1).

That branch definition is assuming a revision to Classification being 
worked on by the External Scheme sub-team that would treat internal and 
external classifications in an analogous manner. For external 
classifications the "classificationNode" attribute would NOT be required. 
The "LocalNodeBranch" would be followed only when this attribute is 
present, thereby indicating an internal classification and the required 
existence of a ClassificationNode instance.

I wouldn't oppose a change in the wording of that Branch element to 
"InternalNodeBranch".



>
>
>Remove Path, PathElement, pathDepth in HasPathBranch, Use XPATH based PATH 
>exclusively (P1)
>
>
>
>See 
><http://lists.oasis-open.org/archives/regrep-query/200109/msg00047.html>http://lists.oasis-open.org/archives/regrep-query/200109/msg00047.html 
>for details.



This is an open issue clearly recognized by my proposal. There has been no 
agreement to my knowledge that our team has already recommended the use of 
XPATH exclusively.


>
>
>OrganizationQuery
>
>
>
>Remove SubmitsRegistryEntry.  It has no basis in RIM. (P1)


This is a carry-over from the existing specification. I didn't propose any 
significant changes to this Section other than to delete a couple of items 
we discussed at the last Query sub-team teleconference.

But -- "submitting organization" does have a basis in ebRIM, it's just 
buried deeply under the Association link between RegistryObject and 
Organization.  The set of RegistryEntry instances submitted by a given 
submitting organization is the set of RegistryObject instances linked to 
that Organization whose objectType="RegistryEntry" and whose 
associationType="SubmittingOrganization". We could even say that other 
Association attributes are targetRole="SubmittingOrganization" and 
sourceRole="SubmitsRegistryEntry", then the Branch name would have a direct 
link to RIM. Caution: I just noticed that "sourceRole" and "targetRole" are 
no longer attributes of the Association class! That's OK with me as I don't 
think they ever get used in a definitive manner, but others may disagree.

NOTE: Recall that we did approve at the ebXML Vancouver meeting last 
February, that every RegistryEntry instance shall have a unique 
SubmittingOrganization and an optional ResponsibleOrganization. These 
requirements are no longer very visible in ebRIM -- but they are implicit 
in the Association link from RegistryObject to Organization.



>
>ReturnReopositoryItem
>
>
>
>I have serious concerns about this query. It seems to be the most farthest 
>removed from RIM and RS and is very ad hoc in its description.


My proposal makes only minor changes to this section to accommodate the 
fact that ClassificationScheme and Package are now purely metadata. No 
significant structural modifications were made. The points made by Farrukh 
below are not addressed by this revision proposal. They have been in the 
specification since early Spring 2001 and remain in the document whether my 
proposal passes or fails.

But I'll respond below anyway since I do think the ReturnRepositoryItem 
query is a very valuable feature of FilterQuery.

>    * Remove RecursiveAssociationOption. It has no basis in RIM (P1)
This feature depends on the Association instances in ebRIM. It allows a 
client to specifiy that it wants a specific repository item returned, along 
with all repository items that are "associated" with that item by virtue of 
an Association instance that links together their RegistryEntry instances.

For example, return a given "core component" along with all other "core 
components" that are used in its definition. The query assumes the 
existence of a "UsedBy" associationType (cf ebRIM Section 9.1.2) and allows 
the client to specify that it wants that link followed a specified number 
of times, or recursively, for an arbitrary number of times.

>    * Remove WithDescription. It is not needed as the common use case is 
> that the user already has a RegistryObject (with decsription) before they 
> use (P1)
I agree that this is a rather clunky feature that could be removed! I'll 
even volunteer to make sure it does not appear in what gets sent to the 
Editor. But I'd like explicit agreement on that from the team before I do it.

This feature to optionally not include the description was added way back 
in Oasis Registry/Repository history when descriptions could be several 
thousand characters. Now that they can only be a maximum of 256 characters 
it's a much less useful feature to be able to suppress the description.

>    * Remove RepositoryItem. It has no basis in RIM. Repository items are 
> returned as Mime attachments and not as XML fragements in the response. (P1)


I agree that repository items described by ExtrinsicObject metadata 
instances are returned as Mime attachments and that the "contentURI" 
attribute is used as a way to distinguish among multiple attachments. But 
ClassificationScheme and Package do NOT have a "contentURI" attribute so 
they cannot be referenced in that way. It's not a problem here because they 
can be returned using the XML already specified as part of the 
SubmitObjectsRequest. That's exactly what ReturnRepositoryItem does!

>    * Remove WithdrawnObject. It has no basis in RIM (P1)


But it does have a basis in RIM. At the Vancouver meeting in February we 
approved an option on the RemoveObjectsRequest to remove either: a registry 
entry and its associated repository item, or just the repository item 
associated with that registry entry. These options are identified by the 
"deleteScope" attribute on RemoveObjectsRequest. If the repository item is 
removed, but the registry entry remains, then that situation is brought to 
the client's attention with the "WithdrawnObject" element as part of a 
ReturnRepositoryItemResult.

-- Len


**************************************************************
Len Gallagher                             LGallagher@nist.gov
NIST                                      Work: 301-975-3251
Bldg 820  Room 562                        Home: 301-424-1928
Gaithersburg, MD 20899-8970 USA           Fax: 301-948-6213
**************************************************************



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


Powered by eList eXpress LLC