-
Notifications
You must be signed in to change notification settings - Fork 90
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
Harvest attribution roles #3149
base: master
Are you sure you want to change the base?
Harvest attribution roles #3149
Conversation
Support FOAF.name for dct:publisher, dct:creators, dct:contributors
3d8fe90
to
609150c
Compare
609150c
to
e200393
Compare
…services when generating the fixtures Also auto-set a role on the contact point if there is none - if email or contact_form present: `contact` - else `creator`
…V:qualified_attribution`
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for all the update work and added tests, fixtures & co!
udata/core/dataset/rdf.py
Outdated
if contact_point.role == "publisher" | ||
]: | ||
# There's already a publisher, so the owner should instead be a qualified attribution. | ||
owner_role = PROV.qualified_attribution |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
qualifiedAttribution
points towards an Attribution and not directly an agent I think.
See maybe this section in W3C DCAT as well as the DCAT-AP one and finally the GeoDCAT-AP one.
I am not 100% clear on the best predicate to use for an organization if we have a dedicated publisher contact point.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, having gone through the links you provided, here's a non-exhaustive list of possible roles:
What do you think? Did I miss any? Do you have a favorite?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's go for geodcat:distributor
for now? Since it's the organization distributing the data on data.gouv.fr, I would say it's the closest role.
Thanks you very much @maudetes for the detailed review, I believe i've addressed all your concerns, or answered with comments, would you mind having another look to validate that my changes are in line with what you were thinking, and letting me know what you think of the remaining things to decide? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👏
The CI is failing for now, which prevents me from deploying on our test environment :)
udata/core/dataservices/rdf.py
Outdated
@@ -43,7 +43,11 @@ def dataservice_from_rdf( | |||
dataservice.base_api_url = url_from_rdf(d, DCAT.endpointURL) | |||
dataservice.endpoint_description_url = url_from_rdf(d, DCAT.endpointDescription) | |||
|
|||
dataservice.contact_point = contact_point_from_rdf(d, dataservice) or dataservice.contact_point | |||
# TODO: what are the type of contact points supported on dataservices? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we can go with this indeed :) Not sure we need the list()
, I think a generator would do?
udata/core/dataset/rdf.py
Outdated
if contact_point.role == "publisher" | ||
]: | ||
# There's already a publisher, so the owner should instead be a qualified attribution. | ||
owner_role = PROV.qualified_attribution |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's go for geodcat:distributor
for now? Since it's the organization distributing the data on data.gouv.fr, I would say it's the closest role.
* `contact_point` is now renamed to `contact_points`, a list * Also import "rpg" dataset fixture * Update the fixtures without nesting the dataset in reuses, discussions, resources and dataservices * Update the results.json with the latest changes in opendatateam/udata#3149
Part of datagouv/data.gouv.fr#1588
dct:publisher
,dct:creators
,dct:contributors
.dct:publisher
, so if there's a contact point with the rolepublisher
, the owner should beprov:qualifiedAttribution
insteaddct:publisher
,dct:creators
,dct:contributors
in RDF (with correct properties depending on role)play around to add a suggest API on these contacts