Skip to content

Commit

Permalink
Merge pull request #7877 from poikilotherm/7844-codemeta-schema
Browse files Browse the repository at this point in the history
7844 codemeta schema
  • Loading branch information
kcondon authored Dec 21, 2022
2 parents 6154aac + f1a84b4 commit ee019ab
Show file tree
Hide file tree
Showing 5 changed files with 139 additions and 3 deletions.
14 changes: 14 additions & 0 deletions doc/release-notes/7844-codemeta.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Experimental CodeMeta Schema Support

With this release, we are adding "experimental" (see note below) support for research software metadata deposits.

By adding a metadata block for [CodeMeta](https://codemeta.github.io), we take another step extending the Dataverse
scope being a research data repository towards first class support of diverse F.A.I.R. objects, currently focusing
on research software and computational workflows.

There is more work underway to make Dataverse installations around the world "research software ready". We hope
for feedback from installations on the new metadata block to optimize and lift it from the experimental stage.

**Note:** like the metadata block for computational workflows before, this schema is flagged as "experimental".
"Experimental" means it's brand new, opt-in, and might need future tweaking based on experience of usage in the field.
These blocks are listed here: https://guides.dataverse.org/en/latest/user/appendix.html#experimental-metadata
5 changes: 3 additions & 2 deletions doc/sphinx-guides/source/user/appendix.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ Detailed below are what metadata schemas we support for Citation and Domain Spec
- `Geospatial Metadata <https://docs.google.com/spreadsheet/ccc?key=0AjeLxEN77UZodHFEWGpoa19ia3pldEFyVFR0aFVGa0E#gid=4>`__ (`see .tsv version <https://github.com/IQSS/dataverse/blob/master/scripts/api/data/metadatablocks/geospatial.tsv>`__): compliant with DDI Lite, DDI 2.5 Codebook, DataCite, and Dublin Core. Country / Nation field uses `ISO 3166-1 <http://en.wikipedia.org/wiki/ISO_3166-1>`_ controlled vocabulary.
- `Social Science & Humanities Metadata <https://docs.google.com/spreadsheet/ccc?key=0AjeLxEN77UZodHFEWGpoa19ia3pldEFyVFR0aFVGa0E#gid=1>`__ (`see .tsv version <https://github.com/IQSS/dataverse/blob/master/scripts/api/data/metadatablocks/social_science.tsv>`__): compliant with DDI Lite, DDI 2.5 Codebook, and Dublin Core.
- `Astronomy and Astrophysics Metadata <https://docs.google.com/spreadsheet/ccc?key=0AjeLxEN77UZodHFEWGpoa19ia3pldEFyVFR0aFVGa0E#gid=3>`__ (`see .tsv version <https://github.com/IQSS/dataverse/blob/master/scripts/api/data/metadatablocks/astrophysics.tsv>`__): These metadata elements can be mapped/exported to the International Virtual Observatory Alliance’s (IVOA)
`VOResource Schema format <http://www.ivoa.net/documents/latest/RM.html>`__ and is based on
`Virtual Observatory (VO) Discovery and Provenance Metadata <http://perma.cc/H5ZJ-4KKY>`__.
`VOResource Schema format <http://www.ivoa.net/documents/latest/RM.html>`__ and is based on
`Virtual Observatory (VO) Discovery and Provenance Metadata <http://perma.cc/H5ZJ-4KKY>`__ (`see .tsv version <https://github.com/IQSS/dataverse/blob/master/scripts/api/data/metadatablocks/astrophysics.tsv>`__).
- `Life Sciences Metadata <https://docs.google.com/spreadsheet/ccc?key=0AjeLxEN77UZodHFEWGpoa19ia3pldEFyVFR0aFVGa0E#gid=2>`__ (`see .tsv version <https://github.com/IQSS/dataverse/blob/master/scripts/api/data/metadatablocks/biomedical.tsv>`__): based on `ISA-Tab Specification <https://isa-specs.readthedocs.io/en/latest/isamodel.html>`__, along with controlled vocabulary from subsets of the `OBI Ontology <http://bioportal.bioontology.org/ontologies/OBI>`__ and the `NCBI Taxonomy for Organisms <http://www.ncbi.nlm.nih.gov/Taxonomy/taxonomyhome.html/>`__.
- `Journal Metadata <https://docs.google.com/spreadsheets/d/13HP-jI_cwLDHBetn9UKTREPJ_F4iHdAvhjmlvmYdSSw/edit#gid=8>`__ (`see .tsv version <https://github.com/IQSS/dataverse/blob/master/scripts/api/data/metadatablocks/journals.tsv>`__): based on the `Journal Archiving and Interchange Tag Set, version 1.2 <https://jats.nlm.nih.gov/archiving/tag-library/1.2/chapter/how-to-read.html>`__.

Expand All @@ -36,6 +36,7 @@ Experimental Metadata

Unlike supported metadata, experimental metadata is not enabled by default in a new Dataverse installation. Feedback via any `channel <https://dataverse.org/contact>`_ is welcome!

- `CodeMeta Software Metadata <https://docs.google.com/spreadsheets/d/e/2PACX-1vTE-aSW0J7UQ0prYq8rP_P_AWVtqhyv46aJu9uPszpa9_UuOWRsyFjbWFDnCd7us7PSIpW7Qg2KwZ8v/pub>`__: based on the `CodeMeta Software Metadata Schema, version 2.0 <https://codemeta.github.io/terms/>`__ (`see .tsv version <https://github.com/IQSS/dataverse/blob/master/scripts/api/data/metadatablocks/codemeta.tsv>`__)
- `Computational Workflow Metadata <https://docs.google.com/spreadsheets/d/13HP-jI_cwLDHBetn9UKTREPJ_F4iHdAvhjmlvmYdSSw/edit#gid=447508596>`__ (`see .tsv version <https://github.com/IQSS/dataverse/blob/master/scripts/api/data/metadatablocks/computationalworkflow.tsv>`__): adapted from `Bioschemas Computational Workflow Profile, version 1.0 <https://bioschemas.org/profiles/ComputationalWorkflow/1.0-RELEASE>`__ and `Codemeta <https://codemeta.github.io/terms/>`__.

See Also
Expand Down
37 changes: 37 additions & 0 deletions scripts/api/data/metadatablocks/codemeta.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#metadataBlock name dataverseAlias displayName blockURI
codeMeta20 Software Metadata (CodeMeta v2.0) https://codemeta.github.io/terms/
#datasetField name title description watermark fieldType displayOrder displayFormat advancedSearchField allowControlledVocabulary allowmultiples facetable displayoncreate required parent metadatablock_id termURI
codeVersion Software Version Version of the software instance, usually following some convention like SemVer etc. e.g. 0.2.1 or 1.3 or 2021.1 etc text 0 #VALUE TRUE FALSE FALSE TRUE TRUE FALSE codeMeta20 https://schema.org/softwareVersion
developmentStatus Development Status Description of development status, e.g. work in progress (wip), active, etc. See repostatus.org for more information. text 1 <a href='https://www.repostatus.org/##VALUE'><img src='https://www.repostatus.org/badges/latest/#VALUE.svg' alt='#VALUE '/></a> TRUE TRUE FALSE TRUE FALSE FALSE codeMeta20 https://www.repostatus.org
codeRepository Code Repository Link to the repository where the un-compiled, human-readable code and related code is located (SVN, GitHub, CodePlex, institutional GitLab instance, Gitea, etc.). e.g. https://github.com/user/project url 2 <a href="#VALUE" target="_blank" rel="noopener">#VALUE</a> TRUE FALSE TRUE FALSE TRUE FALSE codeMeta20 https://schema.org/codeRepository
applicationCategory Application Category Type of software application, e.g. Simulation, Analysis, Visualisation. text 3 #VALUE TRUE FALSE TRUE TRUE TRUE FALSE codeMeta20 https://schema.org/applicationCategory
applicationSubCategory Application Subcategory Subcategory of the application, e.g. Arcade Game. text 4 #VALUE TRUE FALSE TRUE TRUE FALSE FALSE codeMeta20 https://schema.org/applicationSubCategory
programmingLanguage Programming Language The programming language(s) used to implement the software (e.g. Python, C++, Matlab, Fortran, Java, Julia,...) text 5 #VALUE TRUE FALSE TRUE TRUE TRUE FALSE codeMeta20 https://schema.org/programmingLanguage
runtimePlatform Runtime Platform Runtime platform or script interpreter dependencies (e.g. Java 11, Python 3.10 or .Net Framework 4.8). e.g. Python 3.10 text 6 #VALUE TRUE FALSE TRUE TRUE FALSE FALSE codeMeta20 https://schema.org/runtimePlatform
operatingSystem Operating Systems Operating systems supported (e.g. Windows 10, OSX 11.3, Android 11). text 7 #VALUE TRUE FALSE TRUE TRUE TRUE FALSE codeMeta20 https://schema.org/operatingSystem
targetProduct Target Product Target Operating System / Product to which the code applies. If applies to several versions, just the product name can be used. text 8 #VALUE TRUE FALSE TRUE TRUE FALSE FALSE codeMeta20 https://schema.org/targetProduct
buildInstructions Build Instructions Link to installation instructions/documentation e.g. https://github.com/user/project/blob/main/BUILD.md url 9 <a href="#VALUE" target="_blank" rel="noopener">#VALUE</a> FALSE FALSE TRUE FALSE FALSE FALSE codeMeta20 https://codemeta.github.io/terms/buildInstructions
softwareRequirementsItem Software Requirements Required software dependencies none 10 FALSE FALSE TRUE FALSE TRUE FALSE codeMeta20
softwareRequirements Name & Version Name and version of the required software/library dependency e.g. Pandas 1.4.3 text 0 #VALUE TRUE FALSE FALSE FALSE TRUE FALSE softwareRequirementsItem codeMeta20 https://schema.org/softwareRequirements
softwareRequirementsInfoUrl Info URL Link to required software/library homepage or documentation (ideally also versioned) e.g. https://pandas.pydata.org/pandas-docs/version/1.4.3 url 1 <a href="#VALUE" target="_blank" rel="noopener">#VALUE</a> FALSE FALSE FALSE FALSE TRUE FALSE softwareRequirementsItem codeMeta20 https://dataverse.org/schema/codeMeta20/softwareRequirementsInfoUrl
softwareSuggestionsItem Software Suggestions Optional dependencies, e.g. for optional features, code development, etc. none 11 FALSE FALSE TRUE FALSE FALSE FALSE codeMeta20
softwareSuggestions Name & Version Name and version of the optional software/library dependency e.g. Sphinx 5.0.2 text 0 #VALUE TRUE FALSE FALSE TRUE FALSE FALSE softwareSuggestionsItem codeMeta20 https://codemeta.github.io/terms/softwareSuggestions
softwareSuggestionsInfoUrl Info URL Link to optional software/library homepage or documentation (ideally also versioned) e.g. https://www.sphinx-doc.org url 1 <a href="#VALUE" target="_blank" rel="noopener">#VALUE</a> FALSE FALSE FALSE FALSE FALSE FALSE softwareSuggestionsItem codeMeta20 https://dataverse.org/schema/codeMeta20/softwareSuggestionsInfoUrl
memoryRequirements Memory Requirements Minimum memory requirements. text 12 #VALUE TRUE FALSE FALSE FALSE FALSE FALSE codeMeta20 https://schema.org/memoryRequirements
processorRequirements Processor Requirements Processor architecture or other CPU requirements to run the application (e.g. IA64). text 13 #VALUE TRUE FALSE TRUE FALSE FALSE FALSE codeMeta20 https://schema.org/processorRequirements
storageRequirements Storage Requirements Minimum storage requirements (e.g. free space required). text 14 #VALUE TRUE FALSE FALSE FALSE FALSE FALSE codeMeta20 https://schema.org/storageRequirements
permissions Permissions Permission(s) required to run the code (for example, a mobile app may require full internet access or may run only on wifi). text 15 #VALUE TRUE FALSE TRUE FALSE FALSE FALSE codeMeta20 https://schema.org/permissions
softwareHelp Software Help/Documentation Link to help texts or documentation e.g. https://user.github.io/project/docs url 16 <a href="#VALUE" target="_blank" rel="noopener">#VALUE</a> FALSE FALSE TRUE FALSE TRUE FALSE codeMeta20 https://schema.org/softwareHelp
readme Readme Link to the README of the project e.g. https://github.com/user/project/blob/main/README.md url 17 <a href="#VALUE" target="_blank" rel="noopener">#VALUE</a> FALSE FALSE FALSE FALSE FALSE FALSE codeMeta20 https://codemeta.github.io/terms/readme
releaseNotes Release Notes Link to release notes e.g. https://github.com/user/project/blob/main/docs/release-0.1.md url 18 <a href="#VALUE" target="_blank" rel="noopener">#VALUE</a> FALSE FALSE FALSE FALSE FALSE FALSE codeMeta20 https://schema.org/releaseNotes
contIntegration Continuous Integration Link to continuous integration service e.g. https://github.com/user/project/actions url 19 <a href="#VALUE" target="_blank" rel="noopener">#VALUE</a> FALSE FALSE TRUE FALSE FALSE FALSE codeMeta20 https://codemeta.github.io/terms/contIntegration
issueTracker Issue Tracker Link to software bug reporting or issue tracking system e.g. https://github.com/user/project/issues url 20 <a href="#VALUE" target="_blank" rel="noopener">#VALUE</a> FALSE FALSE FALSE FALSE FALSE FALSE codeMeta20 https://codemeta.github.io/terms/issueTracker
#controlledVocabulary DatasetField Value identifier displayOrder
developmentStatus Concept concept 0
developmentStatus WIP wip 1
developmentStatus Active active 2
developmentStatus Inactive inactive 3
developmentStatus Unsupported unsupported 4
developmentStatus Moved moved 5
developmentStatus Suspended suspended 6
developmentStatus Abandoned abandoned 7
1 change: 0 additions & 1 deletion scripts/api/setup-datasetfields.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,3 @@ curl http://localhost:8080/api/admin/datasetfield/load -X POST --data-binary @da
curl http://localhost:8080/api/admin/datasetfield/load -X POST --data-binary @data/metadatablocks/astrophysics.tsv -H "Content-type: text/tab-separated-values"
curl http://localhost:8080/api/admin/datasetfield/load -X POST --data-binary @data/metadatablocks/biomedical.tsv -H "Content-type: text/tab-separated-values"
curl http://localhost:8080/api/admin/datasetfield/load -X POST --data-binary @data/metadatablocks/journals.tsv -H "Content-type: text/tab-separated-values"

85 changes: 85 additions & 0 deletions src/main/java/propertyFiles/codeMeta20.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
metadatablock.name=codeMeta20
metadatablock.displayName=Software Metadata (CodeMeta 2.0)
datasetfieldtype.codeVersion.title=Software Version
datasetfieldtype.codeVersion.description=Version of the software instance, usually following some convention like SemVer etc.
datasetfieldtype.codeVersion.watermark=e.g. 0.2.1 or 1.3 or 2021.1 etc
datasetfieldtype.developmentStatus.title=Development Status
datasetfieldtype.developmentStatus.description=Description of development status, e.g. work in progress (wip), active, etc. See repostatus.org for more information.
datasetfieldtype.developmentStatus.watermark= Development Status
datasetfieldtype.codeRepository.title=Code Repository
datasetfieldtype.codeRepository.description=Link to the repository where the un-compiled, human-readable code and related code is located (SVN, GitHub, CodePlex, institutional GitLab instance, Gitea, etc.).
datasetfieldtype.codeRepository.watermark=e.g. https://github.com/user/project
datasetfieldtype.applicationCategory.title=Application Category
datasetfieldtype.applicationCategory.description=Type of software application, e.g. Simulation, Analysis, Visualisation.
datasetfieldtype.applicationCategory.watermark=
datasetfieldtype.applicationSubCategory.title=Application Subcategory
datasetfieldtype.applicationSubCategory.description=Subcategory of the application, e.g. Arcade Game.
datasetfieldtype.applicationSubCategory.watermark=
datasetfieldtype.programmingLanguage.title=Programming Language
datasetfieldtype.programmingLanguage.description=The programming language(s) used to implement the software (e.g. Python, C++, Matlab, Fortran, Java, Julia,...)
datasetfieldtype.programmingLanguage.watermark=
datasetfieldtype.runtimePlatform.title=Runtime Platform
datasetfieldtype.runtimePlatform.description=Runtime platform or script interpreter dependencies (e.g. Java 11, Python 3.10 or .Net Framework 4.8).
datasetfieldtype.runtimePlatform.watermark=e.g. Python 3.10
datasetfieldtype.operatingSystem.title=Operating Systems
datasetfieldtype.operatingSystem.description=Operating systems supported (e.g. Windows 10, OSX 11.3, Android 11).
datasetfieldtype.operatingSystem.watermark=
datasetfieldtype.targetProduct.title=Target Product
datasetfieldtype.targetProduct.description=Target Operating System / Product to which the code applies. If applies to several versions, just the product name can be used.
datasetfieldtype.targetProduct.watermark=
datasetfieldtype.buildInstructions.title=Build Instructions
datasetfieldtype.buildInstructions.description=Link to installation instructions/documentation
datasetfieldtype.buildInstructions.watermark=e.g. https://github.com/user/project/blob/main/BUILD.md
datasetfieldtype.softwareRequirementsItem.title=Software Requirements
datasetfieldtype.softwareRequirementsItem.description=Required software dependencies
datasetfieldtype.softwareRequirementsItem.watermark=
datasetfieldtype.softwareRequirements.title=Name & Version
datasetfieldtype.softwareRequirements.description=Name and version of the required software/library dependency
datasetfieldtype.softwareRequirements.watermark=e.g. Pandas 1.4.3
datasetfieldtype.softwareRequirementsInfoUrl.title=Info URL
datasetfieldtype.softwareRequirementsInfoUrl.description=Link to required software/library homepage or documentation (ideally also versioned)
datasetfieldtype.softwareRequirementsInfoUrl.watermark=e.g. https://pandas.pydata.org/pandas-docs/version/1.4.3
datasetfieldtype.softwareSuggestionsItem.title=Software Suggestions
datasetfieldtype.softwareSuggestionsItem.description=Optional dependencies, e.g. for optional features, code development, etc.
datasetfieldtype.softwareSuggestionsItem.watermark=
datasetfieldtype.softwareSuggestions.title=Name & Version
datasetfieldtype.softwareSuggestions.description=Name and version of the optional software/library dependency
datasetfieldtype.softwareSuggestions.watermark=e.g. Sphinx 5.0.2
datasetfieldtype.softwareSuggestionsInfoUrl.title=Info URL
datasetfieldtype.softwareSuggestionsInfoUrl.description=Link to optional software/library homepage or documentation (ideally also versioned)
datasetfieldtype.softwareSuggestionsInfoUrl.watermark=e.g. https://www.sphinx-doc.org
datasetfieldtype.memoryRequirements.title=Memory Requirements
datasetfieldtype.memoryRequirements.description=Minimum memory requirements.
datasetfieldtype.memoryRequirements.watermark=
datasetfieldtype.processorRequirements.title=Processor Requirements
datasetfieldtype.processorRequirements.description=Processor architecture or other CPU requirements to run the application (e.g. IA64).
datasetfieldtype.processorRequirements.watermark=
datasetfieldtype.storageRequirements.title=Storage Requirements
datasetfieldtype.storageRequirements.description=Minimum storage requirements (e.g. free space required).
datasetfieldtype.storageRequirements.watermark=
datasetfieldtype.permissions.title=Permissions
datasetfieldtype.permissions.description=Permission(s) required to run the code (for example, a mobile app may require full internet access or may run only on wifi).
datasetfieldtype.permissions.watermark=
datasetfieldtype.softwareHelp.title=Software Help/Documentation
datasetfieldtype.softwareHelp.description=Link to help texts or documentation
datasetfieldtype.softwareHelp.watermark=e.g. https://user.github.io/project/docs
datasetfieldtype.readme.title=Readme
datasetfieldtype.readme.description=Link to the README of the project
datasetfieldtype.readme.watermark=e.g. https://github.com/user/project/blob/main/README.md
datasetfieldtype.releaseNotes.title=Release Notes
datasetfieldtype.releaseNotes.description=Link to release notes
datasetfieldtype.releaseNotes.watermark=e.g. https://github.com/user/project/blob/main/docs/release-0.1.md
datasetfieldtype.contIntegration.title=Continuous Integration
datasetfieldtype.contIntegration.description=Link to continuous integration service
datasetfieldtype.contIntegration.watermark=e.g. https://github.com/user/project/actions
datasetfieldtype.issueTracker.title=Issue Tracker
datasetfieldtype.issueTracker.description=Link to software bug reporting or issue tracking system
datasetfieldtype.issueTracker.watermark=e.g. https://github.com/user/project/issues
controlledvocabulary.developmentStatus.concept=Concept
controlledvocabulary.developmentStatus.wip=WIP
controlledvocabulary.developmentStatus.active=Active
controlledvocabulary.developmentStatus.inactive=Inactive
controlledvocabulary.developmentStatus.unsupported=Unsupported
controlledvocabulary.developmentStatus.moved=Moved
controlledvocabulary.developmentStatus.suspended=Suspended
controlledvocabulary.developmentStatus.abandoned=Abandoned

0 comments on commit ee019ab

Please sign in to comment.