Skip to content
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

Implement identifiers #97

Closed
11 tasks done
fenekku opened this issue May 6, 2020 · 1 comment · Fixed by #126 or inveniosoftware/react-invenio-deposit#40
Closed
11 tasks done

Implement identifiers #97

fenekku opened this issue May 6, 2020 · 1 comment · Fixed by #126 or inveniosoftware/react-invenio-deposit#40
Assignees

Comments

@fenekku
Copy link
Contributor

fenekku commented May 6, 2020

Identifiers are not quite formalized and there is a number of issues that need to be addressed:

  • Add Identifiers front-end field to deposit page for creators/contributors
    • this includes figuring out how to pass potential schemes to the front-end (shelved from planning)
  • Should the {<identifier scheme>: <identifier value>} pattern be used for other data model fields than Creator/Contributor? If so changes are needed but more reuse can then be achieved. See below for more details.
  • Validate identifiers with idutils package and add missing identifiers to idutils ( See Validate marshmallow identifiers via idutils #51 and Add DataCite-accepted identifiers idutils#53 )
  • Validate that organization ids are used for organizations and person ids are used for people.
  • AffiliationSchemaV1 changes to match creator/contributor identifiers
  • Link to ROR and ORCID
  • Add to frontend deposit form
    • people/org identifiers

Included in this work is making our identifier structure work on the frontend too.

Creator/Contributors have their identifiers as:

{
  "ORCID": "0000-0002-1825-0097"
}

but other members of the datamodel don't. For example, the AffiliationFieldSchemaV1 is as follows:

class AffiliationSchemaV1(BaseSchema):
    """Affiliation of a creator/contributor."""

    name = SanitizedUnicode(required=True)
    identifier = SanitizedUnicode(required=True)
    scheme = SanitizedUnicode(required=True)

i.e.

{
  "name": "California Digital Library",
  "identifier": "03yrm5c26",
  "scheme": "ror"
}

Should the identifier, scheme be combined like it is for Creator for other fields exhibiting this pattern? In this case it can reused as looked at by Pablo

IdentifierScheme could be reused in many other schemas. However, there is no easy and clean way to flatten its attributes. Tested Pluck and Method. The latter worked but it has a more difficult code comprehension, which in my perspective makes is not a good choice.

@fenekku
Copy link
Contributor Author

fenekku commented Jun 18, 2020

From discussions, the Identifiers pattern can be used for Affiliation but we can leave other instances alone for now until we revisit individual fields.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant