In fedora 2.x and 3.x these fields couldn't be directly set, but instead were maintained by the repository in response to repository operations. Furthermore there was a lossless and documented serialization format (and underlying storage format) in which these properties appeared: FOXML As such, when ingesting by posting FOXML those values would be set as part of an ingest. Therefore, when you ingested from FOXML, the recorded created date for datastreams and such were NOT the date you ingested the foxml, but the values from the FOXML.
In working on the export/import effort, there's a desire to achieve similar functionality. Our current construction of "fedora managed triples" prevents us from ever modifying these values as part of normal REST operations. In determining how best to support a lossless export/import process the least objectionable option from my point of view would be releasing some properties from being fedora-managed in the strictest sense. So instead of having fedora:created, fedora:lastModified, fedora:lastModifiedBy and fedora:createdBy be server-managed triples, instead they're (mostly) normal triples that can be manipulated like any other, except when not present in requests may be set automatically as a convenience feature of the fedora community implementation. Whether other implementations have this feature is up to them.
This recharacterization and relaxing of the constraints currently in the fedora community implementation is backwards compatible and arguably a non-breaking change.
While some might argue that they depend on those triples as an unimpeachable audit trail, I would point out that the fcrepo-audit effort provides a more comprehensive and reliable source of that information.
While a cursory examination suggests that relaxing the rules for just those triples is enough to allow an unversioned resource to be roundtripped (export followed by import) without apparent differences, the challenges posed by versioning require a more substantial change. After more thorough review of the current implementation and the nearly-completed spec, I'll try to make a recommendation for that next week.
In the mean time, I'd like to gauge the level of support or revulsion at this proprosed change to the community implementation (and possibly the spec if it enumerates fcrepo server managed triples).
If this change is as uncontroversial as I hope, it would be great to get it implemented in advance of the import/export sprint in May so that developers and testers have a version of fedora against which to implement the updated import/export tooling.
Thanks for your attention and feedback.
-Mike Durbin
While I share some your concerns, the current motivation is that if there's no way to export content from one fedora instance and import it back into another instance without detectable differences between the resources then we have no way to effectively backup and restore content. That eliminates huge swaths of use cases for Fedora. (The current fcr:backup, fcr:restore is not part of the spec and will not work across implementations, and is relatively inflexible in that you can backup everything or nothing, you cannot export a lossless representation of a resource or subgraph)
Other approaches (like removing those properties from the RDF that represents a fedora resource) represents a huge breaking change and a significant loss of functionality.
As a clarification, if we decide to change the way the community implementation treats these triples we could take steps to address your concerns about having to be suspicious about the validity of these values if opened up for user updates. Some options that come to mind include:
- make this behavior optional, it would allow one to configure one's repository one way to allow for imports (restoration of backups made using the export utility or for migration) and another for normal use. This would truly make the feature a non-breaking change since a setting would ensure the current behavior.
- make this operation privileged where only administrative users can update these properties. This may not be sufficient for people who don't use WEBAC or give their front-end application administrative privileges (as we have to due to some webac compatibility issues with the hydra code we're using for some of our applications built on fedora)
- limit the ability to update these operations to PUT requests. PATCH updates to these properties smacks of mischief.
I'd support implementing all three of these constraints on the described behavior change, though admittedly I haven't evaluated the difficulty of implementing any of them.
-Mike
________________________________________
From: fedor...@googlegroups.com [fedor...@googlegroups.com] on behalf of Adam Wead [amste...@gmail.com]
Sent: Friday, April 28, 2017 3:14 PM
To: Fedora Tech
Subject: Re: [fedora-tech] Propoed change to fcrepo server-managed triples
>> To unsubscribe from this group and stop receiving emails from it, send an email to fedora-tech+unsubscribe@googlegroups.com.
>> To post to this group, send email to fedor...@googlegroups.com.
>> Visit this group at https://groups.google.com/group/fedora-tech.
>> For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to the Google Groups "Fedora Tech" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to fedora-tech+unsubscribe@googlegroups.com.
> To post to this group, send email to fedor...@googlegroups.com.
> Visit this group at https://groups.google.com/group/fedora-tech.
> For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Fedora Tech" group.
To unsubscribe from this group and stop receiving emails from it, send an email to fedora-tech+unsubscribe@googlegroups.com.