I think an approach which is static should be considered.  In this 
approach, the content models of superclasses are incorporated into the 
content models which are stored in objects immediately adjacent to the 
data object prior to use (a priori).  In some ways this is ORE inspired 
where we confine ourselves to aggregations and avoid having to solve 
graph closure problems in real time.  Using this approach, only one 
operation is needed to obtain each adjacent content models which 
contains all the inherited information from their superclasses (which 
can be combined into one general operation to grab all the models as 
suggested by Asger).  Using this approach dramatically reduces latency 
for getting inheritance information especially if we begin to consider 
federation where content model objects (and service definitions) may not 
be co-located within the same Fedora repo instance.  Update of the 
adjacent content models happens only when a change occurs to the 
superclasses.  This approach would facilitate operation of Fedora 
without requiring the use of a triple-store.

To make the services (disseminations) fast an internal cacheing 
mechanism is currently used.  Its operation needs to be considered in 
the design.  Also, content models (with service definitions) serve (or 
should serve) several purposes.  The first is service binding (most 
latency sensitive), second validation (care needs to exercised here 
regarding what operations are appropriate within the repository and what 
can be done externally), and third object construction (which can 
substantially be done outside the repository).  When and where these 
functions happen need to be considered.

If possible, adding additional methods can be done by extending system 
content models and service definitions putting the operation on the 
object rather than extending the APIs.

This note is just discussion, I am not sure which is the best way to 
support inheritance---a static or dynamic approach, with or without 
triple-store assistance, and where to put the related methods.  But I 
certainly support figuring out how to do inheritance.  Please consider 
when the inheritance occurs, performance impact and how to mitigate 
latency concerns, and how to minimize code changes.  In particular, I 
think the Fedora Repo needs to move to a microkernel architecture where 
as many functions as possible are pushed into plug-ins or loosely 
coupled service bindings.  I hope this helps provoke additional discussion.

Daniel W. Davis
http://fedora-commons.org
[email protected]




Asger Blekinge-Rasmussen wrote:
> Hi
>
> We, with the Enhanced Content Models, want to support content model
> inheritance. Due to the freedom for Fedora Content Models we can easily
> define a inheritance relation between content models, and inheritance is
> thus supported. No problem there.
>
> But only applications that understand this inheritance relation, can use
> this inheritance system. And, more importantly, disseminator bindings do
> not understand any sort of inheritance.
>
> I have checked the Fedora code. There are 32 usages of the reference
> Constants.MODEL.HAS_MODEL, to get the content models of a object. To me,
> this feels like something that should be collected in a general method,
> like getContentModels(pid) or the like. 
>
> I would like to collect these usages, and make this general method, but
> only if work like this would be interesting to Fedora. This is not
> something that I would like to maintain myself, rather it should be
> integrated into the Trunk when the code have been approved.
>
> If this is a feature the Fedora Developers would like, I will start work
> on it soon.
>
> Regards
>
>
> ------------------------------------------------------------------------------
> Enter the BlackBerry Developer Challenge  
> This is your chance to win up to $100,000 in prizes! For a limited time, 
> vendors submitting new applications to BlackBerry App World(TM) will have
> the opportunity to enter the BlackBerry Developer Challenge. See full prize  
> details at: http://p.sf.net/sfu/Challenge
> _______________________________________________
> Fedora-commons-developers mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/fedora-commons-developers
>   

------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time, 
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize  
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
Fedora-commons-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fedora-commons-developers

Reply via email to