Some very interesting discussions. After digesting and thinking some more, my views are:
> (a) when ingesting content model objects, should we enforce a RELS-EXT assertion to a valid content model for content model objects? or This is difficult, conceptually, I think. We only know that it is a content model object by presence of the hasModel assertion to the <info:fedora/fedora-system:ContentModel-3.0> object, so can't directly validate for presence of that relationship. We should not infer that it is a content model by any other means - for instance the presence of content-model-reserved datastream such as DS-COMPOSITE-MODEL as conceptually at least, the "reserved" status (or interpretation) of that datastream is only by virtue of it being a content model object - there should be nothing that prevents data objects for instance having a datastream of that name. (Furthermore, conceptually at least -- and certainly not currently implemented that way in code -- the interpretation of any "reserved" datastream should be through content models; for instance DC, RELS-EXT and RELS-INT *should* be interpreted as reserved by dint of the object belonging the default data object content model). In short, I think that any interpretation of the type/kind of object should be through explicit typing of the object through a hasModel relationship. However there is probably some useful validation that maybe could be done through ECM. For instance validating that the target of a data object's hasModel relationship itself asserts membership of a content model content model, similarly for the other CMA relationships. So this particular validation would in fact be validation on ingest of a data object - validation that the network of relationships associated with the data object are correct. I like the idea of configurable levels of validation, ie validation through an explicit call, "soft" (ie warnings only) validation on ingest, hard validation (error) on ingest, maybe configurable levels of what to validate. The default behaviour should be as it is at the moment (therefore not imposing any restrictions on order of ingest). > (b) should we create a Resource Index triple identifying the fedora-system:ContentModel-3.0 as a default for content model objects when none is specified in RELS-EXT? As for (a), if the only way of identifying that an object is a content model object is through its hasModel assertion, then this is conceptually difficult. > (c) should we stop CMA features working (eg the dissemination execution) if the object identified as the content model does not itself identify through RELS-EXT that it is a content model object? Probably. A question as to when - should we explicitly introduce additional checks now, or should we leave this to when they are required by other features (for instance, introducing different types of system content models, allowing different ways of describing objects and the services available to them - if this was done then presumably it would be necessary for the hasModel assertion to be present in order to correctly interpret the cmodel/sdef/sdep objects). The downside of doing this sooner rather than later is that it could break existing, working, content models that don't make the hasModel assertion. (However it could be argued that it is a bug that these content models just happen to work at the moment.) Taking on board the thoughts on levels of validation, that could be applied here also, the implementation of this could consist of default "do nothing" behaviour, and configurable settings that alternatively generate warnings or errors when the missing assertions are discovered as part of service execution. (Possibly the default should be warnings, to alert folks, as the hasModel assertion may be required in the future). Steve > -----Original Message----- > From: aj...@virginia.edu [mailto:aj...@virginia.edu] > Sent: 29 October 2010 23:12 > To: Support and info exchange list for Fedora users. > Subject: Re: [fcrepo-user] Cmodel discovery? > > > Aaron-- > > You don't have to convince me of the dangers. I have ugly > memories of watching Ross Wayland and Thorny Staples being > chafed by the straightjacket of strong integrity for > objects/bdefs/bmechs that was baked into the 2.x series. {grin} > > With time, though, I've forgotten the grim images enough to > reprice in my mind the guarantees that such strong > constraints buy. But that's only my situation, and I accept > your narrative and its import and the cautions they imply. > > Let me suggest the existence of a set of categories of > repository behavior desirable by different users, categories > that might be directly connected with scale. The cost of > correcting a failure that is publicly visible (e.g. a > dissemination that fails) is often in a direct relationship > with some function of the size of the repository. It may be > that such a cost is very high to some users (who would then > prefer to work in that comfortable, stylish, and supportive > straightjacket) but a marginal and uninteresting item to > others (who find it confining). > > I'm impressed by Scott's suggestion of parameterized > validation behavior, and I wonder if we could imagine > partitioning his proposed CMA validation flag further into a > module or service to include some of the options we've been > discussing, and perhaps others. Could we leverage some of the > enhanced content model validation functionality to support a > range of sizes of straightjacket? {grin} > > While I understand and accept that forcing every user to > construct workflows that fulfill these kinds of integrity > would be wrong, I believe that there are enough users who > would really benefit from the workflow feedback and long-term > stability that such integrities provide that it's worth > considering such provision. > > --- > A. Soroka > Digital Research and Scholarship R & D and Online Library Environment > the University of Virginia Library > > > > > On Oct 29, 2010, at 4:32 PM, Aaron Birkland wrote: > > > > >> The CMA is such a core part of the repository architecture > that I think a situation in which the repository can be said > to be working but the CMA can't be is a bad situation to enable. > > > > Ah, I see your perspective. "working" is a bit of a sticky > point here. > > In conceptualizing the CMA, here were a few thoughts or > principles that > > motivated its design: > > > > - Users may choose to ignore the CMA - simply preserving > and providing > > access objects without an explicit model is a valid use case. > > > > - The core repository is not concerned with referential integrity of > > RELS-EXT relationships. > > > > - There shall not be a prescribed order in which objects must be > > ingested into the repository. > > > > - Service binding will occur dynamically. If this cannot happen for > > some reason (missing objects, relationships, etc), then a > runtime error > > is reported. > > > > These thoughts were partly in response to problems > encountered with the > > precursor to the CMA. In particular, the precursor *did* > enforce a kind > > of referential integrity - and this turned out to be a bit of a sore > > point. In response, there was a trend to more lightweight > and dynamic > > behaviour. > > > > So, in other words, it was intentional that the core > repository would be > > capable of ingesting and preserving objects that don't yet > contribute to > > a functioning CMA behaviour. I think it was viewed that > higher-level > > validation, correction, etc could occur later (if at all), > or as part of > > some other functionality on layered on top of the basic > core and enabled > > separately. > > > > Perhaps somebody can give more on the history and > motivation. It could > > be worth revisiting if the resulting behaviours are seen as > generally > > unintuitive. > > > >> It's not obvious to me how feedback could be supplied to > avoid that, but perhaps the ingest method could continue > without the additional validation of a) but could provide a > response notation like "Ingested with PID", "Ingested as > content model with PID", "Ingested as service definition with > PID", etc. for the system-defined models? It could even be > extended to user-defined models, which could provide valuable > feedback in a workflow. But admittedly, that would induce > more complexity and even if carried out cleverly, might break > older fragile installed workflows... > > > > That is an interesting line of thought. > > > > -Aaron > > > > > > > -------------------------------------------------------------- > ---------------- > > Nokia and AT&T present the 2010 Calling All > Innovators-North America contest > > Create new apps & games for the Nokia N8 for consumers in > U.S. and Canada > > $10 million total in prizes - $4M cash, 500 devices, nearly > $6M in marketing > > Develop with Nokia Qt SDK, Web Runtime, or Java and Publish > to Ovi Store > > http://p.sf.net/sfu/nokia-dev2dev > > _______________________________________________ > > Fedora-commons-users mailing list > > Fedora-commons-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > > > -------------------------------------------------------------- > ---------------- > Nokia and AT&T present the 2010 Calling All Innovators-North > America contest > Create new apps & games for the Nokia N8 for consumers in > U.S. and Canada > $10 million total in prizes - $4M cash, 500 devices, nearly > $6M in marketing > Develop with Nokia Qt SDK, Web Runtime, or Java and Publish > to Ovi Store > http://p.sf.net/sfu/nokia-dev2dev > _______________________________________________ > Fedora-commons-users mailing list > Fedora-commons-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > ------------------------------------------------------------------------------ Nokia and AT&T present the 2010 Calling All Innovators-North America contest Create new apps & games for the Nokia N8 for consumers in U.S. and Canada $10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store http://p.sf.net/sfu/nokia-dev2dev _______________________________________________ Fedora-commons-users mailing list Fedora-commons-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/fedora-commons-users