-
Notifications
You must be signed in to change notification settings - Fork 122
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
work.is_part_of metadata attribute usage in forms conflicts with AdminSet behavior #1461
Comments
Short of rejiggering the Work/AdminSet relationship to use a different predicate -- which I'm not sure we want to change in Hyrax 2.0.0, and Hyrax 3.0.0 shouldn't come out until summer 2018 -- could folks use a different predicate for their descriptive metadata? Consulting the @samvera/hyrax-metadataists! |
@mjgiarlo yes, folks obviously could use a different predicate; however, none that we are aware of, stand out as obvious or clear candiates. Hence this ticket. We've discussed alternatives internally to DCE and have not come up with useful alternatives - partially because the specific current use case also implements dc.has_part, dc.has_format, dc.is_format_of, dc.replaces, and dc.is_replaced_by. In this broader context, using a non-dc predicate for is_part_of (because of the collision with internal Admin Set use) breaks a clear pattern present with other descriptive metadata - i.e. there's a clear parallelism when describing things using dc.is_part_of / dc.has_part that is broken when you use other_vocab.is_subunit_of / dc.has_part. I guess my questions would be "How much are AdminSets meant to be externally referenced or to support behavior outside the repository?" and "Are there characteristics of the AdminSet relationship that would be more clearly represented by a narrower or application specific predicate?" If the AdminSet relations are meant to be first class relationships that are actionable outside of Samvera, then dc.is_part_of probably does make sense. If AdminSets really aren't meaningful outside the context of Samvera and it's workflows, then I'd lobby to free up the current predicate and choose something more narrowly defined. |
I tend to agree with @mark-dce - for what is essentially an internal relationship, it would seem better to have an internally minted predicate like fedora does. What would be the impact of changing it? ... would it mean any live Hyraxes would need to run an update script to 'refresh' the metadata? |
When using RDF we should be able to have multiple subsystems making assertions using the same predicate. It seems to me that the bug here is that belongs_to is replacing assertions it shouldn't. |
@jcoyne can you say more? The behavior we are seeing is that, given a work with I think it's possible, in principle, to filter the Is there a solution you have in mind? |
Yes, I would think it's encumbent on the form to filter just the types it expects. I don't think it's improper for Works to express their relationships to AdminSets by using DC.isPartOf. Perhaps your usage needs a more narrowly scoped predicate? |
As noted, this would involve retrieving any fedora objects in the Relation to check their types. My sense is that this would be prohibitively expensive. |
This is just a comment from the Tufts' perspective: isPartOf is commonly defined, and frequently used, by most cultural heritage institutions, and by limiting it to an AdminSet membership, I worry that you would be forcing institutions to pick new a predicate for this concept. That institutions would all pick the same predicate seems unlikely, and that may impact future interoperability. It strikes us that a backend local predicate for the AdminSet makes more sense, as this would allow for more straightforward mappings. |
I don't know if it's a good idea for AdminSet to move away from using dcterms:isPartOf but it does seem to be causing conflicts. The following suggested predicates can either be looked at as a different predicate to use for Work/AdminSet relationships or offered as something that could be used by folks for their descriptive metadata when adding a field to express this kind of connection: frbr:partOf - http://purl.org/vocab/frbr/core#partOf All of these require the object of the statement to be a URI of some kind but that makes sense to expect that if an object in Hyrax is part of something else that something else is also a digital object that can be referenced via URI. If the use of AdminSet is as internal as folks here are describing, it might be worth considering an internally-defined predicate for the Work/AdminSet connection so this kind of conflict is avoided altogether. |
Could we get that information from Solr? If not -- and I suspect the concerns about performance are shared -- I'm fine with changing this predicate in Hyrax If we do make that decision, I would politely ask that whoever makes this change also commit to the following bits of work:
Do folks find that reasonable? |
@elrayle - Is there anything from the Collections Extensions work that would impact or inform how this relationship should be defined between AdminSet and Work? |
@mjgiarlo - The DCE team would like to make a counter-proposal that might allow us to approach the issue in a more incremental and flexible way: PHASE ONE
This is sufficient to meet the needs of the Greenfield 2.x adopters who wish to use PHASE TWO This allows folks with existing 1.x based implementation to plan a scheduled data (predicate) migration independently of updating their application to use the 2.x codebase. The sooner we can do steps 3 and 4 the better, but the wouldn't have to be in place at the 2.0.0 release. The hardest part here might be reaching consensus on the new predicate. PHASE THREE If folks want to carry forward the use of =========== |
I like @mark-dce's breakdown and phased implementation. It makes sense to narrow the administrative scope of this predicate |
@mjgiarlo can we get back with a PR by Monday AM 10/25 if possible and otherwise let it slide to 2.1? (We need it in a project that is shipping immanently and it would be cooler to have it here than in the local project, but I'm not 100% sure what else we need to get done first) |
@mark-dce 9/25? Absolutely. |
Allow a custom predicate to be used to relate objects to their administrative sets. The default remains `dcterms:isPartOf`. This is the first step in a process to change the default predicate for this relation. A follow-up PR, to be merged after the Hyrax 2.0.0 release, will provide warnings for changed usage and add migration tooling. This addresses "Phase 1" of #1461 as decscibed at #1461 (comment).
@no-reply Can you point me to code where...
Here is what I see...
|
@no-reply I am hoping you can respond soon. I would like to have this resolved before 2.0 is released. I would like to be sure I understand the issue you are seeing, especially, with respect to the need for round trips to fedora. |
@elrayle you can reproduce the original issue defining a property using the predicate. e.g. The issue with respect to data round trips is that the member object does not know the type of the objects in the I'm confused about the need to resolve this prior to 2.0. Can you explain the issue the collections group has with a configurable predicate? |
@no_reply Asked the question in Slack...
Short Term RealityThe Collection Extensions (CE) work currently mimics Admin Sets as Collections in the UI. Processing for new/edit/show are still handled separately with Admin Sets using the original admin set code and collections using the CE code. Processing for workflows and visibility remain only available to Admin Sets. The reasoning was two-fold...
Long Term GoalThe long term goal is still to explore having Admin Sets be just another collection type. The CE work has kept this in mind and made some choices that set the stage for that work. The advantages are...
Conflict with the proposed phased change to Admin Set predicateIf Admin Set becomes just another collection type, then according to the PCDM model, the relationship between the Admin Set (i.e. Collection) and the Works in it would be...
To use any other predicate sets the stage for requiring a migration of data at a later date. |
All of that background makes sense to me, but I still can't connect the dots to how it changes the assessment of the issue we arrived at in early August. The issue at that point was that we currently use a common predicate Where we landed was that we would make the predicate configurable in 2.0.0, with an eye toward changing the default in a later release, after migration tooling had been released. The questions I have are:
|
I see where you are coming from with the desire to have the migration tooling in place prior to requiring a change in the predicate. I would be more comfortable with this proposal if... Phase 1: Set the default to This would allow existing sites to avoid migration issues, but encourage new sites to use the predicate from the PCDM:model. |
Does this work out of the box? I believe this runs into the same predicate conflict issues that gave rise to the original issue. I.E. |
@no-reply Can you show me the exact code that is causing the problem of returning all objects with dc:isPartOf? Ideally pointing me to the code in github so I can see it in context. |
@no-reply I see where |
@elrayle the issue, its manifestation in the UI, and the steps to reproduce are documented in the issue text. I'm not sure what to add. |
@elrayle - let me see if I can provide my "manager's hat" understanding of the issue and proposal. Other folks ( @mjgiarlo @no-reply @jeremyf @geekscruff ) may want to jump in with more technical or historical background. Background PROBLEM Deeper Analysis Proposed immediate solution
Proposed long term solution
The prior discussion centered around the two-phased solution since there's general consensus not to delay the 2.0.0 release for community agreement on a new predicate. |
@elrayle Re-reading the entire thread an your comments, it seems like there is general consensus that the community would like to move away from the current implementation's use of
Does that seem like the right set of questions? |
@mark-dce Yes, I agree with your summary. Several additional considerations.
|
@elrayle @mark-dce @no-reply @jlhardes cc: @vantuyls Good points, all. I'm hesitant to change the default this late in the release process of 2.0.0. Could we address this via documentation in the meantime, letting folks know of collection extension changes that are coming and recommending usage of the community-preferred predicate (from @mark-dce's |
Bumping this to 3.x. The customizability included in the original work seems to have addressed the immediate issue. |
Added to help with finding this issue. Also get the following error in samvera 2.4.1: |
There are two changes to `BasicMetadata` between `CurationConcerns` 1.7.x and `Hyrax` 2.3.x: - `dc:isPartOf` is now bound to AdminSets by default; (see: samvera/hyrax#1461). We need to determine if the existing app is using `dc:isPartOf`. If so, we can set `config.admin_set_predicate = some_other_predicate`, and reinstate the `part_of` property. - The property `#rights` (predicate: `dc:rights`) has been renamed `#license`. The best solution is may be to alias `#rights` and `#rights=`. If we need to retain the display name, that can be handled with `i18n` values. There's a third issue which seems to exist in the legacy app: - In `BasicMetadata`, `#keyword` is mapped to `dc11:relation`. We have a custom mapping from `#relation` to the same predicate. This makes these properties duplicative. We need to look closer at the existing code to determine whether we should remove `#keyword`, `#relation`, or allow them to remain as properties projecting on the same BGP. Connected to #45.
Descriptive summary
In Hyrax 2.x, isPartOf is used for AdminSet membership. If you create a Hyrax app that uses
isPartOf and include it in a form, you're unable to save the work and if you edit an existing object
the property is replaced with a string.
Rationale
isPartOf is a common metadata term and it would be reasonable to think that institutions may want
to have the term be editable in forms.
Expected behavior
Adding is_part_of to the work's form object behaves like any other attribute.
Actual behavior
After adding work.is_part_of to the form:
Trying to save a new work that has a
work.is_part_of
attribute raises this error:Steps to reproduce the behavior
is_part_of
toself.terms
Related work
curationexperts/epigaea#149
The text was updated successfully, but these errors were encountered: