diff --git a/conf/docker-aio/1prep.sh b/conf/docker-aio/1prep.sh index 0cdcf668374..508d41d93ff 100755 --- a/conf/docker-aio/1prep.sh +++ b/conf/docker-aio/1prep.sh @@ -12,10 +12,10 @@ cd ../../ cp -r scripts conf/docker-aio/testdata/ cp doc/sphinx-guides/source/_static/util/createsequence.sql conf/docker-aio/testdata/doc/sphinx-guides/source/_static/util/ -wget -q https://downloads.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz -tar xfz apache-maven-3.8.4-bin.tar.gz +wget -q https://downloads.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz +tar xfz apache-maven-3.8.5-bin.tar.gz mkdir maven -mv apache-maven-3.8.4/* maven/ +mv apache-maven-3.8.5/* maven/ echo "export JAVA_HOME=/usr/lib/jvm/jre-openjdk" > maven/maven.sh echo "export M2_HOME=../maven" >> maven/maven.sh echo "export MAVEN_HOME=../maven" >> maven/maven.sh diff --git a/doc/release-notes/5.10.1-release-notes.md b/doc/release-notes/5.10.1-release-notes.md new file mode 100644 index 00000000000..a7f2250dac9 --- /dev/null +++ b/doc/release-notes/5.10.1-release-notes.md @@ -0,0 +1,96 @@ +# Dataverse Software 5.10.1 + +This release brings new features, enhancements, and bug fixes to the Dataverse Software. Thank you to all of the community members who contributed code, suggestions, bug reports, and other assistance across the project. + +## Release Highlights + +### Bug Fix for Request Access + +Dataverse Software 5.10 contains a bug where the "Request Access" button doesn't work from the file listing on the dataset page if the dataset contains custom terms. This has been fixed in PR #8555. + +### Bug Fix for Searching and Selecting Controlled Vocabulary Values + +Dataverse Software 5.10 contains a bug where the search option is no longer present when selecting from more than ten controlled vocabulary values. This has been fixed in PR #8521. + +## Major Use Cases and Infrastructure Enhancements + +Changes and fixes in this release include: + +- Users can use the "Request Access" button when the dataset has custom terms. (Issue #8553, PR #8555) +- Users can search when selecting from more than ten controlled vocabulary values. (Issue #8519, PR #8521) +- The default file categories ("Documentation", "Data", and "Code") can be redefined through the `:FileCategories` database setting. (Issue #8461, PR #8478) +- Documentation on troubleshooting Excel ingest errors was improved. (PR #8541) +- Internationalized controlled vocabulary values can now be searched. (Issue #8286, PR #8435) +- Curation labels can be internationalized. (Issue #8381, PR #8466) +- "NONE" is no longer accepted as a license using the SWORD API (since 5.10). See "Backward Incompatibilities" below for details. (Issue #8551, PR #8558). + +## Notes for Dataverse Installation Administrators + +### PostgreSQL Version 10+ Required Soon + +Because 5.10.1 is a bug fix release, an upgrade to PostgreSQL is not required. However, this upgrade is still coming in the next non-bug fix release. For details, please see the release notes for 5.10: https://github.com/IQSS/dataverse/releases/tag/v5.10 + +### Payara Upgrade + +You may notice that the Payara version used in the install scripts has been updated from 5.2021.5 to 5.2021.6. This was to address a bug where it was not possible to easily update the logging level. For existing installations, this release does not require upgrading Payara and a Payara upgrade is not part of the Upgrade Instructions below. For more information, see PR #8508. + +## New JVM Options and DB Settings + +The following DB settings have been added: + +- `:FileCategories` - The default list of the pre-defined file categories ("Documentation", "Data" and "Code") can now be redefined with a comma-separated list (e.g. `'Docs,Data,Code,Workflow'`). + +See the [Database Settings](https://guides.dataverse.org/en/5.10.1/installation/config.html#database-settings) section of the Guides for more information. + +## Notes for Developers and Integrators + +In the "Backward Incompatibilities" section below, note changes in the API regarding licenses and the SWORD API. + +## Backward Incompatibilities + +As of Dataverse 5.10, "NONE" is no longer supported as a valid license when creating a dataset using the SWORD API. The API Guide has been updated to reflect this. Additionally, if you specify an invalid license, a list of available licenses will be returned in the response. + +## Complete List of Changes + +For the complete list of code changes in this release, see the [5.10.1 Milestone](https://github.com/IQSS/dataverse/milestone/102?closed=1) in Github. + +For help with upgrading, installing, or general questions please post to the [Dataverse Community Google Group](https://groups.google.com/forum/#!forum/dataverse-community) or email support@dataverse.org. + +## Installation + +If this is a new installation, please see our [Installation Guide](https://guides.dataverse.org/en/5.10.1/installation/). Please also contact us to get added to the [Dataverse Project Map](https://guides.dataverse.org/en/5.10.1/installation/config.html#putting-your-dataverse-installation-on-the-map-at-dataverse-org) if you have not done so already. + +## Upgrade Instructions + +0\. These instructions assume that you've already successfully upgraded from Dataverse Software 4.x to Dataverse Software 5 following the instructions in the [Dataverse Software 5 Release Notes](https://github.com/IQSS/dataverse/releases/tag/v5.0). After upgrading from the 4.x series to 5.0, you should progress through the other 5.x releases before attempting the upgrade to 5.10.1. + +If you are running Payara as a non-root user (and you should be!), **remember not to execute the commands below as root**. Use `sudo` to change to that user first. For example, `sudo -i -u dataverse` if `dataverse` is your dedicated application user. + +In the following commands we assume that Payara 5 is installed in `/usr/local/payara5`. If not, adjust as needed. + +`export PAYARA=/usr/local/payara5` + +(or `setenv PAYARA /usr/local/payara5` if you are using a `csh`-like shell) + +1\. Undeploy the previous version. + +- `$PAYARA/bin/asadmin list-applications` +- `$PAYARA/bin/asadmin undeploy dataverse<-version>` + +2\. Stop Payara and remove the generated directory + +- `service payara stop` +- `rm -rf $PAYARA/glassfish/domains/domain1/generated` + +3\. Start Payara + +- `service payara start` + +4\. Deploy this version. + +- `$PAYARA/bin/asadmin deploy dataverse-5.10.1.war` + +5\. Restart payara + +- `service payara stop` +- `service payara start` diff --git a/doc/release-notes/8127-citation-field-improvements.md b/doc/release-notes/8127-citation-field-improvements.md deleted file mode 100644 index ca6a891f595..00000000000 --- a/doc/release-notes/8127-citation-field-improvements.md +++ /dev/null @@ -1,16 +0,0 @@ -### Improvements to fields that appear in the Citation metadata block - -Grammar, style and consistency improvements have been made to the titles, tooltip description text, and watermarks of metadata fields that appear in the Citation metadata block. - -This includes fields that dataset depositors can edit in the Citation Metadata accordion (i.e. fields controlled by the citation.tsv and citation.properties files) and fields whose values are system-generated, such as the Dataset Persistent ID, Previous Dataset Persistent ID, and Publication Date fields (controlled by the bundles.properties file). - -The changes should provide clearer information to curators, depositors, and people looking for data about what the fields are for. - -A new page in the Style Guides called "Text" has also been added. The new page includes a section called "Metadata Text Guidelines" with a link to a Google Doc where the guidelines are being maintained for now since we expect them to be revised frequently. - -### Additional Upgrade Steps - -Update the Citation metadata block: - -- `wget https://github.com/IQSS/dataverse/releases/download/v#.##/citation.tsv` -- `curl http://localhost:8080/api/admin/datasetfield/load -X POST --data-binary @citation.tsv -H "Content-type: text/tab-separated-values"` \ No newline at end of file diff --git a/doc/release-notes/8210-importddi-fix.md b/doc/release-notes/8210-importddi-fix.md deleted file mode 100644 index 98981263e58..00000000000 --- a/doc/release-notes/8210-importddi-fix.md +++ /dev/null @@ -1 +0,0 @@ -importddi API subject validation problem was fixed by filling subject with "N/A". diff --git a/doc/release-notes/8452-multiple-collectionmode.md b/doc/release-notes/8452-multiple-collectionmode.md deleted file mode 100644 index b367b9230cd..00000000000 --- a/doc/release-notes/8452-multiple-collectionmode.md +++ /dev/null @@ -1,12 +0,0 @@ -### A small modification to the Social Science metadata block - -The metadata block update allows the field "collectionMode" to have multiple values. - -For the upgrade instruction: - -Update the Social Science metadata block as follows: - -- `wget https://github.com/IQSS/dataverse/releases/download/v5.10/social_science.tsv` -- `curl http://localhost:8080/api/admin/datasetfield/load -X POST --data-binary @social_science.tsv -H "Content-type: text/tab-separated-values"` - -As a general reminder, please note that it is important to keep your metadata block definitions up-to-date. \ No newline at end of file diff --git a/doc/release-notes/8461-filecategories-config.md b/doc/release-notes/8461-filecategories-config.md deleted file mode 100644 index 11275269a81..00000000000 --- a/doc/release-notes/8461-filecategories-config.md +++ /dev/null @@ -1,3 +0,0 @@ -### The default file categories are now configurable - -The default list of the pre-defined file categories - "Documentation", "Data" and "Code" - can now be redefined via a database setting `:FileCategories`. Consult the [Database Settings](https://guides.dataverse.org/en/latest/installation/config.html) section of the Guides for more information. diff --git a/doc/sphinx-guides/source/admin/metadatacustomization.rst b/doc/sphinx-guides/source/admin/metadatacustomization.rst index 710e9000d97..b7d0086e221 100644 --- a/doc/sphinx-guides/source/admin/metadatacustomization.rst +++ b/doc/sphinx-guides/source/admin/metadatacustomization.rst @@ -574,8 +574,6 @@ The scripts required can be hosted locally or retrieved dynamically from https:/ Tips from the Dataverse Community --------------------------------- -When creating new metadatablocks, please review the :doc:`/style/text` section of the Style Guide, which includes guidance about naming metadata fields and writing text for metadata tooltips. - If there are tips that you feel are omitted from this document, please open an issue at https://github.com/IQSS/dataverse/issues and consider making a pull request to make improvements. You can find this document at https://github.com/IQSS/dataverse/blob/develop/doc/sphinx-guides/source/admin/metadatacustomization.rst Alternatively, you are welcome to request "edit" access to this "Tips for Dataverse Software metadata blocks from the community" Google doc: https://docs.google.com/document/d/1XpblRw0v0SvV-Bq6njlN96WyHJ7tqG0WWejqBdl7hE0/edit?usp=sharing diff --git a/doc/sphinx-guides/source/api/sword-atom-entry.xml b/doc/sphinx-guides/source/api/sword-atom-entry.xml index d47a3dd4f56..8d73653e93e 100755 --- a/doc/sphinx-guides/source/api/sword-atom-entry.xml +++ b/doc/sphinx-guides/source/api/sword-atom-entry.xml @@ -27,8 +27,8 @@ United States Canada - NONE - Downloader will not use the Materials in any way prohibited by applicable laws. + CC0 1.0 + Peets, J., & Stumptown, J. (2013). Roasting at Home. New England Journal of Coffee, 3(1), 22-34. diff --git a/doc/sphinx-guides/source/api/sword.rst b/doc/sphinx-guides/source/api/sword.rst index d853994f073..d4f56ddb5b4 100755 --- a/doc/sphinx-guides/source/api/sword.rst +++ b/doc/sphinx-guides/source/api/sword.rst @@ -65,6 +65,8 @@ Differences in Dataverse Software 4 from DVN 3.x lead to a few minor backward in - The Service Document will show a single API Terms of Use rather than root level and Dataverse collection level Deposit Terms of Use. +- As of Dataverse Software 5.10, ``NONE`` is no longer supported as a license. + New features as of v1.1 ----------------------- @@ -80,7 +82,7 @@ New features as of v1.1 - "Contributor" can now be populated and the "Type" (Editor, Funder, Researcher, etc.) can be specified with an XML attribute. For example: ``CaffeineForAll`` -- "License" can now be set with ``dcterms:license`` and the possible values are "CC0" and "NONE". "License" interacts with "Terms of Use" (``dcterms:rights``) in that if you include ``dcterms:rights`` in the XML, the license will be set to "NONE". If you don't include ``dcterms:rights``, the license will default to "CC0". It is invalid to specify "CC0" as a license and also include ``dcterms:rights``; an error will be returned. For backwards compatibility, ``dcterms:rights`` is allowed to be blank (i.e. ````) but blank values will not be persisted to the database and the license will be set to "NONE". +- "License" can now be set with ``dcterms:license`` and the possible values determined by the installation ("CC0 1.0" and "CC BY 4.0" by default). "License" interacts with "Terms of Use" (``dcterms:rights``) in that if you include ``dcterms:rights`` in the XML and don't include ``dcterms:license``, the license will be "Custom Dataset Terms" and "Terms of Use" will be populated. If you don't include ``dcterms:rights``, the default license will be used. It is invalid to specify a license and also include ``dcterms:rights``; an error will be returned. For backwards compatibility, ``dcterms:rights`` is allowed to be blank (i.e. ````) but blank values will not be persisted to the database and the license will be set to "Custom Dataset Terms". - "Contact E-mail" is automatically populated from dataset owner's email. @@ -143,9 +145,9 @@ Dublin Core Terms (DC Terms) Qualified Mapping - Dataverse Project DB Element Cr +-----------------------------+----------------------------------------------+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |dcterms:coverage | otherGeographicCoverage | | General information on the geographic coverage of the Dataset. | +-----------------------------+----------------------------------------------+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ -|dcterms:license | license | | Set the license to CC0 (default in a Dataverse installation for new Datasets), otherwise enter "NONE" and fill in the dcterms:rights field. | +|dcterms:license | license | | Set the license. Alternatively, use the dcterms:rights field instead. | +-----------------------------+----------------------------------------------+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ -|dcterms:rights | termsofuse | | If not using CC0, enter any terms of use or restrictions for the Dataset. | +|dcterms:rights | termsofuse | | If not using dcterms:license, enter any terms of use or restrictions for the Dataset. | +-----------------------------+----------------------------------------------+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ |dcterms:isReferencedBy | publicationCitation | | The publication (journal article, book, other work) that uses this dataset (include citation, permanent identifier (DOI), and permanent URL). | +-----------------------------+----------------------------------------------+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/doc/sphinx-guides/source/conf.py b/doc/sphinx-guides/source/conf.py index 2d08c687467..748c797bbab 100755 --- a/doc/sphinx-guides/source/conf.py +++ b/doc/sphinx-guides/source/conf.py @@ -65,9 +65,9 @@ # built documents. # # The short X.Y version. -version = '5.10' +version = '5.10.1' # The full version, including alpha/beta/rc tags. -release = '5.10' +release = '5.10.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/doc/sphinx-guides/source/style/index.rst b/doc/sphinx-guides/source/style/index.rst index 0e93716e146..ba6995e1b53 100755 --- a/doc/sphinx-guides/source/style/index.rst +++ b/doc/sphinx-guides/source/style/index.rst @@ -14,4 +14,3 @@ This style guide is meant to help developers implement clear and appropriate UI foundations patterns - text diff --git a/doc/sphinx-guides/source/style/text.rst b/doc/sphinx-guides/source/style/text.rst deleted file mode 100644 index 8eccc430a0b..00000000000 --- a/doc/sphinx-guides/source/style/text.rst +++ /dev/null @@ -1,14 +0,0 @@ -Text -++++ - -Here we describe the guidelines that help us provide helpful, clear and consistent textual information to users. - -.. contents:: |toctitle| - :local: - -Metadata Text Guidelines -======================== - -`Bootstrap `__ provides a responsive, fluid, 12-column grid system that we use to organize our page layouts. - -These guidelines are maintained in `a Google Doc `__ as we expect to make frequent changes to them. We welcome comments in the Google Doc. \ No newline at end of file diff --git a/doc/sphinx-guides/source/user/tabulardataingest/excel.rst b/doc/sphinx-guides/source/user/tabulardataingest/excel.rst index b82cc45bfde..0013b4eaf88 100644 --- a/doc/sphinx-guides/source/user/tabulardataingest/excel.rst +++ b/doc/sphinx-guides/source/user/tabulardataingest/excel.rst @@ -1,10 +1,32 @@ Excel +++++++ +Microsoft Excel files (XLSX format). + .. contents:: |toctitle| :local: -Excel files (**New** in Dataverse Software 4.0!) +Supported Formats +------------------ + +Only the newer XLSX Excel files are supported. We are not planning to add support for the old-style, binary XLS files. + +Limitations +----------- + +If an Excel file has multiple sheets, only the first sheet of the file will be ingested. The other sheets will be available when a user downloads the original Excel file. To have all sheets of an Excel file ingested and searchable at the variable level, upload each sheet as an individual file in your dataset. + +Ingest Errors +------------- + +You may encounter ingest errors after uploading an Excel file if the file is formatted in a way that can't be ingested by the Dataverse software. Ingest errors can be caused by a variety of formatting inconsistencies, including: + +* line breaks in a cell +* blank cells +* single cells that span multiple rows +* missing headers -Note: only the "new", XLSX Excel files are supported. We are not planning to add support for the old-style, binary XLS files. +Example Data +------------ +`An example of an Excel file that successfully ingests `_ is available in the Dataverse Sample Data GitHub repository. diff --git a/doc/sphinx-guides/source/user/tabulardataingest/rdata.rst b/doc/sphinx-guides/source/user/tabulardataingest/rdata.rst index d8f3b23cf66..91810543803 100644 --- a/doc/sphinx-guides/source/user/tabulardataingest/rdata.rst +++ b/doc/sphinx-guides/source/user/tabulardataingest/rdata.rst @@ -6,20 +6,19 @@ Support for R (.RData) files has been introduced in DVN 3.5. .. contents:: |toctitle| :local: -Overview. +Overview =========== - R has been increasingly popular in the research/academic community, owing to the fact that it is free and open-source (unlike SPSS and STATA). Consequently, there is an increasing amount of data available exclusively in R format. -Data Formatting Requirements. +Data Formatting Requirements ============================== -The data must be formatted as an R dataframe (data.frame()). If an -.RData file contains multiple dataframes, only the 1st one will be +The data must be formatted as an R dataframe (``data.frame()``). If an +.RData file contains multiple dataframes, only the first one will be ingested (this may change in the future). Data Types, compared to other supported formats (Stat, SPSS) @@ -82,7 +81,7 @@ Boolean values R Boolean (logical) values are supported. -Limitations of R, as compared to SPSS and STATA. +Limitations of R, as compared to SPSS and STATA ------------------------------------------------ Most noticeably, R lacks a standard mechanism for defining descriptive diff --git a/doc/sphinx-guides/source/versions.rst b/doc/sphinx-guides/source/versions.rst index ddbc4d7957c..21b4ac9d6f4 100755 --- a/doc/sphinx-guides/source/versions.rst +++ b/doc/sphinx-guides/source/versions.rst @@ -6,8 +6,9 @@ Dataverse Software Documentation Versions This list provides a way to refer to the documentation for previous versions of the Dataverse Software. In order to learn more about the updates delivered from one version to another, visit the `Releases `__ page in our GitHub repo. -- 5.10 +- 5.10.1 +- `5.10 `__ - `5.9 `__ - `5.8 `__ - `5.7 `__ diff --git a/modules/dataverse-parent/pom.xml b/modules/dataverse-parent/pom.xml index 978567f4ebd..ab5a915e7e9 100644 --- a/modules/dataverse-parent/pom.xml +++ b/modules/dataverse-parent/pom.xml @@ -129,7 +129,7 @@ - 5.10 + 5.10.1 11 UTF-8 diff --git a/scripts/api/data/metadatablocks/citation.tsv b/scripts/api/data/metadatablocks/citation.tsv index a6c7a611fc3..375a8c67cec 100644 --- a/scripts/api/data/metadatablocks/citation.tsv +++ b/scripts/api/data/metadatablocks/citation.tsv @@ -1,141 +1,141 @@ -#metadataBlock name dataverseAlias displayName blockURI - citation Citation Metadata https://dataverse.org/schema/citation/ +#metadataBlock name dataverseAlias displayName blockURI + citation Citation Metadata https://dataverse.org/schema/citation/ #datasetField name title description watermark fieldType displayOrder displayFormat advancedSearchField allowControlledVocabulary allowmultiples facetable displayoncreate required parent metadatablock_id termURI - title Title The main title of the Dataset text 0 TRUE FALSE FALSE FALSE TRUE TRUE citation http://purl.org/dc/terms/title - subtitle Subtitle A secondary title that amplifies or states certain limitations on the main title text 1 FALSE FALSE FALSE FALSE FALSE FALSE citation - alternativeTitle Alternative Title Either 1) a title commonly used to refer to the Dataset or 2) an abbreviation of the main title text 2 FALSE FALSE FALSE FALSE FALSE FALSE citation http://purl.org/dc/terms/alternative - alternativeURL Alternative URL Another URL where one can view or access the data in the Dataset, e.g. a project or personal webpage https:// url 3 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE citation https://schema.org/distribution - otherId Other Identifier Another unique identifier for the Dataset (e.g. producer's or another repository's identifier) none 4 : FALSE FALSE TRUE FALSE FALSE FALSE citation - otherIdAgency Agency The name of the agency that generated the other identifier text 5 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE otherId citation - otherIdValue Identifier Another identifier uniquely identifies the Dataset text 6 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE otherId citation - author Author The entity, e.g. a person or organization, that created the Dataset none 7 FALSE FALSE TRUE FALSE TRUE TRUE citation http://purl.org/dc/terms/creator - authorName Name The name of the author, such as the person's name or the name of an organization 1) Family Name, Given Name or 2) Organization XYZ text 8 #VALUE TRUE FALSE FALSE TRUE TRUE TRUE author citation - authorAffiliation Affiliation The name of the entity affiliated with the author, e.g. an organization's name Organization XYZ text 9 (#VALUE) TRUE FALSE FALSE TRUE TRUE FALSE author citation - authorIdentifierScheme Identifier Type The type of identifier that uniquely identifies the author (e.g. ORCID, ISNI) text 10 - #VALUE: FALSE TRUE FALSE FALSE TRUE FALSE author citation http://purl.org/spar/datacite/AgentIdentifierScheme - authorIdentifier Identifier Uniquely identifies the author when paired with an identifier type text 11 #VALUE FALSE FALSE FALSE FALSE TRUE FALSE author citation http://purl.org/spar/datacite/AgentIdentifier - datasetContact Point of Contact The entity, e.g. a person or organization, that users of the Dataset can contact with questions none 12 FALSE FALSE TRUE FALSE TRUE TRUE citation - datasetContactName Name The name of the point of contact, e.g. the person's name or the name of an organization 1) FamilyName, GivenName or 2) Organization text 13 #VALUE FALSE FALSE FALSE FALSE TRUE FALSE datasetContact citation - datasetContactAffiliation Affiliation The name of the entity affiliated with the point of contact, e.g. an organization's name Organization XYZ text 14 (#VALUE) FALSE FALSE FALSE FALSE TRUE FALSE datasetContact citation - datasetContactEmail E-mail The point of contact's email address name@email.xyz email 15 #EMAIL FALSE FALSE FALSE FALSE TRUE TRUE datasetContact citation - dsDescription Description A summary describing the purpose, nature, and scope of the Dataset none 16 FALSE FALSE TRUE FALSE TRUE TRUE citation - dsDescriptionValue Text A summary describing the purpose, nature, and scope of the Dataset textbox 17 #VALUE TRUE FALSE FALSE FALSE TRUE TRUE dsDescription citation - dsDescriptionDate Date The date when the description was added to the Dataset. If the Dataset contains more than one description, e.g. the data producer supplied one description and the data repository supplied another, this date is used to distinguish between the descriptions YYYY-MM-DD date 18 (#VALUE) FALSE FALSE FALSE FALSE TRUE FALSE dsDescription citation - subject Subject The area of study relevant to the Dataset text 19 TRUE TRUE TRUE TRUE TRUE TRUE citation http://purl.org/dc/terms/subject - keyword Keyword A key term that describes an important aspect of the Dataset and information about any controlled vocabulary used none 20 FALSE FALSE TRUE FALSE TRUE FALSE citation - keywordValue Term A key term that describes important aspects of the Dataset text 21 #VALUE TRUE FALSE FALSE TRUE TRUE FALSE keyword citation - keywordVocabulary Controlled Vocabulary Name The controlled vocabulary used for the keyword term (e.g. LCSH, MeSH) text 22 (#VALUE) FALSE FALSE FALSE FALSE TRUE FALSE keyword citation - keywordVocabularyURI Controlled Vocabulary URL The URL where one can access information about the term's controlled vocabulary https:// url 23 #VALUE FALSE FALSE FALSE FALSE TRUE FALSE keyword citation - topicClassification Topic Classification Indicates a broad, important topic or subject that the Dataset covers and information about any controlled vocabulary used none 24 FALSE FALSE TRUE FALSE FALSE FALSE citation - topicClassValue Term A topic or subject term text 25 #VALUE TRUE FALSE FALSE TRUE FALSE FALSE topicClassification citation - topicClassVocab Controlled Vocabulary Name The controlled vocabulary used for the keyword term (e.g. LCSH, MeSH) text 26 (#VALUE) FALSE FALSE FALSE FALSE FALSE FALSE topicClassification citation - topicClassVocabURI Controlled Vocabulary URL The URL where one can access information about the term's controlled vocabulary https:// url 27 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE topicClassification citation - publication Related Publication The article or report that uses the data in the Dataset. The full list of related publications will be displayed on the metadata tab none 28 FALSE FALSE TRUE FALSE TRUE FALSE citation http://purl.org/dc/terms/isReferencedBy - publicationCitation Citation The full bibliographic citation for the related publication textbox 29 #VALUE TRUE FALSE FALSE FALSE TRUE FALSE publication citation http://purl.org/dc/terms/bibliographicCitation - publicationIDType Identifier Type The type of identifier that uniquely identifies a related publication text 30 #VALUE: TRUE TRUE FALSE FALSE TRUE FALSE publication citation http://purl.org/spar/datacite/ResourceIdentifierScheme - publicationIDNumber Identifier The identifier for a related publication text 31 #VALUE TRUE FALSE FALSE FALSE TRUE FALSE publication citation http://purl.org/spar/datacite/ResourceIdentifier - publicationURL URL The URL form of the identifier entered in the Identifier field, e.g. the DOI URL if a DOI was entered in the Identifier field. Used to display what was entered in the ID Type and ID Number fields as a link. If what was entered in the Identifier field has no URL form, the URL of the publication webpage is used, e.g. a journal article webpage https:// url 32 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE publication citation https://schema.org/distribution - notesText Notes Additional information about the Dataset textbox 33 FALSE FALSE FALSE FALSE TRUE FALSE citation - language Language A language that the Dataset's files is written in text 34 TRUE TRUE TRUE TRUE FALSE FALSE citation http://purl.org/dc/terms/language - producer Producer The entity, such a person or organization, managing the finances or other administrative processes involved in the creation of the Dataset none 35 FALSE FALSE TRUE FALSE FALSE FALSE citation - producerName Name The name of the entity, e.g. the person's name or the name of an organization 1) FamilyName, GivenName or 2) Organization text 36 #VALUE TRUE FALSE FALSE TRUE FALSE TRUE producer citation - producerAffiliation Affiliation The name of the entity affiliated with the producer, e.g. an organization's name Organization XYZ text 37 (#VALUE) FALSE FALSE FALSE FALSE FALSE FALSE producer citation - producerAbbreviation Abbreviated Name The producer's abbreviated name (e.g. IQSS, ICPSR) text 38 (#VALUE) FALSE FALSE FALSE FALSE FALSE FALSE producer citation - producerURL URL The URL of the producer's website https:// url 39 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE producer citation - producerLogoURL Logo URL The URL of the producer's logo https:// url 40
FALSE FALSE FALSE FALSE FALSE FALSE producer citation - productionDate Production Date The date when the data were produced (not distributed, published, or archived) YYYY-MM-DD date 41 TRUE FALSE FALSE TRUE FALSE FALSE citation - productionPlace Production Location The location where the data and any related materials were produced or collected text 42 FALSE FALSE FALSE FALSE FALSE FALSE citation - contributor Contributor The entity, such as a person or organization, responsible for collecting, managing, or otherwise contributing to the development of the Dataset none 43 : FALSE FALSE TRUE FALSE FALSE FALSE citation http://purl.org/dc/terms/contributor - contributorType Type Indicates the type of contribution made to the dataset text 44 #VALUE TRUE TRUE FALSE TRUE FALSE FALSE contributor citation - contributorName Name The name of the contributor, e.g. the person's name or the name of an organization 1) FamilyName, GivenName or 2) Organization text 45 #VALUE TRUE FALSE FALSE TRUE FALSE FALSE contributor citation - grantNumber Funding Information Information about the Dataset's financial support none 46 : FALSE FALSE TRUE FALSE FALSE FALSE citation https://schema.org/sponsor - grantNumberAgency Agency The agency that provided financial support for the Dataset Organization XYZ text 47 #VALUE TRUE FALSE FALSE TRUE FALSE FALSE grantNumber citation - grantNumberValue Identifier The grant identifier or contract identifier of the agency that provided financial support for the Dataset text 48 #VALUE TRUE FALSE FALSE TRUE FALSE FALSE grantNumber citation - distributor Distributor The entity, such as a person or organization, designated to generate copies of the Dataset, including any editions or revisions none 49 FALSE FALSE TRUE FALSE FALSE FALSE citation - distributorName Name The name of the entity, e.g. the person's name or the name of an organization 1) FamilyName, GivenName or 2) Organization text 50 #VALUE TRUE FALSE FALSE TRUE FALSE FALSE distributor citation - distributorAffiliation Affiliation The name of the entity affiliated with the distributor, e.g. an organization's name Organization XYZ text 51 (#VALUE) FALSE FALSE FALSE FALSE FALSE FALSE distributor citation - distributorAbbreviation Abbreviated Name The distributor's abbreviated name (e.g. IQSS, ICPSR) text 52 (#VALUE) FALSE FALSE FALSE FALSE FALSE FALSE distributor citation - distributorURL URL The URL of the distributor's webpage https:// url 53 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE distributor citation - distributorLogoURL Logo URL The URL of the distributor's logo image, used to show the image on the Dataset's page https:// url 54
FALSE FALSE FALSE FALSE FALSE FALSE distributor citation - distributionDate Distribution Date The date when the Dataset was made available for distribution/presentation YYYY-MM-DD date 55 TRUE FALSE FALSE TRUE FALSE FALSE citation - depositor Depositor The entity, such as a person or organization, that deposited the Dataset in the repository 1) FamilyName, GivenName or 2) Organization text 56 FALSE FALSE FALSE FALSE FALSE FALSE citation - dateOfDeposit Deposit Date The date when the Dataset was deposited into the repository YYYY-MM-DD date 57 FALSE FALSE FALSE TRUE FALSE FALSE citation http://purl.org/dc/terms/dateSubmitted - timePeriodCovered Time Period The time period that the data refer to. Also known as span. This is the time period covered by the data, not the dates of coding, collecting data, or making documents machine-readable none 58 ; FALSE FALSE TRUE FALSE FALSE FALSE citation https://schema.org/temporalCoverage - timePeriodCoveredStart Start Date The start date of the time period that the data refer to YYYY-MM-DD date 59 #NAME: #VALUE TRUE FALSE FALSE TRUE FALSE FALSE timePeriodCovered citation - timePeriodCoveredEnd End Date The end date of the time period that the data refer to YYYY-MM-DD date 60 #NAME: #VALUE TRUE FALSE FALSE TRUE FALSE FALSE timePeriodCovered citation - dateOfCollection Date of Collection The dates when the data were collected or generated none 61 ; FALSE FALSE TRUE FALSE FALSE FALSE citation - dateOfCollectionStart Start Date The date when the data collection started YYYY-MM-DD date 62 #NAME: #VALUE FALSE FALSE FALSE FALSE FALSE FALSE dateOfCollection citation - dateOfCollectionEnd End Date The date when the data collection ended YYYY-MM-DD date 63 #NAME: #VALUE FALSE FALSE FALSE FALSE FALSE FALSE dateOfCollection citation - kindOfData Data Type The type of data included in the files (e.g. survey data, clinical data, or machine-readable text) text 64 TRUE FALSE TRUE TRUE FALSE FALSE citation http://rdf-vocabulary.ddialliance.org/discovery#kindOfData - series Series Information about the dataset series to which the Dataset belong none 65 : FALSE FALSE FALSE FALSE FALSE FALSE citation - seriesName Name The name of the dataset series text 66 #VALUE TRUE FALSE FALSE TRUE FALSE FALSE series citation - seriesInformation Information Can include 1) a history of the series and 2) a summary of features that apply to the series textbox 67 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE series citation - software Software Information about the software used to generate the Dataset none 68 , FALSE FALSE TRUE FALSE FALSE FALSE citation https://www.w3.org/TR/prov-o/#wasGeneratedBy - softwareName Name The name of software used to generate the Dataset text 69 #VALUE FALSE TRUE FALSE FALSE FALSE FALSE software citation - softwareVersion Version The version of the software used to generate the Dataset, e.g. 4.11 text 70 #NAME: #VALUE FALSE FALSE FALSE FALSE FALSE FALSE software citation - relatedMaterial Related Material Information, such as a persistent ID or citation, about the material related to the Dataset, such as appendices or sampling information available outside of the Dataset textbox 71 FALSE FALSE TRUE FALSE FALSE FALSE citation - relatedDatasets Related Dataset Information, such as a persistent ID or citation, about a related dataset, such as previous research on the Dataset's subject textbox 72 FALSE FALSE TRUE FALSE FALSE FALSE citation http://purl.org/dc/terms/relation - otherReferences Other Reference Information, such as a persistent ID or citation, about another type of resource that provides background or supporting material to the Dataset text 73 FALSE FALSE TRUE FALSE FALSE FALSE citation http://purl.org/dc/terms/references - dataSources Data Source Information, such as a persistent ID or citation, about sources of the Dataset (e.g. a book, article, serial, or machine-readable data file) textbox 74 FALSE FALSE TRUE FALSE FALSE FALSE citation https://www.w3.org/TR/prov-o/#wasDerivedFrom - originOfSources Origin of Historical Sources For historical sources, the origin and any rules followed in establishing them as sources textbox 75 FALSE FALSE FALSE FALSE FALSE FALSE citation - characteristicOfSources Characteristic of Sources Characteristics not already noted elsewhere textbox 76 FALSE FALSE FALSE FALSE FALSE FALSE citation - accessToSources Documentation and Access to Sources 1) Methods or procedures for accessing data sources and 2) any special permissions needed for access textbox 77 FALSE FALSE FALSE FALSE FALSE FALSE citation + title Title Full title by which the Dataset is known. Enter title... text 0 TRUE FALSE FALSE FALSE TRUE TRUE citation http://purl.org/dc/terms/title + subtitle Subtitle A secondary title used to amplify or state certain limitations on the main title. text 1 FALSE FALSE FALSE FALSE FALSE FALSE citation + alternativeTitle Alternative Title A title by which the work is commonly referred, or an abbreviation of the title. text 2 FALSE FALSE FALSE FALSE FALSE FALSE citation http://purl.org/dc/terms/alternative + alternativeURL Alternative URL A URL where the dataset can be viewed, such as a personal or project website. Enter full URL, starting with http:// url 3 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE citation https://schema.org/distribution + otherId Other ID Another unique identifier that identifies this Dataset (e.g., producer's or another repository's number). none 4 : FALSE FALSE TRUE FALSE FALSE FALSE citation + otherIdAgency Agency Name of agency which generated this identifier. text 5 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE otherId citation + otherIdValue Identifier Other identifier that corresponds to this Dataset. text 6 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE otherId citation + author Author The person(s), corporate body(ies), or agency(ies) responsible for creating the work. none 7 FALSE FALSE TRUE FALSE TRUE TRUE citation http://purl.org/dc/terms/creator + authorName Name The author's Family Name, Given Name or the name of the organization responsible for this Dataset. FamilyName, GivenName or Organization text 8 #VALUE TRUE FALSE FALSE TRUE TRUE TRUE author citation + authorAffiliation Affiliation The organization with which the author is affiliated. text 9 (#VALUE) TRUE FALSE FALSE TRUE TRUE FALSE author citation + authorIdentifierScheme Identifier Scheme Name of the identifier scheme (ORCID, ISNI). text 10 - #VALUE: FALSE TRUE FALSE FALSE TRUE FALSE author citation http://purl.org/spar/datacite/AgentIdentifierScheme + authorIdentifier Identifier Uniquely identifies an individual author or organization, according to various schemes. text 11 #VALUE FALSE FALSE FALSE FALSE TRUE FALSE author citation http://purl.org/spar/datacite/AgentIdentifier + datasetContact Contact The contact(s) for this Dataset. none 12 FALSE FALSE TRUE FALSE TRUE TRUE citation + datasetContactName Name The contact's Family Name, Given Name or the name of the organization. FamilyName, GivenName or Organization text 13 #VALUE FALSE FALSE FALSE FALSE TRUE FALSE datasetContact citation + datasetContactAffiliation Affiliation The organization with which the contact is affiliated. text 14 (#VALUE) FALSE FALSE FALSE FALSE TRUE FALSE datasetContact citation + datasetContactEmail E-mail The e-mail address(es) of the contact(s) for the Dataset. This will not be displayed. email 15 #EMAIL FALSE FALSE FALSE FALSE TRUE TRUE datasetContact citation + dsDescription Description A summary describing the purpose, nature, and scope of the Dataset. none 16 FALSE FALSE TRUE FALSE TRUE TRUE citation + dsDescriptionValue Text A summary describing the purpose, nature, and scope of the Dataset. textbox 17 #VALUE TRUE FALSE FALSE FALSE TRUE TRUE dsDescription citation + dsDescriptionDate Date In cases where a Dataset contains more than one description (for example, one might be supplied by the data producer and another prepared by the data repository where the data are deposited), the date attribute is used to distinguish between the two descriptions. The date attribute follows the ISO convention of YYYY-MM-DD. YYYY-MM-DD date 18 (#VALUE) FALSE FALSE FALSE FALSE TRUE FALSE dsDescription citation + subject Subject Domain-specific Subject Categories that are topically relevant to the Dataset. text 19 TRUE TRUE TRUE TRUE TRUE TRUE citation http://purl.org/dc/terms/subject + keyword Keyword Key terms that describe important aspects of the Dataset. none 20 FALSE FALSE TRUE FALSE TRUE FALSE citation + keywordValue Term Key terms that describe important aspects of the Dataset. Can be used for building keyword indexes and for classification and retrieval purposes. A controlled vocabulary can be employed. The vocab attribute is provided for specification of the controlled vocabulary in use, such as LCSH, MeSH, or others. The vocabURI attribute specifies the location for the full controlled vocabulary. text 21 #VALUE TRUE FALSE FALSE TRUE TRUE FALSE keyword citation + keywordVocabulary Vocabulary For the specification of the keyword controlled vocabulary in use, such as LCSH, MeSH, or others. text 22 (#VALUE) FALSE FALSE FALSE FALSE TRUE FALSE keyword citation + keywordVocabularyURI Vocabulary URL Keyword vocabulary URL points to the web presence that describes the keyword vocabulary, if appropriate. Enter an absolute URL where the keyword vocabulary web site is found, such as http://www.my.org. Enter full URL, starting with http:// url 23 #VALUE FALSE FALSE FALSE FALSE TRUE FALSE keyword citation + topicClassification Topic Classification The classification field indicates the broad important topic(s) and subjects that the data cover. Library of Congress subject terms may be used here. none 24 FALSE FALSE TRUE FALSE FALSE FALSE citation + topicClassValue Term Topic or Subject term that is relevant to this Dataset. text 25 #VALUE TRUE FALSE FALSE TRUE FALSE FALSE topicClassification citation + topicClassVocab Vocabulary Provided for specification of the controlled vocabulary in use, e.g., LCSH, MeSH, etc. text 26 (#VALUE) FALSE FALSE FALSE FALSE FALSE FALSE topicClassification citation + topicClassVocabURI Vocabulary URL Specifies the URL location for the full controlled vocabulary. Enter full URL, starting with http:// url 27 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE topicClassification citation + publication Related Publication Publications that use the data from this Dataset. The full list of Related Publications will be displayed on the metadata tab. none 28 FALSE FALSE TRUE FALSE TRUE FALSE citation http://purl.org/dc/terms/isReferencedBy + publicationCitation Citation The full bibliographic citation for this related publication. textbox 29 #VALUE TRUE FALSE FALSE FALSE TRUE FALSE publication citation http://purl.org/dc/terms/bibliographicCitation + publicationIDType ID Type The type of digital identifier used for this publication (e.g., Digital Object Identifier (DOI)). text 30 #VALUE: TRUE TRUE FALSE FALSE TRUE FALSE publication citation http://purl.org/spar/datacite/ResourceIdentifierScheme + publicationIDNumber ID Number The identifier for the selected ID type. text 31 #VALUE TRUE FALSE FALSE FALSE TRUE FALSE publication citation http://purl.org/spar/datacite/ResourceIdentifier + publicationURL URL Link to the publication web page (e.g., journal article page, archive record page, or other). Enter full URL, starting with http:// url 32 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE publication citation https://schema.org/distribution + notesText Notes Additional important information about the Dataset. textbox 33 FALSE FALSE FALSE FALSE TRUE FALSE citation + language Language Language of the Dataset text 34 TRUE TRUE TRUE TRUE FALSE FALSE citation http://purl.org/dc/terms/language + producer Producer Person or organization with the financial or administrative responsibility over this Dataset none 35 FALSE FALSE TRUE FALSE FALSE FALSE citation + producerName Name Producer name FamilyName, GivenName or Organization text 36 #VALUE TRUE FALSE FALSE TRUE FALSE TRUE producer citation + producerAffiliation Affiliation The organization with which the producer is affiliated. text 37 (#VALUE) FALSE FALSE FALSE FALSE FALSE FALSE producer citation + producerAbbreviation Abbreviation The abbreviation by which the producer is commonly known. (ex. IQSS, ICPSR) text 38 (#VALUE) FALSE FALSE FALSE FALSE FALSE FALSE producer citation + producerURL URL Producer URL points to the producer's web presence, if appropriate. Enter an absolute URL where the producer's web site is found, such as http://www.my.org. Enter full URL, starting with http:// url 39 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE producer citation + producerLogoURL Logo URL URL for the producer's logo, which points to this producer's web-accessible logo image. Enter an absolute URL where the producer's logo image is found, such as http://www.my.org/images/logo.gif. Enter full URL for image, starting with http:// url 40
FALSE FALSE FALSE FALSE FALSE FALSE producer citation + productionDate Production Date Date when the data collection or other materials were produced (not distributed, published or archived). YYYY-MM-DD date 41 TRUE FALSE FALSE TRUE FALSE FALSE citation + productionPlace Production Place The location where the data collection and any other related materials were produced. text 42 FALSE FALSE FALSE FALSE FALSE FALSE citation + contributor Contributor The organization or person responsible for either collecting, managing, or otherwise contributing in some form to the development of the resource. none 43 : FALSE FALSE TRUE FALSE FALSE FALSE citation http://purl.org/dc/terms/contributor + contributorType Type The type of contributor of the resource. text 44 #VALUE TRUE TRUE FALSE TRUE FALSE FALSE contributor citation + contributorName Name The Family Name, Given Name or organization name of the contributor. FamilyName, GivenName or Organization text 45 #VALUE TRUE FALSE FALSE TRUE FALSE FALSE contributor citation + grantNumber Grant Information Grant Information none 46 : FALSE FALSE TRUE FALSE FALSE FALSE citation https://schema.org/sponsor + grantNumberAgency Grant Agency Grant Number Agency text 47 #VALUE TRUE FALSE FALSE TRUE FALSE FALSE grantNumber citation + grantNumberValue Grant Number The grant or contract number of the project that sponsored the effort. text 48 #VALUE TRUE FALSE FALSE TRUE FALSE FALSE grantNumber citation + distributor Distributor The organization designated by the author or producer to generate copies of the particular work including any necessary editions or revisions. none 49 FALSE FALSE TRUE FALSE FALSE FALSE citation + distributorName Name Distributor name FamilyName, GivenName or Organization text 50 #VALUE TRUE FALSE FALSE TRUE FALSE FALSE distributor citation + distributorAffiliation Affiliation The organization with which the distributor contact is affiliated. text 51 (#VALUE) FALSE FALSE FALSE FALSE FALSE FALSE distributor citation + distributorAbbreviation Abbreviation The abbreviation by which this distributor is commonly known (e.g., IQSS, ICPSR). text 52 (#VALUE) FALSE FALSE FALSE FALSE FALSE FALSE distributor citation + distributorURL URL Distributor URL points to the distributor's web presence, if appropriate. Enter an absolute URL where the distributor's web site is found, such as http://www.my.org. Enter full URL, starting with http:// url 53 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE distributor citation + distributorLogoURL Logo URL URL of the distributor's logo, which points to this distributor's web-accessible logo image. Enter an absolute URL where the distributor's logo image is found, such as http://www.my.org/images/logo.gif. Enter full URL for image, starting with http:// url 54
FALSE FALSE FALSE FALSE FALSE FALSE distributor citation + distributionDate Distribution Date Date that the work was made available for distribution/presentation. YYYY-MM-DD date 55 TRUE FALSE FALSE TRUE FALSE FALSE citation + depositor Depositor The person (Family Name, Given Name) or the name of the organization that deposited this Dataset to the repository. text 56 FALSE FALSE FALSE FALSE FALSE FALSE citation + dateOfDeposit Deposit Date Date that the Dataset was deposited into the repository. YYYY-MM-DD date 57 FALSE FALSE FALSE TRUE FALSE FALSE citation http://purl.org/dc/terms/dateSubmitted + timePeriodCovered Time Period Covered Time period to which the data refer. This item reflects the time period covered by the data, not the dates of coding or making documents machine-readable or the dates the data were collected. Also known as span. none 58 ; FALSE FALSE TRUE FALSE FALSE FALSE citation https://schema.org/temporalCoverage + timePeriodCoveredStart Start Start date which reflects the time period covered by the data, not the dates of coding or making documents machine-readable or the dates the data were collected. YYYY-MM-DD date 59 #NAME: #VALUE TRUE FALSE FALSE TRUE FALSE FALSE timePeriodCovered citation + timePeriodCoveredEnd End End date which reflects the time period covered by the data, not the dates of coding or making documents machine-readable or the dates the data were collected. YYYY-MM-DD date 60 #NAME: #VALUE TRUE FALSE FALSE TRUE FALSE FALSE timePeriodCovered citation + dateOfCollection Date of Collection Contains the date(s) when the data were collected. none 61 ; FALSE FALSE TRUE FALSE FALSE FALSE citation + dateOfCollectionStart Start Date when the data collection started. YYYY-MM-DD date 62 #NAME: #VALUE FALSE FALSE FALSE FALSE FALSE FALSE dateOfCollection citation + dateOfCollectionEnd End Date when the data collection ended. YYYY-MM-DD date 63 #NAME: #VALUE FALSE FALSE FALSE FALSE FALSE FALSE dateOfCollection citation + kindOfData Kind of Data Type of data included in the file: survey data, census/enumeration data, aggregate data, clinical data, event/transaction data, program source code, machine-readable text, administrative records data, experimental data, psychological test, textual data, coded textual, coded documents, time budget diaries, observation data/ratings, process-produced data, or other. text 64 TRUE FALSE TRUE TRUE FALSE FALSE citation http://rdf-vocabulary.ddialliance.org/discovery#kindOfData + series Series Information about the Dataset series. none 65 : FALSE FALSE FALSE FALSE FALSE FALSE citation + seriesName Name Name of the dataset series to which the Dataset belongs. text 66 #VALUE TRUE FALSE FALSE TRUE FALSE FALSE series citation + seriesInformation Information History of the series and summary of those features that apply to the series as a whole. textbox 67 #VALUE FALSE FALSE FALSE FALSE FALSE FALSE series citation + software Software Information about the software used to generate the Dataset. none 68 , FALSE FALSE TRUE FALSE FALSE FALSE citation https://www.w3.org/TR/prov-o/#wasGeneratedBy + softwareName Name Name of software used to generate the Dataset. text 69 #VALUE FALSE TRUE FALSE FALSE FALSE FALSE software citation + softwareVersion Version Version of the software used to generate the Dataset. text 70 #NAME: #VALUE FALSE FALSE FALSE FALSE FALSE FALSE software citation + relatedMaterial Related Material Any material related to this Dataset. textbox 71 FALSE FALSE TRUE FALSE FALSE FALSE citation + relatedDatasets Related Datasets Any Datasets that are related to this Dataset, such as previous research on this subject. textbox 72 FALSE FALSE TRUE FALSE FALSE FALSE citation http://purl.org/dc/terms/relation + otherReferences Other References Any references that would serve as background or supporting material to this Dataset. text 73 FALSE FALSE TRUE FALSE FALSE FALSE citation http://purl.org/dc/terms/references + dataSources Data Sources List of books, articles, serials, or machine-readable data files that served as the sources of the data collection. textbox 74 FALSE FALSE TRUE FALSE FALSE FALSE citation https://www.w3.org/TR/prov-o/#wasDerivedFrom + originOfSources Origin of Sources For historical materials, information about the origin of the sources and the rules followed in establishing the sources should be specified. textbox 75 FALSE FALSE FALSE FALSE FALSE FALSE citation + characteristicOfSources Characteristic of Sources Noted Assessment of characteristics and source material. textbox 76 FALSE FALSE FALSE FALSE FALSE FALSE citation + accessToSources Documentation and Access to Sources Level of documentation of the original sources. textbox 77 FALSE FALSE FALSE FALSE FALSE FALSE citation #controlledVocabulary DatasetField Value identifier displayOrder - subject Agricultural Sciences D01 0 - subject Arts and Humanities D0 1 - subject Astronomy and Astrophysics D1 2 - subject Business and Management D2 3 - subject Chemistry D3 4 - subject Computer and Information Science D7 5 - subject Earth and Environmental Sciences D4 6 - subject Engineering D5 7 - subject Law D8 8 - subject Mathematical Sciences D9 9 - subject Medicine, Health and Life Sciences D6 10 - subject Physics D10 11 - subject Social Sciences D11 12 - subject Other D12 13 - publicationIDType ark 0 - publicationIDType arXiv 1 - publicationIDType bibcode 2 - publicationIDType doi 3 - publicationIDType ean13 4 - publicationIDType eissn 5 - publicationIDType handle 6 - publicationIDType isbn 7 - publicationIDType issn 8 - publicationIDType istc 9 - publicationIDType lissn 10 - publicationIDType lsid 11 - publicationIDType pmid 12 - publicationIDType purl 13 - publicationIDType upc 14 - publicationIDType url 15 - publicationIDType urn 16 - contributorType Data Collector 0 - contributorType Data Curator 1 - contributorType Data Manager 2 - contributorType Editor 3 - contributorType Funder 4 - contributorType Hosting Institution 5 - contributorType Project Leader 6 - contributorType Project Manager 7 - contributorType Project Member 8 - contributorType Related Person 9 - contributorType Researcher 10 - contributorType Research Group 11 - contributorType Rights Holder 12 - contributorType Sponsor 13 - contributorType Supervisor 14 - contributorType Work Package Leader 15 - contributorType Other 16 - authorIdentifierScheme ORCID 0 - authorIdentifierScheme ISNI 1 - authorIdentifierScheme LCNA 2 - authorIdentifierScheme VIAF 3 - authorIdentifierScheme GND 4 - authorIdentifierScheme DAI 5 - authorIdentifierScheme ResearcherID 6 - authorIdentifierScheme ScopusID 7 + subject Agricultural Sciences D01 0 + subject Arts and Humanities D0 1 + subject Astronomy and Astrophysics D1 2 + subject Business and Management D2 3 + subject Chemistry D3 4 + subject Computer and Information Science D7 5 + subject Earth and Environmental Sciences D4 6 + subject Engineering D5 7 + subject Law D8 8 + subject Mathematical Sciences D9 9 + subject Medicine, Health and Life Sciences D6 10 + subject Physics D10 11 + subject Social Sciences D11 12 + subject Other D12 13 + publicationIDType ark 0 + publicationIDType arXiv 1 + publicationIDType bibcode 2 + publicationIDType doi 3 + publicationIDType ean13 4 + publicationIDType eissn 5 + publicationIDType handle 6 + publicationIDType isbn 7 + publicationIDType issn 8 + publicationIDType istc 9 + publicationIDType lissn 10 + publicationIDType lsid 11 + publicationIDType pmid 12 + publicationIDType purl 13 + publicationIDType upc 14 + publicationIDType url 15 + publicationIDType urn 16 + contributorType Data Collector 0 + contributorType Data Curator 1 + contributorType Data Manager 2 + contributorType Editor 3 + contributorType Funder 4 + contributorType Hosting Institution 5 + contributorType Project Leader 6 + contributorType Project Manager 7 + contributorType Project Member 8 + contributorType Related Person 9 + contributorType Researcher 10 + contributorType Research Group 11 + contributorType Rights Holder 12 + contributorType Sponsor 13 + contributorType Supervisor 14 + contributorType Work Package Leader 15 + contributorType Other 16 + authorIdentifierScheme ORCID 0 + authorIdentifierScheme ISNI 1 + authorIdentifierScheme LCNA 2 + authorIdentifierScheme VIAF 3 + authorIdentifierScheme GND 4 + authorIdentifierScheme DAI 5 + authorIdentifierScheme ResearcherID 6 + authorIdentifierScheme ScopusID 7 language Abkhaz 0 language Afar 1 aar language Afrikaans 2 afr diff --git a/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java b/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java index acc53528f5f..7c4569e1dc5 100644 --- a/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java +++ b/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java @@ -331,37 +331,20 @@ public Boolean isHasDropBoxKey() { public boolean isLocalesConfigured() { if (configuredLocales == null) { - initLocaleSettings(); + configuredLocales = new LinkedHashMap<>(); + settingsService.initLocaleSettings(configuredLocales); } return configuredLocales.size() > 1; } public Map getConfiguredLocales() { if (configuredLocales == null) { - initLocaleSettings(); + configuredLocales = new LinkedHashMap<>(); + settingsService.initLocaleSettings(configuredLocales); } return configuredLocales; } - private void initLocaleSettings() { - - configuredLocales = new LinkedHashMap<>(); - - try { - JSONArray entries = new JSONArray(getValueForKey(SettingsServiceBean.Key.Languages, "[]")); - for (Object obj : entries) { - JSONObject entry = (JSONObject) obj; - String locale = entry.getString("locale"); - String title = entry.getString("title"); - - configuredLocales.put(locale, title); - } - } catch (JSONException e) { - //e.printStackTrace(); - // do we want to know? - probably not - } - } - public boolean isDoiInstallation() { String protocol = getValueForKey(SettingsServiceBean.Key.Protocol); if ("doi".equals(protocol)) { @@ -490,31 +473,16 @@ public void validateEmbargoDate(FacesContext context, UIComponent component, Obj public Map getBaseMetadataLanguageMap(boolean refresh) { if (languageMap == null || refresh) { - languageMap = new HashMap(); - - /* If MetadataLanaguages is set, use it. - * If not, we can't assume anything and should avoid assuming a metadata language - */ - String mlString = getValueForKey(SettingsServiceBean.Key.MetadataLanguages,""); - - if(mlString.isEmpty()) { - mlString="[]"; - } - JsonReader jsonReader = Json.createReader(new StringReader(mlString)); - JsonArray languages = jsonReader.readArray(); - for(JsonValue jv: languages) { - JsonObject lang = (JsonObject) jv; - languageMap.put(lang.getString("locale"), lang.getString("title")); - } + languageMap = settingsService.getBaseMetadataLanguageMap(languageMap, true); } return languageMap; } public Map getMetadataLanguages(DvObjectContainer target) { Map currentMap = new HashMap(); - currentMap.putAll(getBaseMetadataLanguageMap(true)); - languageMap.put(DvObjectContainer.UNDEFINED_METADATA_LANGUAGE_CODE, getDefaultMetadataLanguageLabel(target)); - return languageMap; + currentMap.putAll(getBaseMetadataLanguageMap(false)); + currentMap.put(DvObjectContainer.UNDEFINED_METADATA_LANGUAGE_CODE, getDefaultMetadataLanguageLabel(target)); + return currentMap; } private String getDefaultMetadataLanguageLabel(DvObjectContainer target) { diff --git a/src/main/java/edu/harvard/iq/dataverse/api/datadeposit/SwordServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/api/datadeposit/SwordServiceBean.java index 7e45381d410..46c38e04153 100644 --- a/src/main/java/edu/harvard/iq/dataverse/api/datadeposit/SwordServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/api/datadeposit/SwordServiceBean.java @@ -12,6 +12,7 @@ import edu.harvard.iq.dataverse.license.License; import edu.harvard.iq.dataverse.license.LicenseServiceBean; import edu.harvard.iq.dataverse.util.BundleUtil; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -186,7 +187,13 @@ public void setDatasetLicenseAndTermsOfUse(DatasetVersion datasetVersionToMutate setTermsOfUse(datasetVersionToMutate, dcterms, null); } else { License licenseToSet = licenseServiceBean.getByNameOrUri(licenseProvided); - if (licenseToSet == null) throw new SwordError("Couldn't find an active license with: " + licenseProvided); + if (licenseToSet == null || !licenseToSet.isActive()) { + List licenses = new ArrayList<>(); + for (License license : licenseServiceBean.listAllActive()) { + licenses.add(license.getName()); + } + throw new SwordError("Couldn't find an active license with: " + licenseProvided + ". Valid licenses: " + licenses); + } terms.setLicense(licenseToSet); setTermsOfUse(datasetVersionToMutate, dcterms, licenseToSet); } @@ -204,7 +211,7 @@ private void setTermsOfUse(DatasetVersion datasetVersionToMutate, Map 0) { - throw new SwordError("Terms of Use (dcterms:rights) can not be specified in combination with a license. A Custom License can be used instead."); + throw new SwordError("Terms of Use (dcterms:rights) cannot be specified in combination with a license."); } } else { if (numRightsProvided != 1) { diff --git a/src/main/java/edu/harvard/iq/dataverse/license/License.java b/src/main/java/edu/harvard/iq/dataverse/license/License.java index a51214837e2..96baacc6731 100644 --- a/src/main/java/edu/harvard/iq/dataverse/license/License.java +++ b/src/main/java/edu/harvard/iq/dataverse/license/License.java @@ -23,9 +23,9 @@ */ @NamedQueries({ @NamedQuery( name="License.findAll", - query="SELECT l FROM License l"), + query="SELECT l FROM License l ORDER BY (case when l.isDefault then 0 else 1 end), l.id asc"), @NamedQuery( name="License.findAllActive", - query="SELECT l FROM License l WHERE l.active='true'"), + query="SELECT l FROM License l WHERE l.active='true' ORDER BY (case when l.isDefault then 0 else 1 end), l.id asc"), @NamedQuery( name="License.findById", query = "SELECT l FROM License l WHERE l.id=:id"), @NamedQuery( name="License.findDefault", diff --git a/src/main/java/edu/harvard/iq/dataverse/search/IndexServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/search/IndexServiceBean.java index e4844156271..7fbeb3ae0f5 100644 --- a/src/main/java/edu/harvard/iq/dataverse/search/IndexServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/search/IndexServiceBean.java @@ -247,10 +247,14 @@ public Future indexDataverse(Dataverse dataverse, boolean processPaths) solrInputDocument.addField(SearchFields.AFFILIATION, dataverse.getAffiliation()); solrInputDocument.addField(SearchFields.DATAVERSE_AFFILIATION, dataverse.getAffiliation()); } + Set langs = settingsService.getConfiguredLanguages(); for (ControlledVocabularyValue dataverseSubject : dataverse.getDataverseSubjects()) { String subject = dataverseSubject.getStrValue(); if (!subject.equals(DatasetField.NA_VALUE)) { - solrInputDocument.addField(SearchFields.DATAVERSE_SUBJECT, subject); + // Index in all used languages (display and metadata languages + for(String locale: langs) { + solrInputDocument.addField(SearchFields.DATAVERSE_SUBJECT, dataverseSubject.getLocaleStrValue(locale)); + } // collapse into shared "subject" field used as a facet solrInputDocument.addField(SearchFields.SUBJECT, subject); } @@ -805,6 +809,7 @@ private String addOrUpdateDataset(IndexableDataset indexableDataset, Set d solrInputDocument.addField(SearchFields.EXTERNAL_STATUS, datasetVersion.getExternalStatusLabel()); } + Set langs = settingsService.getConfiguredLanguages(); Map cvocMap = datasetFieldService.getCVocConf(false); for (DatasetField dsf : datasetVersion.getFlatDatasetFields()) { @@ -892,7 +897,10 @@ private String addOrUpdateDataset(IndexableDataset indexableDataset, Set d if (controlledVocabularyValue.getStrValue().equals(DatasetField.NA_VALUE)) { continue; } - solrInputDocument.addField(solrFieldSearchable, controlledVocabularyValue.getStrValue()); + // Index in all used languages (display and metadata languages + for(String locale: langs) { + solrInputDocument.addField(solrFieldSearchable, controlledVocabularyValue.getLocaleStrValue(locale)); + } if (dsfType.getSolrField().isFacetable()) { solrInputDocument.addField(solrFieldFacetable, controlledVocabularyValue.getStrValue()); } diff --git a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java index efa944cf633..e13ea806dc7 100644 --- a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java @@ -9,12 +9,23 @@ import javax.ejb.Stateless; import javax.inject.Named; import javax.json.Json; +import javax.json.JsonArray; import javax.json.JsonObject; +import javax.json.JsonReader; +import javax.json.JsonValue; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + import java.io.StringReader; +import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; @@ -730,5 +741,53 @@ public Set listAll() { return new HashSet<>(em.createNamedQuery("Setting.findAll", Setting.class).getResultList()); } + public Map getBaseMetadataLanguageMap(Map languageMap, boolean refresh) { + if (languageMap == null || refresh) { + languageMap = new HashMap(); + + /* If MetadataLanaguages is set, use it. + * If not, we can't assume anything and should avoid assuming a metadata language + */ + String mlString = getValueForKey(SettingsServiceBean.Key.MetadataLanguages,""); + + if(mlString.isEmpty()) { + mlString="[]"; + } + JsonReader jsonReader = Json.createReader(new StringReader(mlString)); + JsonArray languages = jsonReader.readArray(); + for(JsonValue jv: languages) { + JsonObject lang = (JsonObject) jv; + languageMap.put(lang.getString("locale"), lang.getString("title")); + } + } + return languageMap; + } + public void initLocaleSettings(Map configuredLocales) { + + try { + JSONArray entries = new JSONArray(getValueForKey(SettingsServiceBean.Key.Languages, "[]")); + for (Object obj : entries) { + JSONObject entry = (JSONObject) obj; + String locale = entry.getString("locale"); + String title = entry.getString("title"); + + configuredLocales.put(locale, title); + } + } catch (JSONException e) { + //e.printStackTrace(); + // do we want to know? - probably not + } + } + + + public Set getConfiguredLanguages() { + Set langs = new HashSet(); + langs.addAll(getBaseMetadataLanguageMap(new HashMap(), true).keySet()); + Map configuredLocales = new LinkedHashMap<>(); + initLocaleSettings(configuredLocales); + langs.addAll(configuredLocales.keySet()); + return langs; + } + } diff --git a/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java index 62d576193f6..8d3d63da99d 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java @@ -1471,73 +1471,65 @@ public static String getCiteDataFileFilename(String fileTitle, FileCitationExten * elaborate on the text "This file cannot be downloaded publicly." */ public static boolean isDownloadPopupRequired(DatasetVersion datasetVersion) { - // Each of these conditions is sufficient reason to have to - // present the user with the popup: - if (datasetVersion == null) { - logger.fine("Download popup required because datasetVersion is null."); - return false; - } - //0. if version is draft then Popup "not required" - if (!datasetVersion.isReleased()) { - logger.fine("Download popup required because datasetVersion has not been released."); - return false; - } - // 1. License and Terms of Use: - if (datasetVersion.getTermsOfUseAndAccess() != null) { - License license = datasetVersion.getTermsOfUseAndAccess().getLicense(); - if ((license == null && StringUtils.isNotBlank(datasetVersion.getTermsOfUseAndAccess().getTermsOfUse())) - || (license != null && !license.isDefault())) { - logger.fine("Download popup required because of license or terms of use."); - return true; - } - - // 2. Terms of Access: - if (!(datasetVersion.getTermsOfUseAndAccess().getTermsOfAccess() == null) && !datasetVersion.getTermsOfUseAndAccess().getTermsOfAccess().equals("")) { - logger.fine("Download popup required because of terms of access."); - return true; - } + logger.fine("Checking if download popup is required."); + Boolean answer = popupDueToStateOrTerms(datasetVersion); + if (answer != null) { + return answer; } - // 3. Guest Book: if (datasetVersion.getDataset() != null && datasetVersion.getDataset().getGuestbook() != null && datasetVersion.getDataset().getGuestbook().isEnabled() && datasetVersion.getDataset().getGuestbook().getDataverse() != null) { logger.fine("Download popup required because of guestbook."); return true; } - logger.fine("Download popup is not required."); return false; } - public static boolean isRequestAccessPopupRequired(DatasetVersion datasetVersion){ - // Each of these conditions is sufficient reason to have to - // present the user with the popup: + public static boolean isRequestAccessPopupRequired(DatasetVersion datasetVersion) { + + Boolean answer = popupDueToStateOrTerms(datasetVersion); + if (answer != null) { + return answer; + } + logger.fine("Request access popup is not required."); + return false; + } + + /* Code shared by isDownloadPopupRequired and isRequestAccessPopupRequired. + * + * Returns Boolean to allow null = no decision. This allows the isDownloadPopupRequired method to then add another check w.r.t. guestbooks before returning its value. + * + */ + private static Boolean popupDueToStateOrTerms(DatasetVersion datasetVersion) { + + // Each of these conditions is sufficient reason to have to + // present the user with the popup: if (datasetVersion == null) { - logger.fine("Download popup required because datasetVersion is null."); + logger.fine("Popup not required because datasetVersion is null."); return false; } - //0. if version is draft then Popup "not required" + // 0. if version is draft then Popup "not required" if (!datasetVersion.isReleased()) { - logger.fine("Download popup required because datasetVersion has not been released."); + logger.fine("Popup not required because datasetVersion has not been released."); return false; } // 1. License and Terms of Use: if (datasetVersion.getTermsOfUseAndAccess() != null) { - if (!datasetVersion.getTermsOfUseAndAccess().getLicense().isDefault() - && !(datasetVersion.getTermsOfUseAndAccess().getTermsOfUse() == null - || datasetVersion.getTermsOfUseAndAccess().getTermsOfUse().equals(""))) { - logger.fine("Download popup required because of license or terms of use."); + License license = datasetVersion.getTermsOfUseAndAccess().getLicense(); + if ((license == null && StringUtils.isNotBlank(datasetVersion.getTermsOfUseAndAccess().getTermsOfUse())) + || (license != null && !license.isDefault())) { + logger.fine("Popup required because of license or terms of use."); return true; } // 2. Terms of Access: if (!(datasetVersion.getTermsOfUseAndAccess().getTermsOfAccess() == null) && !datasetVersion.getTermsOfUseAndAccess().getTermsOfAccess().equals("")) { - logger.fine("Download popup required because of terms of access."); + logger.fine("Popup required because of terms of access."); return true; } } - - logger.fine("Download popup is not required."); - return false; + //No decision based on the criteria above + return null; } /** diff --git a/src/main/java/propertyFiles/Bundle.properties b/src/main/java/propertyFiles/Bundle.properties index 4c0938ee33f..9895cffe0e7 100644 --- a/src/main/java/propertyFiles/Bundle.properties +++ b/src/main/java/propertyFiles/Bundle.properties @@ -878,8 +878,9 @@ advanced.search.files.variableName=Variable Name advanced.search.files.variableName.tip=The name of the variable's column in the data frame. advanced.search.files.variableLabel=Variable Label advanced.search.files.variableLabel.tip=A short description of the variable. -advanced.search.datasets.persistentId=Persistent Identifier -advanced.search.datasets.persistentId.tip=The dataset's unique persistent identifier,either a DOI or Handle +advanced.search.datasets.persistentId.tip=The persistent identifier for the dataset. +advanced.search.datasets.persistentId=Dataset Persistent ID +advanced.search.datasets.persistentId.tip=The unique persistent identifier for a dataset, which can be a Handle or DOI in Dataverse. advanced.search.files.fileTags=File Tags advanced.search.files.fileTags.tip=Terms such "Documentation", "Data", or "Code" that have been applied to files. @@ -1513,15 +1514,15 @@ dataset.message.termsFailure=The dataset terms could not be updated. dataset.message.label.fileAccess=File Access dataset.message.publicInstall=Files are stored on a publicly accessible storage server. dataset.metadata.publicationDate=Publication Date -dataset.metadata.publicationDate.tip=The date when the Dataset is published in this repository +dataset.metadata.publicationDate.tip=The publication date of a dataset. dataset.metadata.citationDate=Citation Date dataset.metadata.citationDate.tip=The citation date of a dataset, determined by the longest embargo on any file in version 1.0. dataset.metadata.publicationYear=Publication Year dataset.metadata.publicationYear.tip=The publication year of a dataset. -dataset.metadata.persistentId=Persistent Identifier -dataset.metadata.persistentId.tip=The dataset's unique persistent identifier, either a DOI or Handle -dataset.metadata.alternativePersistentId=Previous Persistent Identifier -dataset.metadata.alternativePersistentId.tip=A previously used persistent identifier for the Dataset, either a DOI or Handle +dataset.metadata.persistentId=Dataset Persistent ID +dataset.metadata.persistentId.tip=The unique persistent identifier for a dataset, which can be a Handle or DOI in Dataverse. +dataset.metadata.alternativePersistentId=Previous Dataset Persistent ID +dataset.metadata.alternativePersistentId.tip=A previously used persistent identifier for a dataset, which can be a Handle or DOI in Dataverse. file.metadata.preview=Preview file.metadata.filetags=File Tags file.metadata.persistentId=File Persistent ID diff --git a/src/main/java/propertyFiles/citation.properties b/src/main/java/propertyFiles/citation.properties index 3f2c2a17852..70cb98a98e4 100644 --- a/src/main/java/propertyFiles/citation.properties +++ b/src/main/java/propertyFiles/citation.properties @@ -4,15 +4,15 @@ datasetfieldtype.title.title=Title datasetfieldtype.subtitle.title=Subtitle datasetfieldtype.alternativeTitle.title=Alternative Title datasetfieldtype.alternativeURL.title=Alternative URL -datasetfieldtype.otherId.title=Other Identifier +datasetfieldtype.otherId.title=Other ID datasetfieldtype.otherIdAgency.title=Agency datasetfieldtype.otherIdValue.title=Identifier datasetfieldtype.author.title=Author datasetfieldtype.authorName.title=Name datasetfieldtype.authorAffiliation.title=Affiliation -datasetfieldtype.authorIdentifierScheme.title=Identifier Type +datasetfieldtype.authorIdentifierScheme.title=Identifier Scheme datasetfieldtype.authorIdentifier.title=Identifier -datasetfieldtype.datasetContact.title=Point of Contact +datasetfieldtype.datasetContact.title=Contact datasetfieldtype.datasetContactName.title=Name datasetfieldtype.datasetContactAffiliation.title=Affiliation datasetfieldtype.datasetContactEmail.title=E-mail @@ -22,49 +22,49 @@ datasetfieldtype.dsDescriptionDate.title=Date datasetfieldtype.subject.title=Subject datasetfieldtype.keyword.title=Keyword datasetfieldtype.keywordValue.title=Term -datasetfieldtype.keywordVocabulary.title=Controlled Vocabulary Name -datasetfieldtype.keywordVocabularyURI.title=Controlled Vocabulary URL +datasetfieldtype.keywordVocabulary.title=Vocabulary +datasetfieldtype.keywordVocabularyURI.title=Vocabulary URL datasetfieldtype.topicClassification.title=Topic Classification datasetfieldtype.topicClassValue.title=Term -datasetfieldtype.topicClassVocab.title=Controlled Vocabulary Name -datasetfieldtype.topicClassVocabURI.title=Controlled Vocabulary URL +datasetfieldtype.topicClassVocab.title=Vocabulary +datasetfieldtype.topicClassVocabURI.title=Vocabulary URL datasetfieldtype.publication.title=Related Publication datasetfieldtype.publicationCitation.title=Citation -datasetfieldtype.publicationIDType.title=Identifier Type -datasetfieldtype.publicationIDNumber.title=Identifier +datasetfieldtype.publicationIDType.title=ID Type +datasetfieldtype.publicationIDNumber.title=ID Number datasetfieldtype.publicationURL.title=URL datasetfieldtype.notesText.title=Notes datasetfieldtype.language.title=Language datasetfieldtype.producer.title=Producer datasetfieldtype.producerName.title=Name datasetfieldtype.producerAffiliation.title=Affiliation -datasetfieldtype.producerAbbreviation.title=Abbreviated Name +datasetfieldtype.producerAbbreviation.title=Abbreviation datasetfieldtype.producerURL.title=URL datasetfieldtype.producerLogoURL.title=Logo URL datasetfieldtype.productionDate.title=Production Date -datasetfieldtype.productionPlace.title=Production Location +datasetfieldtype.productionPlace.title=Production Place datasetfieldtype.contributor.title=Contributor datasetfieldtype.contributorType.title=Type datasetfieldtype.contributorName.title=Name -datasetfieldtype.grantNumber.title=Funding Information -datasetfieldtype.grantNumberAgency.title=Agency -datasetfieldtype.grantNumberValue.title=Identifier +datasetfieldtype.grantNumber.title=Grant Information +datasetfieldtype.grantNumberAgency.title=Grant Agency +datasetfieldtype.grantNumberValue.title=Grant Number datasetfieldtype.distributor.title=Distributor datasetfieldtype.distributorName.title=Name datasetfieldtype.distributorAffiliation.title=Affiliation -datasetfieldtype.distributorAbbreviation.title=Abbreviated Name +datasetfieldtype.distributorAbbreviation.title=Abbreviation datasetfieldtype.distributorURL.title=URL datasetfieldtype.distributorLogoURL.title=Logo URL datasetfieldtype.distributionDate.title=Distribution Date datasetfieldtype.depositor.title=Depositor datasetfieldtype.dateOfDeposit.title=Deposit Date -datasetfieldtype.timePeriodCovered.title=Time Period -datasetfieldtype.timePeriodCoveredStart.title=Start Date -datasetfieldtype.timePeriodCoveredEnd.title=End Date +datasetfieldtype.timePeriodCovered.title=Time Period Covered +datasetfieldtype.timePeriodCoveredStart.title=Start +datasetfieldtype.timePeriodCoveredEnd.title=End datasetfieldtype.dateOfCollection.title=Date of Collection -datasetfieldtype.dateOfCollectionStart.title=Start Date -datasetfieldtype.dateOfCollectionEnd.title=End Date -datasetfieldtype.kindOfData.title=Data Type +datasetfieldtype.dateOfCollectionStart.title=Start +datasetfieldtype.dateOfCollectionEnd.title=End +datasetfieldtype.kindOfData.title=Kind of Data datasetfieldtype.series.title=Series datasetfieldtype.seriesName.title=Name datasetfieldtype.seriesInformation.title=Information @@ -72,106 +72,106 @@ datasetfieldtype.software.title=Software datasetfieldtype.softwareName.title=Name datasetfieldtype.softwareVersion.title=Version datasetfieldtype.relatedMaterial.title=Related Material -datasetfieldtype.relatedDatasets.title=Related Dataset -datasetfieldtype.otherReferences.title=Other Reference -datasetfieldtype.dataSources.title=Data Source -datasetfieldtype.originOfSources.title=Origin of Historical Sources -datasetfieldtype.characteristicOfSources.title=Characteristic of Sources +datasetfieldtype.relatedDatasets.title=Related Datasets +datasetfieldtype.otherReferences.title=Other References +datasetfieldtype.dataSources.title=Data Sources +datasetfieldtype.originOfSources.title=Origin of Sources +datasetfieldtype.characteristicOfSources.title=Characteristic of Sources Noted datasetfieldtype.accessToSources.title=Documentation and Access to Sources -datasetfieldtype.title.description=The main title of the Dataset -datasetfieldtype.subtitle.description=A secondary title that amplifies or states certain limitations on the main title -datasetfieldtype.alternativeTitle.description=Either 1) a title commonly used to refer to the Dataset or 2) an abbreviation of the main title -datasetfieldtype.alternativeURL.description=Another URL where one can view or access the data in the Dataset, e.g. a project or personal webpage -datasetfieldtype.otherId.description=Another unique identifier for the Dataset (e.g. producer's or another repository's identifier) -datasetfieldtype.otherIdAgency.description=The name of the agency that generated the other identifier -datasetfieldtype.otherIdValue.description=Another identifier uniquely identifies the Dataset -datasetfieldtype.author.description=The entity, e.g. a person or organization, that created the Dataset -datasetfieldtype.authorName.description=The name of the author, such as the person's name or the name of an organization -datasetfieldtype.authorAffiliation.description=The name of the entity affiliated with the author, e.g. an organization's name -datasetfieldtype.authorIdentifierScheme.description=The type of identifier that uniquely identifies the author (e.g. ORCID, ISNI) -datasetfieldtype.authorIdentifier.description=Uniquely identifies the author when paired with an identifier type -datasetfieldtype.datasetContact.description=The entity, e.g. a person or organization, that users of the Dataset can contact with questions -datasetfieldtype.datasetContactName.description=The name of the point of contact, e.g. the person's name or the name of an organization -datasetfieldtype.datasetContactAffiliation.description=The name of the entity affiliated with the point of contact, e.g. an organization's name -datasetfieldtype.datasetContactEmail.description=The point of contact's email address -datasetfieldtype.dsDescription.description=A summary describing the purpose, nature, and scope of the Dataset -datasetfieldtype.dsDescriptionValue.description=A summary describing the purpose, nature, and scope of the Dataset -datasetfieldtype.dsDescriptionDate.description=The date when the description was added to the Dataset. If the Dataset contains more than one description, e.g. the data producer supplied one description and the data repository supplied another, this date is used to distinguish between the descriptions -datasetfieldtype.subject.description=The area of study relevant to the Dataset -datasetfieldtype.keyword.description=A key term that describes an important aspect of the Dataset and information about any controlled vocabulary used -datasetfieldtype.keywordValue.description=A key term that describes important aspects of the Dataset -datasetfieldtype.keywordVocabulary.description=The controlled vocabulary used for the keyword term (e.g. LCSH, MeSH) -datasetfieldtype.keywordVocabularyURI.description=The URL where one can access information about the term's controlled vocabulary -datasetfieldtype.topicClassification.description=Indicates a broad, important topic or subject that the Dataset covers and information about any controlled vocabulary used -datasetfieldtype.topicClassValue.description=A topic or subject term -datasetfieldtype.topicClassVocab.description=The controlled vocabulary used for the keyword term (e.g. LCSH, MeSH) -datasetfieldtype.topicClassVocabURI.description=The URL where one can access information about the term's controlled vocabulary -datasetfieldtype.publication.description=The article or report that uses the data in the Dataset. The full list of related publications will be displayed on the metadata tab -datasetfieldtype.publicationCitation.description=The full bibliographic citation for the related publication -datasetfieldtype.publicationIDType.description=The type of identifier that uniquely identifies a related publication -datasetfieldtype.publicationIDNumber.description=The identifier for a related publication -datasetfieldtype.publicationURL.description=The URL form of the identifier entered in the Identifier field, e.g. the DOI URL if a DOI was entered in the Identifier field. Used to display what was entered in the ID Type and ID Number fields as a link. If what was entered in the Identifier field has no URL form, the URL of the publication webpage is used, e.g. a journal article webpage -datasetfieldtype.notesText.description=Additional information about the Dataset -datasetfieldtype.language.description=A language that the Dataset's files is written in -datasetfieldtype.producer.description=The entity, such a person or organization, managing the finances or other administrative processes involved in the creation of the Dataset -datasetfieldtype.producerName.description=The name of the entity, e.g. the person's name or the name of an organization -datasetfieldtype.producerAffiliation.description=The name of the entity affiliated with the producer, e.g. an organization's name -datasetfieldtype.producerAbbreviation.description=The producer's abbreviated name (e.g. IQSS, ICPSR) -datasetfieldtype.producerURL.description=The URL of the producer's website -datasetfieldtype.producerLogoURL.description=The URL of the producer's logo -datasetfieldtype.productionDate.description=The date when the data were produced (not distributed, published, or archived) -datasetfieldtype.productionPlace.description=The location where the data and any related materials were produced or collected -datasetfieldtype.contributor.description=The entity, such as a person or organization, responsible for collecting, managing, or otherwise contributing to the development of the Dataset -datasetfieldtype.contributorType.description=Indicates the type of contribution made to the dataset -datasetfieldtype.contributorName.description=The name of the contributor, e.g. the person's name or the name of an organization -datasetfieldtype.grantNumber.description=Information about the Dataset's financial support -datasetfieldtype.grantNumberAgency.description=The agency that provided financial support for the Dataset -datasetfieldtype.grantNumberValue.description=The grant identifier or contract identifier of the agency that provided financial support for the Dataset -datasetfieldtype.distributor.description=The entity, such as a person or organization, designated to generate copies of the Dataset, including any editions or revisions -datasetfieldtype.distributorName.description=The name of the entity, e.g. the person's name or the name of an organization -datasetfieldtype.distributorAffiliation.description=The name of the entity affiliated with the distributor, e.g. an organization's name -datasetfieldtype.distributorAbbreviation.description=The distributor's abbreviated name (e.g. IQSS, ICPSR) -datasetfieldtype.distributorURL.description=The URL of the distributor's webpage -datasetfieldtype.distributorLogoURL.description=The URL of the distributor's logo image, used to show the image on the Dataset's page -datasetfieldtype.distributionDate.description=The date when the Dataset was made available for distribution/presentation -datasetfieldtype.depositor.description=The entity, such as a person or organization, that deposited the Dataset in the repository -datasetfieldtype.dateOfDeposit.description=The date when the Dataset was deposited into the repository -datasetfieldtype.timePeriodCovered.description=The time period that the data refer to. Also known as span. This is the time period covered by the data, not the dates of coding, collecting data, or making documents machine-readable -datasetfieldtype.timePeriodCoveredStart.description=The start date of the time period that the data refer to -datasetfieldtype.timePeriodCoveredEnd.description=The end date of the time period that the data refer to -datasetfieldtype.dateOfCollection.description=The dates when the data were collected or generated -datasetfieldtype.dateOfCollectionStart.description=The date when the data collection started -datasetfieldtype.dateOfCollectionEnd.description=The date when the data collection ended -datasetfieldtype.kindOfData.description=The type of data included in the files (e.g. survey data, clinical data, or machine-readable text) -datasetfieldtype.series.description=Information about the dataset series to which the Dataset belong -datasetfieldtype.seriesName.description=The name of the dataset series -datasetfieldtype.seriesInformation.description=Can include 1) a history of the series and 2) a summary of features that apply to the series -datasetfieldtype.software.description=Information about the software used to generate the Dataset -datasetfieldtype.softwareName.description=The name of software used to generate the Dataset -datasetfieldtype.softwareVersion.description=The version of the software used to generate the Dataset, e.g. 4.11 -datasetfieldtype.relatedMaterial.description=Information, such as a persistent ID or citation, about the material related to the Dataset, such as appendices or sampling information available outside of the Dataset -datasetfieldtype.relatedDatasets.description=Information, such as a persistent ID or citation, about a related dataset, such as previous research on the Dataset's subject -datasetfieldtype.otherReferences.description=Information, such as a persistent ID or citation, about another type of resource that provides background or supporting material to the Dataset -datasetfieldtype.dataSources.description=Information, such as a persistent ID or citation, about sources of the Dataset (e.g. a book, article, serial, or machine-readable data file) -datasetfieldtype.originOfSources.description=For historical sources, the origin and any rules followed in establishing them as sources -datasetfieldtype.characteristicOfSources.description=Characteristics not already noted elsewhere -datasetfieldtype.accessToSources.description=1) Methods or procedures for accessing data sources and 2) any special permissions needed for access -datasetfieldtype.title.watermark= +datasetfieldtype.title.description=Full title by which the Dataset is known. +datasetfieldtype.subtitle.description=A secondary title used to amplify or state certain limitations on the main title. +datasetfieldtype.alternativeTitle.description=A title by which the work is commonly referred, or an abbreviation of the title. +datasetfieldtype.alternativeURL.description=A URL where the dataset can be viewed, such as a personal or project website. +datasetfieldtype.otherId.description=Another unique identifier that identifies this Dataset (e.g., producer's or another repository's number). +datasetfieldtype.otherIdAgency.description=Name of agency which generated this identifier. +datasetfieldtype.otherIdValue.description=Other identifier that corresponds to this Dataset. +datasetfieldtype.author.description=The person(s), corporate body(ies), or agency(ies) responsible for creating the work. +datasetfieldtype.authorName.description=The author's Family Name, Given Name or the name of the organization responsible for this Dataset. +datasetfieldtype.authorAffiliation.description=The organization with which the author is affiliated. +datasetfieldtype.authorIdentifierScheme.description=Name of the identifier scheme (ORCID, ISNI). +datasetfieldtype.authorIdentifier.description=Uniquely identifies an individual author or organization, according to various schemes. +datasetfieldtype.datasetContact.description=The contact(s) for this Dataset. +datasetfieldtype.datasetContactName.description=The contact's Family Name, Given Name or the name of the organization. +datasetfieldtype.datasetContactAffiliation.description=The organization with which the contact is affiliated. +datasetfieldtype.datasetContactEmail.description=The e-mail address(es) of the contact(s) for the Dataset. This will not be displayed. +datasetfieldtype.dsDescription.description=A summary describing the purpose, nature, and scope of the Dataset. +datasetfieldtype.dsDescriptionValue.description=A summary describing the purpose, nature, and scope of the Dataset. +datasetfieldtype.dsDescriptionDate.description=In cases where a Dataset contains more than one description (for example, one might be supplied by the data producer and another prepared by the data repository where the data are deposited), the date attribute is used to distinguish between the two descriptions. The date attribute follows the ISO convention of YYYY-MM-DD. +datasetfieldtype.subject.description=Domain-specific Subject Categories that are topically relevant to the Dataset. +datasetfieldtype.keyword.description=Key terms that describe important aspects of the Dataset. +datasetfieldtype.keywordValue.description=Key terms that describe important aspects of the Dataset. Can be used for building keyword indexes and for classification and retrieval purposes. A controlled vocabulary can be employed. The vocab attribute is provided for specification of the controlled vocabulary in use, such as LCSH, MeSH, or others. The vocabURI attribute specifies the location for the full controlled vocabulary. +datasetfieldtype.keywordVocabulary.description=For the specification of the keyword controlled vocabulary in use, such as LCSH, MeSH, or others. +datasetfieldtype.keywordVocabularyURI.description=Keyword vocabulary URL points to the web presence that describes the keyword vocabulary, if appropriate. Enter an absolute URL where the keyword vocabulary web site is found, such as http://www.my.org. +datasetfieldtype.topicClassification.description=The classification field indicates the broad important topic(s) and subjects that the data cover. Library of Congress subject terms may be used here. +datasetfieldtype.topicClassValue.description=Topic or Subject term that is relevant to this Dataset. +datasetfieldtype.topicClassVocab.description=Provided for specification of the controlled vocabulary in use, e.g., LCSH, MeSH, etc. +datasetfieldtype.topicClassVocabURI.description=Specifies the URL location for the full controlled vocabulary. +datasetfieldtype.publication.description=Publications that use the data from this Dataset. The full list of Related Publications will be displayed on the metadata tab. +datasetfieldtype.publicationCitation.description=The full bibliographic citation for this related publication. +datasetfieldtype.publicationIDType.description=The type of digital identifier used for this publication (e.g., Digital Object Identifier (DOI)). +datasetfieldtype.publicationIDNumber.description=The identifier for the selected ID type. +datasetfieldtype.publicationURL.description=Link to the publication web page (e.g., journal article page, archive record page, or other). +datasetfieldtype.notesText.description=Additional important information about the Dataset. +datasetfieldtype.language.description=Language of the Dataset +datasetfieldtype.producer.description=Person or organization with the financial or administrative responsibility over this Dataset +datasetfieldtype.producerName.description=Producer name +datasetfieldtype.producerAffiliation.description=The organization with which the producer is affiliated. +datasetfieldtype.producerAbbreviation.description=The abbreviation by which the producer is commonly known. (ex. IQSS, ICPSR) +datasetfieldtype.producerURL.description=Producer URL points to the producer's web presence, if appropriate. Enter an absolute URL where the producer's web site is found, such as http://www.my.org. +datasetfieldtype.producerLogoURL.description=URL for the producer's logo, which points to this producer's web-accessible logo image. Enter an absolute URL where the producer's logo image is found, such as http://www.my.org/images/logo.gif. +datasetfieldtype.productionDate.description=Date when the data collection or other materials were produced (not distributed, published or archived). +datasetfieldtype.productionPlace.description=The location where the data collection and any other related materials were produced. +datasetfieldtype.contributor.description=The organization or person responsible for either collecting, managing, or otherwise contributing in some form to the development of the resource. +datasetfieldtype.contributorType.description=The type of contributor of the resource. +datasetfieldtype.contributorName.description=The Family Name, Given Name or organization name of the contributor. +datasetfieldtype.grantNumber.description=Grant Information +datasetfieldtype.grantNumberAgency.description=Grant Number Agency +datasetfieldtype.grantNumberValue.description=The grant or contract number of the project that sponsored the effort. +datasetfieldtype.distributor.description=The organization designated by the author or producer to generate copies of the particular work including any necessary editions or revisions. +datasetfieldtype.distributorName.description=Distributor name +datasetfieldtype.distributorAffiliation.description=The organization with which the distributor contact is affiliated. +datasetfieldtype.distributorAbbreviation.description=The abbreviation by which this distributor is commonly known (e.g., IQSS, ICPSR). +datasetfieldtype.distributorURL.description=Distributor URL points to the distributor's web presence, if appropriate. Enter an absolute URL where the distributor's web site is found, such as http://www.my.org. +datasetfieldtype.distributorLogoURL.description=URL of the distributor's logo, which points to this distributor's web-accessible logo image. Enter an absolute URL where the distributor's logo image is found, such as http://www.my.org/images/logo.gif. +datasetfieldtype.distributionDate.description=Date that the work was made available for distribution/presentation. +datasetfieldtype.depositor.description=The person (Family Name, Given Name) or the name of the organization that deposited this Dataset to the repository. +datasetfieldtype.dateOfDeposit.description=Date that the Dataset was deposited into the repository. +datasetfieldtype.timePeriodCovered.description=Time period to which the data refer. This item reflects the time period covered by the data, not the dates of coding or making documents machine-readable or the dates the data were collected. Also known as span. +datasetfieldtype.timePeriodCoveredStart.description=Start date which reflects the time period covered by the data, not the dates of coding or making documents machine-readable or the dates the data were collected. +datasetfieldtype.timePeriodCoveredEnd.description=End date which reflects the time period covered by the data, not the dates of coding or making documents machine-readable or the dates the data were collected. +datasetfieldtype.dateOfCollection.description=Contains the date(s) when the data were collected. +datasetfieldtype.dateOfCollectionStart.description=Date when the data collection started. +datasetfieldtype.dateOfCollectionEnd.description=Date when the data collection ended. +datasetfieldtype.kindOfData.description=Type of data included in the file: survey data, census/enumeration data, aggregate data, clinical data, event/transaction data, program source code, machine-readable text, administrative records data, experimental data, psychological test, textual data, coded textual, coded documents, time budget diaries, observation data/ratings, process-produced data, or other. +datasetfieldtype.series.description=Information about the Dataset series. +datasetfieldtype.seriesName.description=Name of the dataset series to which the Dataset belongs. +datasetfieldtype.seriesInformation.description=History of the series and summary of those features that apply to the series as a whole. +datasetfieldtype.software.description=Information about the software used to generate the Dataset. +datasetfieldtype.softwareName.description=Name of software used to generate the Dataset. +datasetfieldtype.softwareVersion.description=Version of the software used to generate the Dataset. +datasetfieldtype.relatedMaterial.description=Any material related to this Dataset. +datasetfieldtype.relatedDatasets.description=Any Datasets that are related to this Dataset, such as previous research on this subject. +datasetfieldtype.otherReferences.description=Any references that would serve as background or supporting material to this Dataset. +datasetfieldtype.dataSources.description=List of books, articles, serials, or machine-readable data files that served as the sources of the data collection. +datasetfieldtype.originOfSources.description=For historical materials, information about the origin of the sources and the rules followed in establishing the sources should be specified. +datasetfieldtype.characteristicOfSources.description=Assessment of characteristics and source material. +datasetfieldtype.accessToSources.description=Level of documentation of the original sources. +datasetfieldtype.title.watermark=Enter title... datasetfieldtype.subtitle.watermark= datasetfieldtype.alternativeTitle.watermark= -datasetfieldtype.alternativeURL.watermark=https:// +datasetfieldtype.alternativeURL.watermark=Enter full URL, starting with http:// datasetfieldtype.otherId.watermark= datasetfieldtype.otherIdAgency.watermark= datasetfieldtype.otherIdValue.watermark= datasetfieldtype.author.watermark= -datasetfieldtype.authorName.watermark=1) Family Name, Given Name or 2) Organization XYZ -datasetfieldtype.authorAffiliation.watermark=Organization XYZ +datasetfieldtype.authorName.watermark=FamilyName, GivenName or Organization +datasetfieldtype.authorAffiliation.watermark= datasetfieldtype.authorIdentifierScheme.watermark= datasetfieldtype.authorIdentifier.watermark= datasetfieldtype.datasetContact.watermark= -datasetfieldtype.datasetContactName.watermark=1) FamilyName, GivenName or 2) Organization -datasetfieldtype.datasetContactAffiliation.watermark=Organization XYZ -datasetfieldtype.datasetContactEmail.watermark=name@email.xyz +datasetfieldtype.datasetContactName.watermark=FamilyName, GivenName or Organization +datasetfieldtype.datasetContactAffiliation.watermark= +datasetfieldtype.datasetContactEmail.watermark= datasetfieldtype.dsDescription.watermark= datasetfieldtype.dsDescriptionValue.watermark= datasetfieldtype.dsDescriptionDate.watermark=YYYY-MM-DD @@ -179,40 +179,40 @@ datasetfieldtype.subject.watermark= datasetfieldtype.keyword.watermark= datasetfieldtype.keywordValue.watermark= datasetfieldtype.keywordVocabulary.watermark= -datasetfieldtype.keywordVocabularyURI.watermark=https:// +datasetfieldtype.keywordVocabularyURI.watermark=Enter full URL, starting with http:// datasetfieldtype.topicClassification.watermark= datasetfieldtype.topicClassValue.watermark= datasetfieldtype.topicClassVocab.watermark= -datasetfieldtype.topicClassVocabURI.watermark=https:// +datasetfieldtype.topicClassVocabURI.watermark=Enter full URL, starting with http:// datasetfieldtype.publication.watermark= datasetfieldtype.publicationCitation.watermark= datasetfieldtype.publicationIDType.watermark= datasetfieldtype.publicationIDNumber.watermark= -datasetfieldtype.publicationURL.watermark=https:// +datasetfieldtype.publicationURL.watermark=Enter full URL, starting with http:// datasetfieldtype.notesText.watermark= datasetfieldtype.language.watermark= datasetfieldtype.producer.watermark= -datasetfieldtype.producerName.watermark=1) FamilyName, GivenName or 2) Organization -datasetfieldtype.producerAffiliation.watermark=Organization XYZ +datasetfieldtype.producerName.watermark=FamilyName, GivenName or Organization +datasetfieldtype.producerAffiliation.watermark= datasetfieldtype.producerAbbreviation.watermark= -datasetfieldtype.producerURL.watermark=https:// -datasetfieldtype.producerLogoURL.watermark=https:// +datasetfieldtype.producerURL.watermark=Enter full URL, starting with http:// +datasetfieldtype.producerLogoURL.watermark=Enter full URL for image, starting with http:// datasetfieldtype.productionDate.watermark=YYYY-MM-DD datasetfieldtype.productionPlace.watermark= datasetfieldtype.contributor.watermark= datasetfieldtype.contributorType.watermark= -datasetfieldtype.contributorName.watermark=1) FamilyName, GivenName or 2) Organization +datasetfieldtype.contributorName.watermark=FamilyName, GivenName or Organization datasetfieldtype.grantNumber.watermark= -datasetfieldtype.grantNumberAgency.watermark=Organization XYZ +datasetfieldtype.grantNumberAgency.watermark= datasetfieldtype.grantNumberValue.watermark= datasetfieldtype.distributor.watermark= -datasetfieldtype.distributorName.watermark=1) FamilyName, GivenName or 2) Organization -datasetfieldtype.distributorAffiliation.watermark=Organization XYZ +datasetfieldtype.distributorName.watermark=FamilyName, GivenName or Organization +datasetfieldtype.distributorAffiliation.watermark= datasetfieldtype.distributorAbbreviation.watermark= -datasetfieldtype.distributorURL.watermark=https:// -datasetfieldtype.distributorLogoURL.watermark=https:// +datasetfieldtype.distributorURL.watermark=Enter full URL, starting with http:// +datasetfieldtype.distributorLogoURL.watermark=Enter full URL for image, starting with http:// datasetfieldtype.distributionDate.watermark=YYYY-MM-DD -datasetfieldtype.depositor.watermark=1) FamilyName, GivenName or 2) Organization +datasetfieldtype.depositor.watermark= datasetfieldtype.dateOfDeposit.watermark=YYYY-MM-DD datasetfieldtype.timePeriodCovered.watermark= datasetfieldtype.timePeriodCoveredStart.watermark=YYYY-MM-DD @@ -343,7 +343,7 @@ controlledvocabulary.language.galician=Galician controlledvocabulary.language.georgian=Georgian controlledvocabulary.language.german=German controlledvocabulary.language.greek_(modern)=Greek (modern) -controlledvocabulary.language.guarani=Guaraní +controlledvocabulary.language.guarani=Guaraní controlledvocabulary.language.gujarati=Gujarati controlledvocabulary.language.haitian,_haitian_creole=Haitian, Haitian Creole controlledvocabulary.language.hausa=Hausa @@ -403,7 +403,7 @@ controlledvocabulary.language.navajo,_navaho=Navajo, Navaho controlledvocabulary.language.northern_ndebele=Northern Ndebele controlledvocabulary.language.nepali=Nepali controlledvocabulary.language.ndonga=Ndonga -controlledvocabulary.language.norwegian_bokmal=Norwegian BokmÃ¥l +controlledvocabulary.language.norwegian_bokmal=Norwegian Bokmål controlledvocabulary.language.norwegian_nynorsk=Norwegian Nynorsk controlledvocabulary.language.norwegian=Norwegian controlledvocabulary.language.nuosu=Nuosu @@ -465,7 +465,7 @@ controlledvocabulary.language.urdu=Urdu controlledvocabulary.language.uzbek=Uzbek controlledvocabulary.language.venda=Venda controlledvocabulary.language.vietnamese=Vietnamese -controlledvocabulary.language.volapuk=Volapük +controlledvocabulary.language.volapuk=Volapük controlledvocabulary.language.walloon=Walloon controlledvocabulary.language.welsh=Welsh controlledvocabulary.language.wolof=Wolof diff --git a/src/main/webapp/metadataFragment.xhtml b/src/main/webapp/metadataFragment.xhtml index 88d66148a56..31739c8fb8a 100755 --- a/src/main/webapp/metadataFragment.xhtml +++ b/src/main/webapp/metadataFragment.xhtml @@ -247,7 +247,7 @@
+ id="unique1" required="#{dsf.required and datasetPage}" rendered="#{!dsf.datasetFieldType.allowMultiples}" filter="#{(dsf.datasetFieldType.controlledVocabularyValues.size() lt 10) ? 'false':'true'}" filterMatchMode="contains"> @@ -259,7 +259,7 @@ --> @@ -314,7 +314,7 @@
+ rendered="#{!subdsf.datasetFieldType.allowMultiples}" filter="#{(subdsf.datasetFieldType.controlledVocabularyValues.size() lt 10) ? 'false':'true'}" filterMatchMode="contains" > @@ -332,7 +332,9 @@ --> + rendered="#{subdsf.datasetFieldType.allowMultiples}" label="#{bundle.select}" multiple="true" + filter="#{(subdsf.datasetFieldType.controlledVocabularyValues.size() lt 10) ? 'false':'true'}" filterMatchMode="contains" + showHeader="#{(subdsf.datasetFieldType.controlledVocabularyValues.size() lt 10) ? 'false':'true'}"> diff --git a/src/main/webapp/resources/css/structure.css b/src/main/webapp/resources/css/structure.css index fefcfeb8e74..a2c0f79e4fb 100644 --- a/src/main/webapp/resources/css/structure.css +++ b/src/main/webapp/resources/css/structure.css @@ -49,7 +49,7 @@ body .ui-widget {font-size: inherit;} #status-alert {margin-top:0; margin-bottom:0;} #status-alert div.alert {border:0; box-shadow:none;} -#footer {position:absolute; bottom:0; width:100%; height:60px; padding-bottom:100px; color:#767676;} +footer {position:absolute; bottom:0; width:100%; height:60px; padding-bottom:100px; color:#767676;} #dvfooter.widget-view {position:fixed; left:0; bottom:0; margin:0; padding:4px 0 0 0; min-height:44p; height:auto; background:#fff;} #dvfooter .poweredbylogo {text-align:right;} #dvfooter .poweredbylogo span {font-size:.85em;margin-right:.3em;} @@ -1114,4 +1114,4 @@ span.label-default { background-color: #757575 } .dropdown-header { color:#757575 } .login-container h1 { font-size:30px; } -#embargoInputs label { font-weight: normal; } \ No newline at end of file +#embargoInputs label { font-weight: normal; } diff --git a/src/test/java/edu/harvard/iq/dataverse/api/SwordIT.java b/src/test/java/edu/harvard/iq/dataverse/api/SwordIT.java index ea6709cb915..29173d3bd76 100644 --- a/src/test/java/edu/harvard/iq/dataverse/api/SwordIT.java +++ b/src/test/java/edu/harvard/iq/dataverse/api/SwordIT.java @@ -5,6 +5,9 @@ import com.jayway.restassured.response.Response; import edu.harvard.iq.dataverse.GlobalId; import edu.harvard.iq.dataverse.api.datadeposit.SwordConfigurationImpl; +import java.io.File; +import java.io.IOException; +import java.nio.file.Paths; import java.util.List; import java.util.Map; @@ -195,6 +198,13 @@ public void testCreateDataverseCreateDatasetUploadFileDownloadFileEditTitle() { String persistentId = UtilIT.getDatasetPersistentIdFromSwordResponse(createDatasetResponse); logger.info("persistent id: " + persistentId); + Response getJson = UtilIT.nativeGetUsingPersistentId(persistentId, apiToken); + getJson.prettyPrint(); + getJson.then().assertThat() + .statusCode(OK.getStatusCode()) + .body("data.latestVersion.license.name", equalTo("CC0 1.0")) + .body("data.latestVersion.license.uri", equalTo("http://creativecommons.org/publicdomain/zero/1.0")); + Response atomEntryUnAuth = UtilIT.getSwordAtomEntry(persistentId, apiTokenNoPrivs); atomEntryUnAuth.prettyPrint(); atomEntryUnAuth.then().assertThat() @@ -638,6 +648,107 @@ public void testCreateDatasetPublishDestroy() { } + + @Test + public void testLicenses() { + + Response createUser = UtilIT.createRandomUser(); + String username = UtilIT.getUsernameFromResponse(createUser); + String apiToken = UtilIT.getApiTokenFromResponse(createUser); + + Response createDataverse = UtilIT.createRandomDataverse(apiToken); + createDataverse.prettyPrint(); + createDataverse.then().assertThat() + .statusCode(CREATED.getStatusCode()); + String dataverseAlias = UtilIT.getAliasFromResponse(createDataverse); + + String title = "License to Kill"; + String description = "Spies in 1989"; + String license = "NONE"; + Response failToCreateDataset1 = UtilIT.createDatasetViaSwordApi(dataverseAlias, title, description, license, apiToken); + failToCreateDataset1.prettyPrint(); + // As of 5.10 and PR #7920, you cannot pass NONE as a license. + failToCreateDataset1.then().assertThat() + .statusCode(BAD_REQUEST.getStatusCode()); + + String rights = "Call me"; + Response failToCreateDataset2 = UtilIT.createDatasetViaSwordApi(dataverseAlias, title, description, license, rights, apiToken); + failToCreateDataset2.prettyPrint(); + // You can't pass both license and rights + failToCreateDataset2.then().assertThat() + .statusCode(BAD_REQUEST.getStatusCode()); + + license = "CC0 1.0"; + Response createDataset = UtilIT.createDatasetViaSwordApi(dataverseAlias, title, description, license, apiToken); + createDataset.prettyPrint(); + createDataset.then().assertThat() + .statusCode(CREATED.getStatusCode()); + + String persistentId = UtilIT.getDatasetPersistentIdFromSwordResponse(createDataset); + + Response getJson = UtilIT.nativeGetUsingPersistentId(persistentId, apiToken); + getJson.prettyPrint(); + getJson.then().assertThat() + .statusCode(OK.getStatusCode()) + .body("data.latestVersion.license.name", equalTo("CC0 1.0")) + .body("data.latestVersion.license.uri", equalTo("http://creativecommons.org/publicdomain/zero/1.0")) + .body("data.latestVersion.termsOfUse", equalTo(null)); + } + + @Test + public void testCustomTerms() { + + Response createUser = UtilIT.createRandomUser(); + String username = UtilIT.getUsernameFromResponse(createUser); + String apiToken = UtilIT.getApiTokenFromResponse(createUser); + + Response createDataverse = UtilIT.createRandomDataverse(apiToken); + createDataverse.prettyPrint(); + createDataverse.then().assertThat() + .statusCode(CREATED.getStatusCode()); + String dataverseAlias = UtilIT.getAliasFromResponse(createDataverse); + + String title = "Terms of Endearment"; + String description = "Aurora, etc."; + String license = null; + String rights = "Call me"; + Response createDataset = UtilIT.createDatasetViaSwordApi(dataverseAlias, title, description, license, rights, apiToken); + createDataset.prettyPrint(); + createDataset.then().assertThat() + .statusCode(CREATED.getStatusCode()); + + String persistentId = UtilIT.getDatasetPersistentIdFromSwordResponse(createDataset); + + Response getJson = UtilIT.nativeGetUsingPersistentId(persistentId, apiToken); + getJson.prettyPrint(); + getJson.then().assertThat() + .statusCode(OK.getStatusCode()) + .body("data.latestVersion.termsOfUse", equalTo("Call me")) + .body("data.latestVersion.license", equalTo(null)); + } + + @Test + public void testXmlExampleInGuides() throws IOException { + + Response createUser = UtilIT.createRandomUser(); + String username = UtilIT.getUsernameFromResponse(createUser); + String apiToken = UtilIT.getApiTokenFromResponse(createUser); + + Response createDataverse = UtilIT.createRandomDataverse(apiToken); + createDataverse.prettyPrint(); + createDataverse.then().assertThat() + .statusCode(CREATED.getStatusCode()); + String dataverseAlias = UtilIT.getAliasFromResponse(createDataverse); + + File exampleFile = new File("doc/sphinx-guides/source/api/sword-atom-entry.xml"); + String xmlIn = new String(java.nio.file.Files.readAllBytes(Paths.get(exampleFile.getAbsolutePath()))); + Response createDataset = UtilIT.createDatasetViaSwordApiFromXML(dataverseAlias, xmlIn, apiToken); + createDataset.prettyPrint(); + createDataset.then().assertThat() + .statusCode(CREATED.getStatusCode()); + + } + /** * This test requires the root dataverse to have been published already. * diff --git a/src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java b/src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java index 23672c45916..7b9b5f3b129 100644 --- a/src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java +++ b/src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java @@ -436,7 +436,18 @@ static Response createDatasetViaSwordApi(String dataverseToCreateDatasetIn, Stri return createDatasetViaSwordApiFromXML(dataverseToCreateDatasetIn, xmlIn, apiToken); } - private static Response createDatasetViaSwordApiFromXML(String dataverseToCreateDatasetIn, String xmlIn, String apiToken) { + static Response createDatasetViaSwordApi(String dataverseToCreateDatasetIn, String title, String description, String license, String apiToken) { + String nullRights = null; + String xmlIn = getDatasetXml(title, "Lastname, Firstname", description, license, nullRights); + return createDatasetViaSwordApiFromXML(dataverseToCreateDatasetIn, xmlIn, apiToken); + } + + static Response createDatasetViaSwordApi(String dataverseToCreateDatasetIn, String title, String description, String license, String rights, String apiToken) { + String xmlIn = getDatasetXml(title, "Lastname, Firstname", description, license, rights); + return createDatasetViaSwordApiFromXML(dataverseToCreateDatasetIn, xmlIn, apiToken); + } + + public static Response createDatasetViaSwordApiFromXML(String dataverseToCreateDatasetIn, String xmlIn, String apiToken) { Response createDatasetResponse = given() .auth().basic(apiToken, EMPTY_STRING) .body(xmlIn) @@ -534,11 +545,27 @@ static Response loadMetadataBlock(String apiToken, byte[] body) { } static private String getDatasetXml(String title, String author, String description) { + String nullLicense = null; + String nullRights = null; + return getDatasetXml(title, author, description, nullLicense, nullRights); + } + + static private String getDatasetXml(String title, String author, String description, String license, String rights) { + String optionalLicense = ""; + if (license != null) { + optionalLicense = " " + license + "\n"; + } + String optionalRights = ""; + if (rights != null) { + optionalRights = " " + rights + "\n"; + } String xmlIn = "\n" + "\n" + " " + title + "\n" + " " + author + "\n" + " " + description + "\n" + + optionalLicense + + optionalRights + "\n" + ""; return xmlIn; diff --git a/src/test/java/edu/harvard/iq/dataverse/export/DDIExporterTest.java b/src/test/java/edu/harvard/iq/dataverse/export/DDIExporterTest.java index 8ce823eb600..c9446d7c414 100644 --- a/src/test/java/edu/harvard/iq/dataverse/export/DDIExporterTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/export/DDIExporterTest.java @@ -1,6 +1,10 @@ package edu.harvard.iq.dataverse.export; import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; import edu.harvard.iq.dataverse.ControlledVocabularyValue; import edu.harvard.iq.dataverse.DatasetFieldType; import edu.harvard.iq.dataverse.DatasetFieldType.FieldType; @@ -17,10 +21,15 @@ import java.io.File; import java.io.IOException; import java.io.StringReader; +import java.lang.reflect.Type; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.Arrays; import java.util.HashSet; import java.util.Set; @@ -42,7 +51,10 @@ public class DDIExporterTest { private static final SettingsServiceBean settingsService = Mockito.mock(SettingsServiceBean.class); private static final LicenseServiceBean licenseService = Mockito.mock(LicenseServiceBean.class); private static final MockDatasetFieldSvc datasetFieldTypeSvc = new MockDatasetFieldSvc(); - private static final Gson gson = new Gson(); + private static final Gson gson = new GsonBuilder().registerTypeAdapter(LocalDate.class, (JsonDeserializer) (JsonElement json, Type type, JsonDeserializationContext jsonDeserializationContext) -> { + Instant instant = Instant.ofEpochMilli(json.getAsJsonPrimitive().getAsLong()); + return LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); + }).create(); /* * Setup and teardown mocks for BrandingUtil for atomicity.