← Prev in month ← Prev in thread
Next in thread → Next in month →

OASIS Regrep TC - Proposal #4 MetadataFilter query

From
Len Gallagher <>
Date
2000-12-15T15:49:06+00:00
ID
Thread
OASIS Regrep TC - Proposal #4 MetadataFilter query
Regreps,

Proposal #1 from yesterday assumes the existence of a "RegistryEntryQuery"
that is a "MetadataFilter" on registry metadata.  Such a MetadataFilter
would be a very simple XML-defined filter on the attributes of the
RegistryEntry class and all of its dependent subclasses. The result of
execution of a MetadataFilter query would be a set of registry entry
references. That set of references could then be supplied as the input to a
GetRegisteredObject() or GetRegistryEntry() registry service.

Consider the following XML syntax:

<!ELEMENT MetadataFilter
  ( 	RegistryEntryFilter?,
     	(AssociationGivenFilter  |  AssociationAssocFilter )?,
     	ClassificationFilter?,
    	ExternalDataFilter?,
    	AlternateNameFilter?,
     	DescriptionFilter?,
     	ContributionFilter?,
     	SubmittingOrgFilter?,
     	RequestFilter?,
     	ContactFilter?
     	ImpactFilter?     	  )>

Each "filter" subelement of a MetadataFilter would be a simple predicate on
one of the attributes of the identified class.  For example, one of the
AssociationFilters would be a predicate to determine if the associationRole
attribute of the Association class is equal to "val", the code for
"Validates To".

The algorithm to determine the result of a MetadataFilter query would be an
expansion of the following steps:

1) Begin with the set RE of all persistent RegistryEntry instances.

2) Filter out all registry entries in RE that do not satisfy a conjunction
of the identified RegistryEntryFilter predicates. If there are none, then
the set RE is left unchanged.

3) If AssociationGivenFilter predicates are present, then connect each
remaining element x in RE to its dependent Association instances with x as
the givenItem. If x has no dependent asssociation instances that satisfy
the conjunction of AssociationFilter predicates, then remove x from RE.
NOTE: If x has no dependent associations, then it is removed because it
does not satisfy the condition.

4) If ClassificationFilter predicates are present, then connect each
remaining element x in RE to its dependent Classification instances. And
connect each Classification instance to its dependent LevelValuePair
instances. If x has no dependent classification or levelvaluepair instances
that satisfy the conjunction of ClassificationFilter predicates, then
remove x from RE.

5) Continue as in steps 3 and 4, for all of the other filters identified in
the MetadataFilter query.

6) The result of the query is the remaining elements of RE.

The predicates themselves can be of four different types. Let attName be
the name of an attribute in some class of the InformationModel. Then:

-- AttNameEqual is an equals predicate to test if the attName attribute 
   of a class instance is equal to a specific value.

-- AttNameContains is a case-insensitive contains predicate to test if the
   attName attribute of a class instance contains a specific string value.

-- AttNameBetween is a between predicate to test if the attName attribute of
   a class instance is between two specific values.

-- AttNameIn is an IN predicate to test if the attName attribute of a class
   instance is equal to one of a list of specific values.

The AttNameIn predicate will always be defined in terms of the AttNameEqual
predicate as follows:

   <!ELEMENT AttNameIn ( AttNameEqual+ )>

Note that the AttNameIn predicate is a simple way to specifiy logical OR
predicates. All of the other predicates are interpreted as AND predicates,
i.e. terms in a conjunction.

The complete XML syntax for MetadataFilter is attached as a text file.

EXAMPLE

Consider a user who wants to identify all registry entries that represent
stable "Business Process" objects that are claimed to validate to a
specific business process DTD defined by "ebXML" and won't expire in the
next six months. 

The following MetadataFilter query should retrieve the desired registry
entries:

<MetadataFilter>
<RegistryEntryFilter>
   <DefnSourceEqual source="EBXML" />
   <ObjectTypeEqual type="busProc" />
   <RegistrationStatusIn>
      <RegistrationStatusEqual status="reg" />
      <RegistrationStatusEqual status="sup" />
      <RegistrationStatusEqual status="rep" />
   </RegistrationStatusIn>
   <StabilityEqual stability="comp" />
   <FeeStatusEqual status="free" />
   <ExpirationDateBetween begin="2000-12-15" end="2001-6-15" />
</RegistryEntryFilter>
<AssociationGivenFilter>
   <AssociationRole role="val" />
   <AssocItem itemURN="us:com:ebxml:BusProcessDTDv1.2" />
</AssociationGivenFilter>
</MetadataFilter>

Talk to you at the teleconference -- details just below!
  
-- Len


At 01:36 PM 12/8/00 , Lisa Carnahan wrote:
>Hello All,
>
>The OASIS Reg/rep TC will be having a conference call on Friday, December 
>15 at 1:00 Eastern time.   You'll get the agenda early next week.
>
>Details:
>USA Toll Free Number: 888-566-5784
>USA Toll Number: +1-212-547-0361
>PASSCODE: 45764
>LEADER: Ms Lisa Carnahan
>
>--lisa
← Prev in month ← Prev in thread
Next in thread → Next in month →