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
