GeoNode / geonode

GeoNode is an open source platform that facilitates the creation, sharing, and collaborative use of geospatial data.
https://geonode.org/
Other
1.44k stars 1.12k forks source link

complete ISO contact roles per ressource base with multiplicity #10290

Closed gannebamm closed 11 months ago

gannebamm commented 1 year ago

Is your feature request related to a problem? Please describe. I want to use multiple CI CONTACT roles in the metadata of my datasets via the user GUI.

a) I can not add multiple CI CONTACT roles to a dataset in the metadata wizard / advanced metadata editor. b) I can not use all of the CI CONTACT roles ISO 19139 provides.

additionally, the changes shall be used by pycsw: c) pycsw does not respond with all CI CONTACT roles given. It will only respond with POC ('pointOfContact'), the owner ('originator') and metadata author ('author').

I can put 1:N metadata roles in the Django admin area. This does work since Contact Roles are already implemented in the model:

https://github.com/GeoNode/geonode/blob/6e093976049b6bff7d7af70f76df14e0f2f40e0a/geonode/base/models.py#L98-L109

which uses this enum with all ISO CI CONTACT roles: https://github.com/GeoNode/geonode/blob/6e093976049b6bff7d7af70f76df14e0f2f40e0a/geonode/people/enumerations.py#L21-L34

but currently, you can only set POC and metadata author and owner by the metadata wizard. Some example of this is:

grafik

https://github.com/GeoNode/geonode/blob/6e093976049b6bff7d7af70f76df14e0f2f40e0a/geonode/base/models.py#L1850

Describe the solution you'd like Being able to use all ISO CONTACT roles:

author: party who authored the resource processor: party who has processed the data in a manner such that the resource has been modified publisher: party who published the resource custodian: party that accepts accountability and responsibility for the data and ensures appropriate maintenance of the resource point of contact: party who can be contacted for acquiring knowledge about or acquisition of the resource distributor: party who distributes the resource user: party who uses the resource resource provider: party that supplies the resource originator: party who created the resource owner: party that owns the resource principal investigator: key party responsible for gathering information and conducting research

While POC and owner are CI CONTACTs with a multiplicity of 1. Meaning there is only one POC and owner. The other provided roles can have multiple persons involved. Therefore we need an N:M list in the metadata wizard like this:

grafik

Furthermore, the pycsw output shall be changed to respond with all possible contact roles. This likely needs changes here:

https://github.com/GeoNode/geonode/blob/6e093976049b6bff7d7af70f76df14e0f2f40e0a/geonode/catalogue/templates/catalogue/full_metadata.xml

Describe alternatives you've considered

Adding new contacts via the Django admin interface. Nonetheless, c) will not work.

Additional context

Example of a CSW response: https://master.demo.geonode.org/catalogue/csw?request=GetRecordById&service=CSW&version=2.0.2&id=76f604f1-99f9-4485-95cb-119815b64d93&outputschema=http%3A%2F%2Fwww.isotc211.org%2F2005%2Fgmd&elementsetname=full

For a dataset with different users for POC, the metadata author and owner.

mwallschlaeger commented 1 year ago

Hey gannebamm, I'm also very interested in this feature. We're currently adopting the metadata schema for our geonode installation. I guess this changes we pretty much are similar to the ones we are planing. Would the other members of the SC accept this changes to the geonode core?

t-book commented 1 year ago

@mwallschlaeger My +1 ;)

afabiani commented 1 year ago

Just few headsup:

mwallschlaeger commented 1 year ago

Thanks for your reply @afabiani and @t-book

I also think keeping the owner as it is is a wise choice. I will come up with an PR as soon as I'm rdy.

gannebamm commented 1 year ago

@afabiani, since we will need to define third-party contact, do you think something like this #10342 is feasible?

MalteIwanicki commented 1 year ago

Hey @mwallschlaeger, did you start already with development on this? If so could you include me in the development process? I picked this issue up today and want to finish it in the upcoming two weeks. Thanks

mwallschlaeger commented 1 year ago

@MalteIwanicki yes i'm on it. but it requires more investigation of code as i thought. we can discuss on working together on this. pls contact me via mail or glitter

gannebamm commented 1 year ago

The corresponding draft PR #10367 (which is not listed here for some reason)

gannebamm commented 1 year ago

@giohappy @afabiani Since the GeoNode 4.1 release was postponed but is likely imminent, shall we try to get this new feature into the upcoming 4.1 release?

mwallschlaeger commented 1 year ago

I will continue my work on the current change requests later this week, so you could have another look into this.

giohappy commented 1 year ago

@gannebamm there are plans to release a new version a few weeks after 4.1.0, that should include the refactored faceting/filtering system. I think it will be safer to wait for that release, and take the time to test the multiple ISO roles better, unless you have urgencies.