From 219353842f08e2aeda5ffca97ccb4441f245cb05 Mon Sep 17 00:00:00 2001
From: Mike Shallcross
Date: Tue, 3 Feb 2026 14:31:06 -0500
Subject: [PATCH 001/119] added rde assets
---
rde_schema/icpsr_rde_schema.md | 2405 +++++++++++++++++
.../notes/collection_date_time_frame.yaml | 7 +
rde_schema/notes/data_type.yaml | 24 +
rde_schema/notes/funding_purpose.yaml | 11 +
.../notes/geographic_coverage_area.yaml | 13 +
rde_schema/notes/processing_extents.yaml | 14 +
rde_schema/notes/summary.yaml | 7 +
rde_schema/notes/time_methods.yaml | 19 +
rde_schema/notes/time_period_dates.yaml | 9 +
rde_schema/notes/time_period_time_frame.yaml | 7 +
rde_schema/notes/title.yaml | 39 +
rde_schema/property_bank/README.md | 66 +
.../property_bank/alternate_titles.json | 14 +
rde_schema/property_bank/citation.json | 12 +
.../property_bank/collection_dates.json | 46 +
.../property_bank/collection_modes.json | 57 +
.../property_bank/common_data_elements.json | 93 +
rde_schema/property_bank/contributors.json | 157 ++
.../property_bank/data_management_plan.json | 11 +
.../property_bank/data_source_types.json | 57 +
rde_schema/property_bank/deposits.json | 56 +
rde_schema/property_bank/distributors.json | 56 +
.../property_bank/extent_of_processing.json | 45 +
.../property_bank/external_data_sources.json | 19 +
.../property_bank/external_source_id.json | 12 +
rde_schema/property_bank/funding_sources.json | 101 +
.../property_bank/general_data_formats.json | 61 +
.../geographic_coverage_areas.json | 68 +
.../property_bank/icpsr_subject_terms.json | 57 +
.../property_bank/jel_classifications.json | 65 +
rde_schema/property_bank/languages.json | 59 +
rde_schema/property_bank/license.json | 30 +
rde_schema/property_bank/link_title.json | 9 +
rde_schema/property_bank/link_url.json | 10 +
.../property_bank/manuscript_number.json | 9 +
.../property_bank/mesh_subject_terms.json | 52 +
.../nationally_representative_sample.json | 8 +
rde_schema/property_bank/notes.json | 15 +
rde_schema/property_bank/organization.json | 54 +
rde_schema/property_bank/oversamples.json | 60 +
rde_schema/property_bank/person.json | 97 +
rde_schema/property_bank/preregistration.json | 11 +
.../principal_investigators.json | 87 +
rde_schema/property_bank/response_rates.json | 12 +
rde_schema/property_bank/restrictions.json | 12 +
rde_schema/property_bank/sampling_note.json | 12 +
.../property_bank/sampling_procedures.json | 61 +
rde_schema/property_bank/scales.json | 19 +
.../smallest_geographic_unit.json | 41 +
.../property_bank/software_applications.json | 179 ++
rde_schema/property_bank/study_design.json | 12 +
rde_schema/property_bank/study_purpose.json | 12 +
rde_schema/property_bank/summary.json | 12 +
rde_schema/property_bank/time_methods.json | 61 +
rde_schema/property_bank/time_periods.json | 46 +
rde_schema/property_bank/title.json | 14 +
.../property_bank/units_of_analysis.json | 58 +
rde_schema/property_bank/universe.json | 17 +
.../property_bank/variable_description.json | 12 +
rde_schema/property_bank/version_history.json | 59 +
rde_schema/property_bank/weight.json | 12 +
rde_schema/rde_markdown_generation.py | 317 +++
62 files changed, 5077 insertions(+)
create mode 100644 rde_schema/icpsr_rde_schema.md
create mode 100644 rde_schema/notes/collection_date_time_frame.yaml
create mode 100644 rde_schema/notes/data_type.yaml
create mode 100644 rde_schema/notes/funding_purpose.yaml
create mode 100644 rde_schema/notes/geographic_coverage_area.yaml
create mode 100644 rde_schema/notes/processing_extents.yaml
create mode 100644 rde_schema/notes/summary.yaml
create mode 100644 rde_schema/notes/time_methods.yaml
create mode 100644 rde_schema/notes/time_period_dates.yaml
create mode 100644 rde_schema/notes/time_period_time_frame.yaml
create mode 100644 rde_schema/notes/title.yaml
create mode 100644 rde_schema/property_bank/README.md
create mode 100644 rde_schema/property_bank/alternate_titles.json
create mode 100644 rde_schema/property_bank/citation.json
create mode 100644 rde_schema/property_bank/collection_dates.json
create mode 100644 rde_schema/property_bank/collection_modes.json
create mode 100644 rde_schema/property_bank/common_data_elements.json
create mode 100644 rde_schema/property_bank/contributors.json
create mode 100644 rde_schema/property_bank/data_management_plan.json
create mode 100644 rde_schema/property_bank/data_source_types.json
create mode 100644 rde_schema/property_bank/deposits.json
create mode 100644 rde_schema/property_bank/distributors.json
create mode 100644 rde_schema/property_bank/extent_of_processing.json
create mode 100644 rde_schema/property_bank/external_data_sources.json
create mode 100644 rde_schema/property_bank/external_source_id.json
create mode 100644 rde_schema/property_bank/funding_sources.json
create mode 100644 rde_schema/property_bank/general_data_formats.json
create mode 100644 rde_schema/property_bank/geographic_coverage_areas.json
create mode 100644 rde_schema/property_bank/icpsr_subject_terms.json
create mode 100644 rde_schema/property_bank/jel_classifications.json
create mode 100644 rde_schema/property_bank/languages.json
create mode 100644 rde_schema/property_bank/license.json
create mode 100644 rde_schema/property_bank/link_title.json
create mode 100644 rde_schema/property_bank/link_url.json
create mode 100644 rde_schema/property_bank/manuscript_number.json
create mode 100644 rde_schema/property_bank/mesh_subject_terms.json
create mode 100644 rde_schema/property_bank/nationally_representative_sample.json
create mode 100644 rde_schema/property_bank/notes.json
create mode 100644 rde_schema/property_bank/organization.json
create mode 100644 rde_schema/property_bank/oversamples.json
create mode 100644 rde_schema/property_bank/person.json
create mode 100644 rde_schema/property_bank/preregistration.json
create mode 100644 rde_schema/property_bank/principal_investigators.json
create mode 100644 rde_schema/property_bank/response_rates.json
create mode 100644 rde_schema/property_bank/restrictions.json
create mode 100644 rde_schema/property_bank/sampling_note.json
create mode 100644 rde_schema/property_bank/sampling_procedures.json
create mode 100644 rde_schema/property_bank/scales.json
create mode 100644 rde_schema/property_bank/smallest_geographic_unit.json
create mode 100644 rde_schema/property_bank/software_applications.json
create mode 100644 rde_schema/property_bank/study_design.json
create mode 100644 rde_schema/property_bank/study_purpose.json
create mode 100644 rde_schema/property_bank/summary.json
create mode 100644 rde_schema/property_bank/time_methods.json
create mode 100644 rde_schema/property_bank/time_periods.json
create mode 100644 rde_schema/property_bank/title.json
create mode 100644 rde_schema/property_bank/units_of_analysis.json
create mode 100644 rde_schema/property_bank/universe.json
create mode 100644 rde_schema/property_bank/variable_description.json
create mode 100644 rde_schema/property_bank/version_history.json
create mode 100644 rde_schema/property_bank/weight.json
create mode 100644 rde_schema/rde_markdown_generation.py
diff --git a/rde_schema/icpsr_rde_schema.md b/rde_schema/icpsr_rde_schema.md
new file mode 100644
index 0000000..58cef00
--- /dev/null
+++ b/rde_schema/icpsr_rde_schema.md
@@ -0,0 +1,2405 @@
+# DRAFT ICPSR RDE Metadata Schema Documentation
+
+Last updated: February 03, 2026
+
+This metadata schema was developed as part of the Inter-university Consortium for Political and Social Research (ICPSR) as part of the NSF-funded [Research Data Ecosystem (RDE)](https://www.icpsr.umich.edu/sites/icpsr/find-data/working-together/projects/rde) project. The schema is used to describe ICPSR data collections; these rules and definitions are intended to (a) assist ICPSR staff with metadata entry, and (b) help ICPSR users – including data depositors and researchers accessing data – understand how to use and interpret our metadata.
+
+## Metadata Elements: Overview
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| [Alternate Titles](#alternate-titles) | No | Yes | Text | The alternate name(s) or acronym(s) commonly used to refer to the data collection. |
+| [Citation](#citation) | No | No | Text | The official way to reference the data collection in writing. |
+| [Collection Dates](#collection-dates) | No | Yes | Multi-part element; see subfield | The date(s) when the data were physically collected. |
+| [Collection Modes](#collection-modes) | No | Yes | Multi-part element; see subfield | The method(s) or procedure(s) used to collect the data. |
+| [Data Management Plan](#data-management-plan) | No | No | Text | A link to the data management plan (preferably a persistent identifier such as a DOI). |
+| [Data Source Types](#data-source-types) | No | Yes | Multi-part element; see subfield | The source(s) of the data as collected by the Principal Investigators. |
+| [Distributors](#distributors) | No | Yes | Multi-part element; see subfield | The organization(s) responsible for distributing the data collection. |
+| [External Data Sources](#external-data-sources) | No | Yes | Text | The source of the data, when that source is external to the data collection and can be independently cited. |
+| [Funding Sources](#funding-sources) | No | Yes | Multi-part element; see subfield | The sources of funding that supported the data collection. |
+| [General Data Formats](#general-data-formats) | No | Yes | Multi-part element; see subfield | The file format types present in the data collection. |
+| [Geographic Coverage Areas](#geographic-coverage-areas) | No | Yes | Multi-part element; see subfield | The geographic locations where the data refer or are related. |
+| [ICPSR Subject Terms](#icpsr-subject-terms) | No | Yes | Multi-part element; see subfield | A controlled list of social science terms maintained by ICPSR and used to indicate topics related to the data collection. |
+| [Journal of Economic Literature (JEL) Classification Codes](#journal-of-economic-literature-jel-classification-codes) | No | Yes | Multi-part element; see subfield | Classification codes used to categorize economic research. |
+| [License](#license) | No | No | Multi-part element; see subfield | A license governing the data's use. |
+| [Medical Subject Headings (MeSH) Terms](#medical-subject-headings-mesh-terms) | No | Yes | Multi-part element; see subfield | Biomedical and health-related terms from the National Library of Medicine that describe the data collection's topics. |
+| [Nationally Representative Sample](#nationally-representative-sample) | No | No | Text | Indicates whether the data collection uses a sampling design intended to represent the demographics, behaviors, and/or characteristics of the entire nation. This typically involves probability-based methods that allow generalization. It does not include convenience samples that appear similar to the nation by chance. |
+| [Notes](#notes) | No | Yes | Text | Important details about the data collection (like unique authoring, discrepancies, or processing information) that can't be recorded in other metadata elements. |
+| [Organization](#organization) | No | No | Multi-part element; see subfield | An organization associated with an ICPSR data collection or service. |
+| [Person](#person) | No | No | Multi-part element; see subfield | A person associated with an ICPSR data collection or service. |
+| [Preregistration](#preregistration) | No | No | Text | A link to a research plan for the data collection (preferably a persistent identifier such as a DOI). |
+| [Principal Investigators](#principal-investigators) | No | Yes | Multi-part element; see subfield | The key people or organizations responsible for the data collection, listed by importance. Each data collection requires at least one PI, either a person or an organization. |
+| [Response Rates](#response-rates) | No | No | Text | The percentage of respondents in the sample who participated in the data collection. |
+| [Sampling Note](#sampling-note) | No | No | Text | Supplemental information about the sampling process that does not fit neatly into the Sampling Procedure field. |
+| [Sampling Procedures](#sampling-procedures) | No | Yes | Text | The type(s) of sample and sample design used to select survey respondents to represent the population. |
+| [Scales](#scales) | No | No | Text | Any commonly known scales used to collect data for the data collection (e.g., MMPI, CPI, the Census Occupational Codes, etc.). |
+| [Smallest Geographic Unit](#smallest-geographic-unit) | No | No | Multi-part element; see subfield | The smallest geographic unit (e.g., state or census tract) used in the dataset. |
+| [Software Applications](#software-applications) | No | Yes | Multi-part element; see subfield | Software used by the principal investigator(s) to collect or analyze data, required to understand how the data were obtained or to reproduce results. |
+| [Study Design](#study-design) | No | No | Text | The procedures used to contact participants and gather data. |
+| [Summary](#summary) | No | No | Text | A description of the data collection that helps users understand its purpose, substance, and key topics. |
+| [Time Methods](#time-methods) | No | Yes | Multi-part element; see subfield | The methods used to collect data over time, like snapshots at one point (cross-sectional) or repeatedly (longitudinal) to study changes or trends |
+| [Time Periods](#time-periods) | No | Yes | Multi-part element; see subfield | The time period(s) to which the data refer, regardless of when the data were collected. |
+| [Title](#title) | No | No | Text | The official title that describes what the data collection is about, its geographic scope, and the time period it covered. |
+| [Units of Analysis](#units-of-analysis) | No | Yes | Multi-part element; see subfield | The object(s) of analysis for the data collection, such as an organization, individual, or household. |
+| [Universe](#universe) | No | No | Text | The total group of persons or other entities (e.g., households or organizations) that were the object of research and to which analytic results refer. |
+| [Variable Description](#variable-description) | No | No | Text | Significant variables (particularly demographic variables) in the data files. |
+| [Version History](#version-history) | No | Yes | Multi-part element; see subfield | A record of how the data collection has changed over time. |
+| [Weights](#weights) | No | No | Text | The weight variables and the criteria for using them in data analysis or other information about how the data are weighted if no weight variables are present. |
+
+---
+
+## Metadata Elements: Detailed Information
+
+
+### Alternate Titles
+
+**Description:** The alternate name(s) or acronym(s) commonly used to refer to the data collection.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```
+['Add Health Parent Study']
+```
+
+```
+['FACES 2009']
+```
+
+```
+['Survey of Consumers']
+```
+
+```
+['Eurobarometer 85.2']
+```
+
+
+---
+
+
+### Citation
+
+**Description:** The official way to reference the data collection in writing.
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Usage Notes:** The Citation is dynamically assembled from other entry fields in this format: PI (list). Title. Distributor (list), Issued Date. DOI. Note: ICPSR 'union catalog' records (i.e., external resource to which ICPSR links as a courtesy) do not have citations.
+
+**Examples:**
+
+```
+University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1
+```
+
+```
+United States Department of Justice. Office of Justice Programs. Office of Juvenile Justice and Delinquency Prevention. Juvenile Residential Facility Census, 2020 [United States]. Inter-university Consortium for Political and Social Research [distributor], 2024-07-15. https://doi.org/10.3886/ICPSR38914.v1
+```
+
+
+---
+
+
+### Collection Dates
+
+**Description:** The date(s) when the data were physically collected.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| Start Date | Yes | No | Text | The start date of the data collection period. Must be in YYYY-MM-DD, YYYY-MM, or YYYY format with no spaces. |
+| End Date | Yes | No | Text | The end date of the data collection period. Must be in YYYY-MM-DD, YYYY-MM, or YYYY format with no spaces. |
+| Time Frame | No | No | Text | An optional free-text description of the data collection period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present. |
+
+##### Start Date
+
+**Description:** The start date of the data collection period. Must be in YYYY-MM-DD, YYYY-MM, or YYYY format with no spaces.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"2000"
+```
+
+```json
+"2019-10"
+```
+
+```json
+"2021-03-01"
+```
+
+##### End Date
+
+**Description:** The end date of the data collection period. Must be in YYYY-MM-DD, YYYY-MM, or YYYY format with no spaces.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"2000"
+```
+
+```json
+"2019-10"
+```
+
+```json
+"2021-03-01"
+```
+
+##### Time Frame
+
+**Description:** An optional free-text description of the data collection period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Usage Notes:** The Time Frame should not simply restate the date(s) in words. For example, if the Collection Date starts in 2020-01, the Time Frame should repeat 'January 2020'.
+
+**Examples:**
+
+```json
+"Fall 2001"
+```
+
+```json
+"Student data"
+```
+
+###### Complete Examples (with Subfields):
+
+```
+ Start Date: 2018
+ End Date: 2018
+ Time Frame: Summer and Fall 2018
+```
+
+```
+ Start Date: 2020-10
+ End Date: 2020-10
+```
+
+
+---
+
+
+### Collection Modes
+
+**Description:** The method(s) or procedure(s) used to collect the data.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| Collection Mode | Yes | No | Text | A human-readable form of the term. |
+| Collection Mode Code | Yes | No | Text | A machine-readable/-actionable form of the term. |
+| Collection Mode URI | Yes | No | Text | The URI for the term. |
+
+##### Collection Mode
+
+**Description:** A human-readable form of the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"Face-to-face interview: Computer-assisted (CAPI/CAMI)"
+```
+
+```json
+"Measurements and tests"
+```
+
+```json
+"Computer-based observation"
+```
+
+##### Collection Mode Code
+
+**Description:** A machine-readable/-actionable form of the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"Interview.FaceToFace.CAPIorCAMI"
+```
+
+```json
+"MeasurementsAndTests"
+```
+
+```json
+"Observation.ComputerBased"
+```
+
+##### Collection Mode URI
+
+**Description:** The URI for the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+###### Complete Examples (with Subfields):
+
+```
+ Collection Mode: Face-to-face interview: Computer-assisted (CAPI/CAMI)
+ Collection Mode Code: Interview.FaceToFace.CAPIorCAMI
+ Collection Mode URI: https://example.com/collection_modes/234
+```
+
+```
+ Collection Mode: Measurements and tests
+ Collection Mode Code: MeasurementsAndTests
+ Collection Mode URI: https://example.com/collection_modes/972
+```
+
+```
+ Collection Mode: Computer-based observation
+ Collection Mode Code: Observation.ComputerBased
+ Collection Mode URI: https://example.com/collection_modes/113
+```
+
+
+---
+
+
+### Data Management Plan
+
+**Description:** A link to the data management plan (preferably a persistent identifier such as a DOI).
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```
+https://doi.org/10.1000/182
+```
+
+
+---
+
+
+### Data Source Types
+
+**Description:** The source(s) of the data as collected by the Principal Investigators.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| Data Source Type | Yes | No | Text | A human-readable form of the term. |
+| Data Source Type Code | Yes | No | Text | A machine-readable/-actionable form of the term. |
+| Data Source Type URI | Yes | No | Text | The URI for the term. |
+
+##### Data Source Type
+
+**Description:** A human-readable form of the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"Registers/Records/Accounts: Medical/Clinical"
+```
+
+```json
+"Events/Interactions"
+```
+
+```json
+"Other"
+```
+
+##### Data Source Type Code
+
+**Description:** A machine-readable/-actionable form of the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"RegistersRecordsAccounts.MedicalClinical"
+```
+
+```json
+"EventsInteractions"
+```
+
+```json
+"Other"
+```
+
+##### Data Source Type URI
+
+**Description:** The URI for the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+###### Complete Examples (with Subfields):
+
+```
+ Data Source Type: Registers/Records/Accounts: Medical/Clinical
+ Data Source Type Code: RegistersRecordsAccounts.MedicalClinical
+ Data Source Type URI: https://example.com/data_source_type/123
+```
+
+```
+ Data Source Type: Events/Interactions
+ Data Source Type Code: EventsInteractions
+ Data Source Type URI: https://example.com/data_source_type/234
+```
+
+```
+ Data Source Type: Other
+ Data Source Type Code: Other
+ Data Source Type URI: https://example.com/data_source_type/737
+```
+
+
+---
+
+
+### Distributors
+
+**Description:** The organization(s) responsible for distributing the data collection.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| organization | Yes | No | | |
+| Order | Yes | No | Number | The order of importance for the distributors of the data collection. |
+
+##### organization
+
+**Description:**
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**:
+
+##### Order
+
+**Description:** The order of importance for the distributors of the data collection.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Number
+
+**Usage Notes:** A value of '0' indicates the primary distributor, '1' the second, and so forth.
+
+**Examples:**
+
+```json
+0
+```
+
+```json
+1
+```
+
+```json
+2
+```
+
+```json
+3
+```
+
+###### Complete Examples (with Subfields):
+
+```
+ organization: {'name': 'Inter-university Consortium for Political and Social Research', 'name_code': '1234', 'name_uri': 'https://icpsr.example.com/organizations/1234', 'ror': 'https://ror.org/017pz3h73'}
+ Order: 0
+```
+
+```
+ organization: {'name': 'GESIS', 'name_code': '2345', 'name_uri': 'https://icpsr.example.com/organizations/2345', 'ror': 'https://ror.org/018afyw53'}
+ Order: 1
+```
+
+```
+ organization: {'name': 'Roper Center for Public Opinion Research', 'name_code': '1234', 'name_uri': 'https://icpsr.example.com/organizations/1234'}
+ Order: 0
+```
+
+
+---
+
+
+### External Data Sources
+
+**Description:** The source of the data, when that source is external to the data collection and can be independently cited.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Text
+
+**Usage Notes:** External data sources include books, journal articles, administrative records, agency-sponsored surveys, and machine-readable files. Each source includes at minimum the title, author, publication year, and journal (if applicable). Any citation format is accepted.
+
+**Examples:**
+
+```
+["'Voting Scores.' Congressional Quarterly Almanac 33 (1977), 487-498"]
+```
+
+```
+['United States Bureau of the Census Economic Surveys, 1998-2000', 'United States Congressional Record, 1989']
+```
+
+```
+['Annual Company Organization Survey, 2003']
+```
+
+
+---
+
+
+### Funding Sources
+
+**Description:** The sources of funding that supported the data collection.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| organization | Yes | No | | |
+| Funding Awards | No | Yes | Multi-part element; see subfield definitions for more information. | Financial support for the data collection. |
+| Order | Yes | No | Number | Internal ICPSR field used to determine the order of importance for the funders associated with the data collection. |
+
+##### organization
+
+**Description:**
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**:
+
+##### Funding Awards
+
+**Description:** Financial support for the data collection.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+##### Order
+
+**Description:** Internal ICPSR field used to determine the order of importance for the funders associated with the data collection.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Number
+
+**Examples:**
+
+```json
+0
+```
+
+```json
+1
+```
+
+```json
+2
+```
+
+```json
+3
+```
+
+###### Complete Examples (with Subfields):
+
+```
+ organization: {'name': 'Robert Wood Johnson Foundation', 'name_code': '5643', 'name_uri': 'https://icpsr.example.com/organizations/5643', 'ror': 'https://ror.org/02ymmdj85'}
+ Funding Awards: [{'grant_number': 'MDR-8550085'}, {'grant_number': 'MDR-8550204'}]
+ Order: 0
+```
+
+```
+ organization: {'name': 'United States Department of Justice. Office of Justice Programs. Bureau of Justice Statistics', 'name_code': '2342', 'name_uri': 'https://icpsr.example.com/organizations/2342', 'ror': 'https://ror.org/0006s4z66'}
+ Funding Awards: [{'grant_number': 'SES-1835721', 'grant_uri': 'https://doi.org/10.35802/000000'}]
+ Order: 1
+```
+
+```
+ organization: {'name': 'Acme Foundation'}
+ Order: 0
+```
+
+
+---
+
+
+### General Data Formats
+
+**Description:** The file format types present in the data collection.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| General Data Format | Yes | No | Text | A human-readable form of the term. |
+| General Data Format Code | Yes | No | Text | A machine-readable/-actionable form of the term. |
+| General Data Format URI | Yes | No | Text | The URI for the term. |
+
+##### General Data Format
+
+**Description:** A human-readable form of the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"Text"
+```
+
+```json
+"Still image"
+```
+
+```json
+"Numeric"
+```
+
+##### General Data Format Code
+
+**Description:** A machine-readable/-actionable form of the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"Text"
+```
+
+```json
+"StillImage"
+```
+
+```json
+"Numeric"
+```
+
+##### General Data Format URI
+
+**Description:** The URI for the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+###### Complete Examples (with Subfields):
+
+```
+ General Data Format: Text
+ General Data Format Code: Text
+ General Data Format URI: https://example.com/general_data_format/972
+```
+
+```
+ General Data Format: Still image
+ General Data Format Code: StillImage
+ General Data Format URI: https://example.com/general_data_format/234
+```
+
+```
+ General Data Format: Numeric
+ General Data Format Code: Numeric
+ General Data Format URI: https://example.com/general_data_format/563
+```
+
+
+---
+
+
+### Geographic Coverage Areas
+
+**Description:** The geographic locations where the data refer or are related.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| City | No | No | Text | A town, city, or similar political entity covered in a data collection |
+| County | No | No | Text | A county or similar administrative area covered in a data collection |
+| State | No | No | Text | A state, province, canton or similar political entity covered in a data collection |
+| Country | Yes | No | Text | A country covered in a data collection |
+| Geographic Coverage Area URI | No | No | Text | The unique identifier for the geographic coverage area. |
+
+##### City
+
+**Description:** A town, city, or similar political entity covered in a data collection
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"Ann Arbor"
+```
+
+```json
+"Hanover"
+```
+
+```json
+"Chongqing"
+```
+
+##### County
+
+**Description:** A county or similar administrative area covered in a data collection
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"Monroe County"
+```
+
+```json
+"Washtenaw County"
+```
+
+```json
+"Cuyahoga County"
+```
+
+##### State
+
+**Description:** A state, province, canton or similar political entity covered in a data collection
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"Michigan"
+```
+
+```json
+"Manitoba"
+```
+
+```json
+"Yunnan"
+```
+
+##### Country
+
+**Description:** A country covered in a data collection
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"United States"
+```
+
+```json
+"China"
+```
+
+```json
+"Ghana"
+```
+
+##### Geographic Coverage Area URI
+
+**Description:** The unique identifier for the geographic coverage area.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"https://www.geonames.org/4990729/"
+```
+
+```json
+"https://www.geonames.org/6269554"
+```
+
+###### Complete Examples (with Subfields):
+
+```
+ City: Cleveland
+ State: Ohio
+ Country: United States
+ Geographic Coverage Area URI: https://www.geonames.org/5150529
+```
+
+```
+ City: Pittsburgh
+ State: Pennsylvania
+ Country: United States
+ Geographic Coverage Area URI: https://www.geonames.org/5206379
+```
+
+```
+ Country: Germany
+```
+
+
+---
+
+
+### ICPSR Subject Terms
+
+**Description:** A controlled list of social science terms maintained by ICPSR and used to indicate topics related to the data collection.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| ICPSR Subject Term | Yes | No | Text | A human-readable form of the subject term. |
+| ICPSR Subject Term Code | Yes | No | Text | A machine-readable/-actionable form of the subject term. |
+| ICPSR Subject Term URI | Yes | No | Text | The URI for the subject term. |
+
+##### ICPSR Subject Term
+
+**Description:** A human-readable form of the subject term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"abduction"
+```
+
+```json
+"ability"
+```
+
+```json
+"Abolition movement"
+```
+
+##### ICPSR Subject Term Code
+
+**Description:** A machine-readable/-actionable form of the subject term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"20391"
+```
+
+```json
+"24123"
+```
+
+```json
+"23632"
+```
+
+##### ICPSR Subject Term URI
+
+**Description:** The URI for the subject term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/20391"
+```
+
+```json
+"https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24040"
+```
+
+###### Complete Examples (with Subfields):
+
+```
+ ICPSR Subject Term: biographical data
+ ICPSR Subject Term Code: 20391
+ ICPSR Subject Term URI: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/20391
+```
+
+```
+ ICPSR Subject Term: age
+ ICPSR Subject Term Code: 24123
+ ICPSR Subject Term URI: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24123
+```
+
+```
+ ICPSR Subject Term: happiness
+ ICPSR Subject Term Code: 25624
+ ICPSR Subject Term URI: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/25624
+```
+
+
+---
+
+
+### Journal of Economic Literature (JEL) Classification Codes
+
+**Description:** Classification codes used to categorize economic research.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| JEL Classification Term | Yes | No | Text | A human-readable form of the term. |
+| JEL Classification Code | No | No | Text | A machine-readable/-actionable form of the term. |
+| JEL Classification URI | No | No | Text | The URI for the JEL classification code. |
+
+##### JEL Classification Term
+
+**Description:** A human-readable form of the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"A12 Relation of Economics to Other Disciplines"
+```
+
+```json
+"B00 History of Economic Thought, Methodology, and Heterodox Approaches"
+```
+
+##### JEL Classification Code
+
+**Description:** A machine-readable/-actionable form of the term.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"a12"
+```
+
+```json
+"b00"
+```
+
+```json
+"n22"
+```
+
+##### JEL Classification URI
+
+**Description:** The URI for the JEL classification code.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"http://example.com/jel/a12"
+```
+
+```json
+"http://example.com/jel/b00"
+```
+
+###### Complete Examples (with Subfields):
+
+```
+ JEL Classification Term: A12 Relation of Economics to Other Disciplines
+ JEL Classification Code: a12
+ JEL Classification URI: http://example.com/jel/a12
+```
+
+```
+ JEL Classification Term: B00 History of Economic Thought, Methodology, and Heterodox Approaches
+ JEL Classification Code: b00
+ JEL Classification URI: http://example.com/jel/b00
+```
+
+```
+ JEL Classification Term: N22 Economic History: Financial Markets and Institutions: U.S.; Canada: 1913-
+ JEL Classification Code: n22
+ JEL Classification URI: http://example.com/jel/n22
+```
+
+
+---
+
+
+### License
+
+**Description:** A license governing the data's use.
+
+**Repeatable**: No
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+**Examples:**
+
+```
+{'name': 'Creative Commons Attribution Non Commercial 4.0 International', 'code': 'CC-BY-NC-4.0', 'uri': 'https://creativecommons.org/licenses/by-nc/4.0/'}
+```
+
+
+---
+
+
+### Medical Subject Headings (MeSH) Terms
+
+**Description:** Biomedical and health-related terms from the National Library of Medicine that describe the data collection's topics.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| MeSH Subject Term | Yes | No | Text | A human-readable form of the subject term. |
+| MeSH Subject Term Code | Yes | No | Text | A machine-readable/-actionable form of the subject term. |
+| MeSH Subject Term URI | Yes | No | Text | The URI for the subject term as maintained in MeSH. |
+
+##### MeSH Subject Term
+
+**Description:** A human-readable form of the subject term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"anxiety"
+```
+
+```json
+"brain waves"
+```
+
+##### MeSH Subject Term Code
+
+**Description:** A machine-readable/-actionable form of the subject term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"D001007"
+```
+
+```json
+"D058256"
+```
+
+##### MeSH Subject Term URI
+
+**Description:** The URI for the subject term as maintained in MeSH.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Usage Notes:** Enter the MeSH RDF Unique Identifier.
+
+**Examples:**
+
+```json
+"http://id.nlm.nih.gov/mesh/D001007"
+```
+
+```json
+"http://id.nlm.nih.gov/mesh/D058256"
+```
+
+###### Complete Examples (with Subfields):
+
+```
+ MeSH Subject Term: anxiety
+ MeSH Subject Term Code: D001007
+ MeSH Subject Term URI: http://id.nlm.nih.gov/mesh/D001007
+```
+
+```
+ MeSH Subject Term: brain waves
+ MeSH Subject Term Code: D058256
+ MeSH Subject Term URI: http://id.nlm.nih.gov/mesh/D058256
+```
+
+
+---
+
+
+### Nationally Representative Sample
+
+**Description:** Indicates whether the data collection uses a sampling design intended to represent the demographics, behaviors, and/or characteristics of the entire nation. This typically involves probability-based methods that allow generalization. It does not include convenience samples that appear similar to the nation by chance.
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```
+Yes
+```
+
+```
+No
+```
+
+
+---
+
+
+### Notes
+
+**Description:** Important details about the data collection (like unique authoring, discrepancies, or processing information) that can't be recorded in other metadata elements.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```
+['Information on the Index of Consumer Sentiment, the Index of Current Economic Conditions, and the Index of Consumer Expectations and how they were created can be found in the P.I. Codebook', 'Dataset 1 should be attributed to Jane Doe while datasets 2-6 should be attributed to John Doe']
+```
+
+```
+['Additional information on the Survey of Consumers can be found by visiting the Survey of Consumers Website']
+```
+
+
+---
+
+
+### Organization
+
+**Description:** An organization associated with an ICPSR data collection or service.
+
+**Repeatable**: No
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+**Examples:**
+
+```
+{'name': 'Urban Institute', 'name_code': '1234', 'name_uri': 'https://icpsr.example.com/organizations/1234', 'ror': 'https://ror.org/017pz3h73', 'email': 'info@urban.institute'}
+```
+
+
+---
+
+
+### Person
+
+**Description:** A person associated with an ICPSR data collection or service.
+
+**Repeatable**: No
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+**Examples:**
+
+```
+{'name': {'given': 'Jane Q.', 'family': 'Doe II'}, 'orcid': 'https://orcid.org/0000-0001-6666-5717', 'researcher_passport_profile_id': '1234', 'affiliations': [{'name': 'Urban Institute', 'name_code': '2342', 'name_uri': 'https://icpsr.example.com/organizations/2342', 'ror': 'https://ror.org/017pz3h73', 'icpsr_org_id': 'xyz123'}, {'name': 'Example University'}], 'email': 'jane.doe@example.com'}
+```
+
+```
+{'name': {'given': 'Joe'}}
+```
+
+
+---
+
+
+### Preregistration
+
+**Description:** A link to a research plan for the data collection (preferably a persistent identifier such as a DOI).
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```
+https://doi.org/10.1000/182
+```
+
+
+---
+
+
+### Principal Investigators
+
+**Description:** The key people or organizations responsible for the data collection, listed by importance. Each data collection requires at least one PI, either a person or an organization.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| person | No | No | | |
+| organization | No | No | | |
+| Order | No | No | Number | The order or rank of importance for the PIs associated with the data collection, typically provided to ICPSR by the lead PI. |
+
+##### person
+
+**Description:**
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**:
+
+##### organization
+
+**Description:**
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**:
+
+##### Order
+
+**Description:** The order or rank of importance for the PIs associated with the data collection, typically provided to ICPSR by the lead PI.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Number
+
+**Examples:**
+
+```json
+0
+```
+
+```json
+1
+```
+
+```json
+2
+```
+
+```json
+3
+```
+
+###### Complete Examples (with Subfields):
+
+
+---
+
+
+### Response Rates
+
+**Description:** The percentage of respondents in the sample who participated in the data collection.
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Usage Notes:** This field is only applicable if the data were collected with a survey instrument and the response rates are provided.
+
+**Examples:**
+
+```
+The overall response rate for this survey was 20.22%; 72.6% for existing panelists and 10.4% for new panelists, using AAPOR Response Rate 1.
+```
+
+```
+Not applicable.
+```
+
+
+---
+
+
+### Sampling Note
+
+**Description:** Supplemental information about the sampling process that does not fit neatly into the Sampling Procedure field.
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Usage Notes:** A detailed discussion of such things as sampling error or other limitations of the sampling methodology is not required here.
+
+**Examples:**
+
+```
+National sample of telephone numbers from cell (RDD) sampling frame.
+```
+
+```
+The probability sample selected to represent the universe consists of approximately 71,000 households.
+```
+
+
+---
+
+
+### Sampling Procedures
+
+**Description:** The type(s) of sample and sample design used to select survey respondents to represent the population.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Text
+
+**Usage Notes:** The sample is a selection out of the universe of all possible relevant cases (e.g., adults in the United States, housing units in three counties of Michigan, etc.) that could have been included in the data collection. Note that some studies, such as censuses, do not utilize samples but include all members of the universe. This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV SamplingProcedure https://rdf-vocabulary.ddialliance.org/ddi-cv/SamplingProcedure/1.1.4/SamplingProcedure.html.
+
+**Examples:**
+
+```
+[{'label': 'Probability: Systematic random', 'code': 'Probability.SystematicRandom', 'uri': 'https://example.com/sampling_procedures/123'}, {'label': 'Other', 'code': 'Other', 'uri': 'https://example.com/sampling_procedures/737'}]
+```
+
+```
+[{'label': 'Total universe/Complete enumeration', 'code': 'TotalUniverseCompleteEnumeration', 'uri': 'https://example.com/sampling_procedures/234'}]
+```
+
+
+---
+
+
+### Scales
+
+**Description:** Any commonly known scales used to collect data for the data collection (e.g., MMPI, CPI, the Census Occupational Codes, etc.).
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Usage Notes:** Include common scales that can be readily identified from the data, documentation, or other related materials. ICPSR curators are not expected to infer or research scales that are not explicitly indicated. The scales can be cited either as a list or described in full sentences. If the questionnaire used has a finite list of responses (e.g., 'Always, Sometimes, Rarely, Never' or Strongly Agree, Agree, Disagree, Strongly Disagree'), it is acceptable for this element to note 'A Likert-type scale was used,' or 'Several Likert-type scales were used.' However, it is not required to note Likart-type scales in situations where only such scales were used, given their ubiquity.
+
+**Examples:**
+
+```
+["The baseline data collection included one scale - the CES-D index for maternal depression [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4), 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available under the 'Data and Documentation' tab, for details."]
+```
+
+```
+['Squires, J., Bricker, D. D., and Twombly, E. (2009). Ages and stages questionnaires. Baltimore, MD: Paul H. Brookes.', 'Briggs-Gowan, M. J., Carter, A. S., Irwin, J. R., Wachtel, K., and Cicchetti, D. V. (2004). The Brief Infant-Toddler Social and Emotional Assessment: screening for social-emotional problems and delays in competence. Journal of pediatric psychology, 29(2), 143-155.', 'Yu, L., Buysse, D. J., Germain, A., Moul, D. E., Stover, A., Dodds, N. E., ... and Pilkonis, P. A. (2012). Development of short forms from the PROMIS sleep disturbance and sleep-related impairment item banks. Behavioral sleep medicine, 10(1), 6-24.']
+```
+
+
+---
+
+
+### Smallest Geographic Unit
+
+**Description:** The smallest geographic unit (e.g., state or census tract) used in the dataset.
+
+**Repeatable**: No
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+**Usage Notes:** Geographic Unit is intended to represent specific, known geography -- e.g., county, census district, FIPS code, electoral district, and any other conveyor of specific geography that is represented by a variable. If the data do not include a geographic variable by which the data can be analyzed, this element is not indicated. If all the cases are from a single state, but the cases are not subdivided geographically within that state, then 'state' is not indicated. This element is only meant to convey specific, known, geography. If there is a variable indicating which testing site a survey was taken at, but the locations of the testing sites were masked by the PI, this element is likely not indicated.
+
+**Examples:**
+
+```
+{'label': 'state', 'code': '123', 'uri': 'https://example.com/smallest_geographic_unit/123'}
+```
+
+```
+{'label': 'Census tract', 'code': '234', 'uri': 'https://example.com/smallest_geographic_unit/234'}
+```
+
+```
+{'label': 'precinct', 'code': '345', 'uri': 'https://example.com/smallest_geographic_unit/345'}
+```
+
+
+---
+
+
+### Software Applications
+
+**Description:** Software used by the principal investigator(s) to collect or analyze data, required to understand how the data were obtained or to reproduce results.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| Software Name | Yes | No | Text | The name of the software application. |
+| Software Version | No | No | Text | The version of the application. |
+| Software Description | No | No | Text | Short description or overview of the application and its intended purpose |
+| Programming Languages | No | Yes | Text | The programming language(s) used in the development of the application |
+| Operating Systems | No | Yes | Text | Computer operating systems supported by the application |
+| Memory Requirements | No | No | Text | Minimum memory (e.g., RAM) requirements to operate the application |
+| Processor Requirements | No | No | Text | Processor architecture required to run the application |
+| Software Requirements | No | No | Text | Required components for the application, like runtime environments and shared libraries not included in the package but needed to run it. |
+| Storage Requirements | No | No | Text | Amount of storage space required by the application |
+| Device Requirements | No | No | Text | Device required to run the application. Used in cases where a specific make/model is required to run the application |
+| License | No | No | Text | The license associated with the application, preferably expressed as a URL. |
+| Download URL | No | No | Text | A direct link to a downloadable software artifact (e.g., executable, package, archive, or single script file) that retrieves the application itself, without additional navigation or instructions. |
+| Installation URL | No | No | Text | A link to a repository or project landing page where users can obtain resources and instructions to install the application (as opposed to directly downloading a single file). |
+
+##### Software Name
+
+**Description:** The name of the software application.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"JHOVE"
+```
+
+```json
+"ffmpeg"
+```
+
+```json
+"json-schema-for-humans"
+```
+
+##### Software Version
+
+**Description:** The version of the application.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"1"
+```
+
+```json
+"2.0.4"
+```
+
+```json
+"Auto-Build 2023-01-15 12:36"
+```
+
+##### Software Description
+
+**Description:** Short description or overview of the application and its intended purpose
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"JHOVE, the JSTOR/Harvard Object Validation Environment, is an extensible software framework for performing format identification, validation, and characterization of digital objects."
+```
+
+```json
+"ffmpeg is a very fast video and audio converter that can also grab from a live audio/video source. It can also convert between arbitrary sample rates and resize video on the fly with a high quality polyphase filter."
+```
+
+##### Programming Languages
+
+**Description:** The programming language(s) used in the development of the application
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+[
+ "python"
+]
+```
+
+```json
+[
+ "shell",
+ "r"
+]
+```
+
+```json
+[
+ "other"
+]
+```
+
+##### Operating Systems
+
+**Description:** Computer operating systems supported by the application
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+[
+ "windows"
+]
+```
+
+```json
+[
+ "windows",
+ "mac",
+ "linux"
+]
+```
+
+```json
+[
+ "other"
+]
+```
+
+##### Memory Requirements
+
+**Description:** Minimum memory (e.g., RAM) requirements to operate the application
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"4 GB"
+```
+
+```json
+"1GB of RAM (2GB for a 64-bit version)"
+```
+
+```json
+"4 GB of GPU memory for HD and some 4K media; 6 GB or more for 4K and higher"
+```
+
+##### Processor Requirements
+
+**Description:** Processor architecture required to run the application
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"Intel i5/ i7/ Ryzen 7"
+```
+
+```json
+"Minimum 1 GHz; Recommended 2GHz or more"
+```
+
+```json
+"2.5–2.9 GHz or faster processor"
+```
+
+##### Software Requirements
+
+**Description:** Required components for the application, like runtime environments and shared libraries not included in the package but needed to run it.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"Java runtime environment"
+```
+
+```json
+"Requires additional Python libraries: numpy, v1.11.2; scipy, v0.18.1, and pandas, v0.19.0"
+```
+
+```json
+"Compile with GNU auto tools"
+```
+
+##### Storage Requirements
+
+**Description:** Amount of storage space required by the application
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"3.5 GB for new installations, 5 GB for upgrades (including temporary files required during installation)"
+```
+
+```json
+"15 GB of free disk space"
+```
+
+```json
+"8 GB of available hard-disk space for installation; additional free space required during installation"
+```
+
+##### Device Requirements
+
+**Description:** Device required to run the application. Used in cases where a specific make/model is required to run the application
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+##### License
+
+**Description:** The license associated with the application, preferably expressed as a URL.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"https://www.apache.org/licenses/LICENSE-2.0"
+```
+
+```json
+"https://opensource.org/licenses/LGPL-2.0"
+```
+
+##### Download URL
+
+**Description:** A direct link to a downloadable software artifact (e.g., executable, package, archive, or single script file) that retrieves the application itself, without additional navigation or instructions.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"https://github.com/richardlehane/siegfried/archive/refs/heads/main.zip"
+```
+
+```json
+"https://cdn.nationalarchives.gov.uk/documents/droid-binary-6.5.2-bin-win32-with-jre.zip"
+```
+
+##### Installation URL
+
+**Description:** A link to a repository or project landing page where users can obtain resources and instructions to install the application (as opposed to directly downloading a single file).
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"https://github.com/richardlehane/siegfried"
+```
+
+```json
+"https://www.nationalarchives.gov.uk/information-management/manage-information/preserving-digital-records/droid/"
+```
+
+###### Complete Examples (with Subfields):
+
+```
+ Software Name: siegfried
+ Software Version: 1.11.1
+ Software Description: Siegfried is a signature-based file format identification tool, implementing the National Archives UK's PRONOM file format signatures; freedesktop.org's MIME-info file format signatures; the Library of Congress's FDD file format signatures (beta); and Wikidata (beta).
+ Programming Languages: ['go', 'javascript', 'other']
+ Operating Systems: ['mac', 'linux', 'windows']
+ License: https://www.apache.org/licenses/LICENSE-2.0
+ Download URL: https://github.com/richardlehane/siegfried/archive/refs/heads/main.zip
+```
+
+
+---
+
+
+### Study Design
+
+**Description:** The procedures used to contact participants and gather data.
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Usage Notes:** The Study Design provides more detailed information than the Summary, including how surveys were prepared and administered, how interviews were conducted, or how the data were obtained and compiled, as well as information about deadlines and follow-ups to respondents.
+
+**Examples:**
+
+```
+Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years.
+```
+
+
+---
+
+
+### Summary
+
+**Description:** A description of the data collection that helps users understand its purpose, substance, and key topics.
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Usage Notes:** {'$ref': 'https://schemas.icpsr.umich.edu/notes/summary/usageNotes'}
+
+**Examples:**
+
+```
+In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.
+```
+
+```
+The Health and Relationship Project is a study of both spouses in same-sex and different-sex marriages who were legally married and aged 35 to 65 at the time of data collection (2015). There are two parts of this study: a baseline questionnaire and a daily diary questionnaire completed for 10 consecutive days; both components were completed online and spouses were asked to complete the surveys separately. The baseline questionnaire asks participants about a number of topics related to marriage and health, including stress, health status and health behaviors, relationship quality, and how they have approached health problems in the past. The diary questionnaire asks participants a number of questions about the past 24 hours, including daily stress experiences, social interactions, and health behaviors.
+```
+
+
+---
+
+
+### Time Methods
+
+**Description:** The methods used to collect data over time, like snapshots at one point (cross-sectional) or repeatedly (longitudinal) to study changes or trends
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| Time Method | Yes | No | Text | A human-readable form of the term. |
+| Time Method Code | Yes | No | Text | A machine-readable/-actionable form of the term. |
+| Time Method URI | Yes | No | Text | The URI for the term. |
+
+##### Time Method
+
+**Description:** A human-readable form of the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"Cross-section"
+```
+
+```json
+"Longitudinal: Cohort/Event-based"
+```
+
+```json
+"Time series"
+```
+
+##### Time Method Code
+
+**Description:** A machine-readable/-actionable form of the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"CrossSection"
+```
+
+```json
+"Longitudinal.CohortEventBased"
+```
+
+```json
+"Other"
+```
+
+##### Time Method URI
+
+**Description:** The URI for the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+###### Complete Examples (with Subfields):
+
+```
+ Time Method: Registers/Records/Accounts: Medical/Clinical
+ Time Method Code: RegistersRecordsAccounts.MedicalClinical
+ Time Method URI: https://example.com/time_methods/123
+```
+
+```
+ Time Method: Events/Interactions
+ Time Method Code: EventsInteractions
+ Time Method URI: https://example.com/time_methods/234
+```
+
+```
+ Time Method: Other
+ Time Method Code: Other
+ Time Method URI: https://example.com/time_methods/737
+```
+
+
+---
+
+
+### Time Periods
+
+**Description:** The time period(s) to which the data refer, regardless of when the data were collected.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| Start Date | Yes | No | Text | The start date for the time period the data refer to, formatted as YYYY, YYYY-MM, or YYYY-MM-DD, with no spaces in date expressions. |
+| End Date | Yes | No | Text | The end date for the time period the data refer to, formatted as YYYY, YYYY-MM, or YYYY-MM-DD, with no spaces in date expressions. |
+| Time Frame | No | No | Text | An optional free-text description of the time period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present. |
+
+##### Start Date
+
+**Description:** The start date for the time period the data refer to, formatted as YYYY, YYYY-MM, or YYYY-MM-DD, with no spaces in date expressions.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"2000"
+```
+
+```json
+"2019-10"
+```
+
+```json
+"2021-03-01"
+```
+
+##### End Date
+
+**Description:** The end date for the time period the data refer to, formatted as YYYY, YYYY-MM, or YYYY-MM-DD, with no spaces in date expressions.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"2000"
+```
+
+```json
+"2019-10"
+```
+
+```json
+"2021-03-01"
+```
+
+##### Time Frame
+
+**Description:** An optional free-text description of the time period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Usage Notes:** The Time Frame should not simply restate the date(s) in words. For example, if the Time Period starts in 2020-01, the Time Frame should repeat 'January 2020'.
+
+**Examples:**
+
+```json
+"Fall 2001"
+```
+
+```json
+"Winter Semester 2019"
+```
+
+###### Complete Examples (with Subfields):
+
+```
+ Start Date: 2018
+ End Date: 2018
+ Time Frame: Summer and Fall 2018
+```
+
+```
+ Start Date: 2020-10
+ End Date: 2020-10
+```
+
+
+---
+
+
+### Title
+
+**Description:** The official title that describes what the data collection is about, its geographic scope, and the time period it covered.
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```
+Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017
+```
+
+```
+Health and Relationships Project, United States, 2014-2015
+```
+
+```
+Targeted Interventions to Prevent Chronic Low Back Pain in High Risk Patients: A Multi-Site Pragmatic Randomized Controlled Trial (TARGET Trial), 4 U.S. cities, 2016-2019
+```
+
+```
+Aid Like A Paycheck (ALAP), Texas and California, 2014-2017
+```
+
+```
+COVID-19 Disruptions Disproportionately Affect Female Academics, Global, 2020
+```
+
+
+---
+
+
+### Units of Analysis
+
+**Description:** The object(s) of analysis for the data collection, such as an organization, individual, or household.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| label | Yes | No | Text | A human-readable form of the term. |
+| code | Yes | No | Text | A machine-readable/-actionable form of the term. |
+| uri | Yes | No | Text | The URI for the term. |
+
+##### label
+
+**Description:** A human-readable form of the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"Organization/Institution"
+```
+
+```json
+"Individual"
+```
+
+```json
+"Household"
+```
+
+##### code
+
+**Description:** A machine-readable/-actionable form of the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"OrganizationOrInstitution"
+```
+
+```json
+"Individual"
+```
+
+```json
+"Household"
+```
+
+##### uri
+
+**Description:** The URI for the term.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+###### Complete Examples (with Subfields):
+
+```
+ label: Organization/Institution
+ code: OrganizationOrInstitution
+ uri: https://example.com/units_of_analysis/123
+```
+
+```
+ label: Individual
+ code: Individual
+ uri: https://example.com/units_of_analysis/234
+```
+
+```
+ label: Household
+ code: Household
+ uri: https://example.com/units_of_analysis/737
+```
+
+
+---
+
+
+### Universe
+
+**Description:** The total group of persons or other entities (e.g., households or organizations) that were the object of research and to which analytic results refer.
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Usage Notes:** Age, nationality, and residence commonly help to delineate a given universe, but any of a number of factors may be involved, such as sex, race, income, veteran status, criminal convictions, etc. The Universe may consist of elements other than persons, such as housing units, court cases, deaths, countries, etc. It should be possible to tell from the description of the universe whether a given individual or element (hypothetical or real) is a member of the population under study. Typically, the Universe statement is about one sentence or shorter, and reflects the entire possible population a data collection sought to study.
+
+**Examples:**
+
+```
+All households in the United States with phones.
+```
+
+```
+Part 1: Thirty cities in Massachusetts during 1980-1986. Parts 2-4: All residents in Massachusetts during 1986.
+```
+
+```
+Individuals self-identified as transgender, trans, genderqueer, non-binary, or other identities on the transgender identity spectrum aged 18 and older residing in the fifty U.S. states, the District of Columbia, American Samoa, Guam, Puerto Rico, and U.S. military bases overseas.
+```
+
+```
+Jihadists from the United States and Canada, along with Incels from Germany, Canada, the United States, and United Kingdom.
+```
+
+```
+All publicly funded medical examiner and coroner offices.
+```
+
+```
+Uncertified ballots for the 2000 United States presidential election in Florida.
+```
+
+
+---
+
+
+### Variable Description
+
+**Description:** Significant variables (particularly demographic variables) in the data files.
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Usage Notes:** The Variable Description provides more detailed information than the Summary, including a review of variables that are important for users to know about. The codebook, setup files, and variable groups are appropriate sources of information for Variable Description.
+
+**Examples:**
+
+```
+The data includes variables about participants' and their parents' moods, interviewer observations, families' activities, families' health history, participants' school records, and parents' substance use. Demographic variables include race, religion, annual household income, and the participants' parents' employment statuses.
+```
+
+```
+The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, including victim demographic information, substance abuse history, information on whether the victim is open about their LGBTQ identification, the victim's job status, and information about how the victim reacted to the crime, such as whether or not they reported the crime to the police and their level of cooperation with the police and prosecution.
+```
+
+
+---
+
+
+### Version History
+
+**Description:** A record of how the data collection has changed over time.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| version_number | No | No | Text | A version number for a study. |
+| version_date | No | No | Text | The date on which a given version of a data collection was released. |
+| version_note | No | No | Text | Provenance information about a given version of the data collection. |
+
+##### version_number
+
+**Description:** A version number for a study.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Usage Notes:** Versioning should follow ICPSR conventions
+
+**Examples:**
+
+```json
+"V1"
+```
+
+```json
+"V2"
+```
+
+```json
+"V3"
+```
+
+##### version_date
+
+**Description:** The date on which a given version of a data collection was released.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"2020-07-20"
+```
+
+```json
+"2022-01-31"
+```
+
+##### version_note
+
+**Description:** Provenance information about a given version of the data collection.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"File CB3025.ALL.PDF was removed from any previous datasets and flagged as a study-level file, so that it will accompany all downloads."
+```
+
+```json
+"The data producer provided additional data files."
+```
+
+```json
+"The codebook descriptions of variables TANSUP, EMOSUP, and SOCSUP were corrected."
+```
+
+###### Complete Examples (with Subfields):
+
+```
+ version_number: V2
+ version_date: 2023-08-12
+ version_note: The data producer provided additional data files.
+```
+
+```
+ version_number: V1
+ version_date: 2021-03-01
+ version_note: Initial release
+```
+
+```
+ version_number: V1
+ version_date: 2024-06-28
+ version_note: Initial release
+```
+
+
+---
+
+
+### Weights
+
+**Description:** The weight variables and the criteria for using them in data analysis or other information about how the data are weighted if no weight variables are present.
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Usage Notes:** Weight includes any information about weighting variables in the data, as well as any other weight information provided by the Principal Investigator. If a weighting formula or coefficient was developed, provide this formula, define its elements, and indicate how the formula is applied to the data. It is acceptable to summarize additional documentation and refer users to those resources for more information.
+
+**Examples:**
+
+```
+Both the TransPop and Cisgender datasets have the same variable named WEIGHT as the weighting variable. The combination datasets have a set of three weight variables (WEIGHT_TRANSPOP, WEIGHT_CISGENDER, WEIGHT_CISGENDER_TRANSPOP)
+```
+
+```
+A weight variable with two implied decimal places has been included and must be used in any analysis.
+```
+
+
+---
diff --git a/rde_schema/notes/collection_date_time_frame.yaml b/rde_schema/notes/collection_date_time_frame.yaml
new file mode 100644
index 0000000..7a16d00
--- /dev/null
+++ b/rde_schema/notes/collection_date_time_frame.yaml
@@ -0,0 +1,7 @@
+---
+ $schema: https://json-schema.org/draft-07/schema#
+ $id: https://schemas.icpsr.umich.edu/notes/collection_date_time_frame
+ usageNotes: |
+ The textual description ('time frame') is used to add context to the Collection Date when multiple time periods exist (e.g., to describe different study waves, dataset names, or fiscal year designation) and/or when the date cannot be expressed exclusively through numbers, such as seasons or other units of time where the data producer did not clarify the exact dates they meant.
+
+ The textual description should not simply restate the time period in words. For example, if the Collection Date is 2020-01, the Time Frame should not be 'January 2020'.
diff --git a/rde_schema/notes/data_type.yaml b/rde_schema/notes/data_type.yaml
new file mode 100644
index 0000000..3a4a453
--- /dev/null
+++ b/rde_schema/notes/data_type.yaml
@@ -0,0 +1,24 @@
+---
+ $schema: https://json-schema.org/draft-07/schema#
+ $id: https://schemas.icpsr.umich.edu/notes/data_type
+ controlledVocab: |
+ Local ICPSR controlled vocabulary. See below for terms and definitions:
+
+ | *Term* | *Definition* |
+ |----------|---------------|
+ | administrative records data | Information collected on individuals or groups as part of the routine administrative procedures of an agency, business, or institution. Such data are not usually collected with research purposes in mind, may be voluminous, and may require preparation such as coding in order to be usable by researchers. Examples include income tax forms, patent applications, death certificates, etc. |
+ | aggregate data | Data compiled into summaries or summary reports, typically for the purposes of public reporting or statistical analysis. |
+ | audio: sound data | Sound data recorded either in analog or digital form. |
+ | census/enumeration data | Data collected from all members of a population. |
+ | clinical data | Data related to psychological or medical testing. |
+ | event/transaction data | Data that deal with a succession of events or transactions occurring over a specified time period. |
+ | experimental data | Data collected from experiments that are not clinical in nature. |
+ | geographic information system (GIS) data | Data that captures positions and spatial patterns on Earth's surface. |
+ | image: photographs, drawings, graphical representations | Data recorded as a still image. |
+ | medical records | Health-related data that is associated with regular patient care. |
+ | observational data | Data collected through observation, with the research subject not directly involved in the recording of information. |
+ | program source code | Human-readable instructions that a programmer writes to specify the actions to be performed bya computer. |
+ | roll call voting data | Records of votes cast by legislative bodies.
+ | survey data | Data collected from a sample of respondents, generally through structured interviews or self-administered questionnaires. |
+ | text | Written work, readable by a machine or human. |
+ | video: film, animation, etc. | Moving image with, or without sound recorded either in analog or digital form. |
diff --git a/rde_schema/notes/funding_purpose.yaml b/rde_schema/notes/funding_purpose.yaml
new file mode 100644
index 0000000..fd0da6e
--- /dev/null
+++ b/rde_schema/notes/funding_purpose.yaml
@@ -0,0 +1,11 @@
+---
+ $schema: https://json-schema.org/draft-07/schema#
+ $id: https://schemas.icpsr.umich.edu/notes/funding_purpose
+ controlledVocab: |
+ Local ICPSR controlled vocabulary. See below for terms and definitions:
+
+ | *Term* | *Definition* |
+ |----------|---------------|
+ | collection and/or analysis of data | The funder supported the collection and/or analysis of the study's data. |
+ | secondary analysis of data | The funder supported secondary analysis performed on the data. |
+ | archiving of data | The funder supported the archiving and preservation of the data. |
diff --git a/rde_schema/notes/geographic_coverage_area.yaml b/rde_schema/notes/geographic_coverage_area.yaml
new file mode 100644
index 0000000..354545d
--- /dev/null
+++ b/rde_schema/notes/geographic_coverage_area.yaml
@@ -0,0 +1,13 @@
+---
+ $schema: https://json-schema.org/draft-07/schema#
+ $id: https://schemas.icpsr.umich.edu/notes/geographic_coverage_area
+ usageNotes: |
+
+ Each geographic term's full hierarchy must be included; please note:
+
+ * For a U.S. city, the state and country are listed alongside (e.g., 'Los Angeles, California, United States').
+ * Non-U.S. geographic subdivisions need not include hierarchical relations, with the specific exceptions of Canadian provinces and the countries within the United Kingdom.
+ * 'Global' may be appropriate for studies where the universe of participants is truly worldwide. Possible examples include online surveys that are not restricted by geography, or studies of organizations, such as NGOs.
+ * County-level information is typically not indicated. If a U.S. county will be included, the state name and 'United States' must be listed as well.
+
+ The [Getty Thesaurus of Geographic Names](http://www.getty.edu/research/tools/vocabularies/tgn/index.html) is referenced when introducing new geographic names.
\ No newline at end of file
diff --git a/rde_schema/notes/processing_extents.yaml b/rde_schema/notes/processing_extents.yaml
new file mode 100644
index 0000000..3055a42
--- /dev/null
+++ b/rde_schema/notes/processing_extents.yaml
@@ -0,0 +1,14 @@
+---
+ $schema: https://json-schema.org/draft-07/schema#
+ $id: https://schemas.icpsr.umich.edu/notes/processing_extents
+ controlledVocab: |
+ Local ICPSR controlled vocabulary. See below for terms and definitions:
+
+ | *Term* | *Definition* |
+ |----------|---------------|
+ | Checked for undocumented or out-of-date codes | Selected if the ICPSR curator checked at least half of the variables in the data collection for wild codes and corrected or reported in the codebook any wild codes discovered by these checks. |
+ | Created online analysis version with question text | Selected if the ICPSR curator created online analysis version with question text. |
+ | Created variable labels and/or value labels | Selected if the ICPSR curator created variable labels and/or value labels. |
+ | Performed consistency checks | Selected if the ICPSR curator performed any of the following consistency checks on at least half of the variables in the data collection and corrected or reported in the codebook any inconsistencies discovered by these checks:
- Checked to see that skip patterns in questionnaires were followed correctly.
- Checked the logical consistency of response patterns across variables. |
+ | Performed recodes and/or calculated derived variables | Selected if the ICPSR curator recoded at least one original variable in the data collection and/or produced at least one new variable derived from one or more original variables. The following kinds of recodes DO NOT qualify for this task:
- Recodes performed for reasons of confidentiality. This type of recoding may be mentioned in other sections of the metadata description, usually in Restrictions or Collection Notes.
- Recodes performed to correct errors uncovered by consistency checks.
- Recodes performed to correct errors uncovered by checks for undocumented codes.
- Recodes performed by standardized missing data codes.
- When a unique record identifier is created that is not derived from an original variable. |
+ | Standardized missing values | Selected if the ICPSR curator standardized missing values for at least half of the variables in the data collection. Standardization of missing values means that all 'missing' responses are coded according to a fixed set of rules. There are various ways in which this standardization is typically applied:
- In some data collections, each kind of 'missing response' may be assigned the same code across all variables, e.g., 'inapplicable' cases may be coded -1 for all variables, 'don't know' may be coded -2, and 'no answer' may be coded -3.
- In other instances, standards may be specific to the type of variable involved, e.g., blanks may denote missing data for all alphabetic variables, codes -1, -2, and -3 may denote missing data for all dummy variables, and codes 7, 8, and 9 may represent missing data for all other variables.
- In yet other instances, standard codes may depend on the column width of each variable, e.g., 99 may denote 'no answer' for all two column variables and 999 may denote the same for all three column variables. |
diff --git a/rde_schema/notes/summary.yaml b/rde_schema/notes/summary.yaml
new file mode 100644
index 0000000..d46ebb8
--- /dev/null
+++ b/rde_schema/notes/summary.yaml
@@ -0,0 +1,7 @@
+---
+ $schema: https://json-schema.org/draft-07/schema#
+ $id: https://schemas.icpsr.umich.edu/notes/summary
+ usageNotes: |
+ The Summary may include information about the different parts of the data collection not adequately conveyed by the Fileset names or found elsewhere in the metadata. Other important components include a listing of major variables or categories of variables (with examples) as well as an indication of the data collection's unit of analysis (i.e., who or what is being studied: individuals, housing units, courts, criminal acts, etc.). Most often the unit of analysis is the individual; where it is not, it is particularly important to make this clear.
+
+ The Summary is written in the third person and avoids attempting to address issues of how the data might be used, who might be interested in the data, or any evaluative comments about the worth or usefulness of the data collection. The Summary uses past tense when describing the process of collecting the data and present tense when necessary, such as when describing the data (e.g., 'The MIDUS Refresher collection is split into two datasets.'). Numerals are used instead of spelling them out; if a number is spelled out for emphasis, the number is attached in parentheses (e.g. 'Two thousand (2,000)').
diff --git a/rde_schema/notes/time_methods.yaml b/rde_schema/notes/time_methods.yaml
new file mode 100644
index 0000000..91386ff
--- /dev/null
+++ b/rde_schema/notes/time_methods.yaml
@@ -0,0 +1,19 @@
+---
+ $schema: https://json-schema.org/draft-07/schema#
+ $id: https://schemas.icpsr.umich.edu/notes/time_methods
+ controlledVocab: |
+ [DDI Controlled Vocabulary for Time Method](https://ddialliance.org/Specification/DDI-CV/TimeMethod_1.2.html). See below for terms and definitions:
+
+ | *Term* | *Definition* |
+ |----------|---------------|
+ | Cross-sectional | Data collected by observing subjects within the study period, without regard to changes over time. May include more than one collection event. Analysis of cross-sectional data often consists in comparing the differences and similarities among subjects. |
+ | Cross-sectional ad-hoc follow-up | Data collected at one point in time to complete information collected in a previous cross-sectional study; the decision to collect follow-up data was not included in the original study design. |
+ | Longitudinal | Data collected repeatedly over time to allow studying change in a population. At least some of the questions or modules are repeated over waves. Use the broad term when none of the subterms is suitable. |
+ | Longitudinal: Cohort / Event-based | Data collected over time from the same cohort of respondents. The individuals in the cohort are connected in some way or have shared some significant experience within a given period. In some cases, the samples may differ between waves but are drawn from the same cohort. Examples: birth year, disease (clinical trials), common problem (intervention studies), education, employment, family formation, participation in an event. |
+ | Longitudinal: Panel | Data collected over time from, or about, the same sample of respondents. Differs from cohort/event-based data in that the selection of respondents is not based on their being connected in some way or having shared some significant experience. |
+ | Longitudinal: Panel: Continuous | Data collected from a panel of respondents on a regular basis. |
+ | Longitudinal: Panel: Interval | Data collected from a panel of respondents only when information is needed. |
+ | Longitudinal: Trend / Repeated Cross-section | Data collected from different samples or different groups of people from the same population at several points in time, using at least partly the same set of questions/variables. Conclusions are drawn for the population. Examples: European Social Survey (ESS), national longitudinal crime surveys. |
+ | Time Series | Data collected repeatedly over time to study change in observations. These are typically "objective" measurements of phenomena that can be observed externally, as opposed to attitudes/opinions or feelings. Examples may include economic/financial indicators, natural/meteorological phenomena, vital statistics, etc. |
+ | Time Series: Continuous | Measurements are taken at every instant in time. Examples: lie detectors, electrocardiograms, etc. |
+ | Time Series: Discrete | Measurements are taken at (usually regularly) spaced intervals. Examples: macroeconomics (weekly share prices, monthly profits, sales); meteorology (hourly temperature); measurements of individuals (blood pressure, weight, height); sociology (crime figures, employment figures), etc. |
diff --git a/rde_schema/notes/time_period_dates.yaml b/rde_schema/notes/time_period_dates.yaml
new file mode 100644
index 0000000..0d557ed
--- /dev/null
+++ b/rde_schema/notes/time_period_dates.yaml
@@ -0,0 +1,9 @@
+---
+ $schema: https://json-schema.org/draft-07/schema#
+ $id: https://schemas.icpsr.umich.edu/notes/time_period_dates
+ usageNotes: |
+ Time Periods focus on the dates the data are actually about, regardless of when the data were collected.
+
+ Time Periods generally correspond to the dates that appear in the Title; days and months may be included in the Time Period even though they are not in the Title.
+
+ Dates are formatted as YYYY, YYYY-MM, or YYYY-MM-DD. No spaces are permitted in date expressions.
diff --git a/rde_schema/notes/time_period_time_frame.yaml b/rde_schema/notes/time_period_time_frame.yaml
new file mode 100644
index 0000000..fe2c9e6
--- /dev/null
+++ b/rde_schema/notes/time_period_time_frame.yaml
@@ -0,0 +1,7 @@
+---
+ $schema: https://json-schema.org/draft-07/schema#
+ $id: https://schemas.icpsr.umich.edu/notes/time_period_time_frame
+ usageNotes: |
+ The textual description ('time frame') is used to add context to the Time Period when multiple time periods exist (e.g., to describe different waves, dataset names, or fiscal year designation) and/or when the date cannot be expressed exclusively through numbers, such as seasons or other units of time where the data producer did not clarify the exact dates they meant.
+
+ The textual description should not simply restate the time period in words. For example, if the start and end dates for Time Period are 2020-01, the associated Time Frame should not be 'January 2020'.
diff --git a/rde_schema/notes/title.yaml b/rde_schema/notes/title.yaml
new file mode 100644
index 0000000..1156efd
--- /dev/null
+++ b/rde_schema/notes/title.yaml
@@ -0,0 +1,39 @@
+---
+ $schema: https://json-schema.org/draft-07/schema#
+ $id: https://schemas.icpsr.umich.edu/notes/title
+ usageNotes: |
+ The Title includes three essential parts: the title proper, the geography, and the time period.
+
+ Title Proper:
+
+ * The title proper is a descriptive string that captures what the data collection contains.
+
+ * The title proper uses title case: all major words are capitalized, while minor words are lowercased.
+
+ * For new studies, ICPSR starts with the title proper provided by the data depositor. Most title propers are straightforward about their contents, such as the 'American Community Survey' or the 'Census of Law Enforcement Training Academies.' Some title propers include a more branded description, such as 'Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project or Contents' and 'Contexts of Cyberbullying: An Epidemiologic Study using Electronic Detection and Social Network Analysis.'
+
+ * For updated studies, ICPSR uses the existing title in production, making changes as necessary to add new years or additional geographical locations. For studies that are part of an ICPSR series, titles remain consistent with the previous series studies.
+
+ Geography:
+
+ * All titles include the data collection's geography. If the geography is already included in the title proper, it is not repeated.
+
+ * Cities are paired with state or province names that are spelled out (e.g., Portland, Oregon), unless the city names are unique or well-known.
+
+ * Studies with more than four geographic locations typically are summarized using, for example, '5 countries,' '8 German cities,' '20 U.S. states' instead of listing all locations. In the latter case, 'U.S.' is used rather than 'United States' or 'American'.
+
+ * Descriptors that do not have a distinct geographic area, such as 'communities' or 'regions', are not included in titles.
+
+ * 'Global' may be appropriate for studies where the universe of participants is truly worldwide. Possible examples include online surveys that are not restricted by geography, or studies of organizations, such as NGOs.
+
+ * Brackets are typically not indicated. They are indicated when a study has National, Federal, Congressional, or American in the title. Brackets can be indicated if a non-United States study has “National” in the title, or a similar word specific to that country.
+
+ Time Period:
+
+ * All titles include the data collection's time period, which reflects the time period that the data collection covers and should match the Time Period. For example, in the 'Uganda Elite Study, 1964-1968', it is assumed that the Ugandans were surveyed about events in 1964-1968, even if the actual data collection might not have taken place until later.
+
+ * If the time period is already included in the title proper, it is not repeated.
+
+ * For most studies, a single year or range of years is acceptable. Years are written as four digits, including when used in a range (e.g., '1999', '2001-2003', or '1999, 2010, 2015').
+
+ * Months are included only when part of ICPSR series that have multiple releases, which are otherwise identical, each year. In these cases, months are spelled out (e.g., 'September 2020' instead of '9/2020' or 'Sept. 2020').
diff --git a/rde_schema/property_bank/README.md b/rde_schema/property_bank/README.md
new file mode 100644
index 0000000..8ec12d1
--- /dev/null
+++ b/rde_schema/property_bank/README.md
@@ -0,0 +1,66 @@
+# ICPSR Property Bank Entries
+Updated on December 17, 2025
+
+The RDE Ingest module presents an important opportunity to revise and refine the RDE Metadata Schema. To facilitate a metadata-driven ingest process, we are pivoting from archive-based schemas (e.g., one schema developed explicitly for the AEA Repository, a separate one for NACJD, etc.) to a 'property bank' model, which involves a collection of individually-defined metadata elements (i.e., the 'property bank') that may be reused (via the JSON Schema [$ref](https://json-schema.org/understanding-json-schema/structuring#dollarref) keyword) in one or more composite metadata schemas. Within the property bank, each metadata element will be defined in its own [JSON Schema](https://json-schema.org/understanding-json-schema) document; Metadata & Preservation will contribute information about how the property may be used (e.g., definition of the term, accepted data type, controlled vocabularies, examples of valid values, etc.), while CNS will contribute technical details (e.g., limits on string lengths, UI components, error messages, etc.).
+
+
+## Reviewed Metadata Elements
+These metadata elements have been reviewed by the Metadata & Preservation team, which has approved the definitions, data types, usage notes, and sample values. Additional technical details will be provided by CNS staff. Metadata elements may also be subject to change based on evolving RDE system needs and requirements.
+
+| Property Title | Description |
+| ----- | ----------- |
+| [Alternate Titles](alternate_titles.json) | The alternate name(s) or acronym(s) commonly used to refer to the data collection. |
+| [Citation](citation.json) | The official way to reference the data collection in writing. |
+| [Collection Dates](collection_dates.json) | The date(s) when the data were physically collected. |
+| [Collection Modes](collection_modes.json) | The method(s) or procedure(s) used to collect the data. |
+| [Common Data Elements](common_data_elements.json) | Common Data Elements (standardized concepts used to ensure consistency and interoperability across datasets) found in the data collection. |
+| [Contributors](contributors.json) | The people or organizations (other than the principal investigators) that contributed to the data collection in supporting roles. |
+| [Data Management Plan](data_management_plan.json) | A link to the data management plan (preferably a persistent identifier such as a DOI). |
+| [Data Source Types](data_source_types.json) | The source(s) of the data as collected by the Principal Investigators. |
+| [Deposits](deposits.json) | Information about deposits associated with the data collection. |
+| [Distributors](distributors.json) | The organization(s) responsible for distributing the data collection. |
+| [External Data Sources](external_data_sources.json) | The source of the data, when that source is external to the data collection and can be independently cited. |
+| [External Source ID](external_source_id.json) | A unique identifier supplied by the data depositor |
+| [Funding Sources](funding_sources.json) | The sources of funding that supported the data collection. |
+| [General Data Formats](general_data_formats.json) | The file format types present in the data collection. |
+| [Geographic Coverage Areas](geographic_coverage_areas.json) | The geographic locations where the data refer or are related. |
+| [ICPSR Subject Terms](icpsr_subject_terms.json) | A controlled list of social science terms maintained by ICPSR and used to indicate topics related to the data collection. |
+| [Journal of Economic Literature (JEL) Classification Codes](jel_classifications.json) | Classification codes used to categorize economic research. |
+| [Languages](languages.json) | The language(s) used in the data collection. |
+| [License](license.json) | A license governing the data's use. |
+| [Link Title](link_title.json) | The title of an external resource that is included in the ICPSR catalog as a courtesy to users. |
+| [Link URL](link_url.json) | The URL of an external resource that is included in the ICPSR catalog as a courtesy to users. |
+| [Manuscript Number](manuscript_number.json) | A unique identifier that associates the data collection with a manuscript submitted to a journal. |
+| [Medical Subject Headings (MeSH) Terms](mesh_subject_terms.json) | Biomedical and health-related terms from the National Library of Medicine that describe the data collection's topics. |
+| [Nationally Representative Sample](nationally_representative_sample.json) | Indicates whether the data collection uses a sampling design intended to represent the demographics, behaviors, and/or characteristics of the entire nation. This typically involves probability-based methods that allow generalization. It does not include convenience samples that appear similar to the nation by chance. |
+| [Notes](notes.json) | Important details about the data collection (like unique authoring, discrepancies, or processing information) that can't be recorded in other metadata elements. |
+| [Organization](organization.json) | An organization associated with an ICPSR data collection or service. |
+| [Oversamples](oversamples.json) | Key group(s) given higher odds of selection into a probability sample than would occur by chance, allowing for both within- and between-group comparisons in the resulting data. |
+| [Person](person.json) | A person associated with an ICPSR data collection or service. |
+| [Preregistration](preregistration.json) | A link to a research plan for the data collection (preferably a persistent identifier such as a DOI). |
+| [Principal Investigators](principal_investigators.json) | The key people or organizations responsible for the data collection, listed by importance. Each data collection requires at least one PI, either a person or an organization. |
+| [Response Rates](response_rates.json) | The percentage of respondents in the sample who participated in the data collection. |
+| [Restrictions](restrictions.json) | Rules about how the data collection can be accessed or used. |
+| [Sampling Note](sampling_note.json) | Supplemental information about the sampling process that does not fit neatly into the Sampling Procedure field. |
+| [Sampling Procedures](sampling_procedures.json) | The type(s) of sample and sample design used to select survey respondents to represent the population. |
+| [Scales](scales.json) | Any commonly known scales used to collect data for the data collection (e.g., MMPI, CPI, the Census Occupational Codes, etc.). |
+| [Smallest Geographic Unit](smallest_geographic_unit.json) | The smallest geographic unit (e.g., state or census tract) used in the dataset. |
+| [Software Applications](software_applications.json) | Software used by the principal investigator(s) to collect or analyze data, required to understand how the data were obtained or to reproduce results. |
+| [Study Design](study_design.json) | The procedures used to contact participants and gather data. |
+| [Study Purpose](study_purpose.json) | The study's main goals and associated research questions. |
+| [Summary](summary.json) | A description of the data collection that helps users understand its purpose, substance, and key topics. |
+| [Time Methods](time_methods.json) | The methods used to collect data over time, like snapshots at one point (cross-sectional) or repeatedly (longitudinal) to study changes or trends |
+| [Time Periods](time_periods.json) | The time period(s) to which the data refer, regardless of when the data were collected. |
+| [Title](title.json) | The official title that describes what the data collection is about, its geographic scope, and the time period it covered. |
+| [Units of Analysis](units_of_analysis.json) | The object(s) of analysis for the data collection, such as an organization, individual, or household. |
+| [Universe](universe.json) | The total group of persons or other entities (e.g., households or organizations) that were the object of research and to which analytic results refer. |
+| [Variable Description](variable_description.json) | Significant variables (particularly demographic variables) in the data files. |
+| [Version History](version_history.json) | A record of how the data collection has changed over time. |
+| [Weights](weight.json) | The weight variables and the criteria for using them in data analysis or other information about how the data are weighted if no weight variables are present. |
+
+
+## Under Review Metadata Elements
+These metadata elements are still under review by the Metadata & Preservation team and as a result are not ready for use.
+| Property Title | Description |
+| ----- | ----------- |
+| [Extent of Processing](extent_of_processing.json) | Processing activities and checks performed on the data collection by ICPSR curation staff. |
diff --git a/rde_schema/property_bank/alternate_titles.json b/rde_schema/property_bank/alternate_titles.json
new file mode 100644
index 0000000..a638aa4
--- /dev/null
+++ b/rde_schema/property_bank/alternate_titles.json
@@ -0,0 +1,14 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/alternate_titles",
+ "title": "Alternate Titles",
+ "description": "The alternate name(s) or acronym(s) commonly used to refer to the data collection.",
+ "type": "array",
+ "items": { "type": "string" },
+ "examples": [
+ ["Add Health Parent Study"],
+ ["FACES 2009"],
+ ["Survey of Consumers"],
+ ["Eurobarometer 85.2"]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/citation.json b/rde_schema/property_bank/citation.json
new file mode 100644
index 0000000..2350b78
--- /dev/null
+++ b/rde_schema/property_bank/citation.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/citation",
+ "title": "Citation",
+ "description": "The official way to reference the data collection in writing.",
+ "type": "string",
+ "usageNotes": "The Citation is dynamically assembled from other entry fields in this format: PI (list). Title. Distributor (list), Issued Date. DOI. Note: ICPSR 'union catalog' records (i.e., external resource to which ICPSR links as a courtesy) do not have citations.",
+ "examples": [
+ "University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1",
+ "United States Department of Justice. Office of Justice Programs. Office of Juvenile Justice and Delinquency Prevention. Juvenile Residential Facility Census, 2020 [United States]. Inter-university Consortium for Political and Social Research [distributor], 2024-07-15. https://doi.org/10.3886/ICPSR38914.v1"
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/collection_dates.json b/rde_schema/property_bank/collection_dates.json
new file mode 100644
index 0000000..0e86d87
--- /dev/null
+++ b/rde_schema/property_bank/collection_dates.json
@@ -0,0 +1,46 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/collection_dates",
+ "title": "Collection Dates",
+ "description": "The date(s) when the data were physically collected.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "start_date": {
+ "title": "Start Date",
+ "description": "The start date of the data collection period. Must be in YYYY-MM-DD, YYYY-MM, or YYYY format with no spaces.",
+ "type": "string",
+ "examples": ["2000", "2019-10", "2021-03-01"]
+ },
+ "end_date": {
+ "title": "End Date",
+ "description": "The end date of the data collection period. Must be in YYYY-MM-DD, YYYY-MM, or YYYY format with no spaces.",
+ "type": "string",
+ "examples": ["2000", "2019-10", "2021-03-01"]
+ },
+ "time_frame": {
+ "title": "Time Frame",
+ "description": "An optional free-text description of the data collection period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present.",
+ "type": "string",
+ "usageNotes": "The Time Frame should not simply restate the date(s) in words. For example, if the Collection Date starts in 2020-01, the Time Frame should repeat 'January 2020'.",
+ "examples": [ "Fall 2001", "Student data"]
+ }
+ },
+ "required": ["start_date", "end_date"]
+ },
+ "minItems": 1,
+ "examples": [
+ [
+ {
+ "start_date": "2018",
+ "end_date": "2018",
+ "time_frame": "Summer and Fall 2018"
+ },
+ {
+ "start_date": "2020-10",
+ "end_date": "2020-10"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/collection_modes.json b/rde_schema/property_bank/collection_modes.json
new file mode 100644
index 0000000..5867be8
--- /dev/null
+++ b/rde_schema/property_bank/collection_modes.json
@@ -0,0 +1,57 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/collection_modes",
+ "title": "Collection Modes",
+ "description": "The method(s) or procedure(s) used to collect the data.",
+ "usageNotes": "This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV ModeOfCollection https://rdf-vocabulary.ddialliance.org/ddi-cv/ModeOfCollection/4.0.3/ModeOfCollection.html.",
+ "controlledVocab": "collectionModes",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "label": {
+ "title": "Collection Mode",
+ "description": "A human-readable form of the term.",
+ "type": "string",
+ "examples": [
+ "Face-to-face interview: Computer-assisted (CAPI/CAMI)",
+ "Measurements and tests",
+ "Computer-based observation"
+ ]
+ },
+ "code": {
+ "title": "Collection Mode Code",
+ "description": "A machine-readable/-actionable form of the term.",
+ "type": "string",
+ "examples": ["Interview.FaceToFace.CAPIorCAMI", "MeasurementsAndTests", "Observation.ComputerBased"]
+ },
+ "uri": {
+ "title": "Collection Mode URI",
+ "description": "The URI for the term.",
+ "type": "string"
+ }
+ },
+ "required": ["label", "code", "uri"]
+ },
+ "examples": [
+ [
+ {
+ "label": "Face-to-face interview: Computer-assisted (CAPI/CAMI)",
+ "code": "Interview.FaceToFace.CAPIorCAMI",
+ "uri": "https://example.com/collection_modes/234"
+ }
+ ],
+ [
+ {
+ "label": "Measurements and tests",
+ "code": "MeasurementsAndTests",
+ "uri": "https://example.com/collection_modes/972"
+ },
+ {
+ "label": "Computer-based observation",
+ "code": "Observation.ComputerBased",
+ "uri": "https://example.com/collection_modes/113"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/common_data_elements.json b/rde_schema/property_bank/common_data_elements.json
new file mode 100644
index 0000000..acf2629
--- /dev/null
+++ b/rde_schema/property_bank/common_data_elements.json
@@ -0,0 +1,93 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/common_data_elements",
+ "title": "Common Data Elements",
+ "description": "Common Data Elements (standardized concepts used to ensure consistency and interoperability across datasets) found in the data collection.",
+ "controlledVocab": "commonDataElements",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "common_data_element": {
+ "title": "Common Data Element",
+ "description": "A common data element used in the data collection.",
+ "type": "object",
+ "properties": {
+ "label": {
+ "title": "Common Data Element Label",
+ "description": "A human-readable form of the term.",
+ "type": "string",
+ "examples": [
+ "Age"
+ ]
+ },
+ "code": {
+ "title": "Common Data Element Code",
+ "description": "A machine-readable/-actionable form of the term.",
+ "type": "string",
+ "examples": [
+ "PDjBiGXjO"
+ ]
+ },
+ "uri": {
+ "title": "Common Data Element URI",
+ "description": "The URI for the term.",
+ "type": "string"
+ }
+ },
+ "required": ["label", "code", "uri"]
+ },
+ "cde_source": {
+ "title": "Common Data Element Source",
+ "description": "The source of the Common Data Element",
+ "type": "string"
+ },
+ "cde_bundle": {
+ "title": "Common Data Element Bundle",
+ "description": "The bundle of which the Common Data Element is part.",
+ "type": "string"
+ },
+ "associated_variable": {
+ "title": "Associated Variable",
+ "description": "The variable from the data collection that aligns with the Common Data Element.",
+ "type": "string"
+ }
+ },
+ "required": [ "common_data_element", "cde_source", "associated_variable"]
+ },
+ "examples": [
+ [
+ {
+ "common_data_element": {
+ "label": "Age",
+ "code": "PDjBiGXjO",
+ "uri": "https://example.com/commonDataElement/PDjBiGXjO"
+ },
+ "cde_source": "NLM",
+ "cde_bundle": "ctyKfVm8k_B",
+ "associated_variable": "AGE"
+ },
+ {
+ "common_data_element": {
+ "label": "Age Units",
+ "code": "FEjsyPDoH",
+ "uri": "https://example.com/commonDataElement/FEjsyPDoH"
+ },
+ "cde_source": "NLM",
+ "cde_bundle": "ctyKfVm8k_B",
+ "associated_variable": "AGE_UNITS"
+ }
+ ],
+ [
+ {
+ "common_data_element": {
+ "label": "Annual Household Income Range",
+ "code": "_N_myh18QM",
+ "uri": "https://example.com/commonDataElement/_N_myh18QM"
+ },
+ "cde_source": "NLM",
+ "associated_variable": "HOUSEHOLD_INCOME"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/contributors.json b/rde_schema/property_bank/contributors.json
new file mode 100644
index 0000000..c14df1e
--- /dev/null
+++ b/rde_schema/property_bank/contributors.json
@@ -0,0 +1,157 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/contributors",
+ "title": "Contributors",
+ "description": "The people or organizations (other than the principal investigators) that contributed to the data collection in supporting roles.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "person": {
+ "$ref": "https://archive.icpsr.umich.edu/schema/property_banks/person/version/1"
+ },
+ "organization": {
+ "$ref": "https://archive.icpsr.umich.edu/schema/property_banks/organization/version/1"
+ },
+ "contributor_type": {
+ "title": "Contributor Types",
+ "description": "The role(s) played by the contributor in regard to the data collection.",
+ "controlledVocab": "contributorTypes",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "label": {
+ "title": "Contributor Type",
+ "description": "A human-readable form of the term.",
+ "type": "string",
+ "examples": [
+ "Contact Person",
+ "Data Collector",
+ "Data Curator"
+ ]
+ },
+ "code": {
+ "title": "Contributor Type Code",
+ "description": "A machine-readable/-actionable form of the term.",
+ "type": "string",
+ "examples": [
+ "contactPerson",
+ "dataCollector",
+ "dataCurator"
+ ]
+ },
+ "uri": {
+ "title": "Contributor Type URI",
+ "description": "The URI for the term.",
+ "type": "string"
+ }
+ }
+ },
+ "examples": [
+ [
+ {
+ "label": "Contact Person",
+ "code": "contactPerson",
+ "uri": "https://example.com/contributorTypes/972"
+ },
+ {
+ "label": "Data Collector",
+ "code": "dataCollector",
+ "uri": "https://example.com/contributorTypes/007"
+ }
+ ],
+ [
+ {
+ "label": "Data Curator",
+ "code": "dataCurator",
+ "uri": "https://example.com/contributorTypes/875"
+ }
+ ]
+ ]
+ }
+ },
+ "allOf": [
+ {
+ "oneOf": [
+ { "required": ["person"] },
+ { "required": ["organization"] }
+ ]
+ },
+ {
+ "required": ["contributor_types"]
+ }
+ ]
+ },
+ "minItems": 1,
+ "examples": [
+ [
+ {
+ "person": {
+ "name": {
+ "given": "Joe"
+ }
+ },
+ "contributor_type": [
+ {
+ "label": "Data Curator",
+ "code": "dataCurator",
+ "uri": "https://example.com/contributorTypes/875"
+ }
+ ]
+ }
+ ],
+ [
+ {
+ "person": {
+ "name": {
+ "given": "Jane Q.",
+ "family": "Doe"
+ },
+ "orcid": "https://orcid.org/0000-0001-6666-5717",
+ "researcher_passport_profile_id": "1234",
+ "affiliations": [
+ {
+ "name": "Urban Institute",
+ "name_code": "1234",
+ "name_uri": "https://icpsr.example.com/organizations/1234",
+ "ror": "https://ror.org/017pz3h73",
+ "icpsr_org_id": "xyz123"
+ },
+ {
+ "name": "Example University"
+ }
+ ]
+ },
+ "contributor_type": [
+ {
+ "label": "Contact Person",
+ "code": "ContactPerson",
+ "uri": "https://example.com/contributorTypes/972"
+ },
+ {
+ "label": "Data Collector",
+ "code": "DataCollector",
+ "uri": "https://example.com/contributorTypes/007"
+ }
+ ]
+ },
+ {
+ "organization":
+ {
+ "name": "Harvard University. Medical School",
+ "name_code": "7823",
+ "name_uri": "https://icpsr.example.com/organizations/7823",
+ "ror": "https://ror.org/456cg6k91"
+ },
+ "contributor_type": [
+ {
+ "label": "Other Role",
+ "code": "",
+ "uri": ""
+ }
+ ]
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/data_management_plan.json b/rde_schema/property_bank/data_management_plan.json
new file mode 100644
index 0000000..a32fe49
--- /dev/null
+++ b/rde_schema/property_bank/data_management_plan.json
@@ -0,0 +1,11 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/data_management_plan",
+ "title": "Data Management Plan",
+ "description": "A link to the data management plan (preferably a persistent identifier such as a DOI).",
+ "type": "string",
+ "format": "uri",
+ "examples": [
+ "https://doi.org/10.1000/182"
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/data_source_types.json b/rde_schema/property_bank/data_source_types.json
new file mode 100644
index 0000000..7c6b231
--- /dev/null
+++ b/rde_schema/property_bank/data_source_types.json
@@ -0,0 +1,57 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/data_source_types",
+ "title": "Data Source Types",
+ "description": "The source(s) of the data as collected by the Principal Investigators.",
+ "usageNotes": "This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV DataSourceType https://rdf-vocabulary.ddialliance.org/ddi-cv/DataSourceType/1.0.2/DataSourceType.html.",
+ "controlledVocab": "dataSourceTypes",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "label": {
+ "title": "Data Source Type",
+ "description": "A human-readable form of the term.",
+ "type": "string",
+ "examples": [
+ "Registers/Records/Accounts: Medical/Clinical",
+ "Events/Interactions",
+ "Other"
+ ]
+ },
+ "code": {
+ "title": "Data Source Type Code",
+ "description": "A machine-readable/-actionable form of the term.",
+ "type": "string",
+ "examples": ["RegistersRecordsAccounts.MedicalClinical", "EventsInteractions", "Other"]
+ },
+ "uri": {
+ "title": "Data Source Type URI",
+ "description": "The URI for the term.",
+ "type": "string"
+ }
+ },
+ "required": ["label", "code", "uri"]
+ },
+ "examples": [
+ [
+ {
+ "label": "Registers/Records/Accounts: Medical/Clinical",
+ "code": "RegistersRecordsAccounts.MedicalClinical",
+ "uri": "https://example.com/data_source_type/123"
+ },
+ {
+ "label": "Events/Interactions",
+ "code": "EventsInteractions",
+ "uri": "https://example.com/data_source_type/234"
+ }
+ ],
+ [
+ {
+ "label": "Other",
+ "code": "Other",
+ "uri": "https://example.com/data_source_type/737"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/deposits.json b/rde_schema/property_bank/deposits.json
new file mode 100644
index 0000000..bbf1922
--- /dev/null
+++ b/rde_schema/property_bank/deposits.json
@@ -0,0 +1,56 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/deposits",
+ "title": "Deposits",
+ "description": "Information about deposits associated with the data collection.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "person": { "$ref": "https://archive.icpsr.umich.edu/schema/property_banks/person/version/1" },
+ "deposit_date": {
+ "title": "Deposit Date",
+ "description": "The date on which a deposit was made.",
+ "type": "string",
+ "format": "date",
+ "examples": ["2024-03-03", "2022-02-22"]
+ }
+ },
+ "required": ["person", "deposit_date"]
+ },
+ "examples": [
+ [
+ {
+ "person": {
+ "name": {
+ "given": "Jane Q.",
+ "family": "Doe"
+ },
+ "orcid": "https://orcid.org/0000-0001-6666-5717"
+ },
+ "deposit_date": "2020-10-31"
+ },
+ {
+ "person": {
+ "name": {
+ "given": "John.",
+ "family": "Smith"
+ }
+ },
+ "deposit_date": "2023-01-22"
+ }
+ ],
+ [
+ {
+ "person": {
+ "name": {
+ "given": "H. P.",
+ "family": "Lovecraft III"
+ }
+ },
+ "deposit_date": "2019-08-12"
+ }
+ ]
+ ]
+}
+
diff --git a/rde_schema/property_bank/distributors.json b/rde_schema/property_bank/distributors.json
new file mode 100644
index 0000000..e024c27
--- /dev/null
+++ b/rde_schema/property_bank/distributors.json
@@ -0,0 +1,56 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/distributors",
+ "title": "Distributors",
+ "description": "The organization(s) responsible for distributing the data collection.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "organization": {
+ "$ref": "https://archive.icpsr.umich.edu/schema/property_banks/organization/version/1"
+ },
+ "order": {
+ "title": "Order",
+ "description": "The order of importance for the distributors of the data collection.",
+ "type": "integer",
+ "usageNotes": "A value of '0' indicates the primary distributor, '1' the second, and so forth.",
+ "examples": [0,1,2,3]
+ }
+ },
+ "required": ["organization", "order"]
+ },
+ "minItems": 1,
+ "examples": [
+ [
+ {
+ "organization": {
+ "name": "Inter-university Consortium for Political and Social Research",
+ "name_code": "1234",
+ "name_uri": "https://icpsr.example.com/organizations/1234",
+ "ror": "https://ror.org/017pz3h73"
+ },
+ "order": 0
+ },
+ {
+ "organization": {
+ "name": "GESIS",
+ "name_code": "2345",
+ "name_uri": "https://icpsr.example.com/organizations/2345",
+ "ror": "https://ror.org/018afyw53"
+ },
+ "order": 1
+ }
+ ],
+ [
+ {
+ "organization": {
+ "name": "Roper Center for Public Opinion Research",
+ "name_code": "1234",
+ "name_uri": "https://icpsr.example.com/organizations/1234"
+ },
+ "order": 0
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/extent_of_processing.json b/rde_schema/property_bank/extent_of_processing.json
new file mode 100644
index 0000000..ae47cc5
--- /dev/null
+++ b/rde_schema/property_bank/extent_of_processing.json
@@ -0,0 +1,45 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/extent_of_processing",
+ "title": "Extent of Processing",
+ "description": "Processing activities and checks performed on the data collection by ICPSR curation staff.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "curation_level": {
+ "description": "The pre-defined level at which the data collection was curated.",
+ "type": "string",
+ "usageNotes": "Select the appropriate ICPSR Curation level.",
+ "examples": ["1", "2", "3"]
+ },
+ "documentation_version": {
+ "description": "The version of Curation level documentation used with the data collection.",
+ "type": "string",
+ "usageNotes": "Select the appropriate version number for the ICPSR Curation Level documentation.",
+ "examples": ["1", "2", "3"]
+ },
+ "documentation_uri": {
+ "description": "The DOI for the correct version of the ICPSR Curation Level documentation.",
+ "type": "string",
+ "format": "uri",
+ "usageNotes": "Enter the correct DOI for the documentation as stored in the University of Michigan Deep Blue repository.",
+ "examples": [
+ "https://dx.doi.org/10.7302/22511",
+ "https://dx.doi.org/10.7302/22390"
+ ]
+ }
+ },
+ "required": ["curation_level", "documentation_version", "documentation_uri"]
+ },
+ "usageNotes": "All fields must be present so that correct Extent of Processing note can be formatted.",
+ "examples": [
+ [
+ {
+ "curation_level": "1",
+ "documentation_version": "1",
+ "documentation_uri": "https://dx.doi.org/10.7302/22390"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/external_data_sources.json b/rde_schema/property_bank/external_data_sources.json
new file mode 100644
index 0000000..67e1ca1
--- /dev/null
+++ b/rde_schema/property_bank/external_data_sources.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/external_data_sources",
+ "title": "External Data Sources",
+ "description": "The source of the data, when that source is external to the data collection and can be independently cited.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "usageNotes": "External data sources include books, journal articles, administrative records, agency-sponsored surveys, and machine-readable files. Each source includes at minimum the title, author, publication year, and journal (if applicable). Any citation format is accepted.",
+ "examples": [
+ ["'Voting Scores.' Congressional Quarterly Almanac 33 (1977), 487-498"],
+ [
+ "United States Bureau of the Census Economic Surveys, 1998-2000",
+ "United States Congressional Record, 1989"
+ ],
+ ["Annual Company Organization Survey, 2003"]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/external_source_id.json b/rde_schema/property_bank/external_source_id.json
new file mode 100644
index 0000000..d599fa9
--- /dev/null
+++ b/rde_schema/property_bank/external_source_id.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/external_source_id",
+ "title": "External Source ID",
+ "description": "A unique identifier supplied by the data depositor",
+ "type": "string",
+ "examples": [
+ "BJS:257",
+ "NICHD:1R01HD051468-01A1",
+ "NIJ:2013MUCX0002"
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/funding_sources.json b/rde_schema/property_bank/funding_sources.json
new file mode 100644
index 0000000..0c454e1
--- /dev/null
+++ b/rde_schema/property_bank/funding_sources.json
@@ -0,0 +1,101 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/funding_sources",
+ "title": "Funding Sources",
+ "description": "The sources of funding that supported the data collection.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "organization": {
+ "$ref": "https://archive.icpsr.umich.edu/schema/property_banks/organization/version/1"
+ },
+ "grants": {
+ "title": "Funding Awards",
+ "description": "Financial support for the data collection.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "grant_number": {
+ "title": "Funding Identifier",
+ "description": "The unique identifier for the funding (e.g., ABC-0123456.",
+ "type": "string",
+ "examples": [
+ "SES-1835721",
+ "MDR-8550085",
+ "40791"
+ ]
+ },
+ "grant_uri": {
+ "title": "Funding URL",
+ "description": "A unique identifier (URL), preferably a persistent one like a DOI, linking to a landing page with funding information.",
+ "type": "string",
+ "format": "uri",
+ "examples": [
+ "https://doi.org/10.35802/212242"
+ ]
+ }
+ },
+ "required": ["grant_number"]
+ }
+ },
+ "order": {
+ "title": "Order",
+ "description": "Internal ICPSR field used to determine the order of importance for the funders associated with the data collection.",
+ "type": "integer",
+ "examples": [
+ 0,
+ 1,
+ 2,
+ 3
+ ]
+ }
+ },
+ "required": ["organization", "order"]
+ },
+ "examples": [
+ [
+ {
+ "organization": {
+ "name": "Robert Wood Johnson Foundation",
+ "name_code": "5643",
+ "name_uri": "https://icpsr.example.com/organizations/5643",
+ "ror": "https://ror.org/02ymmdj85"
+ },
+ "grants": [
+ {
+ "grant_number": "MDR-8550085"
+ },
+ {
+ "grant_number": "MDR-8550204"
+ }
+ ],
+ "order": 0
+ },
+ {
+ "organization": {
+ "name": "United States Department of Justice. Office of Justice Programs. Bureau of Justice Statistics",
+ "name_code": "2342",
+ "name_uri": "https://icpsr.example.com/organizations/2342",
+ "ror": "https://ror.org/0006s4z66"
+ },
+ "grants": [
+ {
+ "grant_number": "SES-1835721",
+ "grant_uri": "https://doi.org/10.35802/000000"
+ }
+ ],
+ "order": 1
+ }
+ ],
+ [
+ {
+ "organization": {
+ "name": "Acme Foundation"
+ },
+ "order": 0
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/general_data_formats.json b/rde_schema/property_bank/general_data_formats.json
new file mode 100644
index 0000000..c2ef6a8
--- /dev/null
+++ b/rde_schema/property_bank/general_data_formats.json
@@ -0,0 +1,61 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/general_data_formats",
+ "title": "General Data Formats",
+ "description": "The file format types present in the data collection.",
+ "usageNotes": "This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV GeneralDataFormat https://rdf-vocabulary.ddialliance.org/ddi-cv/GeneralDataFormat/2.0.3/GeneralDataFormat.html.",
+ "controlledVocab": "generalDataFormats",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "label": {
+ "title": "General Data Format",
+ "description": "A human-readable form of the term.",
+ "type": "string",
+ "examples": [
+ "Text",
+ "Still image",
+ "Numeric"
+ ]
+ },
+ "code": {
+ "title": "General Data Format Code",
+ "description": "A machine-readable/-actionable form of the term.",
+ "type": "string",
+ "examples": [
+ "Text",
+ "StillImage",
+ "Numeric"
+ ]
+ },
+ "uri": {
+ "title": "General Data Format URI",
+ "description": "The URI for the term.",
+ "type": "string"
+ }
+ },
+ "required": ["label", "code", "uri"]
+ },
+ "examples": [
+ [
+ {
+ "label": "Text",
+ "code": "Text",
+ "uri": "https://example.com/general_data_format/972"
+ },
+ {
+ "label": "Still image",
+ "code": "StillImage",
+ "uri": "https://example.com/general_data_format/234"
+ }
+ ],
+ [
+ {
+ "label": "Numeric",
+ "code": "Numeric",
+ "uri": "https://example.com/general_data_format/563"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/geographic_coverage_areas.json b/rde_schema/property_bank/geographic_coverage_areas.json
new file mode 100644
index 0000000..fb5e442
--- /dev/null
+++ b/rde_schema/property_bank/geographic_coverage_areas.json
@@ -0,0 +1,68 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/geographic_coverage_areas",
+ "title": "Geographic Coverage Areas",
+ "description": "The geographic locations where the data refer or are related.",
+ "usageNotes": "Geographic locations are drawn from the GeoNames geographical database. Source: https://www.geonames.org/",
+ "controlledVocab": "geoNames",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "city": {
+ "title": "City",
+ "description": "A town, city, or similar political entity covered in a data collection",
+ "type": "string",
+ "examples": ["Ann Arbor", "Hanover", "Chongqing"]
+ },
+ "county": {
+ "title": "County",
+ "description": "A county or similar administrative area covered in a data collection",
+ "type": "string",
+ "examples": ["Monroe County", "Washtenaw County", "Cuyahoga County"]
+ },
+ "state": {
+ "title": "State",
+ "description": "A state, province, canton or similar political entity covered in a data collection",
+ "type": "string",
+ "examples": ["Michigan", "Manitoba", "Yunnan"]
+ },
+ "country": {
+ "title": "Country",
+ "description": "A country covered in a data collection",
+ "type": "string",
+ "examples": ["United States", "China", "Ghana"]
+ },
+ "uri": {
+ "title": "Geographic Coverage Area URI",
+ "description": "The unique identifier for the geographic coverage area.",
+ "type": "string",
+ "format": "uri",
+ "examples": [ "https://www.geonames.org/4990729/", "https://www.geonames.org/6269554" ]
+ }
+ },
+ "required": ["country"]
+ },
+ "usageNotes": "In addition to the total geographic scope of the data, may include any additional levels of geographic coding provided in the variables.",
+ "examples": [
+ [
+ {
+ "city": "Cleveland",
+ "state": "Ohio",
+ "country": "United States",
+ "uri": "https://www.geonames.org/5150529"
+ },
+ {
+ "city": "Pittsburgh",
+ "state": "Pennsylvania",
+ "country": "United States",
+ "uri": "https://www.geonames.org/5206379"
+ }
+ ],
+ [
+ {
+ "country": "Germany"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/icpsr_subject_terms.json b/rde_schema/property_bank/icpsr_subject_terms.json
new file mode 100644
index 0000000..5eb4535
--- /dev/null
+++ b/rde_schema/property_bank/icpsr_subject_terms.json
@@ -0,0 +1,57 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/icpsr_subject_terms",
+ "title": "ICPSR Subject Terms",
+ "description": "A controlled list of social science terms maintained by ICPSR and used to indicate topics related to the data collection.",
+ "usageNotes": "This controlled vocabulary was taken from the ICPSR Subject Terms Thesaurus. Source: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001.",
+ "controlledVocab": "subjectTerms",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "label": {
+ "title": "ICPSR Subject Term",
+ "description": "A human-readable form of the subject term.",
+ "type": "string",
+ "examples": ["abduction", "ability", "Abolition movement"]
+ },
+ "code": {
+ "title": "ICPSR Subject Term Code",
+ "description": "A machine-readable/-actionable form of the subject term.",
+ "type": "string",
+ "examples": ["20391", "24123", "23632"]
+ },
+ "uri": {
+ "title": "ICPSR Subject Term URI",
+ "description": "The URI for the subject term.",
+ "type": "string",
+ "examples": [
+ "https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/20391",
+ "https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24040"
+ ]
+ }
+ },
+ "required": ["label", "code", "uri"]
+ },
+ "examples": [
+ [
+ {
+ "label": "biographical data",
+ "code": "20391",
+ "uri": "https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/20391"
+ },
+ {
+ "label": "age",
+ "code": "24123",
+ "uri": "https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24123"
+ }
+ ],
+ [
+ {
+ "label": "happiness",
+ "code": "25624",
+ "uri": "https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/25624"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/jel_classifications.json b/rde_schema/property_bank/jel_classifications.json
new file mode 100644
index 0000000..6fb3cb1
--- /dev/null
+++ b/rde_schema/property_bank/jel_classifications.json
@@ -0,0 +1,65 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/jel_classifications",
+ "title": "Journal of Economic Literature (JEL) Classification Codes",
+ "description": "Classification codes used to categorize economic research.",
+ "usageNotes": "This controlled vocabulary was taken from the American Economic Association's JEL Classifications Codes. Source: https://www.aeaweb.org/jel/guide/jel.php",
+ "controlledVocab": "jelClassifications",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "label": {
+ "title": "JEL Classification Term",
+ "description": "A human-readable form of the term.",
+ "type": "string",
+ "examples": [
+ "A12 Relation of Economics to Other Disciplines",
+ "B00 History of Economic Thought, Methodology, and Heterodox Approaches"
+ ]
+ },
+ "code": {
+ "title": "JEL Classification Code",
+ "description": "A machine-readable/-actionable form of the term.",
+ "type": "string",
+ "examples": [
+ "a12",
+ "b00",
+ "n22"
+ ]
+ },
+ "uri": {
+ "title": "JEL Classification URI",
+ "description": "The URI for the JEL classification code.",
+ "type": "string",
+ "format": "uri",
+ "examples": [
+ "http://example.com/jel/a12",
+ "http://example.com/jel/b00"
+ ]
+ }
+ },
+ "required": ["label"]
+ },
+ "examples": [
+ [
+ {
+ "label": "A12 Relation of Economics to Other Disciplines",
+ "code": "a12",
+ "uri": "http://example.com/jel/a12"
+ },
+ {
+ "label": "B00 History of Economic Thought, Methodology, and Heterodox Approaches",
+ "code": "b00",
+ "uri": "http://example.com/jel/b00"
+ }
+ ],
+ [
+ {
+ "label": "N22 Economic History: Financial Markets and Institutions: U.S.; Canada: 1913-",
+ "code": "n22",
+ "uri": "http://example.com/jel/n22"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/languages.json b/rde_schema/property_bank/languages.json
new file mode 100644
index 0000000..5c6e67a
--- /dev/null
+++ b/rde_schema/property_bank/languages.json
@@ -0,0 +1,59 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/languages",
+ "title": "Languages",
+ "description": "The language(s) used in the data collection.",
+ "controlledVocab": "languages",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "label": {
+ "title": "Language",
+ "description": "A human-readable form of the language name.",
+ "type": "string",
+ "examples": [
+ "English",
+ "French",
+ "German"
+ ]
+ },
+ "code": {
+ "title": "Language Code",
+ "description": "A machine-readable/-actionable form of the term.",
+ "type": "string",
+ "examples": [
+ "en",
+ "fr",
+ "de"
+ ]
+ },
+ "uri": {
+ "title": "Language URI",
+ "description": "The URI for the term.",
+ "type": "string"
+ }
+ }
+ },
+ "examples": [
+ [
+ {
+ "label": "English",
+ "code": "en",
+ "uri": "https://example.com/languages/en"
+ }
+ ],
+ [
+ {
+ "label": "English",
+ "code": "en",
+ "uri": "https://example.com/languages/en"
+ },
+ {
+ "label": "French",
+ "code": "fr",
+ "uri": "https://example.com/languages/fr"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/license.json b/rde_schema/property_bank/license.json
new file mode 100644
index 0000000..9fdab72
--- /dev/null
+++ b/rde_schema/property_bank/license.json
@@ -0,0 +1,30 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/license",
+ "title": "License",
+ "description": "A license governing the data's use.",
+ "type": "object",
+ "controlledVocab": "licenses",
+ "properties": {
+ "name": {
+ "title": "License Name",
+ "type": "string"
+ },
+ "code": {
+ "title": "License Code",
+ "type": "string"
+ },
+ "uri": {
+ "title": "License URI",
+ "type": "string",
+ "format": "uri"
+ }
+ },
+ "examples": [
+ {
+ "name": "Creative Commons Attribution Non Commercial 4.0 International",
+ "code": "CC-BY-NC-4.0",
+ "uri": "https://creativecommons.org/licenses/by-nc/4.0/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/link_title.json b/rde_schema/property_bank/link_title.json
new file mode 100644
index 0000000..581b614
--- /dev/null
+++ b/rde_schema/property_bank/link_title.json
@@ -0,0 +1,9 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/link_title",
+ "title": "Link Title",
+ "description": "The title of an external resource that is included in the ICPSR catalog as a courtesy to users.",
+ "type": "string",
+ "usageNotes": "Always used in conjunction with the Link URL element.",
+ "examples": ["Cebu Longitudinal Health and Nutrition Survey"]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/link_url.json b/rde_schema/property_bank/link_url.json
new file mode 100644
index 0000000..6c3f724
--- /dev/null
+++ b/rde_schema/property_bank/link_url.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/link_url",
+ "title": "Link URL",
+ "description": "The URL of an external resource that is included in the ICPSR catalog as a courtesy to users.",
+ "type": "string",
+ "format": "uri",
+ "usageNotes": "Always used in conjunction with the Link Title element.",
+ "examples": ["Cebu Longitudinal Health and Nutrition Survey"]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/manuscript_number.json b/rde_schema/property_bank/manuscript_number.json
new file mode 100644
index 0000000..b59f8ca
--- /dev/null
+++ b/rde_schema/property_bank/manuscript_number.json
@@ -0,0 +1,9 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/manuscript_number",
+ "title": "Manuscript Number",
+ "description": "A unique identifier that associates the data collection with a manuscript submitted to a journal.",
+ "type": "string",
+ "usageNotes": "The manuscript number helps the journal manage the data deposit. It is an internal field and will not be displayed to the public.",
+ "examples": []
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/mesh_subject_terms.json b/rde_schema/property_bank/mesh_subject_terms.json
new file mode 100644
index 0000000..a5f904f
--- /dev/null
+++ b/rde_schema/property_bank/mesh_subject_terms.json
@@ -0,0 +1,52 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/mesh_subject_terms",
+ "title": "Medical Subject Headings (MeSH) Terms",
+ "description": "Biomedical and health-related terms from the National Library of Medicine that describe the data collection's topics.",
+ "usageNotes": "This controlled vocabulary was taken from the National Library of Medicine's Medical Subject Headings (MeSH). Source: https://www.ncbi.nlm.nih.gov/mesh/",
+ "type": "array",
+ "controlledVocab": "mesh",
+ "items": {
+ "type": "object",
+ "properties": {
+ "label": {
+ "title": "MeSH Subject Term",
+ "description": "A human-readable form of the subject term.",
+ "type": "string",
+ "examples": ["anxiety", "brain waves"]
+ },
+ "code": {
+ "title": "MeSH Subject Term Code",
+ "description": "A machine-readable/-actionable form of the subject term.",
+ "type": "string",
+ "examples": ["D001007", "D058256"]
+ },
+ "uri": {
+ "title": "MeSH Subject Term URI",
+ "description": "The URI for the subject term as maintained in MeSH.",
+ "type": "string",
+ "format": "uri",
+ "usageNotes": "Enter the MeSH RDF Unique Identifier.",
+ "examples": [
+ "http://id.nlm.nih.gov/mesh/D001007",
+ "http://id.nlm.nih.gov/mesh/D058256"
+ ]
+ }
+ },
+ "required": ["label", "code", "uri"]
+ },
+ "examples": [
+ [
+ {
+ "label": "anxiety",
+ "code": "D001007",
+ "uri": "http://id.nlm.nih.gov/mesh/D001007"
+ },
+ {
+ "label": "brain waves",
+ "code": "D058256",
+ "uri": "http://id.nlm.nih.gov/mesh/D058256"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/nationally_representative_sample.json b/rde_schema/property_bank/nationally_representative_sample.json
new file mode 100644
index 0000000..cc87ce1
--- /dev/null
+++ b/rde_schema/property_bank/nationally_representative_sample.json
@@ -0,0 +1,8 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/nationally_representative_sample",
+ "title": "Nationally Representative Sample",
+ "description": "Indicates whether the data collection uses a sampling design intended to represent the demographics, behaviors, and/or characteristics of the entire nation. This typically involves probability-based methods that allow generalization. It does not include convenience samples that appear similar to the nation by chance.",
+ "type": "string",
+ "examples": ["Yes", "No"]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/notes.json b/rde_schema/property_bank/notes.json
new file mode 100644
index 0000000..b8765de
--- /dev/null
+++ b/rde_schema/property_bank/notes.json
@@ -0,0 +1,15 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/notes",
+ "title": "Notes",
+ "description": "Important details about the data collection (like unique authoring, discrepancies, or processing information) that can't be recorded in other metadata elements.",
+ "type": "array",
+ "items": { "type": "string" },
+ "examples": [
+ [
+ "Information on the Index of Consumer Sentiment, the Index of Current Economic Conditions, and the Index of Consumer Expectations and how they were created can be found in the P.I. Codebook",
+ "Dataset 1 should be attributed to Jane Doe while datasets 2-6 should be attributed to John Doe"
+ ],
+ ["Additional information on the Survey of Consumers can be found by visiting the Survey of Consumers Website"]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/organization.json b/rde_schema/property_bank/organization.json
new file mode 100644
index 0000000..155e152
--- /dev/null
+++ b/rde_schema/property_bank/organization.json
@@ -0,0 +1,54 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/organization",
+ "title": "Organization",
+ "description": "An organization associated with an ICPSR data collection or service.",
+ "type": "object",
+ "controlledVocab": "organizations",
+ "properties": {
+ "name": {
+ "title": "Organization Name",
+ "description": "The organization's name.",
+ "type": "string",
+ "examples": [
+ "Federal Reserve Bank of St. Louis. Research Division",
+ "University of Michigan. Institute for Social Research"
+ ]
+ },
+ "name_code": {
+ "title": "Organization Name Code",
+ "description": "A machine-readable/-actionable form of the organization's name.",
+ "type": "string",
+ "examples": ["1234", "2345", "3456"]
+ },
+ "name_uri": {
+ "title": "Organization Name URI",
+ "description": "The URI for the organization's name.",
+ "type": "string"
+ },
+ "ror": {
+ "title": "ROR Identifier",
+ "description": "The organization's Research Organization Registry (ROR) identifier.",
+ "type": "string",
+ "format": "uri",
+ "examples": [ "https://ror.org/02q7mkh03" ]
+ },
+ "email": {
+ "title": "Email Address",
+ "description": "The organization's email address.",
+ "type": "string",
+ "format": "email",
+ "examples": ["info@example.com"]
+ }
+ },
+ "required": ["name"],
+ "examples": [
+ {
+ "name": "Urban Institute",
+ "name_code": "1234",
+ "name_uri": "https://icpsr.example.com/organizations/1234",
+ "ror": "https://ror.org/017pz3h73",
+ "email": "info@urban.institute"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/oversamples.json b/rde_schema/property_bank/oversamples.json
new file mode 100644
index 0000000..1657b82
--- /dev/null
+++ b/rde_schema/property_bank/oversamples.json
@@ -0,0 +1,60 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/oversamples",
+ "title": "Oversamples",
+ "description": "Key group(s) given higher odds of selection into a probability sample than would occur by chance, allowing for both within- and between-group comparisons in the resulting data.",
+ "controlledVocab": "oversamples",
+ "usageNotes": "Do not mark as an oversample if the study is about a particular group by design (e.g., a study of crime victims is not an oversample of crime victims but may contain oversamples for race or age).",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "label": {
+ "title": "Oversample",
+ "description": "A human-readable form of the language name.",
+ "type": "string",
+ "examples": [
+ "Age",
+ "Race/Ethnicity",
+ "Other"
+ ]
+ },
+ "code": {
+ "title": "Oversample Code",
+ "description": "A machine-readable/-actionable form of the term.",
+ "type": "string",
+ "examples": [
+ "Age",
+ "RaceEthnicity",
+ "Other"
+ ]
+ },
+ "uri": {
+ "title": "Oversample URI",
+ "description": "The URI for the term.",
+ "type": "string"
+ }
+ }
+ },
+ "examples": [
+ [
+ {
+ "label": "Age",
+ "code": "Age",
+ "uri": "https://example.com/oversamples/789"
+ }
+ ],
+ [
+ {
+ "label": "Race/Ethnicity",
+ "code": "RaceEthnicity",
+ "uri": "https://example.com/oversamples/456"
+ },
+ {
+ "label": "Other",
+ "code": "Other",
+ "uri": "https://example.com/oversamples/123"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/person.json b/rde_schema/property_bank/person.json
new file mode 100644
index 0000000..d1cfbc8
--- /dev/null
+++ b/rde_schema/property_bank/person.json
@@ -0,0 +1,97 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/person",
+ "title": "Person",
+ "description": "A person associated with an ICPSR data collection or service.",
+ "type": "object",
+ "properties": {
+ "name": {
+ "title": "Personal Name",
+ "description": "The person's name.",
+ "type": "object",
+ "properties": {
+ "given": {
+ "title": "Given Name (First Name)",
+ "description": "The person's first (given) name, which may include a middle name or initial.",
+ "type": "string",
+ "mapsTo": ["foaf:givenName"],
+ "examples": ["Chantel", "Giannis", "Mary Kate", "John Q."]
+ },
+ "family": {
+ "title": "Family Name (Last Name)",
+ "description": "The person's last (family) name, which may include a suffix (e.g., Jr., Sr., IV).",
+ "type": "string",
+ "mapsTo": ["foaf:familyName"],
+ "examples": ["Smith", "Jordan Jr.", "Escobar-Vega"]
+ }
+ },
+ "required": ["given", "family"],
+ "examples": [
+ {
+ "given": "Susan B.",
+ "family": "Anthony"
+ },
+ {
+ "given": "John",
+ "family": "Doe IV"
+ }
+ ]
+ },
+ "orcid": {
+ "Title": "ORCID Identifier",
+ "description": "The person's Open Researcher and Contributor ID (ORCID).",
+ "type": "string",
+ "format": "uri",
+ "examples": [ "https://orcid.org/0000-0001-6289-1234" ]
+ },
+ "researcher_passport_profile_id": {
+ "description": "The person's ICPSR Researcher Passport Identifier.",
+ "type": "string",
+ "examples": []
+ },
+ "affiliations": {
+ "title": "Affiliation(s)",
+ "description": "The person's affiliated organization(s).",
+ "type": "array",
+ "items": {
+ "$ref": "https://archive.icpsr.umich.edu/schema/property_banks/organization/version/1"
+ }
+ },
+ "email": {
+ "title": "Email Address",
+ "description": "The person's email address.",
+ "type": "string",
+ "format": "email",
+ "examples": ["j.doe@example.com"]
+ }
+ },
+ "required": ["name"],
+ "examples": [
+ {
+ "name": {
+ "given": "Jane Q.",
+ "family": "Doe II"
+ },
+ "orcid": "https://orcid.org/0000-0001-6666-5717",
+ "researcher_passport_profile_id": "1234",
+ "affiliations": [
+ {
+ "name": "Urban Institute",
+ "name_code": "2342",
+ "name_uri": "https://icpsr.example.com/organizations/2342",
+ "ror": "https://ror.org/017pz3h73",
+ "icpsr_org_id": "xyz123"
+ },
+ {
+ "name": "Example University"
+ }
+ ],
+ "email": "jane.doe@example.com"
+ },
+ {
+ "name": {
+ "given": "Joe"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/preregistration.json b/rde_schema/property_bank/preregistration.json
new file mode 100644
index 0000000..c0c1bf9
--- /dev/null
+++ b/rde_schema/property_bank/preregistration.json
@@ -0,0 +1,11 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/preregistration",
+ "title": "Preregistration",
+ "description": "A link to a research plan for the data collection (preferably a persistent identifier such as a DOI).",
+ "type": "string",
+ "format": "uri",
+ "examples": [
+ "https://doi.org/10.1000/182"
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/principal_investigators.json b/rde_schema/property_bank/principal_investigators.json
new file mode 100644
index 0000000..e1769a7
--- /dev/null
+++ b/rde_schema/property_bank/principal_investigators.json
@@ -0,0 +1,87 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/principal_investigators",
+ "title": "Principal Investigators",
+ "description": "The key people or organizations responsible for the data collection, listed by importance. Each data collection requires at least one PI, either a person or an organization.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "person": {
+ "$ref": "https://archive.icpsr.umich.edu/schema/property_banks/person/version/1"
+ },
+ "organization": {
+ "$ref": "https://archive.icpsr.umich.edu/schema/property_banks/organization/version/1"
+ },
+ "order": {
+ "title": "Order",
+ "description": "The order or rank of importance for the PIs associated with the data collection, typically provided to ICPSR by the lead PI.",
+ "type": "integer",
+ "examples": [0,1,2,3]
+ }
+ },
+ "allOf": [
+ {
+ "oneOf": [
+ { "required": ["person"] },
+ { "required": ["organization"] }
+ ]
+ },
+ {
+ "required": ["order"]
+ }
+ ]
+ },
+ "minItems": 1,
+ "examples": [
+ "Personal Principal Investigator
| First Name | Last Name | Affiliation |
|---|
| Veronica | Martinez-Ebers | National Institute for Law and Equity |
| Lawrence F. | Travis III | University of Cincinnati |
",
+ "Organizational Principal Investigator
| Name |
|---|
| United States Department of Labor. Bureau of Labor Statistics |
| The Washington Post |
"
+ ],
+ "json_examples": [
+ [
+ {
+ "person": {
+ "name": {
+ "given": "Jane"
+ }
+ },
+ "order": 0
+ }
+ ],
+ [
+ {
+ "person": {
+ "name": {
+ "given": "Joe Q.",
+ "family": "Doe IV"
+ },
+ "orcid": "https://orcid.org/0000-0001-6666-5717",
+ "researcher_passport_profile_id": "1234",
+ "affiliations": [
+ {
+ "name": "Urban Institute",
+ "name_code": "1234",
+ "name_uri": "https://icpsr.example.com/organizations/1234",
+ "ror": "https://ror.org/017pz3h73",
+ "icpsr_org_id": "xyz123"
+ },
+ {
+ "name": "Example University"
+ }
+ ]
+ },
+ "order": 0
+ },
+ {
+ "organization":
+ {
+ "name": "Harvard University. Medical School",
+ "name_code": "7823",
+ "name_uri": "https://icpsr.example.com/organizations/7823",
+ "ror": "https://ror.org/456cg6k91"
+ },
+ "order": 1
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/response_rates.json b/rde_schema/property_bank/response_rates.json
new file mode 100644
index 0000000..4f8bddb
--- /dev/null
+++ b/rde_schema/property_bank/response_rates.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/response_rates",
+ "title": "Response Rates",
+ "description": "The percentage of respondents in the sample who participated in the data collection.",
+ "type": "string",
+ "usageNotes": "This field is only applicable if the data were collected with a survey instrument and the response rates are provided.",
+ "examples": [
+ "The overall response rate for this survey was 20.22%; 72.6% for existing panelists and 10.4% for new panelists, using AAPOR Response Rate 1.",
+ "Not applicable."
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/restrictions.json b/rde_schema/property_bank/restrictions.json
new file mode 100644
index 0000000..8f9ced8
--- /dev/null
+++ b/rde_schema/property_bank/restrictions.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/restrictions",
+ "title": "Restrictions",
+ "description": "Rules about how the data collection can be accessed or used.",
+ "type": "string",
+ "usageNotes": "Restrictions inform users that access to the data collection or certain variables may be limited, and that they should contact ICPSR directly to inquire about accessing them.",
+ "examples": [
+ "The public-use data files in this collection are available for access by the general public.",
+ "This material is sensitive in nature and is available as restricted data through ICPSR. Users are required to apply for access, and there may be a wait time before access can be provided. "
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/sampling_note.json b/rde_schema/property_bank/sampling_note.json
new file mode 100644
index 0000000..ae78885
--- /dev/null
+++ b/rde_schema/property_bank/sampling_note.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/sampling_note",
+ "title": "Sampling Note",
+ "description": "Supplemental information about the sampling process that does not fit neatly into the Sampling Procedure field.",
+ "type": "string",
+ "usageNotes": "A detailed discussion of such things as sampling error or other limitations of the sampling methodology is not required here.",
+ "examples": [
+ "National sample of telephone numbers from cell (RDD) sampling frame.",
+ "The probability sample selected to represent the universe consists of approximately 71,000 households."
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/sampling_procedures.json b/rde_schema/property_bank/sampling_procedures.json
new file mode 100644
index 0000000..ca50412
--- /dev/null
+++ b/rde_schema/property_bank/sampling_procedures.json
@@ -0,0 +1,61 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/sampling_procedures",
+ "title": "Sampling Procedures",
+ "description": "The type(s) of sample and sample design used to select survey respondents to represent the population.",
+ "usageNotes": "The sample is a selection out of the universe of all possible relevant cases (e.g., adults in the United States, housing units in three counties of Michigan, etc.) that could have been included in the data collection. Note that some studies, such as censuses, do not utilize samples but include all members of the universe. This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV SamplingProcedure https://rdf-vocabulary.ddialliance.org/ddi-cv/SamplingProcedure/1.1.4/SamplingProcedure.html.",
+ "controlledVocab": "samplingProcedures",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "label": {
+ "description": "A human-readable form of the term.",
+ "type": "string",
+ "examples": [
+ "Probability: Systematic random",
+ "Other",
+ "Total universe/Complete enumeration"
+ ]
+ },
+ "code": {
+ "description": "A machine-readable/-actionable form of the term.",
+ "type": "string",
+ "examples": [
+ "Probability.SystematicRandom",
+ "Other",
+ "TotalUniverseCompleteEnumeration"
+ ]
+ },
+ "uri": {
+ "description": "The URI for the term.",
+ "type": "string"
+ }
+ },
+ "required": ["label", "code", "uri"]
+ },
+ "items": {
+ "type": "string"
+ },
+ "examples": [
+ [
+ {
+ "label": "Probability: Systematic random",
+ "code": "Probability.SystematicRandom",
+ "uri": "https://example.com/sampling_procedures/123"
+ },
+ {
+ "label": "Other",
+ "code": "Other",
+ "uri": "https://example.com/sampling_procedures/737"
+ }
+ ],
+ [
+ {
+ "label": "Total universe/Complete enumeration",
+ "code": "TotalUniverseCompleteEnumeration",
+ "uri": "https://example.com/sampling_procedures/234"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/scales.json b/rde_schema/property_bank/scales.json
new file mode 100644
index 0000000..35eff7e
--- /dev/null
+++ b/rde_schema/property_bank/scales.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/scales",
+ "title": "Scales",
+ "description": "Any commonly known scales used to collect data for the data collection (e.g., MMPI, CPI, the Census Occupational Codes, etc.).",
+ "type": "string",
+ "usageNotes": "Include common scales that can be readily identified from the data, documentation, or other related materials. ICPSR curators are not expected to infer or research scales that are not explicitly indicated. The scales can be cited either as a list or described in full sentences. If the questionnaire used has a finite list of responses (e.g., 'Always, Sometimes, Rarely, Never' or Strongly Agree, Agree, Disagree, Strongly Disagree'), it is acceptable for this element to note 'A Likert-type scale was used,' or 'Several Likert-type scales were used.' However, it is not required to note Likart-type scales in situations where only such scales were used, given their ubiquity.",
+ "examples":
+ [
+ [
+ "The baseline data collection included one scale - the CES-D index for maternal depression [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4), 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available under the 'Data and Documentation' tab, for details."
+ ],
+ [
+ "Squires, J., Bricker, D. D., and Twombly, E. (2009). Ages and stages questionnaires. Baltimore, MD: Paul H. Brookes.",
+ "Briggs-Gowan, M. J., Carter, A. S., Irwin, J. R., Wachtel, K., and Cicchetti, D. V. (2004). The Brief Infant-Toddler Social and Emotional Assessment: screening for social-emotional problems and delays in competence. Journal of pediatric psychology, 29(2), 143-155.",
+ "Yu, L., Buysse, D. J., Germain, A., Moul, D. E., Stover, A., Dodds, N. E., ... and Pilkonis, P. A. (2012). Development of short forms from the PROMIS sleep disturbance and sleep-related impairment item banks. Behavioral sleep medicine, 10(1), 6-24."
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/smallest_geographic_unit.json b/rde_schema/property_bank/smallest_geographic_unit.json
new file mode 100644
index 0000000..2698de8
--- /dev/null
+++ b/rde_schema/property_bank/smallest_geographic_unit.json
@@ -0,0 +1,41 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/smallest_geographic_unit",
+ "title": "Smallest Geographic Unit",
+ "description": "The smallest geographic unit (e.g., state or census tract) used in the dataset.",
+ "controlledVocab": "smallestGeographicUnits",
+ "type": "object",
+ "properties": {
+ "label": {
+ "title": "Smallest Geographic Unit Term",
+ "type": "string"
+ },
+ "code": {
+ "title": "Smallest Geographic Unit Code",
+ "type": "string"
+ },
+ "uri": {
+ "title": "Smallest Geographic Unit URI",
+ "type": "string",
+ "format": "uri"
+ }
+ },
+ "usageNotes": "Geographic Unit is intended to represent specific, known geography -- e.g., county, census district, FIPS code, electoral district, and any other conveyor of specific geography that is represented by a variable. If the data do not include a geographic variable by which the data can be analyzed, this element is not indicated. If all the cases are from a single state, but the cases are not subdivided geographically within that state, then 'state' is not indicated. This element is only meant to convey specific, known, geography. If there is a variable indicating which testing site a survey was taken at, but the locations of the testing sites were masked by the PI, this element is likely not indicated.",
+ "examples": [
+ {
+ "label": "state",
+ "code": "123",
+ "uri": "https://example.com/smallest_geographic_unit/123"
+ },
+ {
+ "label": "Census tract",
+ "code": "234",
+ "uri": "https://example.com/smallest_geographic_unit/234"
+ },
+ {
+ "label": "precinct",
+ "code": "345",
+ "uri": "https://example.com/smallest_geographic_unit/345"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/software_applications.json b/rde_schema/property_bank/software_applications.json
new file mode 100644
index 0000000..7998fbe
--- /dev/null
+++ b/rde_schema/property_bank/software_applications.json
@@ -0,0 +1,179 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/core/software_applications",
+ "title": "Software Applications",
+ "description": "Software used by the principal investigator(s) to collect or analyze data, required to understand how the data were obtained or to reproduce results.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "title": "Software Name",
+ "description": "The name of the software application.",
+ "type": "string",
+ "examples": [
+ "JHOVE",
+ "ffmpeg",
+ "json-schema-for-humans"
+ ]
+ },
+ "software_version": {
+ "title": "Software Version",
+ "description": "The version of the application.",
+ "type": "string",
+ "examples": [
+ "1",
+ "2.0.4",
+ "Auto-Build 2023-01-15 12:36"
+ ]
+ },
+ "description": {
+ "title": "Software Description",
+ "description": "Short description or overview of the application and its intended purpose",
+ "type": "string",
+ "examples": [
+ "JHOVE, the JSTOR/Harvard Object Validation Environment, is an extensible software framework for performing format identification, validation, and characterization of digital objects.",
+ "ffmpeg is a very fast video and audio converter that can also grab from a live audio/video source. It can also convert between arbitrary sample rates and resize video on the fly with a high quality polyphase filter."
+ ]
+ },
+ "programming_languages": {
+ "title": "Programming Languages",
+ "description": "The programming language(s) used in the development of the application",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "examples": [
+ [
+ "python"
+ ],
+ [
+ "shell",
+ "r"
+ ],
+ [
+ "other"
+ ]
+ ]
+ },
+ "operating_systems": {
+ "title": "Operating Systems",
+ "description": "Computer operating systems supported by the application",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "examples": [
+ [
+ "windows"
+ ],
+ [
+ "windows",
+ "mac",
+ "linux"
+ ],
+ [
+ "other"
+ ]
+ ]
+ },
+ "memory_requirements": {
+ "title": "Memory Requirements",
+ "description": "Minimum memory (e.g., RAM) requirements to operate the application",
+ "type": "string",
+ "examples": [
+ "4 GB",
+ "1GB of RAM (2GB for a 64-bit version)",
+ "4 GB of GPU memory for HD and some 4K media; 6 GB or more for 4K and higher"
+ ]
+ },
+ "processor_requirements": {
+ "title": "Processor Requirements",
+ "description": "Processor architecture required to run the application",
+ "type": "string",
+ "examples": [
+ "Intel i5/ i7/ Ryzen 7",
+ "Minimum 1 GHz; Recommended 2GHz or more",
+ "2.5–2.9 GHz or faster processor"
+ ]
+ },
+ "software_requirements": {
+ "title": "Software Requirements",
+ "description": "Required components for the application, like runtime environments and shared libraries not included in the package but needed to run it.",
+ "type": "string",
+ "examples": [
+ "Java runtime environment",
+ "Requires additional Python libraries: numpy, v1.11.2; scipy, v0.18.1, and pandas, v0.19.0",
+ "Compile with GNU auto tools"
+ ]
+ },
+ "storage_requirements": {
+ "title": "Storage Requirements",
+ "description": "Amount of storage space required by the application",
+ "type": "string",
+ "examples": [
+ "3.5 GB for new installations, 5 GB for upgrades (including temporary files required during installation)",
+ "15 GB of free disk space",
+ "8 GB of available hard-disk space for installation; additional free space required during installation"
+ ]
+ },
+ "device_requirements": {
+ "title": "Device Requirements",
+ "description": "Device required to run the application. Used in cases where a specific make/model is required to run the application",
+ "type": "string",
+ "examples": []
+ },
+ "license": {
+ "title": "License",
+ "description": "The license associated with the application, preferably expressed as a URL.",
+ "type": "string",
+ "examples": [
+ "https://www.apache.org/licenses/LICENSE-2.0",
+ "https://opensource.org/licenses/LGPL-2.0"
+ ]
+ },
+ "download_url": {
+ "title": "Download URL",
+ "description": "A direct link to a downloadable software artifact (e.g., executable, package, archive, or single script file) that retrieves the application itself, without additional navigation or instructions.",
+ "type": "string",
+ "format": "uri",
+ "examples": [
+ "https://github.com/richardlehane/siegfried/archive/refs/heads/main.zip",
+ "https://cdn.nationalarchives.gov.uk/documents/droid-binary-6.5.2-bin-win32-with-jre.zip"
+ ]
+ },
+ "install_url": {
+ "title": "Installation URL",
+ "description": "A link to a repository or project landing page where users can obtain resources and instructions to install the application (as opposed to directly downloading a single file).",
+ "type": "string",
+ "format": "uri",
+ "examples": [
+ "https://github.com/richardlehane/siegfried",
+ "https://www.nationalarchives.gov.uk/information-management/manage-information/preserving-digital-records/droid/"
+ ]
+ }
+ },
+ "required": ["name"]
+ },
+ "examples": [
+ [
+ {
+ "name": "siegfried",
+ "software_version": "1.11.1",
+ "description": "Siegfried is a signature-based file format identification tool, implementing the National Archives UK's PRONOM file format signatures; freedesktop.org's MIME-info file format signatures; the Library of Congress's FDD file format signatures (beta); and Wikidata (beta).",
+ "programming_languages": [
+ "go",
+ "javascript",
+ "other"
+ ],
+ "operating_systems": [
+ "mac",
+ "linux",
+ "windows"
+ ],
+ "license": "https://www.apache.org/licenses/LICENSE-2.0",
+ "download_url": "https://github.com/richardlehane/siegfried/archive/refs/heads/main.zip"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/study_design.json b/rde_schema/property_bank/study_design.json
new file mode 100644
index 0000000..57a5c91
--- /dev/null
+++ b/rde_schema/property_bank/study_design.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/study_design",
+ "title": "Study Design",
+ "description": "The procedures used to contact participants and gather data.",
+ "type": "string",
+ "usageNotes": "The Study Design provides more detailed information than the Summary, including how surveys were prepared and administered, how interviews were conducted, or how the data were obtained and compiled, as well as information about deadlines and follow-ups to respondents.",
+ "examples":
+ [
+ "Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years."
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/study_purpose.json b/rde_schema/property_bank/study_purpose.json
new file mode 100644
index 0000000..fb296b6
--- /dev/null
+++ b/rde_schema/property_bank/study_purpose.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/study_purpose",
+ "title": "Study Purpose",
+ "description": "The study's main goals and associated research questions.",
+ "type": "string",
+ "usageNotes": "The Study Purpose provides more specific information than the Summary element, such as the data collection's objectives, intended achievements, and research questions the principal investigators sought to answer. This element can also include historical or background information about the research project. As with the Summary, the text should be written in third person and avoid any commentary on the data collection's outcomes.",
+ "examples": [
+ "The purpose of this study is to advance understanding of the barriers and enablers associated with colorectal cancer (CRC) screening among Somali men ages 50-74 in Minnesota.",
+ "The purpose of the study's qualitative phase is to explore veterans' experiences by identifying factors that they believe caused or contributed to their contact with the criminal justice system."
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/summary.json b/rde_schema/property_bank/summary.json
new file mode 100644
index 0000000..3caf3e0
--- /dev/null
+++ b/rde_schema/property_bank/summary.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/summary",
+ "title": "Summary",
+ "description": "A description of the data collection that helps users understand its purpose, substance, and key topics.",
+ "type": "string",
+ "usageNotes": { "$ref": "https://schemas.icpsr.umich.edu/notes/summary/usageNotes" },
+ "examples": [
+ "In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.",
+ "The Health and Relationship Project is a study of both spouses in same-sex and different-sex marriages who were legally married and aged 35 to 65 at the time of data collection (2015). There are two parts of this study: a baseline questionnaire and a daily diary questionnaire completed for 10 consecutive days; both components were completed online and spouses were asked to complete the surveys separately. The baseline questionnaire asks participants about a number of topics related to marriage and health, including stress, health status and health behaviors, relationship quality, and how they have approached health problems in the past. The diary questionnaire asks participants a number of questions about the past 24 hours, including daily stress experiences, social interactions, and health behaviors."
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/time_methods.json b/rde_schema/property_bank/time_methods.json
new file mode 100644
index 0000000..55d19fe
--- /dev/null
+++ b/rde_schema/property_bank/time_methods.json
@@ -0,0 +1,61 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/time_methods",
+ "title": "Time Methods",
+ "description": "The methods used to collect data over time, like snapshots at one point (cross-sectional) or repeatedly (longitudinal) to study changes or trends",
+ "usageNotes": "This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV TimeMethod https://rdf-vocabulary.ddialliance.org/ddi-cv/TimeMethod/1.2.3/TimeMethod.html.",
+ "controlledVocab": "timeMethods",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "label": {
+ "title": "Time Method",
+ "description": "A human-readable form of the term.",
+ "type": "string",
+ "examples": [
+ "Cross-section",
+ "Longitudinal: Cohort/Event-based",
+ "Time series"
+ ]
+ },
+ "code": {
+ "title": "Time Method Code",
+ "description": "A machine-readable/-actionable form of the term.",
+ "type": "string",
+ "examples": [
+ "CrossSection",
+ "Longitudinal.CohortEventBased",
+ "Other"
+ ]
+ },
+ "uri": {
+ "title": "Time Method URI",
+ "description": "The URI for the term.",
+ "type": "string"
+ }
+ },
+ "required": [ "label", "code", "uri" ]
+ },
+ "examples": [
+ [
+ {
+ "label": "Registers/Records/Accounts: Medical/Clinical",
+ "code": "RegistersRecordsAccounts.MedicalClinical",
+ "uri": "https://example.com/time_methods/123"
+ },
+ {
+ "label": "Events/Interactions",
+ "code": "EventsInteractions",
+ "uri": "https://example.com/time_methods/234"
+ }
+ ],
+ [
+ {
+ "label": "Other",
+ "code": "Other",
+ "uri": "https://example.com/time_methods/737"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/time_periods.json b/rde_schema/property_bank/time_periods.json
new file mode 100644
index 0000000..1c5eb2e
--- /dev/null
+++ b/rde_schema/property_bank/time_periods.json
@@ -0,0 +1,46 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/time_periods",
+ "title": "Time Periods",
+ "description": "The time period(s) to which the data refer, regardless of when the data were collected.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "start_date": {
+ "title": "Start Date",
+ "description": "The start date for the time period the data refer to, formatted as YYYY, YYYY-MM, or YYYY-MM-DD, with no spaces in date expressions.",
+ "type": "string",
+ "examples": ["2000", "2019-10", "2021-03-01"]
+ },
+ "end_date": {
+ "title": "End Date",
+ "description": "The end date for the time period the data refer to, formatted as YYYY, YYYY-MM, or YYYY-MM-DD, with no spaces in date expressions.",
+ "type": "string",
+ "examples": ["2000", "2019-10", "2021-03-01"]
+ },
+ "time_frame": {
+ "title": "Time Frame",
+ "description": "An optional free-text description of the time period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present.",
+ "type": "string",
+ "usageNotes": "The Time Frame should not simply restate the date(s) in words. For example, if the Time Period starts in 2020-01, the Time Frame should repeat 'January 2020'.",
+ "examples": [ "Fall 2001", "Winter Semester 2019"]
+ }
+ },
+ "required": ["start_date", "end_date"]
+ },
+ "minItems": 1,
+ "examples": [
+ [
+ {
+ "start_date": "2018",
+ "end_date": "2018",
+ "time_frame": "Summer and Fall 2018"
+ },
+ {
+ "start_date": "2020-10",
+ "end_date": "2020-10"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/title.json b/rde_schema/property_bank/title.json
new file mode 100644
index 0000000..6aa5ef9
--- /dev/null
+++ b/rde_schema/property_bank/title.json
@@ -0,0 +1,14 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/title",
+ "title": "Title",
+ "description": "The official title that describes what the data collection is about, its geographic scope, and the time period it covered.",
+ "type": "string",
+ "examples": [
+ "Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017",
+ "Health and Relationships Project, United States, 2014-2015",
+ "Targeted Interventions to Prevent Chronic Low Back Pain in High Risk Patients: A Multi-Site Pragmatic Randomized Controlled Trial (TARGET Trial), 4 U.S. cities, 2016-2019",
+ "Aid Like A Paycheck (ALAP), Texas and California, 2014-2017",
+ "COVID-19 Disruptions Disproportionately Affect Female Academics, Global, 2020"
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/units_of_analysis.json b/rde_schema/property_bank/units_of_analysis.json
new file mode 100644
index 0000000..6de6e09
--- /dev/null
+++ b/rde_schema/property_bank/units_of_analysis.json
@@ -0,0 +1,58 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/units_of_analysis",
+ "title": "Units of Analysis",
+ "description": "The object(s) of analysis for the data collection, such as an organization, individual, or household.",
+ "usageNotes": "This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV AnalysisUnit https://rdf-vocabulary.ddialliance.org/ddi-cv/AnalysisUnit/2.1.3/AnalysisUnit.html.",
+ "controlledVocab": "analysisUnits",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "label": {
+ "description": "A human-readable form of the term.",
+ "type": "string",
+ "examples": [
+ "Organization/Institution",
+ "Individual",
+ "Household"
+ ]
+ },
+ "code": {
+ "description": "A machine-readable/-actionable form of the term.",
+ "type": "string",
+ "examples": [
+ "OrganizationOrInstitution",
+ "Individual",
+ "Household"
+ ]
+ },
+ "uri": {
+ "description": "The URI for the term.",
+ "type": "string"
+ }
+ },
+ "required": ["label", "code", "uri"]
+ },
+ "examples": [
+ [
+ {
+ "label": "Organization/Institution",
+ "code": "OrganizationOrInstitution",
+ "uri": "https://example.com/units_of_analysis/123"
+ },
+ {
+ "label": "Individual",
+ "code": "Individual",
+ "uri": "https://example.com/units_of_analysis/234"
+ }
+ ],
+ [
+ {
+ "label": "Household",
+ "code": "Household",
+ "uri": "https://example.com/units_of_analysis/737"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/universe.json b/rde_schema/property_bank/universe.json
new file mode 100644
index 0000000..a044100
--- /dev/null
+++ b/rde_schema/property_bank/universe.json
@@ -0,0 +1,17 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/universe",
+ "title": "Universe",
+ "description": "The total group of persons or other entities (e.g., households or organizations) that were the object of research and to which analytic results refer.",
+ "type": "string",
+ "usageNotes": "Age, nationality, and residence commonly help to delineate a given universe, but any of a number of factors may be involved, such as sex, race, income, veteran status, criminal convictions, etc. The Universe may consist of elements other than persons, such as housing units, court cases, deaths, countries, etc. It should be possible to tell from the description of the universe whether a given individual or element (hypothetical or real) is a member of the population under study. Typically, the Universe statement is about one sentence or shorter, and reflects the entire possible population a data collection sought to study.",
+ "examples":
+ [
+ "All households in the United States with phones.",
+ "Part 1: Thirty cities in Massachusetts during 1980-1986. Parts 2-4: All residents in Massachusetts during 1986.",
+ "Individuals self-identified as transgender, trans, genderqueer, non-binary, or other identities on the transgender identity spectrum aged 18 and older residing in the fifty U.S. states, the District of Columbia, American Samoa, Guam, Puerto Rico, and U.S. military bases overseas.",
+ "Jihadists from the United States and Canada, along with Incels from Germany, Canada, the United States, and United Kingdom.",
+ "All publicly funded medical examiner and coroner offices.",
+ "Uncertified ballots for the 2000 United States presidential election in Florida."
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/variable_description.json b/rde_schema/property_bank/variable_description.json
new file mode 100644
index 0000000..434e610
--- /dev/null
+++ b/rde_schema/property_bank/variable_description.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/variable_description",
+ "title": "Variable Description",
+ "description": "Significant variables (particularly demographic variables) in the data files.",
+ "type": "string",
+ "usageNotes": "The Variable Description provides more detailed information than the Summary, including a review of variables that are important for users to know about. The codebook, setup files, and variable groups are appropriate sources of information for Variable Description.",
+ "examples": [
+ "The data includes variables about participants' and their parents' moods, interviewer observations, families' activities, families' health history, participants' school records, and parents' substance use. Demographic variables include race, religion, annual household income, and the participants' parents' employment statuses.",
+ "The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, including victim demographic information, substance abuse history, information on whether the victim is open about their LGBTQ identification, the victim's job status, and information about how the victim reacted to the crime, such as whether or not they reported the crime to the police and their level of cooperation with the police and prosecution."
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/version_history.json b/rde_schema/property_bank/version_history.json
new file mode 100644
index 0000000..9f6f79f
--- /dev/null
+++ b/rde_schema/property_bank/version_history.json
@@ -0,0 +1,59 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/version_history",
+ "title": "Version History",
+ "description": "A record of how the data collection has changed over time.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "version_number": {
+ "description": "A version number for a study.",
+ "type": "string",
+ "pattern": "^[vV]\\d+(.\\d+)?(.\\d+)?$",
+ "usageNotes": "Versioning should follow ICPSR conventions",
+ "examples": [
+ "V1",
+ "V2",
+ "V3"
+ ]
+ },
+ "version_date": {
+ "description": "The date on which a given version of a data collection was released.",
+ "type": "string",
+ "format": "date",
+ "examples": ["2020-07-20", "2022-01-31"]
+ },
+ "version_note": {
+ "description": "Provenance information about a given version of the data collection.",
+ "type": "string",
+ "examples": [
+ "File CB3025.ALL.PDF was removed from any previous datasets and flagged as a study-level file, so that it will accompany all downloads.",
+ "The data producer provided additional data files.",
+ "The codebook descriptions of variables TANSUP, EMOSUP, and SOCSUP were corrected."
+ ]
+ }
+ }
+ },
+ "examples": [
+ [
+ {
+ "version_number": "V2",
+ "version_date": "2023-08-12",
+ "version_note": "The data producer provided additional data files."
+ },
+ {
+ "version_number": "V1",
+ "version_date": "2021-03-01",
+ "version_note": "Initial release"
+ }
+ ],
+ [
+ {
+ "version_number": "V1",
+ "version_date": "2024-06-28",
+ "version_note": "Initial release"
+ }
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/property_bank/weight.json b/rde_schema/property_bank/weight.json
new file mode 100644
index 0000000..0590543
--- /dev/null
+++ b/rde_schema/property_bank/weight.json
@@ -0,0 +1,12 @@
+{
+ "$schema": "https://json-schema.org/draft-07/schema#",
+ "$id": "https://archive.icpsr.umich.edu/schema/property_banks/weight",
+ "title": "Weights",
+ "description": "The weight variables and the criteria for using them in data analysis or other information about how the data are weighted if no weight variables are present.",
+ "type": "string",
+ "usageNotes": "Weight includes any information about weighting variables in the data, as well as any other weight information provided by the Principal Investigator. If a weighting formula or coefficient was developed, provide this formula, define its elements, and indicate how the formula is applied to the data. It is acceptable to summarize additional documentation and refer users to those resources for more information.",
+ "examples": [
+ "Both the TransPop and Cisgender datasets have the same variable named WEIGHT as the weighting variable. The combination datasets have a set of three weight variables (WEIGHT_TRANSPOP, WEIGHT_CISGENDER, WEIGHT_CISGENDER_TRANSPOP)",
+ "A weight variable with two implied decimal places has been included and must be used in any analysis."
+ ]
+}
\ No newline at end of file
diff --git a/rde_schema/rde_markdown_generation.py b/rde_schema/rde_markdown_generation.py
new file mode 100644
index 0000000..5505b21
--- /dev/null
+++ b/rde_schema/rde_markdown_generation.py
@@ -0,0 +1,317 @@
+import json
+import os
+from pathlib import Path
+from datetime import datetime
+
+def create_anchor(title):
+ """Create an anchor link from a title.
+
+ Args:
+ title: The title to convert to an anchor
+
+ Returns:
+ A URL-safe anchor string
+ """
+ # Convert to lowercase, replace spaces with hyphens, remove special chars
+ anchor = title.lower()
+ anchor = anchor.replace(' ', '-')
+ # Keep only alphanumeric characters and hyphens
+ anchor = ''.join(c for c in anchor if c.isalnum() or c == '-')
+ # Remove consecutive hyphens
+ while '--' in anchor:
+ anchor = anchor.replace('--', '-')
+ # Remove leading/trailing hyphens
+ anchor = anchor.strip('-')
+ return anchor
+
+
+def json_schema_to_markdown(schema, property_name=None, required_fields=None):
+ """Convert a JSON Schema object to Markdown documentation.
+
+ Args:
+ schema: The JSON schema object
+ property_name: The name of this property (for checking required status)
+ required_fields: List of required field names from parent schema
+
+ Returns:
+ A tuple of (markdown_string, toc_entry_dict)
+ """
+
+ markdown = []
+ repeatable = "No" # Default
+ is_required = "No" # Default
+
+ # Check if this property is required
+ if property_name and required_fields and property_name in required_fields:
+ is_required = "Yes"
+
+ # Title with anchor using HTML
+ title = schema.get('title', 'Untitled')
+ anchor = create_anchor(title)
+ markdown.append(f'')
+ markdown.append(f"### {title}\n")
+
+ # Description
+ description = schema.get('description', '')
+ if description:
+ markdown.append(f"**Description:** {description}\n")
+
+ # Determine repeatable and type
+ if 'type' in schema:
+ type_mapping = {
+ 'string': 'Text',
+ 'integer': 'Number',
+ 'boolean': 'Boolean',
+ 'object': 'Multi-part element; see subfield definitions for more information.'
+ }
+
+ # Handle arrays specially
+ if schema['type'] == 'array':
+ repeatable = "Yes"
+ # Look for the type in items
+ if 'items' in schema and 'type' in schema['items']:
+ items_type = schema['items']['type']
+ readable_type = type_mapping.get(items_type, items_type)
+ else:
+ readable_type = 'Array'
+ else:
+ readable_type = type_mapping.get(schema['type'], schema['type'])
+
+ markdown.append(f"**Repeatable**: {repeatable}\n")
+ markdown.append(f"**Accepted Values**: {readable_type}\n")
+
+ # Create TOC entry for this schema
+ toc_entry = {
+ 'title': title,
+ 'anchor': anchor,
+ 'required': is_required,
+ 'repeatable': repeatable,
+ 'accepted_values': readable_type,
+ 'description': description
+ }
+
+ # Check if this is an array of objects with properties (complex nested structure)
+ has_subfields = (schema.get('type') == 'array' and
+ schema.get('items', {}).get('type') == 'object' and
+ 'properties' in schema.get('items', {}))
+
+ if has_subfields:
+ # Generate subfields table
+ markdown.append("#### Subfields:\n")
+ markdown.append("| Property | Required? | Repeatable? | Accepted Values | Description |")
+ markdown.append("| -------- | --------- | ----------- | --------------- | ----------- |")
+
+ items = schema['items']
+ properties = items.get('properties', {})
+ item_required = items.get('required', [])
+
+ for prop_name, prop_schema in properties.items():
+ prop_title = prop_schema.get('title', prop_name)
+ prop_required = "Yes" if prop_name in item_required else "No"
+ prop_repeatable = "No" # Subfields are not repeatable unless they're arrays themselves
+
+ # Get the type
+ if prop_schema.get('type') == 'array':
+ prop_repeatable = "Yes"
+ if 'items' in prop_schema and 'type' in prop_schema['items']:
+ prop_type = type_mapping.get(prop_schema['items']['type'], prop_schema['items']['type'])
+ else:
+ prop_type = 'Array'
+ else:
+ prop_type = type_mapping.get(prop_schema.get('type', ''), prop_schema.get('type', ''))
+
+ prop_description = prop_schema.get('description', '')
+
+ markdown.append(f"| {prop_title} | {prop_required} | {prop_repeatable} | {prop_type} | {prop_description} |")
+
+ markdown.append("") # Empty line after table
+
+ # Now generate detailed sections for each subfield
+ for prop_name, prop_schema in properties.items():
+ prop_title = prop_schema.get('title', prop_name)
+ prop_required = "Yes" if prop_name in item_required else "No"
+ prop_description = prop_schema.get('description', '')
+
+ markdown.append(f"##### {prop_title}\n")
+ markdown.append(f"**Description:** {prop_description}\n")
+ markdown.append(f"**Required**: {prop_required}\n")
+ markdown.append(f"**Repeatable**: No\n")
+
+ # Get accepted values for subfield
+ if prop_schema.get('type') == 'array':
+ if 'items' in prop_schema and 'type' in prop_schema['items']:
+ subfield_type = type_mapping.get(prop_schema['items']['type'], prop_schema['items']['type'])
+ else:
+ subfield_type = 'Array'
+ else:
+ subfield_type = type_mapping.get(prop_schema.get('type', ''), prop_schema.get('type', ''))
+
+ markdown.append(f"**Accepted Values**: {subfield_type}\n")
+
+ # Usage notes for subfield
+ if 'usageNotes' in prop_schema:
+ markdown.append(f"**Usage Notes:** {prop_schema['usageNotes']}\n")
+
+ # Examples for subfield
+ if 'examples' in prop_schema and prop_schema['examples']:
+ markdown.append("**Examples:**\n")
+ for example in prop_schema['examples']:
+ # Format as JSON code block
+ markdown.append("```json")
+ markdown.append(f'"{example}"' if isinstance(example, str) else json.dumps(example, indent=2))
+ markdown.append("```\n")
+
+ # Complete examples section - formatted as readable text
+ if 'examples' in schema and schema['examples']:
+ markdown.append("###### Complete Examples (with Subfields):\n")
+
+ for example_group in schema['examples']:
+ # Handle if examples is a list of objects
+ if isinstance(example_group, list):
+ for example_obj in example_group:
+ markdown.append("```")
+ for key, value in example_obj.items():
+ # Get the title for this property
+ prop_title = properties.get(key, {}).get('title', key)
+ markdown.append(f" {prop_title}: {value}")
+ markdown.append("```\n")
+ # Handle if example is a single object
+ elif isinstance(example_group, dict):
+ markdown.append("```")
+ for key, value in example_group.items():
+ prop_title = properties.get(key, {}).get('title', key)
+ markdown.append(f" {prop_title}: {value}")
+ markdown.append("```\n")
+
+ else:
+ # Simple type (not nested object) - use original format
+ if is_required != "No":
+ markdown.append(f"**Required**: {is_required}\n")
+
+ # Usage Notes
+ if 'usageNotes' in schema:
+ markdown.append(f"**Usage Notes:** {schema['usageNotes']}\n")
+
+ # Examples - wrap in code blocks
+ if 'examples' in schema and schema['examples']:
+ markdown.append("**Examples:**\n")
+ for example in schema['examples']:
+ markdown.append("```")
+ markdown.append(f"{example}")
+ markdown.append("```\n")
+
+ return '\n'.join(markdown), toc_entry
+
+
+def process_json_folder(input_folder, output_file):
+ """Process all JSON files in a folder and output to a single Markdown file.
+
+ Args:
+ input_folder: Path to folder containing JSON schema files
+ output_file: Path to output Markdown file
+ """
+
+ # List of files to skip
+ skip_files = [
+ "common_data_elements.json",
+ "contributors.json",
+ "deposits.json",
+ "extent_of_processing.json",
+ "external_source_id.json",
+ "languages.json",
+ "link_title.json",
+ "link_url.json",
+ "manuscript_number.json",
+ "oversamples.json",
+ "restrictions.json",
+ "study_purpose.json"
+ ]
+
+ # Get all JSON files in the folder
+ json_files = sorted(Path(input_folder).glob('*.json'))
+
+ if not json_files:
+ print(f"No JSON files found in {input_folder}")
+ return
+
+ # Filter out files in the skip list
+ json_files = [f for f in json_files if f.name not in skip_files]
+
+ if not json_files:
+ print(f"No JSON files to process after applying skip list")
+ return
+
+ print(f"Skipping {len(skip_files)} files")
+ print(f"Processing {len(json_files)} files\n")
+
+ all_markdown = []
+ toc_entries = []
+
+ # Add a header to the document
+ all_markdown.append("# DRAFT ICPSR RDE Metadata Schema Documentation\n")
+ current_date = datetime.now().strftime('%B %d, %Y')
+ all_markdown.append(f"Last updated: {current_date}\n")
+ all_markdown.append("This metadata schema was developed as part of the Inter-university Consortium for Political and Social Research (ICPSR) as part of the NSF-funded [Research Data Ecosystem (RDE)](https://www.icpsr.umich.edu/sites/icpsr/find-data/working-together/projects/rde) project. The schema is used to describe ICPSR data collections; these rules and definitions are intended to (a) assist ICPSR staff with metadata entry, and (b) help ICPSR users – including data depositors and researchers accessing data – understand how to use and interpret our metadata.\n")
+
+ # Process each JSON file first to collect TOC entries
+ schema_markdowns = []
+ for json_file in json_files:
+ print(f"Processing: {json_file.name}")
+
+ try:
+ with open(json_file, 'r', encoding='utf-8') as f:
+ schema = json.load(f)
+
+ # Convert schema to markdown and get TOC entry
+ markdown_output, toc_entry = json_schema_to_markdown(schema)
+ schema_markdowns.append(markdown_output)
+ toc_entries.append(toc_entry)
+
+ except json.JSONDecodeError as e:
+ print(f"Error parsing {json_file.name}: {e}")
+ continue
+ except Exception as e:
+ print(f"Error processing {json_file.name}: {e}")
+ continue
+
+ # Generate Table of Contents
+ all_markdown.append("## Metadata Elements: Overview\n")
+ all_markdown.append("| Property | Required? | Repeatable? | Accepted Values | Description |")
+ all_markdown.append("| -------- | --------- | ----------- | --------------- | ----------- |")
+
+ for entry in toc_entries:
+ title_link = f"[{entry['title']}](#{entry['anchor']})"
+ # Abbreviate the accepted values for TOC display
+ accepted_values_display = entry['accepted_values']
+ if accepted_values_display == "Multi-part element; see subfield definitions for more information.":
+ accepted_values_display = "Multi-part element; see subfield"
+
+ all_markdown.append(
+ f"| {title_link} | {entry['required']} | {entry['repeatable']} | "
+ f"{accepted_values_display} | {entry['description']} |"
+ )
+
+ all_markdown.append("\n---\n")
+
+ all_markdown.append("## Metadata Elements: Detailed Information\n")
+
+ # Add all schema documentation
+ for schema_md in schema_markdowns:
+ all_markdown.append(schema_md)
+ all_markdown.append("\n---\n")
+
+ # Write all markdown to a single file
+ with open(output_file, 'w', encoding='utf-8') as f:
+ f.write('\n'.join(all_markdown))
+
+ print(f"\nSuccessfully generated: {output_file}")
+ print(f"Processed {len(json_files)} JSON files")
+
+# Example usage
+if __name__ == "__main__":
+ # Specify your input folder and output file
+ input_folder = "C:/icpsr_github/metadata/rde_schema/property_bank" # Change this to your folder path
+ output_file = "C:/icpsr_github/metadata/rde_schema/icpsr_rde_schema.md"
+
+ # Process all JSON files in the folder
+ process_json_folder(input_folder, output_file)
\ No newline at end of file
From 8a8da0a4a0675d85cb45d7f1b954e811780b422d Mon Sep 17 00:00:00 2001
From: Mike Shallcross
Date: Wed, 4 Feb 2026 17:10:47 -0500
Subject: [PATCH 002/119] new draft of markdown
---
rde_schema/icpsr_rde_schema.md | 772 +++++++++++++++++++-------
rde_schema/property_bank/summary.json | 2 +-
rde_schema/rde_markdown_generation.py | 608 ++++++++++----------
3 files changed, 892 insertions(+), 490 deletions(-)
diff --git a/rde_schema/icpsr_rde_schema.md b/rde_schema/icpsr_rde_schema.md
index 58cef00..6adaf8e 100644
--- a/rde_schema/icpsr_rde_schema.md
+++ b/rde_schema/icpsr_rde_schema.md
@@ -1,8 +1,6 @@
# DRAFT ICPSR RDE Metadata Schema Documentation
-Last updated: February 03, 2026
-
-This metadata schema was developed as part of the Inter-university Consortium for Political and Social Research (ICPSR) as part of the NSF-funded [Research Data Ecosystem (RDE)](https://www.icpsr.umich.edu/sites/icpsr/find-data/working-together/projects/rde) project. The schema is used to describe ICPSR data collections; these rules and definitions are intended to (a) assist ICPSR staff with metadata entry, and (b) help ICPSR users – including data depositors and researchers accessing data – understand how to use and interpret our metadata.
+Last updated: February 04, 2026
## Metadata Elements: Overview
@@ -10,44 +8,43 @@ This metadata schema was developed as part of the Inter-university Consortium fo
| -------- | --------- | ----------- | --------------- | ----------- |
| [Alternate Titles](#alternate-titles) | No | Yes | Text | The alternate name(s) or acronym(s) commonly used to refer to the data collection. |
| [Citation](#citation) | No | No | Text | The official way to reference the data collection in writing. |
-| [Collection Dates](#collection-dates) | No | Yes | Multi-part element; see subfield | The date(s) when the data were physically collected. |
-| [Collection Modes](#collection-modes) | No | Yes | Multi-part element; see subfield | The method(s) or procedure(s) used to collect the data. |
+| [Collection Dates](#collection-dates) | No | Yes | Multi-part element; see subfield definitions for more information. | The date(s) when the data were physically collected. |
+| [Collection Modes](#collection-modes) | No | Yes | Multi-part element; see subfield definitions for more information. | The method(s) or procedure(s) used to collect the data. |
| [Data Management Plan](#data-management-plan) | No | No | Text | A link to the data management plan (preferably a persistent identifier such as a DOI). |
-| [Data Source Types](#data-source-types) | No | Yes | Multi-part element; see subfield | The source(s) of the data as collected by the Principal Investigators. |
-| [Distributors](#distributors) | No | Yes | Multi-part element; see subfield | The organization(s) responsible for distributing the data collection. |
+| [Data Source Types](#data-source-types) | No | Yes | Multi-part element; see subfield definitions for more information. | The source(s) of the data as collected by the Principal Investigators. |
+| [Distributors](#distributors) | No | Yes | Multi-part element; see subfield definitions for more information. | The organization(s) responsible for distributing the data collection. |
| [External Data Sources](#external-data-sources) | No | Yes | Text | The source of the data, when that source is external to the data collection and can be independently cited. |
-| [Funding Sources](#funding-sources) | No | Yes | Multi-part element; see subfield | The sources of funding that supported the data collection. |
-| [General Data Formats](#general-data-formats) | No | Yes | Multi-part element; see subfield | The file format types present in the data collection. |
-| [Geographic Coverage Areas](#geographic-coverage-areas) | No | Yes | Multi-part element; see subfield | The geographic locations where the data refer or are related. |
-| [ICPSR Subject Terms](#icpsr-subject-terms) | No | Yes | Multi-part element; see subfield | A controlled list of social science terms maintained by ICPSR and used to indicate topics related to the data collection. |
-| [Journal of Economic Literature (JEL) Classification Codes](#journal-of-economic-literature-jel-classification-codes) | No | Yes | Multi-part element; see subfield | Classification codes used to categorize economic research. |
-| [License](#license) | No | No | Multi-part element; see subfield | A license governing the data's use. |
-| [Medical Subject Headings (MeSH) Terms](#medical-subject-headings-mesh-terms) | No | Yes | Multi-part element; see subfield | Biomedical and health-related terms from the National Library of Medicine that describe the data collection's topics. |
+| [Funding Sources](#funding-sources) | No | Yes | Multi-part element; see subfield definitions for more information. | The sources of funding that supported the data collection. |
+| [General Data Formats](#general-data-formats) | No | Yes | Multi-part element; see subfield definitions for more information. | The file format types present in the data collection. |
+| [Geographic Coverage Areas](#geographic-coverage-areas) | No | Yes | Multi-part element; see subfield definitions for more information. | The geographic locations where the data refer or are related. |
+| [ICPSR Subject Terms](#icpsr-subject-terms) | No | Yes | Multi-part element; see subfield definitions for more information. | A controlled list of social science terms maintained by ICPSR and used to indicate topics related to the data collection. |
+| [Journal of Economic Literature (JEL) Classification Codes](#journal-of-economic-literature-jel-classification-codes) | No | Yes | Multi-part element; see subfield definitions for more information. | Classification codes used to categorize economic research. |
+| [License](#license) | No | No | Multi-part element; see subfield definitions for more information. | A license governing the data's use. |
+| [Medical Subject Headings (MeSH) Terms](#medical-subject-headings-mesh-terms) | No | Yes | Multi-part element; see subfield definitions for more information. | Biomedical and health-related terms from the National Library of Medicine that describe the data collection's topics. |
| [Nationally Representative Sample](#nationally-representative-sample) | No | No | Text | Indicates whether the data collection uses a sampling design intended to represent the demographics, behaviors, and/or characteristics of the entire nation. This typically involves probability-based methods that allow generalization. It does not include convenience samples that appear similar to the nation by chance. |
| [Notes](#notes) | No | Yes | Text | Important details about the data collection (like unique authoring, discrepancies, or processing information) that can't be recorded in other metadata elements. |
-| [Organization](#organization) | No | No | Multi-part element; see subfield | An organization associated with an ICPSR data collection or service. |
-| [Person](#person) | No | No | Multi-part element; see subfield | A person associated with an ICPSR data collection or service. |
+| [Organization](#organization) | No | No | Multi-part element; see subfield definitions for more information. | An organization associated with an ICPSR data collection or service. |
+| [Person](#person) | No | No | Multi-part element; see subfield definitions for more information. | A person associated with an ICPSR data collection or service. |
| [Preregistration](#preregistration) | No | No | Text | A link to a research plan for the data collection (preferably a persistent identifier such as a DOI). |
-| [Principal Investigators](#principal-investigators) | No | Yes | Multi-part element; see subfield | The key people or organizations responsible for the data collection, listed by importance. Each data collection requires at least one PI, either a person or an organization. |
+| [Principal Investigators](#principal-investigators) | No | Yes | Multi-part element; see subfield definitions for more information. | The key people or organizations responsible for the data collection, listed by importance. Each data collection requires at least one PI, either a person or an organization. |
| [Response Rates](#response-rates) | No | No | Text | The percentage of respondents in the sample who participated in the data collection. |
| [Sampling Note](#sampling-note) | No | No | Text | Supplemental information about the sampling process that does not fit neatly into the Sampling Procedure field. |
| [Sampling Procedures](#sampling-procedures) | No | Yes | Text | The type(s) of sample and sample design used to select survey respondents to represent the population. |
| [Scales](#scales) | No | No | Text | Any commonly known scales used to collect data for the data collection (e.g., MMPI, CPI, the Census Occupational Codes, etc.). |
-| [Smallest Geographic Unit](#smallest-geographic-unit) | No | No | Multi-part element; see subfield | The smallest geographic unit (e.g., state or census tract) used in the dataset. |
-| [Software Applications](#software-applications) | No | Yes | Multi-part element; see subfield | Software used by the principal investigator(s) to collect or analyze data, required to understand how the data were obtained or to reproduce results. |
+| [Smallest Geographic Unit](#smallest-geographic-unit) | No | No | Multi-part element; see subfield definitions for more information. | The smallest geographic unit (e.g., state or census tract) used in the dataset. |
+| [Software Applications](#software-applications) | No | Yes | Multi-part element; see subfield definitions for more information. | Software used by the principal investigator(s) to collect or analyze data, required to understand how the data were obtained or to reproduce results. |
| [Study Design](#study-design) | No | No | Text | The procedures used to contact participants and gather data. |
| [Summary](#summary) | No | No | Text | A description of the data collection that helps users understand its purpose, substance, and key topics. |
-| [Time Methods](#time-methods) | No | Yes | Multi-part element; see subfield | The methods used to collect data over time, like snapshots at one point (cross-sectional) or repeatedly (longitudinal) to study changes or trends |
-| [Time Periods](#time-periods) | No | Yes | Multi-part element; see subfield | The time period(s) to which the data refer, regardless of when the data were collected. |
+| [Time Methods](#time-methods) | No | Yes | Multi-part element; see subfield definitions for more information. | The methods used to collect data over time, like snapshots at one point (cross-sectional) or repeatedly (longitudinal) to study changes or trends |
+| [Time Periods](#time-periods) | No | Yes | Multi-part element; see subfield definitions for more information. | The time period(s) to which the data refer, regardless of when the data were collected. |
| [Title](#title) | No | No | Text | The official title that describes what the data collection is about, its geographic scope, and the time period it covered. |
-| [Units of Analysis](#units-of-analysis) | No | Yes | Multi-part element; see subfield | The object(s) of analysis for the data collection, such as an organization, individual, or household. |
+| [Units of Analysis](#units-of-analysis) | No | Yes | Multi-part element; see subfield definitions for more information. | The object(s) of analysis for the data collection, such as an organization, individual, or household. |
| [Universe](#universe) | No | No | Text | The total group of persons or other entities (e.g., households or organizations) that were the object of research and to which analytic results refer. |
| [Variable Description](#variable-description) | No | No | Text | Significant variables (particularly demographic variables) in the data files. |
-| [Version History](#version-history) | No | Yes | Multi-part element; see subfield | A record of how the data collection has changed over time. |
+| [Version History](#version-history) | No | Yes | Multi-part element; see subfield definitions for more information. | A record of how the data collection has changed over time. |
| [Weights](#weights) | No | No | Text | The weight variables and the criteria for using them in data analysis or other information about how the data are weighted if no weight variables are present. |
---
-
## Metadata Elements: Detailed Information
@@ -59,22 +56,40 @@ This metadata schema was developed as part of the Inter-university Consortium fo
**Accepted Values**: Text
-**Examples:**
+###### Examples:
```
-['Add Health Parent Study']
+ Add Health Parent Study
```
```
-['FACES 2009']
+ FACES 2009
```
```
-['Survey of Consumers']
+ Survey of Consumers
```
```
-['Eurobarometer 85.2']
+ Eurobarometer 85.2
+```
+
+###### Examples:
+
+```
+ Add Health Parent Study
+```
+
+```
+ FACES 2009
+```
+
+```
+ Survey of Consumers
+```
+
+```
+ Eurobarometer 85.2
```
@@ -89,16 +104,26 @@ This metadata schema was developed as part of the Inter-university Consortium fo
**Accepted Values**: Text
+###### Examples:
+
+```
+ University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1
+```
+
+```
+ United States Department of Justice. Office of Justice Programs. Office of Juvenile Justice and Delinquency Prevention. Juvenile Residential Facility Census, 2020 [United States]. Inter-university Consortium for Political and Social Research [distributor], 2024-07-15. https://doi.org/10.3886/ICPSR38914.v1
+```
+
**Usage Notes:** The Citation is dynamically assembled from other entry fields in this format: PI (list). Title. Distributor (list), Issued Date. DOI. Note: ICPSR 'union catalog' records (i.e., external resource to which ICPSR links as a courtesy) do not have citations.
-**Examples:**
+###### Examples:
```
-University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1
+ University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1
```
```
-United States Department of Justice. Office of Justice Programs. Office of Juvenile Justice and Delinquency Prevention. Juvenile Residential Facility Census, 2020 [United States]. Inter-university Consortium for Political and Social Research [distributor], 2024-07-15. https://doi.org/10.3886/ICPSR38914.v1
+ United States Department of Justice. Office of Justice Programs. Office of Juvenile Justice and Delinquency Prevention. Juvenile Residential Facility Census, 2020 [United States]. Inter-university Consortium for Political and Social Research [distributor], 2024-07-15. https://doi.org/10.3886/ICPSR38914.v1
```
@@ -194,14 +219,14 @@ United States Department of Justice. Office of Justice Programs. Office of Juven
###### Complete Examples (with Subfields):
```
- Start Date: 2018
- End Date: 2018
- Time Frame: Summer and Fall 2018
+ start_date: 2018
+ end_date: 2018
+ time_frame: Summer and Fall 2018
```
```
- Start Date: 2020-10
- End Date: 2020-10
+ start_date: 2020-10
+ end_date: 2020-10
```
@@ -285,21 +310,21 @@ United States Department of Justice. Office of Justice Programs. Office of Juven
###### Complete Examples (with Subfields):
```
- Collection Mode: Face-to-face interview: Computer-assisted (CAPI/CAMI)
- Collection Mode Code: Interview.FaceToFace.CAPIorCAMI
- Collection Mode URI: https://example.com/collection_modes/234
+ label: Face-to-face interview: Computer-assisted (CAPI/CAMI)
+ code: Interview.FaceToFace.CAPIorCAMI
+ uri: https://example.com/collection_modes/234
```
```
- Collection Mode: Measurements and tests
- Collection Mode Code: MeasurementsAndTests
- Collection Mode URI: https://example.com/collection_modes/972
+ label: Measurements and tests
+ code: MeasurementsAndTests
+ uri: https://example.com/collection_modes/972
```
```
- Collection Mode: Computer-based observation
- Collection Mode Code: Observation.ComputerBased
- Collection Mode URI: https://example.com/collection_modes/113
+ label: Computer-based observation
+ code: Observation.ComputerBased
+ uri: https://example.com/collection_modes/113
```
@@ -314,10 +339,16 @@ United States Department of Justice. Office of Justice Programs. Office of Juven
**Accepted Values**: Text
-**Examples:**
+###### Examples:
```
-https://doi.org/10.1000/182
+ https://doi.org/10.1000/182
+```
+
+###### Examples:
+
+```
+ https://doi.org/10.1000/182
```
@@ -401,21 +432,21 @@ https://doi.org/10.1000/182
###### Complete Examples (with Subfields):
```
- Data Source Type: Registers/Records/Accounts: Medical/Clinical
- Data Source Type Code: RegistersRecordsAccounts.MedicalClinical
- Data Source Type URI: https://example.com/data_source_type/123
+ label: Registers/Records/Accounts: Medical/Clinical
+ code: RegistersRecordsAccounts.MedicalClinical
+ uri: https://example.com/data_source_type/123
```
```
- Data Source Type: Events/Interactions
- Data Source Type Code: EventsInteractions
- Data Source Type URI: https://example.com/data_source_type/234
+ label: Events/Interactions
+ code: EventsInteractions
+ uri: https://example.com/data_source_type/234
```
```
- Data Source Type: Other
- Data Source Type Code: Other
- Data Source Type URI: https://example.com/data_source_type/737
+ label: Other
+ code: Other
+ uri: https://example.com/data_source_type/737
```
@@ -434,18 +465,30 @@ https://doi.org/10.1000/182
| Property | Required? | Repeatable? | Accepted Values | Description |
| -------- | --------- | ----------- | --------------- | ----------- |
-| organization | Yes | No | | |
+| Organization | Yes | No | Multi-part element; see subfield definitions for more information. | An organization associated with an ICPSR data collection or service. |
| Order | Yes | No | Number | The order of importance for the distributors of the data collection. |
-##### organization
+##### Organization
-**Description:**
+**Description:** An organization associated with an ICPSR data collection or service.
**Required**: Yes
**Repeatable**: No
-**Accepted Values**:
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+**Examples:**
+
+```json
+{
+ "name": "Urban Institute",
+ "name_code": "1234",
+ "name_uri": "https://icpsr.example.com/organizations/1234",
+ "ror": "https://ror.org/017pz3h73",
+ "email": "info@urban.institute"
+}
+```
##### Order
@@ -481,17 +524,17 @@ https://doi.org/10.1000/182
```
organization: {'name': 'Inter-university Consortium for Political and Social Research', 'name_code': '1234', 'name_uri': 'https://icpsr.example.com/organizations/1234', 'ror': 'https://ror.org/017pz3h73'}
- Order: 0
+ order: 0
```
```
organization: {'name': 'GESIS', 'name_code': '2345', 'name_uri': 'https://icpsr.example.com/organizations/2345', 'ror': 'https://ror.org/018afyw53'}
- Order: 1
+ order: 1
```
```
organization: {'name': 'Roper Center for Public Opinion Research', 'name_code': '1234', 'name_uri': 'https://icpsr.example.com/organizations/1234'}
- Order: 0
+ order: 0
```
@@ -506,20 +549,42 @@ https://doi.org/10.1000/182
**Accepted Values**: Text
+###### Examples:
+
+```
+ 'Voting Scores.' Congressional Quarterly Almanac 33 (1977), 487-498
+```
+
+```
+ United States Bureau of the Census Economic Surveys, 1998-2000
+```
+
+```
+ United States Congressional Record, 1989
+```
+
+```
+ Annual Company Organization Survey, 2003
+```
+
**Usage Notes:** External data sources include books, journal articles, administrative records, agency-sponsored surveys, and machine-readable files. Each source includes at minimum the title, author, publication year, and journal (if applicable). Any citation format is accepted.
-**Examples:**
+###### Examples:
+
+```
+ 'Voting Scores.' Congressional Quarterly Almanac 33 (1977), 487-498
+```
```
-["'Voting Scores.' Congressional Quarterly Almanac 33 (1977), 487-498"]
+ United States Bureau of the Census Economic Surveys, 1998-2000
```
```
-['United States Bureau of the Census Economic Surveys, 1998-2000', 'United States Congressional Record, 1989']
+ United States Congressional Record, 1989
```
```
-['Annual Company Organization Survey, 2003']
+ Annual Company Organization Survey, 2003
```
@@ -538,19 +603,31 @@ https://doi.org/10.1000/182
| Property | Required? | Repeatable? | Accepted Values | Description |
| -------- | --------- | ----------- | --------------- | ----------- |
-| organization | Yes | No | | |
+| Organization | Yes | No | Multi-part element; see subfield definitions for more information. | An organization associated with an ICPSR data collection or service. |
| Funding Awards | No | Yes | Multi-part element; see subfield definitions for more information. | Financial support for the data collection. |
| Order | Yes | No | Number | Internal ICPSR field used to determine the order of importance for the funders associated with the data collection. |
-##### organization
+##### Organization
-**Description:**
+**Description:** An organization associated with an ICPSR data collection or service.
**Required**: Yes
**Repeatable**: No
-**Accepted Values**:
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+**Examples:**
+
+```json
+{
+ "name": "Urban Institute",
+ "name_code": "1234",
+ "name_uri": "https://icpsr.example.com/organizations/1234",
+ "ror": "https://ror.org/017pz3h73",
+ "email": "info@urban.institute"
+}
+```
##### Funding Awards
@@ -594,19 +671,19 @@ https://doi.org/10.1000/182
```
organization: {'name': 'Robert Wood Johnson Foundation', 'name_code': '5643', 'name_uri': 'https://icpsr.example.com/organizations/5643', 'ror': 'https://ror.org/02ymmdj85'}
- Funding Awards: [{'grant_number': 'MDR-8550085'}, {'grant_number': 'MDR-8550204'}]
- Order: 0
+ grants: [{'grant_number': 'MDR-8550085'}, {'grant_number': 'MDR-8550204'}]
+ order: 0
```
```
organization: {'name': 'United States Department of Justice. Office of Justice Programs. Bureau of Justice Statistics', 'name_code': '2342', 'name_uri': 'https://icpsr.example.com/organizations/2342', 'ror': 'https://ror.org/0006s4z66'}
- Funding Awards: [{'grant_number': 'SES-1835721', 'grant_uri': 'https://doi.org/10.35802/000000'}]
- Order: 1
+ grants: [{'grant_number': 'SES-1835721', 'grant_uri': 'https://doi.org/10.35802/000000'}]
+ order: 1
```
```
organization: {'name': 'Acme Foundation'}
- Order: 0
+ order: 0
```
@@ -690,21 +767,21 @@ https://doi.org/10.1000/182
###### Complete Examples (with Subfields):
```
- General Data Format: Text
- General Data Format Code: Text
- General Data Format URI: https://example.com/general_data_format/972
+ label: Text
+ code: Text
+ uri: https://example.com/general_data_format/972
```
```
- General Data Format: Still image
- General Data Format Code: StillImage
- General Data Format URI: https://example.com/general_data_format/234
+ label: Still image
+ code: StillImage
+ uri: https://example.com/general_data_format/234
```
```
- General Data Format: Numeric
- General Data Format Code: Numeric
- General Data Format URI: https://example.com/general_data_format/563
+ label: Numeric
+ code: Numeric
+ uri: https://example.com/general_data_format/563
```
@@ -848,21 +925,21 @@ https://doi.org/10.1000/182
###### Complete Examples (with Subfields):
```
- City: Cleveland
- State: Ohio
- Country: United States
- Geographic Coverage Area URI: https://www.geonames.org/5150529
+ city: Cleveland
+ state: Ohio
+ country: United States
+ uri: https://www.geonames.org/5150529
```
```
- City: Pittsburgh
- State: Pennsylvania
- Country: United States
- Geographic Coverage Area URI: https://www.geonames.org/5206379
+ city: Pittsburgh
+ state: Pennsylvania
+ country: United States
+ uri: https://www.geonames.org/5206379
```
```
- Country: Germany
+ country: Germany
```
@@ -956,21 +1033,21 @@ https://doi.org/10.1000/182
###### Complete Examples (with Subfields):
```
- ICPSR Subject Term: biographical data
- ICPSR Subject Term Code: 20391
- ICPSR Subject Term URI: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/20391
+ label: biographical data
+ code: 20391
+ uri: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/20391
```
```
- ICPSR Subject Term: age
- ICPSR Subject Term Code: 24123
- ICPSR Subject Term URI: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24123
+ label: age
+ code: 24123
+ uri: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24123
```
```
- ICPSR Subject Term: happiness
- ICPSR Subject Term Code: 25624
- ICPSR Subject Term URI: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/25624
+ label: happiness
+ code: 25624
+ uri: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/25624
```
@@ -1060,21 +1137,21 @@ https://doi.org/10.1000/182
###### Complete Examples (with Subfields):
```
- JEL Classification Term: A12 Relation of Economics to Other Disciplines
- JEL Classification Code: a12
- JEL Classification URI: http://example.com/jel/a12
+ label: A12 Relation of Economics to Other Disciplines
+ code: a12
+ uri: http://example.com/jel/a12
```
```
- JEL Classification Term: B00 History of Economic Thought, Methodology, and Heterodox Approaches
- JEL Classification Code: b00
- JEL Classification URI: http://example.com/jel/b00
+ label: B00 History of Economic Thought, Methodology, and Heterodox Approaches
+ code: b00
+ uri: http://example.com/jel/b00
```
```
- JEL Classification Term: N22 Economic History: Financial Markets and Institutions: U.S.; Canada: 1913-
- JEL Classification Code: n22
- JEL Classification URI: http://example.com/jel/n22
+ label: N22 Economic History: Financial Markets and Institutions: U.S.; Canada: 1913-
+ code: n22
+ uri: http://example.com/jel/n22
```
@@ -1089,10 +1166,16 @@ https://doi.org/10.1000/182
**Accepted Values**: Multi-part element; see subfield definitions for more information.
-**Examples:**
+###### Examples:
+
+```
+ {'name': 'Creative Commons Attribution Non Commercial 4.0 International', 'code': 'CC-BY-NC-4.0', 'uri': 'https://creativecommons.org/licenses/by-nc/4.0/'}
+```
+
+###### Examples:
```
-{'name': 'Creative Commons Attribution Non Commercial 4.0 International', 'code': 'CC-BY-NC-4.0', 'uri': 'https://creativecommons.org/licenses/by-nc/4.0/'}
+ {'name': 'Creative Commons Attribution Non Commercial 4.0 International', 'code': 'CC-BY-NC-4.0', 'uri': 'https://creativecommons.org/licenses/by-nc/4.0/'}
```
@@ -1180,15 +1263,15 @@ https://doi.org/10.1000/182
###### Complete Examples (with Subfields):
```
- MeSH Subject Term: anxiety
- MeSH Subject Term Code: D001007
- MeSH Subject Term URI: http://id.nlm.nih.gov/mesh/D001007
+ label: anxiety
+ code: D001007
+ uri: http://id.nlm.nih.gov/mesh/D001007
```
```
- MeSH Subject Term: brain waves
- MeSH Subject Term Code: D058256
- MeSH Subject Term URI: http://id.nlm.nih.gov/mesh/D058256
+ label: brain waves
+ code: D058256
+ uri: http://id.nlm.nih.gov/mesh/D058256
```
@@ -1203,14 +1286,24 @@ https://doi.org/10.1000/182
**Accepted Values**: Text
-**Examples:**
+###### Examples:
+
+```
+ Yes
+```
+
+```
+ No
+```
+
+###### Examples:
```
-Yes
+ Yes
```
```
-No
+ No
```
@@ -1225,14 +1318,32 @@ No
**Accepted Values**: Text
-**Examples:**
+###### Examples:
+
+```
+ Information on the Index of Consumer Sentiment, the Index of Current Economic Conditions, and the Index of Consumer Expectations and how they were created can be found in the P.I. Codebook
+```
+
+```
+ Dataset 1 should be attributed to Jane Doe while datasets 2-6 should be attributed to John Doe
+```
+
+```
+ Additional information on the Survey of Consumers can be found by visiting the Survey of Consumers Website
+```
+
+###### Examples:
+
+```
+ Information on the Index of Consumer Sentiment, the Index of Current Economic Conditions, and the Index of Consumer Expectations and how they were created can be found in the P.I. Codebook
+```
```
-['Information on the Index of Consumer Sentiment, the Index of Current Economic Conditions, and the Index of Consumer Expectations and how they were created can be found in the P.I. Codebook', 'Dataset 1 should be attributed to Jane Doe while datasets 2-6 should be attributed to John Doe']
+ Dataset 1 should be attributed to Jane Doe while datasets 2-6 should be attributed to John Doe
```
```
-['Additional information on the Survey of Consumers can be found by visiting the Survey of Consumers Website']
+ Additional information on the Survey of Consumers can be found by visiting the Survey of Consumers Website
```
@@ -1247,10 +1358,16 @@ No
**Accepted Values**: Multi-part element; see subfield definitions for more information.
-**Examples:**
+###### Examples:
+
+```
+ {'name': 'Urban Institute', 'name_code': '1234', 'name_uri': 'https://icpsr.example.com/organizations/1234', 'ror': 'https://ror.org/017pz3h73', 'email': 'info@urban.institute'}
+```
+
+###### Examples:
```
-{'name': 'Urban Institute', 'name_code': '1234', 'name_uri': 'https://icpsr.example.com/organizations/1234', 'ror': 'https://ror.org/017pz3h73', 'email': 'info@urban.institute'}
+ {'name': 'Urban Institute', 'name_code': '1234', 'name_uri': 'https://icpsr.example.com/organizations/1234', 'ror': 'https://ror.org/017pz3h73', 'email': 'info@urban.institute'}
```
@@ -1265,14 +1382,24 @@ No
**Accepted Values**: Multi-part element; see subfield definitions for more information.
-**Examples:**
+###### Examples:
+
+```
+ {'name': {'given': 'Jane Q.', 'family': 'Doe II'}, 'orcid': 'https://orcid.org/0000-0001-6666-5717', 'researcher_passport_profile_id': '1234', 'affiliations': [{'name': 'Urban Institute', 'name_code': '2342', 'name_uri': 'https://icpsr.example.com/organizations/2342', 'ror': 'https://ror.org/017pz3h73', 'icpsr_org_id': 'xyz123'}, {'name': 'Example University'}], 'email': 'jane.doe@example.com'}
+```
+
+```
+ {'name': {'given': 'Joe'}}
+```
+
+###### Examples:
```
-{'name': {'given': 'Jane Q.', 'family': 'Doe II'}, 'orcid': 'https://orcid.org/0000-0001-6666-5717', 'researcher_passport_profile_id': '1234', 'affiliations': [{'name': 'Urban Institute', 'name_code': '2342', 'name_uri': 'https://icpsr.example.com/organizations/2342', 'ror': 'https://ror.org/017pz3h73', 'icpsr_org_id': 'xyz123'}, {'name': 'Example University'}], 'email': 'jane.doe@example.com'}
+ {'name': {'given': 'Jane Q.', 'family': 'Doe II'}, 'orcid': 'https://orcid.org/0000-0001-6666-5717', 'researcher_passport_profile_id': '1234', 'affiliations': [{'name': 'Urban Institute', 'name_code': '2342', 'name_uri': 'https://icpsr.example.com/organizations/2342', 'ror': 'https://ror.org/017pz3h73', 'icpsr_org_id': 'xyz123'}, {'name': 'Example University'}], 'email': 'jane.doe@example.com'}
```
```
-{'name': {'given': 'Joe'}}
+ {'name': {'given': 'Joe'}}
```
@@ -1287,10 +1414,16 @@ No
**Accepted Values**: Text
-**Examples:**
+###### Examples:
+
+```
+ https://doi.org/10.1000/182
+```
+
+###### Examples:
```
-https://doi.org/10.1000/182
+ https://doi.org/10.1000/182
```
@@ -1309,29 +1442,75 @@ https://doi.org/10.1000/182
| Property | Required? | Repeatable? | Accepted Values | Description |
| -------- | --------- | ----------- | --------------- | ----------- |
-| person | No | No | | |
-| organization | No | No | | |
+| Person | No | No | Multi-part element; see subfield definitions for more information. | A person associated with an ICPSR data collection or service. |
+| Organization | No | No | Multi-part element; see subfield definitions for more information. | An organization associated with an ICPSR data collection or service. |
| Order | No | No | Number | The order or rank of importance for the PIs associated with the data collection, typically provided to ICPSR by the lead PI. |
-##### person
+##### Person
-**Description:**
+**Description:** A person associated with an ICPSR data collection or service.
**Required**: No
**Repeatable**: No
-**Accepted Values**:
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+**Examples:**
+
+```json
+{
+ "name": {
+ "given": "Jane Q.",
+ "family": "Doe II"
+ },
+ "orcid": "https://orcid.org/0000-0001-6666-5717",
+ "researcher_passport_profile_id": "1234",
+ "affiliations": [
+ {
+ "name": "Urban Institute",
+ "name_code": "2342",
+ "name_uri": "https://icpsr.example.com/organizations/2342",
+ "ror": "https://ror.org/017pz3h73",
+ "icpsr_org_id": "xyz123"
+ },
+ {
+ "name": "Example University"
+ }
+ ],
+ "email": "jane.doe@example.com"
+}
+```
+
+```json
+{
+ "name": {
+ "given": "Joe"
+ }
+}
+```
-##### organization
+##### Organization
-**Description:**
+**Description:** An organization associated with an ICPSR data collection or service.
**Required**: No
**Repeatable**: No
-**Accepted Values**:
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+**Examples:**
+
+```json
+{
+ "name": "Urban Institute",
+ "name_code": "1234",
+ "name_uri": "https://icpsr.example.com/organizations/1234",
+ "ror": "https://ror.org/017pz3h73",
+ "email": "info@urban.institute"
+}
+```
##### Order
@@ -1363,6 +1542,14 @@ https://doi.org/10.1000/182
###### Complete Examples (with Subfields):
+```
+ Personal Principal Investigator
| First Name | Last Name | Affiliation |
|---|
| Veronica | Martinez-Ebers | National Institute for Law and Equity |
| Lawrence F. | Travis III | University of Cincinnati |
+```
+
+```
+ Organizational Principal Investigator
| Name |
|---|
| United States Department of Labor. Bureau of Labor Statistics |
| The Washington Post |
+```
+
---
@@ -1375,16 +1562,26 @@ https://doi.org/10.1000/182
**Accepted Values**: Text
+###### Examples:
+
+```
+ The overall response rate for this survey was 20.22%; 72.6% for existing panelists and 10.4% for new panelists, using AAPOR Response Rate 1.
+```
+
+```
+ Not applicable.
+```
+
**Usage Notes:** This field is only applicable if the data were collected with a survey instrument and the response rates are provided.
-**Examples:**
+###### Examples:
```
-The overall response rate for this survey was 20.22%; 72.6% for existing panelists and 10.4% for new panelists, using AAPOR Response Rate 1.
+ The overall response rate for this survey was 20.22%; 72.6% for existing panelists and 10.4% for new panelists, using AAPOR Response Rate 1.
```
```
-Not applicable.
+ Not applicable.
```
@@ -1399,16 +1596,26 @@ Not applicable.
**Accepted Values**: Text
+###### Examples:
+
+```
+ National sample of telephone numbers from cell (RDD) sampling frame.
+```
+
+```
+ The probability sample selected to represent the universe consists of approximately 71,000 households.
+```
+
**Usage Notes:** A detailed discussion of such things as sampling error or other limitations of the sampling methodology is not required here.
-**Examples:**
+###### Examples:
```
-National sample of telephone numbers from cell (RDD) sampling frame.
+ National sample of telephone numbers from cell (RDD) sampling frame.
```
```
-The probability sample selected to represent the universe consists of approximately 71,000 households.
+ The probability sample selected to represent the universe consists of approximately 71,000 households.
```
@@ -1423,16 +1630,46 @@ The probability sample selected to represent the universe consists of approximat
**Accepted Values**: Text
+###### Examples:
+
+```
+ label: Probability: Systematic random
+ code: Probability.SystematicRandom
+ uri: https://example.com/sampling_procedures/123
+```
+
+```
+ label: Other
+ code: Other
+ uri: https://example.com/sampling_procedures/737
+```
+
+```
+ label: Total universe/Complete enumeration
+ code: TotalUniverseCompleteEnumeration
+ uri: https://example.com/sampling_procedures/234
+```
+
**Usage Notes:** The sample is a selection out of the universe of all possible relevant cases (e.g., adults in the United States, housing units in three counties of Michigan, etc.) that could have been included in the data collection. Note that some studies, such as censuses, do not utilize samples but include all members of the universe. This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV SamplingProcedure https://rdf-vocabulary.ddialliance.org/ddi-cv/SamplingProcedure/1.1.4/SamplingProcedure.html.
-**Examples:**
+###### Examples:
+
+```
+ label: Probability: Systematic random
+ code: Probability.SystematicRandom
+ uri: https://example.com/sampling_procedures/123
+```
```
-[{'label': 'Probability: Systematic random', 'code': 'Probability.SystematicRandom', 'uri': 'https://example.com/sampling_procedures/123'}, {'label': 'Other', 'code': 'Other', 'uri': 'https://example.com/sampling_procedures/737'}]
+ label: Other
+ code: Other
+ uri: https://example.com/sampling_procedures/737
```
```
-[{'label': 'Total universe/Complete enumeration', 'code': 'TotalUniverseCompleteEnumeration', 'uri': 'https://example.com/sampling_procedures/234'}]
+ label: Total universe/Complete enumeration
+ code: TotalUniverseCompleteEnumeration
+ uri: https://example.com/sampling_procedures/234
```
@@ -1447,16 +1684,42 @@ The probability sample selected to represent the universe consists of approximat
**Accepted Values**: Text
+###### Examples:
+
+```
+ The baseline data collection included one scale - the CES-D index for maternal depression [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4), 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available under the 'Data and Documentation' tab, for details.
+```
+
+```
+ Squires, J., Bricker, D. D., and Twombly, E. (2009). Ages and stages questionnaires. Baltimore, MD: Paul H. Brookes.
+```
+
+```
+ Briggs-Gowan, M. J., Carter, A. S., Irwin, J. R., Wachtel, K., and Cicchetti, D. V. (2004). The Brief Infant-Toddler Social and Emotional Assessment: screening for social-emotional problems and delays in competence. Journal of pediatric psychology, 29(2), 143-155.
+```
+
+```
+ Yu, L., Buysse, D. J., Germain, A., Moul, D. E., Stover, A., Dodds, N. E., ... and Pilkonis, P. A. (2012). Development of short forms from the PROMIS sleep disturbance and sleep-related impairment item banks. Behavioral sleep medicine, 10(1), 6-24.
+```
+
**Usage Notes:** Include common scales that can be readily identified from the data, documentation, or other related materials. ICPSR curators are not expected to infer or research scales that are not explicitly indicated. The scales can be cited either as a list or described in full sentences. If the questionnaire used has a finite list of responses (e.g., 'Always, Sometimes, Rarely, Never' or Strongly Agree, Agree, Disagree, Strongly Disagree'), it is acceptable for this element to note 'A Likert-type scale was used,' or 'Several Likert-type scales were used.' However, it is not required to note Likart-type scales in situations where only such scales were used, given their ubiquity.
-**Examples:**
+###### Examples:
+
+```
+ The baseline data collection included one scale - the CES-D index for maternal depression [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4), 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available under the 'Data and Documentation' tab, for details.
+```
+
+```
+ Squires, J., Bricker, D. D., and Twombly, E. (2009). Ages and stages questionnaires. Baltimore, MD: Paul H. Brookes.
+```
```
-["The baseline data collection included one scale - the CES-D index for maternal depression [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4), 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available under the 'Data and Documentation' tab, for details."]
+ Briggs-Gowan, M. J., Carter, A. S., Irwin, J. R., Wachtel, K., and Cicchetti, D. V. (2004). The Brief Infant-Toddler Social and Emotional Assessment: screening for social-emotional problems and delays in competence. Journal of pediatric psychology, 29(2), 143-155.
```
```
-['Squires, J., Bricker, D. D., and Twombly, E. (2009). Ages and stages questionnaires. Baltimore, MD: Paul H. Brookes.', 'Briggs-Gowan, M. J., Carter, A. S., Irwin, J. R., Wachtel, K., and Cicchetti, D. V. (2004). The Brief Infant-Toddler Social and Emotional Assessment: screening for social-emotional problems and delays in competence. Journal of pediatric psychology, 29(2), 143-155.', 'Yu, L., Buysse, D. J., Germain, A., Moul, D. E., Stover, A., Dodds, N. E., ... and Pilkonis, P. A. (2012). Development of short forms from the PROMIS sleep disturbance and sleep-related impairment item banks. Behavioral sleep medicine, 10(1), 6-24.']
+ Yu, L., Buysse, D. J., Germain, A., Moul, D. E., Stover, A., Dodds, N. E., ... and Pilkonis, P. A. (2012). Development of short forms from the PROMIS sleep disturbance and sleep-related impairment item banks. Behavioral sleep medicine, 10(1), 6-24.
```
@@ -1471,20 +1734,34 @@ The probability sample selected to represent the universe consists of approximat
**Accepted Values**: Multi-part element; see subfield definitions for more information.
+###### Examples:
+
+```
+ {'label': 'state', 'code': '123', 'uri': 'https://example.com/smallest_geographic_unit/123'}
+```
+
+```
+ {'label': 'Census tract', 'code': '234', 'uri': 'https://example.com/smallest_geographic_unit/234'}
+```
+
+```
+ {'label': 'precinct', 'code': '345', 'uri': 'https://example.com/smallest_geographic_unit/345'}
+```
+
**Usage Notes:** Geographic Unit is intended to represent specific, known geography -- e.g., county, census district, FIPS code, electoral district, and any other conveyor of specific geography that is represented by a variable. If the data do not include a geographic variable by which the data can be analyzed, this element is not indicated. If all the cases are from a single state, but the cases are not subdivided geographically within that state, then 'state' is not indicated. This element is only meant to convey specific, known, geography. If there is a variable indicating which testing site a survey was taken at, but the locations of the testing sites were masked by the PI, this element is likely not indicated.
-**Examples:**
+###### Examples:
```
-{'label': 'state', 'code': '123', 'uri': 'https://example.com/smallest_geographic_unit/123'}
+ {'label': 'state', 'code': '123', 'uri': 'https://example.com/smallest_geographic_unit/123'}
```
```
-{'label': 'Census tract', 'code': '234', 'uri': 'https://example.com/smallest_geographic_unit/234'}
+ {'label': 'Census tract', 'code': '234', 'uri': 'https://example.com/smallest_geographic_unit/234'}
```
```
-{'label': 'precinct', 'code': '345', 'uri': 'https://example.com/smallest_geographic_unit/345'}
+ {'label': 'precinct', 'code': '345', 'uri': 'https://example.com/smallest_geographic_unit/345'}
```
@@ -1817,13 +2094,13 @@ The probability sample selected to represent the universe consists of approximat
###### Complete Examples (with Subfields):
```
- Software Name: siegfried
- Software Version: 1.11.1
- Software Description: Siegfried is a signature-based file format identification tool, implementing the National Archives UK's PRONOM file format signatures; freedesktop.org's MIME-info file format signatures; the Library of Congress's FDD file format signatures (beta); and Wikidata (beta).
- Programming Languages: ['go', 'javascript', 'other']
- Operating Systems: ['mac', 'linux', 'windows']
- License: https://www.apache.org/licenses/LICENSE-2.0
- Download URL: https://github.com/richardlehane/siegfried/archive/refs/heads/main.zip
+ name: siegfried
+ software_version: 1.11.1
+ description: Siegfried is a signature-based file format identification tool, implementing the National Archives UK's PRONOM file format signatures; freedesktop.org's MIME-info file format signatures; the Library of Congress's FDD file format signatures (beta); and Wikidata (beta).
+ programming_languages: ['go', 'javascript', 'other']
+ operating_systems: ['mac', 'linux', 'windows']
+ license: https://www.apache.org/licenses/LICENSE-2.0
+ download_url: https://github.com/richardlehane/siegfried/archive/refs/heads/main.zip
```
@@ -1838,12 +2115,18 @@ The probability sample selected to represent the universe consists of approximat
**Accepted Values**: Text
+###### Examples:
+
+```
+ Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years.
+```
+
**Usage Notes:** The Study Design provides more detailed information than the Summary, including how surveys were prepared and administered, how interviews were conducted, or how the data were obtained and compiled, as well as information about deadlines and follow-ups to respondents.
-**Examples:**
+###### Examples:
```
-Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years.
+ Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years.
```
@@ -1858,16 +2141,29 @@ Data on organizational culture in each of the 12 courts (Part 1) were obtained b
**Accepted Values**: Text
-**Usage Notes:** {'$ref': 'https://schemas.icpsr.umich.edu/notes/summary/usageNotes'}
+###### Examples:
-**Examples:**
+```
+ In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.
+```
+
+```
+ The Health and Relationship Project is a study of both spouses in same-sex and different-sex marriages who were legally married and aged 35 to 65 at the time of data collection (2015). There are two parts of this study: a baseline questionnaire and a daily diary questionnaire completed for 10 consecutive days; both components were completed online and spouses were asked to complete the surveys separately. The baseline questionnaire asks participants about a number of topics related to marriage and health, including stress, health status and health behaviors, relationship quality, and how they have approached health problems in the past. The diary questionnaire asks participants a number of questions about the past 24 hours, including daily stress experiences, social interactions, and health behaviors.
+```
+
+**Usage Notes:** The Summary may include information about the different parts of the data collection not adequately conveyed by the Fileset names or found elsewhere in the metadata. Other important components include a listing of major variables or categories of variables (with examples) as well as an indication of the data collection's unit of analysis (i.e., who or what is being studied: individuals, housing units, courts, criminal acts, etc.). Most often the unit of analysis is the individual; where it is not, it is particularly important to make this clear.
+
+The Summary is written in the third person and avoids attempting to address issues of how the data might be used, who might be interested in the data, or any evaluative comments about the worth or usefulness of the data collection. The Summary uses past tense when describing the process of collecting the data and present tense when necessary, such as when describing the data (e.g., 'The MIDUS Refresher collection is split into two datasets.'). Numerals are used instead of spelling them out; if a number is spelled out for emphasis, the number is attached in parentheses (e.g. 'Two thousand (2,000)').
+
+
+###### Examples:
```
-In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.
+ In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.
```
```
-The Health and Relationship Project is a study of both spouses in same-sex and different-sex marriages who were legally married and aged 35 to 65 at the time of data collection (2015). There are two parts of this study: a baseline questionnaire and a daily diary questionnaire completed for 10 consecutive days; both components were completed online and spouses were asked to complete the surveys separately. The baseline questionnaire asks participants about a number of topics related to marriage and health, including stress, health status and health behaviors, relationship quality, and how they have approached health problems in the past. The diary questionnaire asks participants a number of questions about the past 24 hours, including daily stress experiences, social interactions, and health behaviors.
+ The Health and Relationship Project is a study of both spouses in same-sex and different-sex marriages who were legally married and aged 35 to 65 at the time of data collection (2015). There are two parts of this study: a baseline questionnaire and a daily diary questionnaire completed for 10 consecutive days; both components were completed online and spouses were asked to complete the surveys separately. The baseline questionnaire asks participants about a number of topics related to marriage and health, including stress, health status and health behaviors, relationship quality, and how they have approached health problems in the past. The diary questionnaire asks participants a number of questions about the past 24 hours, including daily stress experiences, social interactions, and health behaviors.
```
@@ -1951,21 +2247,21 @@ The Health and Relationship Project is a study of both spouses in same-sex and d
###### Complete Examples (with Subfields):
```
- Time Method: Registers/Records/Accounts: Medical/Clinical
- Time Method Code: RegistersRecordsAccounts.MedicalClinical
- Time Method URI: https://example.com/time_methods/123
+ label: Registers/Records/Accounts: Medical/Clinical
+ code: RegistersRecordsAccounts.MedicalClinical
+ uri: https://example.com/time_methods/123
```
```
- Time Method: Events/Interactions
- Time Method Code: EventsInteractions
- Time Method URI: https://example.com/time_methods/234
+ label: Events/Interactions
+ code: EventsInteractions
+ uri: https://example.com/time_methods/234
```
```
- Time Method: Other
- Time Method Code: Other
- Time Method URI: https://example.com/time_methods/737
+ label: Other
+ code: Other
+ uri: https://example.com/time_methods/737
```
@@ -2061,14 +2357,14 @@ The Health and Relationship Project is a study of both spouses in same-sex and d
###### Complete Examples (with Subfields):
```
- Start Date: 2018
- End Date: 2018
- Time Frame: Summer and Fall 2018
+ start_date: 2018
+ end_date: 2018
+ time_frame: Summer and Fall 2018
```
```
- Start Date: 2020-10
- End Date: 2020-10
+ start_date: 2020-10
+ end_date: 2020-10
```
@@ -2083,26 +2379,48 @@ The Health and Relationship Project is a study of both spouses in same-sex and d
**Accepted Values**: Text
-**Examples:**
+###### Examples:
+
+```
+ Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017
+```
+
+```
+ Health and Relationships Project, United States, 2014-2015
+```
+
+```
+ Targeted Interventions to Prevent Chronic Low Back Pain in High Risk Patients: A Multi-Site Pragmatic Randomized Controlled Trial (TARGET Trial), 4 U.S. cities, 2016-2019
+```
+
+```
+ Aid Like A Paycheck (ALAP), Texas and California, 2014-2017
+```
```
-Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017
+ COVID-19 Disruptions Disproportionately Affect Female Academics, Global, 2020
+```
+
+###### Examples:
+
+```
+ Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017
```
```
-Health and Relationships Project, United States, 2014-2015
+ Health and Relationships Project, United States, 2014-2015
```
```
-Targeted Interventions to Prevent Chronic Low Back Pain in High Risk Patients: A Multi-Site Pragmatic Randomized Controlled Trial (TARGET Trial), 4 U.S. cities, 2016-2019
+ Targeted Interventions to Prevent Chronic Low Back Pain in High Risk Patients: A Multi-Site Pragmatic Randomized Controlled Trial (TARGET Trial), 4 U.S. cities, 2016-2019
```
```
-Aid Like A Paycheck (ALAP), Texas and California, 2014-2017
+ Aid Like A Paycheck (ALAP), Texas and California, 2014-2017
```
```
-COVID-19 Disruptions Disproportionately Affect Female Academics, Global, 2020
+ COVID-19 Disruptions Disproportionately Affect Female Academics, Global, 2020
```
@@ -2215,32 +2533,58 @@ COVID-19 Disruptions Disproportionately Affect Female Academics, Global, 2020
**Accepted Values**: Text
+###### Examples:
+
+```
+ All households in the United States with phones.
+```
+
+```
+ Part 1: Thirty cities in Massachusetts during 1980-1986. Parts 2-4: All residents in Massachusetts during 1986.
+```
+
+```
+ Individuals self-identified as transgender, trans, genderqueer, non-binary, or other identities on the transgender identity spectrum aged 18 and older residing in the fifty U.S. states, the District of Columbia, American Samoa, Guam, Puerto Rico, and U.S. military bases overseas.
+```
+
+```
+ Jihadists from the United States and Canada, along with Incels from Germany, Canada, the United States, and United Kingdom.
+```
+
+```
+ All publicly funded medical examiner and coroner offices.
+```
+
+```
+ Uncertified ballots for the 2000 United States presidential election in Florida.
+```
+
**Usage Notes:** Age, nationality, and residence commonly help to delineate a given universe, but any of a number of factors may be involved, such as sex, race, income, veteran status, criminal convictions, etc. The Universe may consist of elements other than persons, such as housing units, court cases, deaths, countries, etc. It should be possible to tell from the description of the universe whether a given individual or element (hypothetical or real) is a member of the population under study. Typically, the Universe statement is about one sentence or shorter, and reflects the entire possible population a data collection sought to study.
-**Examples:**
+###### Examples:
```
-All households in the United States with phones.
+ All households in the United States with phones.
```
```
-Part 1: Thirty cities in Massachusetts during 1980-1986. Parts 2-4: All residents in Massachusetts during 1986.
+ Part 1: Thirty cities in Massachusetts during 1980-1986. Parts 2-4: All residents in Massachusetts during 1986.
```
```
-Individuals self-identified as transgender, trans, genderqueer, non-binary, or other identities on the transgender identity spectrum aged 18 and older residing in the fifty U.S. states, the District of Columbia, American Samoa, Guam, Puerto Rico, and U.S. military bases overseas.
+ Individuals self-identified as transgender, trans, genderqueer, non-binary, or other identities on the transgender identity spectrum aged 18 and older residing in the fifty U.S. states, the District of Columbia, American Samoa, Guam, Puerto Rico, and U.S. military bases overseas.
```
```
-Jihadists from the United States and Canada, along with Incels from Germany, Canada, the United States, and United Kingdom.
+ Jihadists from the United States and Canada, along with Incels from Germany, Canada, the United States, and United Kingdom.
```
```
-All publicly funded medical examiner and coroner offices.
+ All publicly funded medical examiner and coroner offices.
```
```
-Uncertified ballots for the 2000 United States presidential election in Florida.
+ Uncertified ballots for the 2000 United States presidential election in Florida.
```
@@ -2255,16 +2599,26 @@ Uncertified ballots for the 2000 United States presidential election in Florida.
**Accepted Values**: Text
+###### Examples:
+
+```
+ The data includes variables about participants' and their parents' moods, interviewer observations, families' activities, families' health history, participants' school records, and parents' substance use. Demographic variables include race, religion, annual household income, and the participants' parents' employment statuses.
+```
+
+```
+ The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, including victim demographic information, substance abuse history, information on whether the victim is open about their LGBTQ identification, the victim's job status, and information about how the victim reacted to the crime, such as whether or not they reported the crime to the police and their level of cooperation with the police and prosecution.
+```
+
**Usage Notes:** The Variable Description provides more detailed information than the Summary, including a review of variables that are important for users to know about. The codebook, setup files, and variable groups are appropriate sources of information for Variable Description.
-**Examples:**
+###### Examples:
```
-The data includes variables about participants' and their parents' moods, interviewer observations, families' activities, families' health history, participants' school records, and parents' substance use. Demographic variables include race, religion, annual household income, and the participants' parents' employment statuses.
+ The data includes variables about participants' and their parents' moods, interviewer observations, families' activities, families' health history, participants' school records, and parents' substance use. Demographic variables include race, religion, annual household income, and the participants' parents' employment statuses.
```
```
-The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, including victim demographic information, substance abuse history, information on whether the victim is open about their LGBTQ identification, the victim's job status, and information about how the victim reacted to the crime, such as whether or not they reported the crime to the police and their level of cooperation with the police and prosecution.
+ The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, including victim demographic information, substance abuse history, information on whether the victim is open about their LGBTQ identification, the victim's job status, and information about how the victim reacted to the crime, such as whether or not they reported the crime to the police and their level of cooperation with the police and prosecution.
```
@@ -2389,16 +2743,26 @@ The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, inc
**Accepted Values**: Text
+###### Examples:
+
+```
+ Both the TransPop and Cisgender datasets have the same variable named WEIGHT as the weighting variable. The combination datasets have a set of three weight variables (WEIGHT_TRANSPOP, WEIGHT_CISGENDER, WEIGHT_CISGENDER_TRANSPOP)
+```
+
+```
+ A weight variable with two implied decimal places has been included and must be used in any analysis.
+```
+
**Usage Notes:** Weight includes any information about weighting variables in the data, as well as any other weight information provided by the Principal Investigator. If a weighting formula or coefficient was developed, provide this formula, define its elements, and indicate how the formula is applied to the data. It is acceptable to summarize additional documentation and refer users to those resources for more information.
-**Examples:**
+###### Examples:
```
-Both the TransPop and Cisgender datasets have the same variable named WEIGHT as the weighting variable. The combination datasets have a set of three weight variables (WEIGHT_TRANSPOP, WEIGHT_CISGENDER, WEIGHT_CISGENDER_TRANSPOP)
+ Both the TransPop and Cisgender datasets have the same variable named WEIGHT as the weighting variable. The combination datasets have a set of three weight variables (WEIGHT_TRANSPOP, WEIGHT_CISGENDER, WEIGHT_CISGENDER_TRANSPOP)
```
```
-A weight variable with two implied decimal places has been included and must be used in any analysis.
+ A weight variable with two implied decimal places has been included and must be used in any analysis.
```
diff --git a/rde_schema/property_bank/summary.json b/rde_schema/property_bank/summary.json
index 3caf3e0..410f4d0 100644
--- a/rde_schema/property_bank/summary.json
+++ b/rde_schema/property_bank/summary.json
@@ -4,7 +4,7 @@
"title": "Summary",
"description": "A description of the data collection that helps users understand its purpose, substance, and key topics.",
"type": "string",
- "usageNotes": { "$ref": "https://schemas.icpsr.umich.edu/notes/summary/usageNotes" },
+ "usageNotes": { "$ref": "https://schemas.icpsr.umich.edu/notes/summary#/usageNotes" },
"examples": [
"In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.",
"The Health and Relationship Project is a study of both spouses in same-sex and different-sex marriages who were legally married and aged 35 to 65 at the time of data collection (2015). There are two parts of this study: a baseline questionnaire and a daily diary questionnaire completed for 10 consecutive days; both components were completed online and spouses were asked to complete the surveys separately. The baseline questionnaire asks participants about a number of topics related to marriage and health, including stress, health status and health behaviors, relationship quality, and how they have approached health problems in the past. The diary questionnaire asks participants a number of questions about the past 24 hours, including daily stress experiences, social interactions, and health behaviors."
diff --git a/rde_schema/rde_markdown_generation.py b/rde_schema/rde_markdown_generation.py
index 5505b21..b6abd7d 100644
--- a/rde_schema/rde_markdown_generation.py
+++ b/rde_schema/rde_markdown_generation.py
@@ -1,317 +1,355 @@
import json
-import os
+import yaml
from pathlib import Path
from datetime import datetime
+import os
+
+# ----------------------------
+# Utilities
+# ----------------------------
def create_anchor(title):
- """Create an anchor link from a title.
-
- Args:
- title: The title to convert to an anchor
-
- Returns:
- A URL-safe anchor string
- """
- # Convert to lowercase, replace spaces with hyphens, remove special chars
- anchor = title.lower()
- anchor = anchor.replace(' ', '-')
- # Keep only alphanumeric characters and hyphens
+ anchor = title.lower().replace(' ', '-')
anchor = ''.join(c for c in anchor if c.isalnum() or c == '-')
- # Remove consecutive hyphens
while '--' in anchor:
anchor = anchor.replace('--', '-')
- # Remove leading/trailing hyphens
- anchor = anchor.strip('-')
- return anchor
-
-
-def json_schema_to_markdown(schema, property_name=None, required_fields=None):
- """Convert a JSON Schema object to Markdown documentation.
-
- Args:
- schema: The JSON schema object
- property_name: The name of this property (for checking required status)
- required_fields: List of required field names from parent schema
-
- Returns:
- A tuple of (markdown_string, toc_entry_dict)
- """
-
- markdown = []
- repeatable = "No" # Default
- is_required = "No" # Default
-
- # Check if this property is required
- if property_name and required_fields and property_name in required_fields:
- is_required = "Yes"
-
- # Title with anchor using HTML
+ return anchor.strip('-')
+
+
+def describe_schema_type(schema, type_mapping):
+ if not isinstance(schema, dict):
+ return "", "No"
+
+ schema_type = schema.get("type")
+
+ if schema_type == "array":
+ items = schema.get("items", {})
+ item_type = items.get("type")
+ accepted = type_mapping.get(item_type, item_type or "Array")
+ return accepted, "Yes"
+
+ accepted = type_mapping.get(schema_type, schema_type or "")
+ return accepted, "No"
+
+
+def is_array_of_objects(schema):
+ return (
+ schema.get("type") == "array"
+ and schema.get("items", {}).get("type") == "object"
+ and "properties" in schema.get("items", {})
+ )
+
+
+def extract_from_pointer(doc, pointer_path):
+ current = doc
+ for part in pointer_path.split('/'):
+ if isinstance(current, dict) and part in current:
+ current = current[part]
+ else:
+ return None
+ return current
+
+
+def resolve_ref(ref_url, schema_refs):
+ if '#/' in ref_url:
+ base, pointer = ref_url.split('#/', 1)
+ doc = schema_refs.get(base) or schema_refs.get(base.split('/version/')[0])
+ if doc:
+ return doc, pointer
+
+ return (
+ schema_refs.get(ref_url)
+ or schema_refs.get(ref_url.split('/version/')[0])
+ )
+
+
+# ----------------------------
+# Rendering helpers
+# ----------------------------
+
+def render_property_header(schema):
title = schema.get('title', 'Untitled')
anchor = create_anchor(title)
- markdown.append(f'')
- markdown.append(f"### {title}\n")
-
- # Description
+ return [
+ f'',
+ f"### {title}\n"
+ ], title, anchor
+
+
+def render_core_metadata(schema, type_mapping):
+ markdown = []
+
description = schema.get('description', '')
if description:
markdown.append(f"**Description:** {description}\n")
-
- # Determine repeatable and type
- if 'type' in schema:
- type_mapping = {
- 'string': 'Text',
- 'integer': 'Number',
- 'boolean': 'Boolean',
- 'object': 'Multi-part element; see subfield definitions for more information.'
- }
-
- # Handle arrays specially
- if schema['type'] == 'array':
- repeatable = "Yes"
- # Look for the type in items
- if 'items' in schema and 'type' in schema['items']:
- items_type = schema['items']['type']
- readable_type = type_mapping.get(items_type, items_type)
- else:
- readable_type = 'Array'
- else:
- readable_type = type_mapping.get(schema['type'], schema['type'])
-
+
+ accepted, repeatable = describe_schema_type(schema, type_mapping)
+
markdown.append(f"**Repeatable**: {repeatable}\n")
- markdown.append(f"**Accepted Values**: {readable_type}\n")
-
- # Create TOC entry for this schema
- toc_entry = {
+ markdown.append(f"**Accepted Values**: {accepted}\n")
+
+ return markdown, accepted, repeatable, description
+
+
+def build_toc_entry(title, anchor, required, repeatable, accepted_values, description):
+ return {
'title': title,
'anchor': anchor,
- 'required': is_required,
+ 'required': required,
'repeatable': repeatable,
- 'accepted_values': readable_type,
+ 'accepted_values': accepted_values,
'description': description
}
-
- # Check if this is an array of objects with properties (complex nested structure)
- has_subfields = (schema.get('type') == 'array' and
- schema.get('items', {}).get('type') == 'object' and
- 'properties' in schema.get('items', {}))
-
- if has_subfields:
- # Generate subfields table
- markdown.append("#### Subfields:\n")
- markdown.append("| Property | Required? | Repeatable? | Accepted Values | Description |")
- markdown.append("| -------- | --------- | ----------- | --------------- | ----------- |")
-
- items = schema['items']
- properties = items.get('properties', {})
- item_required = items.get('required', [])
-
- for prop_name, prop_schema in properties.items():
- prop_title = prop_schema.get('title', prop_name)
- prop_required = "Yes" if prop_name in item_required else "No"
- prop_repeatable = "No" # Subfields are not repeatable unless they're arrays themselves
-
- # Get the type
- if prop_schema.get('type') == 'array':
- prop_repeatable = "Yes"
- if 'items' in prop_schema and 'type' in prop_schema['items']:
- prop_type = type_mapping.get(prop_schema['items']['type'], prop_schema['items']['type'])
- else:
- prop_type = 'Array'
- else:
- prop_type = type_mapping.get(prop_schema.get('type', ''), prop_schema.get('type', ''))
-
- prop_description = prop_schema.get('description', '')
-
- markdown.append(f"| {prop_title} | {prop_required} | {prop_repeatable} | {prop_type} | {prop_description} |")
-
- markdown.append("") # Empty line after table
-
- # Now generate detailed sections for each subfield
- for prop_name, prop_schema in properties.items():
- prop_title = prop_schema.get('title', prop_name)
- prop_required = "Yes" if prop_name in item_required else "No"
- prop_description = prop_schema.get('description', '')
-
- markdown.append(f"##### {prop_title}\n")
- markdown.append(f"**Description:** {prop_description}\n")
- markdown.append(f"**Required**: {prop_required}\n")
- markdown.append(f"**Repeatable**: No\n")
-
- # Get accepted values for subfield
- if prop_schema.get('type') == 'array':
- if 'items' in prop_schema and 'type' in prop_schema['items']:
- subfield_type = type_mapping.get(prop_schema['items']['type'], prop_schema['items']['type'])
- else:
- subfield_type = 'Array'
+
+
+def render_subfields(schema, schema_refs, type_mapping):
+ markdown = []
+
+ items = schema['items']
+ properties = items.get('properties', {})
+ required = items.get('required', [])
+
+ markdown.append("#### Subfields:\n")
+ markdown.append("| Property | Required? | Repeatable? | Accepted Values | Description |")
+ markdown.append("| -------- | --------- | ----------- | --------------- | ----------- |")
+
+ resolved = {}
+
+ for name, prop in properties.items():
+ if '$ref' in prop:
+ ref = resolve_ref(prop['$ref'], schema_refs)
+ if isinstance(ref, tuple):
+ doc, pointer = ref
+ resolved[name] = extract_from_pointer(doc, pointer) or prop
+ elif ref:
+ resolved[name] = ref
else:
- subfield_type = type_mapping.get(prop_schema.get('type', ''), prop_schema.get('type', ''))
-
- markdown.append(f"**Accepted Values**: {subfield_type}\n")
-
- # Usage notes for subfield
- if 'usageNotes' in prop_schema:
- markdown.append(f"**Usage Notes:** {prop_schema['usageNotes']}\n")
-
- # Examples for subfield
- if 'examples' in prop_schema and prop_schema['examples']:
- markdown.append("**Examples:**\n")
- for example in prop_schema['examples']:
- # Format as JSON code block
- markdown.append("```json")
- markdown.append(f'"{example}"' if isinstance(example, str) else json.dumps(example, indent=2))
- markdown.append("```\n")
-
- # Complete examples section - formatted as readable text
- if 'examples' in schema and schema['examples']:
- markdown.append("###### Complete Examples (with Subfields):\n")
-
- for example_group in schema['examples']:
- # Handle if examples is a list of objects
- if isinstance(example_group, list):
- for example_obj in example_group:
- markdown.append("```")
- for key, value in example_obj.items():
- # Get the title for this property
- prop_title = properties.get(key, {}).get('title', key)
- markdown.append(f" {prop_title}: {value}")
- markdown.append("```\n")
- # Handle if example is a single object
- elif isinstance(example_group, dict):
- markdown.append("```")
- for key, value in example_group.items():
- prop_title = properties.get(key, {}).get('title', key)
- markdown.append(f" {prop_title}: {value}")
- markdown.append("```\n")
-
- else:
- # Simple type (not nested object) - use original format
- if is_required != "No":
- markdown.append(f"**Required**: {is_required}\n")
-
- # Usage Notes
- if 'usageNotes' in schema:
- markdown.append(f"**Usage Notes:** {schema['usageNotes']}\n")
-
- # Examples - wrap in code blocks
- if 'examples' in schema and schema['examples']:
+ resolved[name] = prop
+ else:
+ resolved[name] = prop
+
+ for name, prop in resolved.items():
+ accepted, repeatable = describe_schema_type(prop, type_mapping)
+ markdown.append(
+ f"| {prop.get('title', name)} | "
+ f"{'Yes' if name in required else 'No'} | "
+ f"{repeatable} | "
+ f"{accepted} | "
+ f"{prop.get('description', '')} |"
+ )
+
+ markdown.append("")
+
+ for name, prop in resolved.items():
+ accepted, _ = describe_schema_type(prop, type_mapping)
+
+ markdown.extend([
+ f"##### {prop.get('title', name)}\n",
+ f"**Description:** {prop.get('description', '')}\n",
+ f"**Required**: {'Yes' if name in required else 'No'}\n",
+ "**Repeatable**: No\n",
+ f"**Accepted Values**: {accepted}\n"
+ ])
+
+ if 'usageNotes' in prop:
+ markdown.append(f"**Usage Notes:** {prop['usageNotes']}\n")
+
+ # Examples for subfield
+ if prop.get('examples'):
markdown.append("**Examples:**\n")
- for example in schema['examples']:
+ for example in prop['examples']:
+ markdown.append("```json")
+ if isinstance(example, str):
+ markdown.append(f'"{example}"')
+ else:
+ markdown.append(json.dumps(example, indent=2))
+ markdown.append("```\n")
+
+ return markdown
+
+
+def render_complete_examples(schema, has_subfields):
+ examples = schema.get("examples")
+ if not examples:
+ return []
+
+ markdown = []
+
+ heading = "###### Complete Examples (with Subfields):" if has_subfields else "###### Examples:"
+ markdown.append(heading)
+ markdown.append("")
+
+ for example_set in examples:
+ if isinstance(example_set, list):
+ # Array of objects or strings
+ for obj in example_set:
markdown.append("```")
- markdown.append(f"{example}")
+ if isinstance(obj, dict):
+ for k, v in obj.items():
+ markdown.append(f" {k}: {v}")
+ else:
+ markdown.append(f" {obj}")
markdown.append("```\n")
-
+ else:
+ # Single primitive example
+ markdown.append("```")
+ markdown.append(f" {example_set}")
+ markdown.append("```\n")
+
+ return markdown
+
+
+def render_simple_field(schema, required, schema_refs):
+ markdown = []
+
+ if required == "Yes":
+ markdown.append(f"**Required**: {required}\n")
+
+ usage = schema.get('usageNotes')
+ if isinstance(usage, dict) and '$ref' in usage:
+ ref = resolve_ref(usage['$ref'], schema_refs)
+ if isinstance(ref, tuple):
+ doc, pointer = ref
+ text = extract_from_pointer(doc, pointer)
+ if text:
+ markdown.append(f"**Usage Notes:** {text}\n")
+ elif isinstance(usage, str):
+ markdown.append(f"**Usage Notes:** {usage}\n")
+
+ # Examples for simple fields
+ markdown.extend(render_complete_examples(schema, has_subfields=False))
+
+ return markdown
+
+
+# ----------------------------
+# Main conversion
+# ----------------------------
+
+def json_schema_to_markdown(schema, property_name=None, required_fields=None, schema_refs=None):
+ type_mapping = {
+ 'string': 'Text',
+ 'integer': 'Number',
+ 'boolean': 'Boolean',
+ 'object': 'Multi-part element; see subfield definitions for more information.'
+ }
+
+ schema_refs = schema_refs or {}
+ markdown = []
+
+ required = "Yes" if property_name and required_fields and property_name in required_fields else "No"
+
+ header, title, anchor = render_property_header(schema)
+ markdown.extend(header)
+
+ core_md, accepted, repeatable, description = render_core_metadata(schema, type_mapping)
+ markdown.extend(core_md)
+
+ toc_entry = build_toc_entry(title, anchor, required, repeatable, accepted, description)
+
+ has_subfields = is_array_of_objects(schema)
+
+ if has_subfields:
+ markdown.extend(render_subfields(schema, schema_refs, type_mapping))
+
+ # Render main property-level examples after subfields (if any)
+ markdown.extend(render_complete_examples(schema, has_subfields))
+
+ # For non-subfield properties, render usageNotes & simple field metadata
+ if not has_subfields:
+ markdown.extend(render_simple_field(schema, required, schema_refs))
+
return '\n'.join(markdown), toc_entry
-def process_json_folder(input_folder, output_file):
- """Process all JSON files in a folder and output to a single Markdown file.
-
- Args:
- input_folder: Path to folder containing JSON schema files
- output_file: Path to output Markdown file
- """
-
- # List of files to skip
- skip_files = [
- "common_data_elements.json",
- "contributors.json",
- "deposits.json",
- "extent_of_processing.json",
- "external_source_id.json",
- "languages.json",
- "link_title.json",
- "link_url.json",
- "manuscript_number.json",
- "oversamples.json",
- "restrictions.json",
+# ----------------------------
+# Folder processing
+# ----------------------------
+
+def load_all_schemas(property_folder, skip_files, notes_folder=None):
+ refs = {}
+
+ for path in Path(property_folder).glob('*.json'):
+ if path.name in skip_files:
+ continue
+ data = json.loads(path.read_text(encoding='utf-8'))
+ if '$id' in data:
+ refs[data['$id']] = data
+ refs[data['$id'].split('/version/')[0]] = data
+
+ if notes_folder and Path(notes_folder).exists():
+ for path in Path(notes_folder).glob('*.yaml'):
+ data = yaml.safe_load(path.read_text(encoding='utf-8'))
+ if data and '$id' in data:
+ refs[data['$id']] = data
+
+ return refs
+
+
+def process_json_folder(property_folder, output_file, notes_folder=None):
+ skip_files = {
+ "common_data_elements.json",
+ "contributors.json",
+ "deposits.json",
+ "extent_of_processing.json",
+ "external_source_id.json",
+ "languages.json",
+ "link_title.json",
+ "link_url.json",
+ "manuscript_number.json",
+ "oversamples.json",
+ "restrictions.json",
"study_purpose.json"
+ }
+
+ schema_refs = load_all_schemas(property_folder, skip_files, notes_folder)
+ json_files = sorted(f for f in Path(property_folder).glob('*.json') if f.name not in skip_files)
+
+ all_md = [
+ "# DRAFT ICPSR RDE Metadata Schema Documentation\n",
+ f"Last updated: {datetime.now().strftime('%B %d, %Y')}\n"
]
-
- # Get all JSON files in the folder
- json_files = sorted(Path(input_folder).glob('*.json'))
-
- if not json_files:
- print(f"No JSON files found in {input_folder}")
- return
-
- # Filter out files in the skip list
- json_files = [f for f in json_files if f.name not in skip_files]
-
- if not json_files:
- print(f"No JSON files to process after applying skip list")
- return
-
- print(f"Skipping {len(skip_files)} files")
- print(f"Processing {len(json_files)} files\n")
-
- all_markdown = []
- toc_entries = []
-
- # Add a header to the document
- all_markdown.append("# DRAFT ICPSR RDE Metadata Schema Documentation\n")
- current_date = datetime.now().strftime('%B %d, %Y')
- all_markdown.append(f"Last updated: {current_date}\n")
- all_markdown.append("This metadata schema was developed as part of the Inter-university Consortium for Political and Social Research (ICPSR) as part of the NSF-funded [Research Data Ecosystem (RDE)](https://www.icpsr.umich.edu/sites/icpsr/find-data/working-together/projects/rde) project. The schema is used to describe ICPSR data collections; these rules and definitions are intended to (a) assist ICPSR staff with metadata entry, and (b) help ICPSR users – including data depositors and researchers accessing data – understand how to use and interpret our metadata.\n")
-
- # Process each JSON file first to collect TOC entries
- schema_markdowns = []
- for json_file in json_files:
- print(f"Processing: {json_file.name}")
-
- try:
- with open(json_file, 'r', encoding='utf-8') as f:
- schema = json.load(f)
-
- # Convert schema to markdown and get TOC entry
- markdown_output, toc_entry = json_schema_to_markdown(schema)
- schema_markdowns.append(markdown_output)
- toc_entries.append(toc_entry)
-
- except json.JSONDecodeError as e:
- print(f"Error parsing {json_file.name}: {e}")
- continue
- except Exception as e:
- print(f"Error processing {json_file.name}: {e}")
- continue
-
- # Generate Table of Contents
- all_markdown.append("## Metadata Elements: Overview\n")
- all_markdown.append("| Property | Required? | Repeatable? | Accepted Values | Description |")
- all_markdown.append("| -------- | --------- | ----------- | --------------- | ----------- |")
-
- for entry in toc_entries:
- title_link = f"[{entry['title']}](#{entry['anchor']})"
- # Abbreviate the accepted values for TOC display
- accepted_values_display = entry['accepted_values']
- if accepted_values_display == "Multi-part element; see subfield definitions for more information.":
- accepted_values_display = "Multi-part element; see subfield"
-
- all_markdown.append(
- f"| {title_link} | {entry['required']} | {entry['repeatable']} | "
- f"{accepted_values_display} | {entry['description']} |"
+
+ toc = []
+ sections = []
+
+ for path in json_files:
+ print(f"Processing {os.path.basename(path)}...")
+ schema = json.loads(path.read_text(encoding='utf-8'))
+ md, entry = json_schema_to_markdown(schema, schema_refs=schema_refs)
+ sections.append(md)
+ toc.append(entry)
+
+ all_md.append("## Metadata Elements: Overview\n")
+ all_md.append("| Property | Required? | Repeatable? | Accepted Values | Description |")
+ all_md.append("| -------- | --------- | ----------- | --------------- | ----------- |")
+
+ for e in toc:
+ all_md.append(
+ f"| [{e['title']}](#{e['anchor']}) | {e['required']} | {e['repeatable']} | "
+ f"{e['accepted_values']} | {e['description']} |"
)
-
- all_markdown.append("\n---\n")
-
- all_markdown.append("## Metadata Elements: Detailed Information\n")
-
- # Add all schema documentation
- for schema_md in schema_markdowns:
- all_markdown.append(schema_md)
- all_markdown.append("\n---\n")
-
- # Write all markdown to a single file
- with open(output_file, 'w', encoding='utf-8') as f:
- f.write('\n'.join(all_markdown))
-
+
+ all_md.append("\n---\n## Metadata Elements: Detailed Information\n")
+
+ for section in sections:
+ all_md.append(section)
+ all_md.append("\n---\n")
+
+ Path(output_file).write_text('\n'.join(all_md), encoding='utf-8')
print(f"\nSuccessfully generated: {output_file}")
- print(f"Processed {len(json_files)} JSON files")
-# Example usage
+
+# ----------------------------
+# Entry point
+# ----------------------------
+
if __name__ == "__main__":
- # Specify your input folder and output file
- input_folder = "C:/icpsr_github/metadata/rde_schema/property_bank" # Change this to your folder path
- output_file = "C:/icpsr_github/metadata/rde_schema/icpsr_rde_schema.md"
-
- # Process all JSON files in the folder
- process_json_folder(input_folder, output_file)
\ No newline at end of file
+
+ main_dir = "C:/icpsr_github/metadata/rde_schema"
+
+ process_json_folder(
+ property_folder = os.path.join(main_dir, "property_bank"),
+ notes_folder=os.path.join(main_dir, "notes"),
+ output_file=os.path.join(main_dir, "icpsr_rde_schema.md")
+ )
\ No newline at end of file
From 2ff2eee218773bc9d5fd46e29701ad4d1255f46b Mon Sep 17 00:00:00 2001
From: Mike Shallcross
Date: Wed, 4 Feb 2026 17:18:32 -0500
Subject: [PATCH 003/119] new draft of markdown
---
rde_schema/icpsr_rde_schema.md | 302 ++------------------------
rde_schema/rde_markdown_generation.py | 13 +-
2 files changed, 26 insertions(+), 289 deletions(-)
diff --git a/rde_schema/icpsr_rde_schema.md b/rde_schema/icpsr_rde_schema.md
index 6adaf8e..0b2f828 100644
--- a/rde_schema/icpsr_rde_schema.md
+++ b/rde_schema/icpsr_rde_schema.md
@@ -56,25 +56,7 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-###### Examples:
-
-```
- Add Health Parent Study
-```
-
-```
- FACES 2009
-```
-
-```
- Survey of Consumers
-```
-
-```
- Eurobarometer 85.2
-```
-
-###### Examples:
+**Examples**:
```
Add Health Parent Study
@@ -104,19 +86,9 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-###### Examples:
-
-```
- University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1
-```
-
-```
- United States Department of Justice. Office of Justice Programs. Office of Juvenile Justice and Delinquency Prevention. Juvenile Residential Facility Census, 2020 [United States]. Inter-university Consortium for Political and Social Research [distributor], 2024-07-15. https://doi.org/10.3886/ICPSR38914.v1
-```
-
**Usage Notes:** The Citation is dynamically assembled from other entry fields in this format: PI (list). Title. Distributor (list), Issued Date. DOI. Note: ICPSR 'union catalog' records (i.e., external resource to which ICPSR links as a courtesy) do not have citations.
-###### Examples:
+**Examples**:
```
University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1
@@ -339,13 +311,7 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-###### Examples:
-
-```
- https://doi.org/10.1000/182
-```
-
-###### Examples:
+**Examples**:
```
https://doi.org/10.1000/182
@@ -549,27 +515,9 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-###### Examples:
-
-```
- 'Voting Scores.' Congressional Quarterly Almanac 33 (1977), 487-498
-```
-
-```
- United States Bureau of the Census Economic Surveys, 1998-2000
-```
-
-```
- United States Congressional Record, 1989
-```
-
-```
- Annual Company Organization Survey, 2003
-```
-
**Usage Notes:** External data sources include books, journal articles, administrative records, agency-sponsored surveys, and machine-readable files. Each source includes at minimum the title, author, publication year, and journal (if applicable). Any citation format is accepted.
-###### Examples:
+**Examples**:
```
'Voting Scores.' Congressional Quarterly Almanac 33 (1977), 487-498
@@ -1166,13 +1114,7 @@ Last updated: February 04, 2026
**Accepted Values**: Multi-part element; see subfield definitions for more information.
-###### Examples:
-
-```
- {'name': 'Creative Commons Attribution Non Commercial 4.0 International', 'code': 'CC-BY-NC-4.0', 'uri': 'https://creativecommons.org/licenses/by-nc/4.0/'}
-```
-
-###### Examples:
+**Examples**:
```
{'name': 'Creative Commons Attribution Non Commercial 4.0 International', 'code': 'CC-BY-NC-4.0', 'uri': 'https://creativecommons.org/licenses/by-nc/4.0/'}
@@ -1286,17 +1228,7 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-###### Examples:
-
-```
- Yes
-```
-
-```
- No
-```
-
-###### Examples:
+**Examples**:
```
Yes
@@ -1318,21 +1250,7 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-###### Examples:
-
-```
- Information on the Index of Consumer Sentiment, the Index of Current Economic Conditions, and the Index of Consumer Expectations and how they were created can be found in the P.I. Codebook
-```
-
-```
- Dataset 1 should be attributed to Jane Doe while datasets 2-6 should be attributed to John Doe
-```
-
-```
- Additional information on the Survey of Consumers can be found by visiting the Survey of Consumers Website
-```
-
-###### Examples:
+**Examples**:
```
Information on the Index of Consumer Sentiment, the Index of Current Economic Conditions, and the Index of Consumer Expectations and how they were created can be found in the P.I. Codebook
@@ -1358,13 +1276,7 @@ Last updated: February 04, 2026
**Accepted Values**: Multi-part element; see subfield definitions for more information.
-###### Examples:
-
-```
- {'name': 'Urban Institute', 'name_code': '1234', 'name_uri': 'https://icpsr.example.com/organizations/1234', 'ror': 'https://ror.org/017pz3h73', 'email': 'info@urban.institute'}
-```
-
-###### Examples:
+**Examples**:
```
{'name': 'Urban Institute', 'name_code': '1234', 'name_uri': 'https://icpsr.example.com/organizations/1234', 'ror': 'https://ror.org/017pz3h73', 'email': 'info@urban.institute'}
@@ -1382,17 +1294,7 @@ Last updated: February 04, 2026
**Accepted Values**: Multi-part element; see subfield definitions for more information.
-###### Examples:
-
-```
- {'name': {'given': 'Jane Q.', 'family': 'Doe II'}, 'orcid': 'https://orcid.org/0000-0001-6666-5717', 'researcher_passport_profile_id': '1234', 'affiliations': [{'name': 'Urban Institute', 'name_code': '2342', 'name_uri': 'https://icpsr.example.com/organizations/2342', 'ror': 'https://ror.org/017pz3h73', 'icpsr_org_id': 'xyz123'}, {'name': 'Example University'}], 'email': 'jane.doe@example.com'}
-```
-
-```
- {'name': {'given': 'Joe'}}
-```
-
-###### Examples:
+**Examples**:
```
{'name': {'given': 'Jane Q.', 'family': 'Doe II'}, 'orcid': 'https://orcid.org/0000-0001-6666-5717', 'researcher_passport_profile_id': '1234', 'affiliations': [{'name': 'Urban Institute', 'name_code': '2342', 'name_uri': 'https://icpsr.example.com/organizations/2342', 'ror': 'https://ror.org/017pz3h73', 'icpsr_org_id': 'xyz123'}, {'name': 'Example University'}], 'email': 'jane.doe@example.com'}
@@ -1414,13 +1316,7 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-###### Examples:
-
-```
- https://doi.org/10.1000/182
-```
-
-###### Examples:
+**Examples**:
```
https://doi.org/10.1000/182
@@ -1562,19 +1458,9 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-###### Examples:
-
-```
- The overall response rate for this survey was 20.22%; 72.6% for existing panelists and 10.4% for new panelists, using AAPOR Response Rate 1.
-```
-
-```
- Not applicable.
-```
-
**Usage Notes:** This field is only applicable if the data were collected with a survey instrument and the response rates are provided.
-###### Examples:
+**Examples**:
```
The overall response rate for this survey was 20.22%; 72.6% for existing panelists and 10.4% for new panelists, using AAPOR Response Rate 1.
@@ -1596,19 +1482,9 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-###### Examples:
-
-```
- National sample of telephone numbers from cell (RDD) sampling frame.
-```
-
-```
- The probability sample selected to represent the universe consists of approximately 71,000 households.
-```
-
**Usage Notes:** A detailed discussion of such things as sampling error or other limitations of the sampling methodology is not required here.
-###### Examples:
+**Examples**:
```
National sample of telephone numbers from cell (RDD) sampling frame.
@@ -1630,29 +1506,9 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-###### Examples:
-
-```
- label: Probability: Systematic random
- code: Probability.SystematicRandom
- uri: https://example.com/sampling_procedures/123
-```
-
-```
- label: Other
- code: Other
- uri: https://example.com/sampling_procedures/737
-```
-
-```
- label: Total universe/Complete enumeration
- code: TotalUniverseCompleteEnumeration
- uri: https://example.com/sampling_procedures/234
-```
-
**Usage Notes:** The sample is a selection out of the universe of all possible relevant cases (e.g., adults in the United States, housing units in three counties of Michigan, etc.) that could have been included in the data collection. Note that some studies, such as censuses, do not utilize samples but include all members of the universe. This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV SamplingProcedure https://rdf-vocabulary.ddialliance.org/ddi-cv/SamplingProcedure/1.1.4/SamplingProcedure.html.
-###### Examples:
+**Examples**:
```
label: Probability: Systematic random
@@ -1684,27 +1540,9 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-###### Examples:
-
-```
- The baseline data collection included one scale - the CES-D index for maternal depression [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4), 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available under the 'Data and Documentation' tab, for details.
-```
-
-```
- Squires, J., Bricker, D. D., and Twombly, E. (2009). Ages and stages questionnaires. Baltimore, MD: Paul H. Brookes.
-```
-
-```
- Briggs-Gowan, M. J., Carter, A. S., Irwin, J. R., Wachtel, K., and Cicchetti, D. V. (2004). The Brief Infant-Toddler Social and Emotional Assessment: screening for social-emotional problems and delays in competence. Journal of pediatric psychology, 29(2), 143-155.
-```
-
-```
- Yu, L., Buysse, D. J., Germain, A., Moul, D. E., Stover, A., Dodds, N. E., ... and Pilkonis, P. A. (2012). Development of short forms from the PROMIS sleep disturbance and sleep-related impairment item banks. Behavioral sleep medicine, 10(1), 6-24.
-```
-
**Usage Notes:** Include common scales that can be readily identified from the data, documentation, or other related materials. ICPSR curators are not expected to infer or research scales that are not explicitly indicated. The scales can be cited either as a list or described in full sentences. If the questionnaire used has a finite list of responses (e.g., 'Always, Sometimes, Rarely, Never' or Strongly Agree, Agree, Disagree, Strongly Disagree'), it is acceptable for this element to note 'A Likert-type scale was used,' or 'Several Likert-type scales were used.' However, it is not required to note Likart-type scales in situations where only such scales were used, given their ubiquity.
-###### Examples:
+**Examples**:
```
The baseline data collection included one scale - the CES-D index for maternal depression [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4), 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available under the 'Data and Documentation' tab, for details.
@@ -1734,23 +1572,9 @@ Last updated: February 04, 2026
**Accepted Values**: Multi-part element; see subfield definitions for more information.
-###### Examples:
-
-```
- {'label': 'state', 'code': '123', 'uri': 'https://example.com/smallest_geographic_unit/123'}
-```
-
-```
- {'label': 'Census tract', 'code': '234', 'uri': 'https://example.com/smallest_geographic_unit/234'}
-```
-
-```
- {'label': 'precinct', 'code': '345', 'uri': 'https://example.com/smallest_geographic_unit/345'}
-```
-
**Usage Notes:** Geographic Unit is intended to represent specific, known geography -- e.g., county, census district, FIPS code, electoral district, and any other conveyor of specific geography that is represented by a variable. If the data do not include a geographic variable by which the data can be analyzed, this element is not indicated. If all the cases are from a single state, but the cases are not subdivided geographically within that state, then 'state' is not indicated. This element is only meant to convey specific, known, geography. If there is a variable indicating which testing site a survey was taken at, but the locations of the testing sites were masked by the PI, this element is likely not indicated.
-###### Examples:
+**Examples**:
```
{'label': 'state', 'code': '123', 'uri': 'https://example.com/smallest_geographic_unit/123'}
@@ -2115,15 +1939,9 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-###### Examples:
-
-```
- Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years.
-```
-
**Usage Notes:** The Study Design provides more detailed information than the Summary, including how surveys were prepared and administered, how interviews were conducted, or how the data were obtained and compiled, as well as information about deadlines and follow-ups to respondents.
-###### Examples:
+**Examples**:
```
Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years.
@@ -2141,22 +1959,12 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-###### Examples:
-
-```
- In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.
-```
-
-```
- The Health and Relationship Project is a study of both spouses in same-sex and different-sex marriages who were legally married and aged 35 to 65 at the time of data collection (2015). There are two parts of this study: a baseline questionnaire and a daily diary questionnaire completed for 10 consecutive days; both components were completed online and spouses were asked to complete the surveys separately. The baseline questionnaire asks participants about a number of topics related to marriage and health, including stress, health status and health behaviors, relationship quality, and how they have approached health problems in the past. The diary questionnaire asks participants a number of questions about the past 24 hours, including daily stress experiences, social interactions, and health behaviors.
-```
-
**Usage Notes:** The Summary may include information about the different parts of the data collection not adequately conveyed by the Fileset names or found elsewhere in the metadata. Other important components include a listing of major variables or categories of variables (with examples) as well as an indication of the data collection's unit of analysis (i.e., who or what is being studied: individuals, housing units, courts, criminal acts, etc.). Most often the unit of analysis is the individual; where it is not, it is particularly important to make this clear.
The Summary is written in the third person and avoids attempting to address issues of how the data might be used, who might be interested in the data, or any evaluative comments about the worth or usefulness of the data collection. The Summary uses past tense when describing the process of collecting the data and present tense when necessary, such as when describing the data (e.g., 'The MIDUS Refresher collection is split into two datasets.'). Numerals are used instead of spelling them out; if a number is spelled out for emphasis, the number is attached in parentheses (e.g. 'Two thousand (2,000)').
-###### Examples:
+**Examples**:
```
In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.
@@ -2379,29 +2187,7 @@ The Summary is written in the third person and avoids attempting to address issu
**Accepted Values**: Text
-###### Examples:
-
-```
- Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017
-```
-
-```
- Health and Relationships Project, United States, 2014-2015
-```
-
-```
- Targeted Interventions to Prevent Chronic Low Back Pain in High Risk Patients: A Multi-Site Pragmatic Randomized Controlled Trial (TARGET Trial), 4 U.S. cities, 2016-2019
-```
-
-```
- Aid Like A Paycheck (ALAP), Texas and California, 2014-2017
-```
-
-```
- COVID-19 Disruptions Disproportionately Affect Female Academics, Global, 2020
-```
-
-###### Examples:
+**Examples**:
```
Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017
@@ -2533,35 +2319,9 @@ The Summary is written in the third person and avoids attempting to address issu
**Accepted Values**: Text
-###### Examples:
-
-```
- All households in the United States with phones.
-```
-
-```
- Part 1: Thirty cities in Massachusetts during 1980-1986. Parts 2-4: All residents in Massachusetts during 1986.
-```
-
-```
- Individuals self-identified as transgender, trans, genderqueer, non-binary, or other identities on the transgender identity spectrum aged 18 and older residing in the fifty U.S. states, the District of Columbia, American Samoa, Guam, Puerto Rico, and U.S. military bases overseas.
-```
-
-```
- Jihadists from the United States and Canada, along with Incels from Germany, Canada, the United States, and United Kingdom.
-```
-
-```
- All publicly funded medical examiner and coroner offices.
-```
-
-```
- Uncertified ballots for the 2000 United States presidential election in Florida.
-```
-
**Usage Notes:** Age, nationality, and residence commonly help to delineate a given universe, but any of a number of factors may be involved, such as sex, race, income, veteran status, criminal convictions, etc. The Universe may consist of elements other than persons, such as housing units, court cases, deaths, countries, etc. It should be possible to tell from the description of the universe whether a given individual or element (hypothetical or real) is a member of the population under study. Typically, the Universe statement is about one sentence or shorter, and reflects the entire possible population a data collection sought to study.
-###### Examples:
+**Examples**:
```
All households in the United States with phones.
@@ -2599,19 +2359,9 @@ The Summary is written in the third person and avoids attempting to address issu
**Accepted Values**: Text
-###### Examples:
-
-```
- The data includes variables about participants' and their parents' moods, interviewer observations, families' activities, families' health history, participants' school records, and parents' substance use. Demographic variables include race, religion, annual household income, and the participants' parents' employment statuses.
-```
-
-```
- The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, including victim demographic information, substance abuse history, information on whether the victim is open about their LGBTQ identification, the victim's job status, and information about how the victim reacted to the crime, such as whether or not they reported the crime to the police and their level of cooperation with the police and prosecution.
-```
-
**Usage Notes:** The Variable Description provides more detailed information than the Summary, including a review of variables that are important for users to know about. The codebook, setup files, and variable groups are appropriate sources of information for Variable Description.
-###### Examples:
+**Examples**:
```
The data includes variables about participants' and their parents' moods, interviewer observations, families' activities, families' health history, participants' school records, and parents' substance use. Demographic variables include race, religion, annual household income, and the participants' parents' employment statuses.
@@ -2743,19 +2493,9 @@ The Summary is written in the third person and avoids attempting to address issu
**Accepted Values**: Text
-###### Examples:
-
-```
- Both the TransPop and Cisgender datasets have the same variable named WEIGHT as the weighting variable. The combination datasets have a set of three weight variables (WEIGHT_TRANSPOP, WEIGHT_CISGENDER, WEIGHT_CISGENDER_TRANSPOP)
-```
-
-```
- A weight variable with two implied decimal places has been included and must be used in any analysis.
-```
-
**Usage Notes:** Weight includes any information about weighting variables in the data, as well as any other weight information provided by the Principal Investigator. If a weighting formula or coefficient was developed, provide this formula, define its elements, and indicate how the formula is applied to the data. It is acceptable to summarize additional documentation and refer users to those resources for more information.
-###### Examples:
+**Examples**:
```
Both the TransPop and Cisgender datasets have the same variable named WEIGHT as the weighting variable. The combination datasets have a set of three weight variables (WEIGHT_TRANSPOP, WEIGHT_CISGENDER, WEIGHT_CISGENDER_TRANSPOP)
diff --git a/rde_schema/rde_markdown_generation.py b/rde_schema/rde_markdown_generation.py
index b6abd7d..fd5077a 100644
--- a/rde_schema/rde_markdown_generation.py
+++ b/rde_schema/rde_markdown_generation.py
@@ -175,7 +175,7 @@ def render_complete_examples(schema, has_subfields):
markdown = []
- heading = "###### Complete Examples (with Subfields):" if has_subfields else "###### Examples:"
+ heading = "###### Complete Examples (with Subfields):" if has_subfields else "**Examples**:"
markdown.append(heading)
markdown.append("")
@@ -216,9 +216,6 @@ def render_simple_field(schema, required, schema_refs):
elif isinstance(usage, str):
markdown.append(f"**Usage Notes:** {usage}\n")
- # Examples for simple fields
- markdown.extend(render_complete_examples(schema, has_subfields=False))
-
return markdown
@@ -252,13 +249,13 @@ def json_schema_to_markdown(schema, property_name=None, required_fields=None, sc
if has_subfields:
markdown.extend(render_subfields(schema, schema_refs, type_mapping))
- # Render main property-level examples after subfields (if any)
- markdown.extend(render_complete_examples(schema, has_subfields))
-
# For non-subfield properties, render usageNotes & simple field metadata
- if not has_subfields:
+ else:
markdown.extend(render_simple_field(schema, required, schema_refs))
+ # Render main property-level examples
+ markdown.extend(render_complete_examples(schema, has_subfields))
+
return '\n'.join(markdown), toc_entry
From 82dff4cd3c424b67f8de570a47a3459a00761fad Mon Sep 17 00:00:00 2001
From: Mike Shallcross
Date: Wed, 4 Feb 2026 17:26:42 -0500
Subject: [PATCH 004/119] new draft of markdown
---
rde_schema/icpsr_rde_schema.md | 440 ++++++++++++++++++++++----
rde_schema/rde_markdown_generation.py | 89 +++---
2 files changed, 421 insertions(+), 108 deletions(-)
diff --git a/rde_schema/icpsr_rde_schema.md b/rde_schema/icpsr_rde_schema.md
index 0b2f828..2fe6aee 100644
--- a/rde_schema/icpsr_rde_schema.md
+++ b/rde_schema/icpsr_rde_schema.md
@@ -8,40 +8,40 @@ Last updated: February 04, 2026
| -------- | --------- | ----------- | --------------- | ----------- |
| [Alternate Titles](#alternate-titles) | No | Yes | Text | The alternate name(s) or acronym(s) commonly used to refer to the data collection. |
| [Citation](#citation) | No | No | Text | The official way to reference the data collection in writing. |
-| [Collection Dates](#collection-dates) | No | Yes | Multi-part element; see subfield definitions for more information. | The date(s) when the data were physically collected. |
-| [Collection Modes](#collection-modes) | No | Yes | Multi-part element; see subfield definitions for more information. | The method(s) or procedure(s) used to collect the data. |
+| [Collection Dates](#collection-dates) | No | Yes | Multi-part element; see subfields | The date(s) when the data were physically collected. |
+| [Collection Modes](#collection-modes) | No | Yes | Multi-part element; see subfields | The method(s) or procedure(s) used to collect the data. |
| [Data Management Plan](#data-management-plan) | No | No | Text | A link to the data management plan (preferably a persistent identifier such as a DOI). |
-| [Data Source Types](#data-source-types) | No | Yes | Multi-part element; see subfield definitions for more information. | The source(s) of the data as collected by the Principal Investigators. |
-| [Distributors](#distributors) | No | Yes | Multi-part element; see subfield definitions for more information. | The organization(s) responsible for distributing the data collection. |
+| [Data Source Types](#data-source-types) | No | Yes | Multi-part element; see subfields | The source(s) of the data as collected by the Principal Investigators. |
+| [Distributors](#distributors) | No | Yes | Multi-part element; see subfields | The organization(s) responsible for distributing the data collection. |
| [External Data Sources](#external-data-sources) | No | Yes | Text | The source of the data, when that source is external to the data collection and can be independently cited. |
-| [Funding Sources](#funding-sources) | No | Yes | Multi-part element; see subfield definitions for more information. | The sources of funding that supported the data collection. |
-| [General Data Formats](#general-data-formats) | No | Yes | Multi-part element; see subfield definitions for more information. | The file format types present in the data collection. |
-| [Geographic Coverage Areas](#geographic-coverage-areas) | No | Yes | Multi-part element; see subfield definitions for more information. | The geographic locations where the data refer or are related. |
-| [ICPSR Subject Terms](#icpsr-subject-terms) | No | Yes | Multi-part element; see subfield definitions for more information. | A controlled list of social science terms maintained by ICPSR and used to indicate topics related to the data collection. |
-| [Journal of Economic Literature (JEL) Classification Codes](#journal-of-economic-literature-jel-classification-codes) | No | Yes | Multi-part element; see subfield definitions for more information. | Classification codes used to categorize economic research. |
-| [License](#license) | No | No | Multi-part element; see subfield definitions for more information. | A license governing the data's use. |
-| [Medical Subject Headings (MeSH) Terms](#medical-subject-headings-mesh-terms) | No | Yes | Multi-part element; see subfield definitions for more information. | Biomedical and health-related terms from the National Library of Medicine that describe the data collection's topics. |
+| [Funding Sources](#funding-sources) | No | Yes | Multi-part element; see subfields | The sources of funding that supported the data collection. |
+| [General Data Formats](#general-data-formats) | No | Yes | Multi-part element; see subfields | The file format types present in the data collection. |
+| [Geographic Coverage Areas](#geographic-coverage-areas) | No | Yes | Multi-part element; see subfields | The geographic locations where the data refer or are related. |
+| [ICPSR Subject Terms](#icpsr-subject-terms) | No | Yes | Multi-part element; see subfields | A controlled list of social science terms maintained by ICPSR and used to indicate topics related to the data collection. |
+| [Journal of Economic Literature (JEL) Classification Codes](#journal-of-economic-literature-jel-classification-codes) | No | Yes | Multi-part element; see subfields | Classification codes used to categorize economic research. |
+| [License](#license) | No | No | Multi-part element; see subfields | A license governing the data's use. |
+| [Medical Subject Headings (MeSH) Terms](#medical-subject-headings-mesh-terms) | No | Yes | Multi-part element; see subfields | Biomedical and health-related terms from the National Library of Medicine that describe the data collection's topics. |
| [Nationally Representative Sample](#nationally-representative-sample) | No | No | Text | Indicates whether the data collection uses a sampling design intended to represent the demographics, behaviors, and/or characteristics of the entire nation. This typically involves probability-based methods that allow generalization. It does not include convenience samples that appear similar to the nation by chance. |
| [Notes](#notes) | No | Yes | Text | Important details about the data collection (like unique authoring, discrepancies, or processing information) that can't be recorded in other metadata elements. |
-| [Organization](#organization) | No | No | Multi-part element; see subfield definitions for more information. | An organization associated with an ICPSR data collection or service. |
-| [Person](#person) | No | No | Multi-part element; see subfield definitions for more information. | A person associated with an ICPSR data collection or service. |
+| [Organization](#organization) | No | No | Multi-part element; see subfields | An organization associated with an ICPSR data collection or service. |
+| [Person](#person) | No | No | Multi-part element; see subfields | A person associated with an ICPSR data collection or service. |
| [Preregistration](#preregistration) | No | No | Text | A link to a research plan for the data collection (preferably a persistent identifier such as a DOI). |
-| [Principal Investigators](#principal-investigators) | No | Yes | Multi-part element; see subfield definitions for more information. | The key people or organizations responsible for the data collection, listed by importance. Each data collection requires at least one PI, either a person or an organization. |
+| [Principal Investigators](#principal-investigators) | No | Yes | Multi-part element; see subfields | The key people or organizations responsible for the data collection, listed by importance. Each data collection requires at least one PI, either a person or an organization. |
| [Response Rates](#response-rates) | No | No | Text | The percentage of respondents in the sample who participated in the data collection. |
| [Sampling Note](#sampling-note) | No | No | Text | Supplemental information about the sampling process that does not fit neatly into the Sampling Procedure field. |
| [Sampling Procedures](#sampling-procedures) | No | Yes | Text | The type(s) of sample and sample design used to select survey respondents to represent the population. |
| [Scales](#scales) | No | No | Text | Any commonly known scales used to collect data for the data collection (e.g., MMPI, CPI, the Census Occupational Codes, etc.). |
-| [Smallest Geographic Unit](#smallest-geographic-unit) | No | No | Multi-part element; see subfield definitions for more information. | The smallest geographic unit (e.g., state or census tract) used in the dataset. |
-| [Software Applications](#software-applications) | No | Yes | Multi-part element; see subfield definitions for more information. | Software used by the principal investigator(s) to collect or analyze data, required to understand how the data were obtained or to reproduce results. |
+| [Smallest Geographic Unit](#smallest-geographic-unit) | No | No | Multi-part element; see subfields | The smallest geographic unit (e.g., state or census tract) used in the dataset. |
+| [Software Applications](#software-applications) | No | Yes | Multi-part element; see subfields | Software used by the principal investigator(s) to collect or analyze data, required to understand how the data were obtained or to reproduce results. |
| [Study Design](#study-design) | No | No | Text | The procedures used to contact participants and gather data. |
| [Summary](#summary) | No | No | Text | A description of the data collection that helps users understand its purpose, substance, and key topics. |
-| [Time Methods](#time-methods) | No | Yes | Multi-part element; see subfield definitions for more information. | The methods used to collect data over time, like snapshots at one point (cross-sectional) or repeatedly (longitudinal) to study changes or trends |
-| [Time Periods](#time-periods) | No | Yes | Multi-part element; see subfield definitions for more information. | The time period(s) to which the data refer, regardless of when the data were collected. |
+| [Time Methods](#time-methods) | No | Yes | Multi-part element; see subfields | The methods used to collect data over time, like snapshots at one point (cross-sectional) or repeatedly (longitudinal) to study changes or trends |
+| [Time Periods](#time-periods) | No | Yes | Multi-part element; see subfields | The time period(s) to which the data refer, regardless of when the data were collected. |
| [Title](#title) | No | No | Text | The official title that describes what the data collection is about, its geographic scope, and the time period it covered. |
-| [Units of Analysis](#units-of-analysis) | No | Yes | Multi-part element; see subfield definitions for more information. | The object(s) of analysis for the data collection, such as an organization, individual, or household. |
+| [Units of Analysis](#units-of-analysis) | No | Yes | Multi-part element; see subfields | The object(s) of analysis for the data collection, such as an organization, individual, or household. |
| [Universe](#universe) | No | No | Text | The total group of persons or other entities (e.g., households or organizations) that were the object of research and to which analytic results refer. |
| [Variable Description](#variable-description) | No | No | Text | Significant variables (particularly demographic variables) in the data files. |
-| [Version History](#version-history) | No | Yes | Multi-part element; see subfield definitions for more information. | A record of how the data collection has changed over time. |
+| [Version History](#version-history) | No | Yes | Multi-part element; see subfields | A record of how the data collection has changed over time. |
| [Weights](#weights) | No | No | Text | The weight variables and the criteria for using them in data analysis or other information about how the data are weighted if no weight variables are present. |
---
@@ -56,8 +56,33 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-**Examples**:
+**Examples:**
+
+```
+[
+ "Add Health Parent Study"
+]
+```
+
+```
+[
+ "FACES 2009"
+]
+```
+
+```
+[
+ "Survey of Consumers"
+]
+```
+
+```
+[
+ "Eurobarometer 85.2"
+]
+```
+**Examples:**
```
Add Health Parent Study
```
@@ -88,7 +113,7 @@ Last updated: February 04, 2026
**Usage Notes:** The Citation is dynamically assembled from other entry fields in this format: PI (list). Title. Distributor (list), Issued Date. DOI. Note: ICPSR 'union catalog' records (i.e., external resource to which ICPSR links as a courtesy) do not have citations.
-**Examples**:
+**Examples:**
```
University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1
@@ -98,6 +123,15 @@ Last updated: February 04, 2026
United States Department of Justice. Office of Justice Programs. Office of Juvenile Justice and Delinquency Prevention. Juvenile Residential Facility Census, 2020 [United States]. Inter-university Consortium for Political and Social Research [distributor], 2024-07-15. https://doi.org/10.3886/ICPSR38914.v1
```
+**Examples:**
+```
+ University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1
+```
+
+```
+ United States Department of Justice. Office of Justice Programs. Office of Juvenile Justice and Delinquency Prevention. Juvenile Residential Facility Census, 2020 [United States]. Inter-university Consortium for Political and Social Research [distributor], 2024-07-15. https://doi.org/10.3886/ICPSR38914.v1
+```
+
---
@@ -189,7 +223,6 @@ Last updated: February 04, 2026
```
###### Complete Examples (with Subfields):
-
```
start_date: 2018
end_date: 2018
@@ -280,7 +313,6 @@ Last updated: February 04, 2026
**Accepted Values**: Text
###### Complete Examples (with Subfields):
-
```
label: Face-to-face interview: Computer-assisted (CAPI/CAMI)
code: Interview.FaceToFace.CAPIorCAMI
@@ -311,12 +343,17 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-**Examples**:
+**Examples:**
```
https://doi.org/10.1000/182
```
+**Examples:**
+```
+ https://doi.org/10.1000/182
+```
+
---
@@ -396,7 +433,6 @@ Last updated: February 04, 2026
**Accepted Values**: Text
###### Complete Examples (with Subfields):
-
```
label: Registers/Records/Accounts: Medical/Clinical
code: RegistersRecordsAccounts.MedicalClinical
@@ -431,7 +467,7 @@ Last updated: February 04, 2026
| Property | Required? | Repeatable? | Accepted Values | Description |
| -------- | --------- | ----------- | --------------- | ----------- |
-| Organization | Yes | No | Multi-part element; see subfield definitions for more information. | An organization associated with an ICPSR data collection or service. |
+| Organization | Yes | No | Multi-part element; see subfields | An organization associated with an ICPSR data collection or service. |
| Order | Yes | No | Number | The order of importance for the distributors of the data collection. |
##### Organization
@@ -487,7 +523,6 @@ Last updated: February 04, 2026
```
###### Complete Examples (with Subfields):
-
```
organization: {'name': 'Inter-university Consortium for Political and Social Research', 'name_code': '1234', 'name_uri': 'https://icpsr.example.com/organizations/1234', 'ror': 'https://ror.org/017pz3h73'}
order: 0
@@ -517,8 +552,28 @@ Last updated: February 04, 2026
**Usage Notes:** External data sources include books, journal articles, administrative records, agency-sponsored surveys, and machine-readable files. Each source includes at minimum the title, author, publication year, and journal (if applicable). Any citation format is accepted.
-**Examples**:
+**Examples:**
+
+```
+[
+ "'Voting Scores.' Congressional Quarterly Almanac 33 (1977), 487-498"
+]
+```
+```
+[
+ "United States Bureau of the Census Economic Surveys, 1998-2000",
+ "United States Congressional Record, 1989"
+]
+```
+
+```
+[
+ "Annual Company Organization Survey, 2003"
+]
+```
+
+**Examples:**
```
'Voting Scores.' Congressional Quarterly Almanac 33 (1977), 487-498
```
@@ -551,8 +606,8 @@ Last updated: February 04, 2026
| Property | Required? | Repeatable? | Accepted Values | Description |
| -------- | --------- | ----------- | --------------- | ----------- |
-| Organization | Yes | No | Multi-part element; see subfield definitions for more information. | An organization associated with an ICPSR data collection or service. |
-| Funding Awards | No | Yes | Multi-part element; see subfield definitions for more information. | Financial support for the data collection. |
+| Organization | Yes | No | Multi-part element; see subfields | An organization associated with an ICPSR data collection or service. |
+| Funding Awards | No | Yes | Multi-part element; see subfields | Financial support for the data collection. |
| Order | Yes | No | Number | Internal ICPSR field used to determine the order of importance for the funders associated with the data collection. |
##### Organization
@@ -616,7 +671,6 @@ Last updated: February 04, 2026
```
###### Complete Examples (with Subfields):
-
```
organization: {'name': 'Robert Wood Johnson Foundation', 'name_code': '5643', 'name_uri': 'https://icpsr.example.com/organizations/5643', 'ror': 'https://ror.org/02ymmdj85'}
grants: [{'grant_number': 'MDR-8550085'}, {'grant_number': 'MDR-8550204'}]
@@ -713,7 +767,6 @@ Last updated: February 04, 2026
**Accepted Values**: Text
###### Complete Examples (with Subfields):
-
```
label: Text
code: Text
@@ -871,7 +924,6 @@ Last updated: February 04, 2026
```
###### Complete Examples (with Subfields):
-
```
city: Cleveland
state: Ohio
@@ -979,7 +1031,6 @@ Last updated: February 04, 2026
```
###### Complete Examples (with Subfields):
-
```
label: biographical data
code: 20391
@@ -1083,7 +1134,6 @@ Last updated: February 04, 2026
```
###### Complete Examples (with Subfields):
-
```
label: A12 Relation of Economics to Other Disciplines
code: a12
@@ -1114,10 +1164,21 @@ Last updated: February 04, 2026
**Accepted Values**: Multi-part element; see subfield definitions for more information.
-**Examples**:
+**Examples:**
+
+```
+{
+ "name": "Creative Commons Attribution Non Commercial 4.0 International",
+ "code": "CC-BY-NC-4.0",
+ "uri": "https://creativecommons.org/licenses/by-nc/4.0/"
+}
+```
+**Examples:**
```
- {'name': 'Creative Commons Attribution Non Commercial 4.0 International', 'code': 'CC-BY-NC-4.0', 'uri': 'https://creativecommons.org/licenses/by-nc/4.0/'}
+ name: Creative Commons Attribution Non Commercial 4.0 International
+ code: CC-BY-NC-4.0
+ uri: https://creativecommons.org/licenses/by-nc/4.0/
```
@@ -1203,7 +1264,6 @@ Last updated: February 04, 2026
```
###### Complete Examples (with Subfields):
-
```
label: anxiety
code: D001007
@@ -1228,8 +1288,17 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-**Examples**:
+**Examples:**
+
+```
+ Yes
+```
+
+```
+ No
+```
+**Examples:**
```
Yes
```
@@ -1250,8 +1319,22 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-**Examples**:
+**Examples:**
+```
+[
+ "Information on the Index of Consumer Sentiment, the Index of Current Economic Conditions, and the Index of Consumer Expectations and how they were created can be found in the P.I. Codebook",
+ "Dataset 1 should be attributed to Jane Doe while datasets 2-6 should be attributed to John Doe"
+]
+```
+
+```
+[
+ "Additional information on the Survey of Consumers can be found by visiting the Survey of Consumers Website"
+]
+```
+
+**Examples:**
```
Information on the Index of Consumer Sentiment, the Index of Current Economic Conditions, and the Index of Consumer Expectations and how they were created can be found in the P.I. Codebook
```
@@ -1276,10 +1359,25 @@ Last updated: February 04, 2026
**Accepted Values**: Multi-part element; see subfield definitions for more information.
-**Examples**:
+**Examples:**
```
- {'name': 'Urban Institute', 'name_code': '1234', 'name_uri': 'https://icpsr.example.com/organizations/1234', 'ror': 'https://ror.org/017pz3h73', 'email': 'info@urban.institute'}
+{
+ "name": "Urban Institute",
+ "name_code": "1234",
+ "name_uri": "https://icpsr.example.com/organizations/1234",
+ "ror": "https://ror.org/017pz3h73",
+ "email": "info@urban.institute"
+}
+```
+
+**Examples:**
+```
+ name: Urban Institute
+ name_code: 1234
+ name_uri: https://icpsr.example.com/organizations/1234
+ ror: https://ror.org/017pz3h73
+ email: info@urban.institute
```
@@ -1294,14 +1392,51 @@ Last updated: February 04, 2026
**Accepted Values**: Multi-part element; see subfield definitions for more information.
-**Examples**:
+**Examples:**
```
- {'name': {'given': 'Jane Q.', 'family': 'Doe II'}, 'orcid': 'https://orcid.org/0000-0001-6666-5717', 'researcher_passport_profile_id': '1234', 'affiliations': [{'name': 'Urban Institute', 'name_code': '2342', 'name_uri': 'https://icpsr.example.com/organizations/2342', 'ror': 'https://ror.org/017pz3h73', 'icpsr_org_id': 'xyz123'}, {'name': 'Example University'}], 'email': 'jane.doe@example.com'}
+{
+ "name": {
+ "given": "Jane Q.",
+ "family": "Doe II"
+ },
+ "orcid": "https://orcid.org/0000-0001-6666-5717",
+ "researcher_passport_profile_id": "1234",
+ "affiliations": [
+ {
+ "name": "Urban Institute",
+ "name_code": "2342",
+ "name_uri": "https://icpsr.example.com/organizations/2342",
+ "ror": "https://ror.org/017pz3h73",
+ "icpsr_org_id": "xyz123"
+ },
+ {
+ "name": "Example University"
+ }
+ ],
+ "email": "jane.doe@example.com"
+}
```
```
- {'name': {'given': 'Joe'}}
+{
+ "name": {
+ "given": "Joe"
+ }
+}
+```
+
+**Examples:**
+```
+ name: {'given': 'Jane Q.', 'family': 'Doe II'}
+ orcid: https://orcid.org/0000-0001-6666-5717
+ researcher_passport_profile_id: 1234
+ affiliations: [{'name': 'Urban Institute', 'name_code': '2342', 'name_uri': 'https://icpsr.example.com/organizations/2342', 'ror': 'https://ror.org/017pz3h73', 'icpsr_org_id': 'xyz123'}, {'name': 'Example University'}]
+ email: jane.doe@example.com
+```
+
+```
+ name: {'given': 'Joe'}
```
@@ -1316,8 +1451,13 @@ Last updated: February 04, 2026
**Accepted Values**: Text
-**Examples**:
+**Examples:**
+
+```
+ https://doi.org/10.1000/182
+```
+**Examples:**
```
https://doi.org/10.1000/182
```
@@ -1338,8 +1478,8 @@ Last updated: February 04, 2026
| Property | Required? | Repeatable? | Accepted Values | Description |
| -------- | --------- | ----------- | --------------- | ----------- |
-| Person | No | No | Multi-part element; see subfield definitions for more information. | A person associated with an ICPSR data collection or service. |
-| Organization | No | No | Multi-part element; see subfield definitions for more information. | An organization associated with an ICPSR data collection or service. |
+| Person | No | No | Multi-part element; see subfields | A person associated with an ICPSR data collection or service. |
+| Organization | No | No | Multi-part element; see subfields | An organization associated with an ICPSR data collection or service. |
| Order | No | No | Number | The order or rank of importance for the PIs associated with the data collection, typically provided to ICPSR by the lead PI. |
##### Person
@@ -1437,7 +1577,6 @@ Last updated: February 04, 2026
```
###### Complete Examples (with Subfields):
-
```
Personal Principal Investigator
| First Name | Last Name | Affiliation |
|---|
| Veronica | Martinez-Ebers | National Institute for Law and Equity |
| Lawrence F. | Travis III | University of Cincinnati |
```
@@ -1460,8 +1599,17 @@ Last updated: February 04, 2026
**Usage Notes:** This field is only applicable if the data were collected with a survey instrument and the response rates are provided.
-**Examples**:
+**Examples:**
+
+```
+ The overall response rate for this survey was 20.22%; 72.6% for existing panelists and 10.4% for new panelists, using AAPOR Response Rate 1.
+```
+
+```
+ Not applicable.
+```
+**Examples:**
```
The overall response rate for this survey was 20.22%; 72.6% for existing panelists and 10.4% for new panelists, using AAPOR Response Rate 1.
```
@@ -1484,7 +1632,7 @@ Last updated: February 04, 2026
**Usage Notes:** A detailed discussion of such things as sampling error or other limitations of the sampling methodology is not required here.
-**Examples**:
+**Examples:**
```
National sample of telephone numbers from cell (RDD) sampling frame.
@@ -1494,6 +1642,15 @@ Last updated: February 04, 2026
The probability sample selected to represent the universe consists of approximately 71,000 households.
```
+**Examples:**
+```
+ National sample of telephone numbers from cell (RDD) sampling frame.
+```
+
+```
+ The probability sample selected to represent the universe consists of approximately 71,000 households.
+```
+
---
@@ -1508,8 +1665,34 @@ Last updated: February 04, 2026
**Usage Notes:** The sample is a selection out of the universe of all possible relevant cases (e.g., adults in the United States, housing units in three counties of Michigan, etc.) that could have been included in the data collection. Note that some studies, such as censuses, do not utilize samples but include all members of the universe. This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV SamplingProcedure https://rdf-vocabulary.ddialliance.org/ddi-cv/SamplingProcedure/1.1.4/SamplingProcedure.html.
-**Examples**:
+**Examples:**
+
+```
+[
+ {
+ "label": "Probability: Systematic random",
+ "code": "Probability.SystematicRandom",
+ "uri": "https://example.com/sampling_procedures/123"
+ },
+ {
+ "label": "Other",
+ "code": "Other",
+ "uri": "https://example.com/sampling_procedures/737"
+ }
+]
+```
+```
+[
+ {
+ "label": "Total universe/Complete enumeration",
+ "code": "TotalUniverseCompleteEnumeration",
+ "uri": "https://example.com/sampling_procedures/234"
+ }
+]
+```
+
+**Examples:**
```
label: Probability: Systematic random
code: Probability.SystematicRandom
@@ -1542,8 +1725,23 @@ Last updated: February 04, 2026
**Usage Notes:** Include common scales that can be readily identified from the data, documentation, or other related materials. ICPSR curators are not expected to infer or research scales that are not explicitly indicated. The scales can be cited either as a list or described in full sentences. If the questionnaire used has a finite list of responses (e.g., 'Always, Sometimes, Rarely, Never' or Strongly Agree, Agree, Disagree, Strongly Disagree'), it is acceptable for this element to note 'A Likert-type scale was used,' or 'Several Likert-type scales were used.' However, it is not required to note Likart-type scales in situations where only such scales were used, given their ubiquity.
-**Examples**:
+**Examples:**
+
+```
+[
+ "The baseline data collection included one scale - the CES-D index for maternal depression [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4), 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available under the 'Data and Documentation' tab, for details."
+]
+```
+```
+[
+ "Squires, J., Bricker, D. D., and Twombly, E. (2009). Ages and stages questionnaires. Baltimore, MD: Paul H. Brookes.",
+ "Briggs-Gowan, M. J., Carter, A. S., Irwin, J. R., Wachtel, K., and Cicchetti, D. V. (2004). The Brief Infant-Toddler Social and Emotional Assessment: screening for social-emotional problems and delays in competence. Journal of pediatric psychology, 29(2), 143-155.",
+ "Yu, L., Buysse, D. J., Germain, A., Moul, D. E., Stover, A., Dodds, N. E., ... and Pilkonis, P. A. (2012). Development of short forms from the PROMIS sleep disturbance and sleep-related impairment item banks. Behavioral sleep medicine, 10(1), 6-24."
+]
+```
+
+**Examples:**
```
The baseline data collection included one scale - the CES-D index for maternal depression [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4), 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available under the 'Data and Documentation' tab, for details.
```
@@ -1574,18 +1772,49 @@ Last updated: February 04, 2026
**Usage Notes:** Geographic Unit is intended to represent specific, known geography -- e.g., county, census district, FIPS code, electoral district, and any other conveyor of specific geography that is represented by a variable. If the data do not include a geographic variable by which the data can be analyzed, this element is not indicated. If all the cases are from a single state, but the cases are not subdivided geographically within that state, then 'state' is not indicated. This element is only meant to convey specific, known, geography. If there is a variable indicating which testing site a survey was taken at, but the locations of the testing sites were masked by the PI, this element is likely not indicated.
-**Examples**:
+**Examples:**
```
- {'label': 'state', 'code': '123', 'uri': 'https://example.com/smallest_geographic_unit/123'}
+{
+ "label": "state",
+ "code": "123",
+ "uri": "https://example.com/smallest_geographic_unit/123"
+}
```
```
- {'label': 'Census tract', 'code': '234', 'uri': 'https://example.com/smallest_geographic_unit/234'}
+{
+ "label": "Census tract",
+ "code": "234",
+ "uri": "https://example.com/smallest_geographic_unit/234"
+}
```
```
- {'label': 'precinct', 'code': '345', 'uri': 'https://example.com/smallest_geographic_unit/345'}
+{
+ "label": "precinct",
+ "code": "345",
+ "uri": "https://example.com/smallest_geographic_unit/345"
+}
+```
+
+**Examples:**
+```
+ label: state
+ code: 123
+ uri: https://example.com/smallest_geographic_unit/123
+```
+
+```
+ label: Census tract
+ code: 234
+ uri: https://example.com/smallest_geographic_unit/234
+```
+
+```
+ label: precinct
+ code: 345
+ uri: https://example.com/smallest_geographic_unit/345
```
@@ -1916,7 +2145,6 @@ Last updated: February 04, 2026
```
###### Complete Examples (with Subfields):
-
```
name: siegfried
software_version: 1.11.1
@@ -1941,8 +2169,13 @@ Last updated: February 04, 2026
**Usage Notes:** The Study Design provides more detailed information than the Summary, including how surveys were prepared and administered, how interviews were conducted, or how the data were obtained and compiled, as well as information about deadlines and follow-ups to respondents.
-**Examples**:
+**Examples:**
+
+```
+ Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years.
+```
+**Examples:**
```
Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years.
```
@@ -1964,8 +2197,17 @@ Last updated: February 04, 2026
The Summary is written in the third person and avoids attempting to address issues of how the data might be used, who might be interested in the data, or any evaluative comments about the worth or usefulness of the data collection. The Summary uses past tense when describing the process of collecting the data and present tense when necessary, such as when describing the data (e.g., 'The MIDUS Refresher collection is split into two datasets.'). Numerals are used instead of spelling them out; if a number is spelled out for emphasis, the number is attached in parentheses (e.g. 'Two thousand (2,000)').
-**Examples**:
+**Examples:**
+
+```
+ In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.
+```
+
+```
+ The Health and Relationship Project is a study of both spouses in same-sex and different-sex marriages who were legally married and aged 35 to 65 at the time of data collection (2015). There are two parts of this study: a baseline questionnaire and a daily diary questionnaire completed for 10 consecutive days; both components were completed online and spouses were asked to complete the surveys separately. The baseline questionnaire asks participants about a number of topics related to marriage and health, including stress, health status and health behaviors, relationship quality, and how they have approached health problems in the past. The diary questionnaire asks participants a number of questions about the past 24 hours, including daily stress experiences, social interactions, and health behaviors.
+```
+**Examples:**
```
In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.
```
@@ -2053,7 +2295,6 @@ The Summary is written in the third person and avoids attempting to address issu
**Accepted Values**: Text
###### Complete Examples (with Subfields):
-
```
label: Registers/Records/Accounts: Medical/Clinical
code: RegistersRecordsAccounts.MedicalClinical
@@ -2163,7 +2404,6 @@ The Summary is written in the third person and avoids attempting to address issu
```
###### Complete Examples (with Subfields):
-
```
start_date: 2018
end_date: 2018
@@ -2187,8 +2427,29 @@ The Summary is written in the third person and avoids attempting to address issu
**Accepted Values**: Text
-**Examples**:
+**Examples:**
+
+```
+ Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017
+```
+
+```
+ Health and Relationships Project, United States, 2014-2015
+```
+
+```
+ Targeted Interventions to Prevent Chronic Low Back Pain in High Risk Patients: A Multi-Site Pragmatic Randomized Controlled Trial (TARGET Trial), 4 U.S. cities, 2016-2019
+```
+
+```
+ Aid Like A Paycheck (ALAP), Texas and California, 2014-2017
+```
+
+```
+ COVID-19 Disruptions Disproportionately Affect Female Academics, Global, 2020
+```
+**Examples:**
```
Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017
```
@@ -2288,7 +2549,6 @@ The Summary is written in the third person and avoids attempting to address issu
**Accepted Values**: Text
###### Complete Examples (with Subfields):
-
```
label: Organization/Institution
code: OrganizationOrInstitution
@@ -2321,7 +2581,7 @@ The Summary is written in the third person and avoids attempting to address issu
**Usage Notes:** Age, nationality, and residence commonly help to delineate a given universe, but any of a number of factors may be involved, such as sex, race, income, veteran status, criminal convictions, etc. The Universe may consist of elements other than persons, such as housing units, court cases, deaths, countries, etc. It should be possible to tell from the description of the universe whether a given individual or element (hypothetical or real) is a member of the population under study. Typically, the Universe statement is about one sentence or shorter, and reflects the entire possible population a data collection sought to study.
-**Examples**:
+**Examples:**
```
All households in the United States with phones.
@@ -2347,6 +2607,31 @@ The Summary is written in the third person and avoids attempting to address issu
Uncertified ballots for the 2000 United States presidential election in Florida.
```
+**Examples:**
+```
+ All households in the United States with phones.
+```
+
+```
+ Part 1: Thirty cities in Massachusetts during 1980-1986. Parts 2-4: All residents in Massachusetts during 1986.
+```
+
+```
+ Individuals self-identified as transgender, trans, genderqueer, non-binary, or other identities on the transgender identity spectrum aged 18 and older residing in the fifty U.S. states, the District of Columbia, American Samoa, Guam, Puerto Rico, and U.S. military bases overseas.
+```
+
+```
+ Jihadists from the United States and Canada, along with Incels from Germany, Canada, the United States, and United Kingdom.
+```
+
+```
+ All publicly funded medical examiner and coroner offices.
+```
+
+```
+ Uncertified ballots for the 2000 United States presidential election in Florida.
+```
+
---
@@ -2361,7 +2646,7 @@ The Summary is written in the third person and avoids attempting to address issu
**Usage Notes:** The Variable Description provides more detailed information than the Summary, including a review of variables that are important for users to know about. The codebook, setup files, and variable groups are appropriate sources of information for Variable Description.
-**Examples**:
+**Examples:**
```
The data includes variables about participants' and their parents' moods, interviewer observations, families' activities, families' health history, participants' school records, and parents' substance use. Demographic variables include race, religion, annual household income, and the participants' parents' employment statuses.
@@ -2371,6 +2656,15 @@ The Summary is written in the third person and avoids attempting to address issu
The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, including victim demographic information, substance abuse history, information on whether the victim is open about their LGBTQ identification, the victim's job status, and information about how the victim reacted to the crime, such as whether or not they reported the crime to the police and their level of cooperation with the police and prosecution.
```
+**Examples:**
+```
+ The data includes variables about participants' and their parents' moods, interviewer observations, families' activities, families' health history, participants' school records, and parents' substance use. Demographic variables include race, religion, annual household income, and the participants' parents' employment statuses.
+```
+
+```
+ The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, including victim demographic information, substance abuse history, information on whether the victim is open about their LGBTQ identification, the victim's job status, and information about how the victim reacted to the crime, such as whether or not they reported the crime to the police and their level of cooperation with the police and prosecution.
+```
+
---
@@ -2462,7 +2756,6 @@ The Summary is written in the third person and avoids attempting to address issu
```
###### Complete Examples (with Subfields):
-
```
version_number: V2
version_date: 2023-08-12
@@ -2495,8 +2788,17 @@ The Summary is written in the third person and avoids attempting to address issu
**Usage Notes:** Weight includes any information about weighting variables in the data, as well as any other weight information provided by the Principal Investigator. If a weighting formula or coefficient was developed, provide this formula, define its elements, and indicate how the formula is applied to the data. It is acceptable to summarize additional documentation and refer users to those resources for more information.
-**Examples**:
+**Examples:**
+
+```
+ Both the TransPop and Cisgender datasets have the same variable named WEIGHT as the weighting variable. The combination datasets have a set of three weight variables (WEIGHT_TRANSPOP, WEIGHT_CISGENDER, WEIGHT_CISGENDER_TRANSPOP)
+```
+```
+ A weight variable with two implied decimal places has been included and must be used in any analysis.
+```
+
+**Examples:**
```
Both the TransPop and Cisgender datasets have the same variable named WEIGHT as the weighting variable. The combination datasets have a set of three weight variables (WEIGHT_TRANSPOP, WEIGHT_CISGENDER, WEIGHT_CISGENDER_TRANSPOP)
```
diff --git a/rde_schema/rde_markdown_generation.py b/rde_schema/rde_markdown_generation.py
index fd5077a..8ac2934 100644
--- a/rde_schema/rde_markdown_generation.py
+++ b/rde_schema/rde_markdown_generation.py
@@ -4,6 +4,7 @@
from datetime import datetime
import os
+
# ----------------------------
# Utilities
# ----------------------------
@@ -67,6 +68,12 @@ def resolve_ref(ref_url, schema_refs):
# Rendering helpers
# ----------------------------
+def shorten_multi_part(text):
+ if text == "Multi-part element; see subfield definitions for more information.":
+ return "Multi-part element; see subfields"
+ return text
+
+
def render_property_header(schema):
title = schema.get('title', 'Untitled')
anchor = create_anchor(title)
@@ -134,7 +141,7 @@ def render_subfields(schema, schema_refs, type_mapping):
f"| {prop.get('title', name)} | "
f"{'Yes' if name in required else 'No'} | "
f"{repeatable} | "
- f"{accepted} | "
+ f"{shorten_multi_part(accepted)} | "
f"{prop.get('description', '')} |"
)
@@ -154,7 +161,6 @@ def render_subfields(schema, schema_refs, type_mapping):
if 'usageNotes' in prop:
markdown.append(f"**Usage Notes:** {prop['usageNotes']}\n")
- # Examples for subfield
if prop.get('examples'):
markdown.append("**Examples:**\n")
for example in prop['examples']:
@@ -168,37 +174,6 @@ def render_subfields(schema, schema_refs, type_mapping):
return markdown
-def render_complete_examples(schema, has_subfields):
- examples = schema.get("examples")
- if not examples:
- return []
-
- markdown = []
-
- heading = "###### Complete Examples (with Subfields):" if has_subfields else "**Examples**:"
- markdown.append(heading)
- markdown.append("")
-
- for example_set in examples:
- if isinstance(example_set, list):
- # Array of objects or strings
- for obj in example_set:
- markdown.append("```")
- if isinstance(obj, dict):
- for k, v in obj.items():
- markdown.append(f" {k}: {v}")
- else:
- markdown.append(f" {obj}")
- markdown.append("```\n")
- else:
- # Single primitive example
- markdown.append("```")
- markdown.append(f" {example_set}")
- markdown.append("```\n")
-
- return markdown
-
-
def render_simple_field(schema, required, schema_refs):
markdown = []
@@ -216,6 +191,45 @@ def render_simple_field(schema, required, schema_refs):
elif isinstance(usage, str):
markdown.append(f"**Usage Notes:** {usage}\n")
+ if schema.get('examples') and not is_array_of_objects(schema):
+ markdown.append("**Examples:**\n")
+ for ex in schema['examples']:
+ markdown.append("```")
+ markdown.append(f" {ex}" if isinstance(ex, str) else json.dumps(ex, indent=2))
+ markdown.append("```\n")
+
+ return markdown
+
+
+def render_complete_examples(schema, has_subfields):
+ """Render main property-level examples depending on whether subfields exist."""
+ examples = schema.get('examples')
+ if not examples:
+ return []
+
+ heading = "###### Complete Examples (with Subfields):" if has_subfields else "**Examples:**"
+ markdown = [heading]
+
+ for ex_group in examples:
+ # ex_group can be a dict, list of dicts, or list of primitives
+ if isinstance(ex_group, list):
+ for ex_item in ex_group:
+ markdown.append("```")
+ if isinstance(ex_item, dict):
+ for key, value in ex_item.items():
+ markdown.append(f" {key}: {value}")
+ else:
+ markdown.append(f" {ex_item}")
+ markdown.append("```\n")
+ elif isinstance(ex_group, dict):
+ markdown.append("```")
+ for key, value in ex_group.items():
+ markdown.append(f" {key}: {value}")
+ markdown.append("```\n")
+ else:
+ markdown.append("```")
+ markdown.append(f" {ex_group}")
+ markdown.append("```\n")
return markdown
@@ -245,15 +259,12 @@ def json_schema_to_markdown(schema, property_name=None, required_fields=None, sc
toc_entry = build_toc_entry(title, anchor, required, repeatable, accepted, description)
has_subfields = is_array_of_objects(schema)
-
if has_subfields:
markdown.extend(render_subfields(schema, schema_refs, type_mapping))
-
- # For non-subfield properties, render usageNotes & simple field metadata
else:
markdown.extend(render_simple_field(schema, required, schema_refs))
- # Render main property-level examples
+ # Render main property-level examples
markdown.extend(render_complete_examples(schema, has_subfields))
return '\n'.join(markdown), toc_entry
@@ -324,7 +335,7 @@ def process_json_folder(property_folder, output_file, notes_folder=None):
for e in toc:
all_md.append(
f"| [{e['title']}](#{e['anchor']}) | {e['required']} | {e['repeatable']} | "
- f"{e['accepted_values']} | {e['description']} |"
+ f"{shorten_multi_part(e['accepted_values'])} | {e['description']} |"
)
all_md.append("\n---\n## Metadata Elements: Detailed Information\n")
@@ -349,4 +360,4 @@ def process_json_folder(property_folder, output_file, notes_folder=None):
property_folder = os.path.join(main_dir, "property_bank"),
notes_folder=os.path.join(main_dir, "notes"),
output_file=os.path.join(main_dir, "icpsr_rde_schema.md")
- )
\ No newline at end of file
+ )
From 949719ddda81920405810e50c77658d29c86ee96 Mon Sep 17 00:00:00 2001
From: Mike Shallcross
Date: Wed, 4 Feb 2026 17:33:15 -0500
Subject: [PATCH 005/119] new draft of markdown
---
rde_schema/rde_markdown_generation.py | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/rde_schema/rde_markdown_generation.py b/rde_schema/rde_markdown_generation.py
index 8ac2934..4b4eb06 100644
--- a/rde_schema/rde_markdown_generation.py
+++ b/rde_schema/rde_markdown_generation.py
@@ -200,6 +200,10 @@ def render_simple_field(schema, required, schema_refs):
return markdown
+def shorten_multi_part(text):
+ if text == "Multi-part element; see subfield definitions for more information.":
+ return "Multi-part element; see subfields"
+ return text
def render_complete_examples(schema, has_subfields):
"""Render main property-level examples depending on whether subfields exist."""
From 708106d9b578ff6e1915f6505083223bae0c1a61 Mon Sep 17 00:00:00 2001
From: Mike Shallcross
Date: Tue, 10 Feb 2026 13:55:09 -0500
Subject: [PATCH 006/119] PI issues
---
rde_schema/pi_issues.md | 385 ++++++++++++++++++++++++++
rde_schema/rde_markdown_generation.py | 146 ++++------
2 files changed, 442 insertions(+), 89 deletions(-)
create mode 100644 rde_schema/pi_issues.md
diff --git a/rde_schema/pi_issues.md b/rde_schema/pi_issues.md
new file mode 100644
index 0000000..e8398be
--- /dev/null
+++ b/rde_schema/pi_issues.md
@@ -0,0 +1,385 @@
+### Principal Investigators (level 3 heading)
+
+**Description:** The key people or organizations responsible for the data collection, listed by importance. Each data collection requires at least one PI, either a person or an organization.
+
+**Repeatable**: Yes
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+#### Subfields: (level 4 heading)
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| Person | No | No | Multi-part element; see subfields | A person associated with an ICPSR data collection or service. |
+| Organization | No | No | Multi-part element; see subfields | An organization associated with an ICPSR data collection or service. |
+| Order | No | No | Number | The order or rank of importance for the PIs associated with the data collection, typically provided to ICPSR by the lead PI. |
+
+##### Person (level 5 heading)
+
+**Description:** A person associated with an ICPSR data collection or service.
+
+**Repeatable**: No
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+###### Sub-Subfields: (level 6 heading)
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| Personal Name | Yes | No | Multi-part element; see subfield definitions | The person's name. |
+| ORCID | No | No | Text | The person's Open Researcher and Contributor ID (ORCID). |
+| Affiliation(s) | No | Yes | Array | The person's affiliated organization(s). |
+| Email Address | No | No | Text | The person's email address. |
+
+_Personal Name_ (level 7 heading)
+
+**Description:** The person's name.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Multi-part element; see subfield definitions
+
+Sub-Sub-Subfields: (level 8 heading)
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| Given Name | Yes | No | Text | The person's first (given) name, which may include a middle name or initial. |
+| Family Name | Yes | No | Text | The person's last (family) name, which may include a suffix (e.g., Jr., Sr., IV). |
+
+
+**Given Name (First Name)** (level 9 heading)
+- **Description:** The person's first (given) name, which may include a middle name or initial.
+- **Required:** Yes
+- **Type:** Text
+- **Examples:**
+ - `Chantel`
+ - `Giannis`
+ - `Mary Kate`
+ - `John Q.`
+
+**Family Name (Last Name)** (level 9 heading)
+- **Description:** The person's last (family) name, which may include a suffix (e.g., Jr., Sr., IV).
+- **Required:** No
+- **Type:** Text
+- **Examples:**
+ - `Smith`
+ - `Jordan Jr.`
+ - `Escobar-Vega`
+
+_ORCID Identifier_ (level 7 heading)
+
+**Description:** The person's Open Researcher and Contributor ID (ORCID).
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"https://orcid.org/0000-0001-6289-1234"
+```
+
+_Affiliation(s)_ (level 7 heading)
+
+**Description:** The person's affiliated organization(s).
+
+**Repeatable**: No
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+Sub-Sub-Subfields: (level 8 heading)
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| Organization Name | Yes | No | Text | The organization's name. |
+| Organization Name Code | No | No | Text | A machine-readable/-actionable form of the organization's name. |
+| Organization Name URI | No | No | Text | The URI for the organization's name. |
+| ROR Identifier | No | No | Text | The organization's Research Organization Registry (ROR) identifier. |
+| Email Address | No | No | Text | The organization's email address. |
+
+_Organization Name_ (level 7 heading)
+
+**Description:** The organization's name.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"Federal Reserve Bank of St. Louis. Research Division"
+```
+
+```json
+"University of Michigan. Institute for Social Research"
+```
+
+_Organization Name Code_ (level 7 heading)
+
+**Description:** A machine-readable/-actionable form of the organization's name.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"1234"
+```
+
+```json
+"2345"
+```
+
+```json
+"3456"
+```
+
+_Organization Name URI_ (level 7 heading)
+
+**Description:** The URI for the organization's name.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+_ROR Identifier_ (level 7 heading)
+
+**Description:** The organization's Research Organization Registry (ROR) identifier.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"https://ror.org/02q7mkh03"
+```
+
+_Email Address_ (level 7 heading)
+
+**Description:** The organization's email address.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"info@example.com"
+```
+
+
+Sub-Sub-Subfields: (level 8 heading)
+
+_Email Address_ (level 7 heading)
+
+**Description:** The person's email address.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"j.doe@example.com"
+```
+
+## Complete Examples (with Subfields):
+
+```json
+{
+ "name": {
+ "given": "Jane Q.",
+ "family": "Doe II"
+ },
+ "orcid": "https://orcid.org/0000-0001-6666-5717",
+ "researcher_passport_profile_id": "1234",
+ "affiliations": [
+ {
+ "name": "Urban Institute",
+ "name_code": "2342",
+ "name_uri": "https://icpsr.example.com/organizations/2342",
+ "ror": "https://ror.org/017pz3h73",
+ "icpsr_org_id": "xyz123"
+ },
+ {
+ "name": "Example University"
+ }
+ ],
+ "email": "jane.doe@example.com"
+}
+```
+
+```json
+{
+ "name": {
+ "given": "Joe"
+ }
+}
+```
+
+
+##### Organization (level 5 heading)
+
+**Description:** An organization associated with an ICPSR data collection or service.
+
+**Repeatable**: No
+
+**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+###### Subfields: (level 6 heading)
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+| -------- | --------- | ----------- | --------------- | ----------- |
+| Organization Name | Yes | No | Text | The organization's name. |
+| Organization Name Code | No | No | Text | A machine-readable/-actionable form of the organization's name. |
+| Organization Name URI | No | No | Text | The URI for the organization's name. |
+| ROR Identifier | No | No | Text | The organization's Research Organization Registry (ROR) identifier. |
+| Email Address | No | No | Text | The organization's email address. |
+
+_Organization Name_ (level 7 heading)
+
+**Description:** The organization's name.
+
+**Required**: Yes
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"Federal Reserve Bank of St. Louis. Research Division"
+```
+
+```json
+"University of Michigan. Institute for Social Research"
+```
+
+_Organization Name Code_ (level 7 heading)
+
+**Description:** A machine-readable/-actionable form of the organization's name.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"1234"
+```
+
+```json
+"2345"
+```
+
+```json
+"3456"
+```
+
+_Organization Name URI_ (level 7 heading)
+
+**Description:** The URI for the organization's name.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+_ROR Identifier_ (level 7 heading)
+
+**Description:** The organization's Research Organization Registry (ROR) identifier.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"https://ror.org/02q7mkh03"
+```
+
+_Email Address_ (level 7 heading)
+
+**Description:** The organization's email address.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Text
+
+**Examples:**
+
+```json
+"info@example.com"
+```
+
+##### Order
+
+**Description:** The order or rank of importance for the PIs associated with the data collection, typically provided to ICPSR by the lead PI.
+
+**Required**: No
+
+**Repeatable**: No
+
+**Accepted Values**: Number
+
+**Examples:**
+
+```json
+0
+```
+
+```json
+1
+```
+
+```json
+2
+```
+
+```json
+3
+```
+
+###### Complete Examples (with Subfields):
+```
+ Personal Principal Investigator
| First Name | Last Name | Affiliation |
|---|
| Veronica | Martinez-Ebers | National Institute for Law and Equity |
| Lawrence F. | Travis III | University of Cincinnati |
+```
+
+```
+ Organizational Principal Investigator
| Name |
|---|
| United States Department of Labor. Bureau of Labor Statistics |
| The Washington Post |
+```
+
diff --git a/rde_schema/rde_markdown_generation.py b/rde_schema/rde_markdown_generation.py
index 4b4eb06..ae0ded4 100644
--- a/rde_schema/rde_markdown_generation.py
+++ b/rde_schema/rde_markdown_generation.py
@@ -4,7 +4,6 @@
from datetime import datetime
import os
-
# ----------------------------
# Utilities
# ----------------------------
@@ -16,23 +15,23 @@ def create_anchor(title):
anchor = anchor.replace('--', '-')
return anchor.strip('-')
+def shorten_multi_part(text):
+ if text == "Multi-part element; see subfield definitions for more information.":
+ return "Multi-part element; see subfields"
+ return text
def describe_schema_type(schema, type_mapping):
if not isinstance(schema, dict):
return "", "No"
-
schema_type = schema.get("type")
-
if schema_type == "array":
items = schema.get("items", {})
item_type = items.get("type")
accepted = type_mapping.get(item_type, item_type or "Array")
return accepted, "Yes"
-
accepted = type_mapping.get(schema_type, schema_type or "")
return accepted, "No"
-
def is_array_of_objects(schema):
return (
schema.get("type") == "array"
@@ -40,7 +39,6 @@ def is_array_of_objects(schema):
and "properties" in schema.get("items", {})
)
-
def extract_from_pointer(doc, pointer_path):
current = doc
for part in pointer_path.split('/'):
@@ -50,30 +48,18 @@ def extract_from_pointer(doc, pointer_path):
return None
return current
-
def resolve_ref(ref_url, schema_refs):
if '#/' in ref_url:
base, pointer = ref_url.split('#/', 1)
doc = schema_refs.get(base) or schema_refs.get(base.split('/version/')[0])
if doc:
return doc, pointer
-
- return (
- schema_refs.get(ref_url)
- or schema_refs.get(ref_url.split('/version/')[0])
- )
-
+ return schema_refs.get(ref_url) or schema_refs.get(ref_url.split('/version/')[0])
# ----------------------------
# Rendering helpers
# ----------------------------
-def shorten_multi_part(text):
- if text == "Multi-part element; see subfield definitions for more information.":
- return "Multi-part element; see subfields"
- return text
-
-
def render_property_header(schema):
title = schema.get('title', 'Untitled')
anchor = create_anchor(title)
@@ -82,23 +68,18 @@ def render_property_header(schema):
f"### {title}\n"
], title, anchor
-
def render_core_metadata(schema, type_mapping):
markdown = []
-
description = schema.get('description', '')
if description:
markdown.append(f"**Description:** {description}\n")
-
accepted, repeatable = describe_schema_type(schema, type_mapping)
-
markdown.append(f"**Repeatable**: {repeatable}\n")
markdown.append(f"**Accepted Values**: {accepted}\n")
-
return markdown, accepted, repeatable, description
-
def build_toc_entry(title, anchor, required, repeatable, accepted_values, description):
+ accepted_values = shorten_multi_part(accepted_values)
return {
'title': title,
'anchor': anchor,
@@ -108,20 +89,25 @@ def build_toc_entry(title, anchor, required, repeatable, accepted_values, descri
'description': description
}
-
def render_subfields(schema, schema_refs, type_mapping):
markdown = []
- items = schema['items']
- properties = items.get('properties', {})
- required = items.get('required', [])
+ # Support both:
+ # - object with properties
+ # - array of objects
+ if schema.get("type") == "array":
+ items = schema['items']
+ properties = items.get('properties', {})
+ required = items.get('required', [])
+ else:
+ properties = schema.get('properties', {})
+ required = schema.get('required', [])
markdown.append("#### Subfields:\n")
markdown.append("| Property | Required? | Repeatable? | Accepted Values | Description |")
markdown.append("| -------- | --------- | ----------- | --------------- | ----------- |")
resolved = {}
-
for name, prop in properties.items():
if '$ref' in prop:
ref = resolve_ref(prop['$ref'], schema_refs)
@@ -135,21 +121,24 @@ def render_subfields(schema, schema_refs, type_mapping):
else:
resolved[name] = prop
+ # Build a map of key -> title for complete examples
+ key_to_title = {k: v.get('title', k) for k, v in resolved.items()}
+
for name, prop in resolved.items():
accepted, repeatable = describe_schema_type(prop, type_mapping)
+ accepted = shorten_multi_part(accepted)
markdown.append(
f"| {prop.get('title', name)} | "
f"{'Yes' if name in required else 'No'} | "
f"{repeatable} | "
- f"{shorten_multi_part(accepted)} | "
+ f"{accepted} | "
f"{prop.get('description', '')} |"
)
-
markdown.append("")
for name, prop in resolved.items():
accepted, _ = describe_schema_type(prop, type_mapping)
-
+ accepted = shorten_multi_part(accepted)
markdown.extend([
f"##### {prop.get('title', name)}\n",
f"**Description:** {prop.get('description', '')}\n",
@@ -157,10 +146,8 @@ def render_subfields(schema, schema_refs, type_mapping):
"**Repeatable**: No\n",
f"**Accepted Values**: {accepted}\n"
])
-
if 'usageNotes' in prop:
markdown.append(f"**Usage Notes:** {prop['usageNotes']}\n")
-
if prop.get('examples'):
markdown.append("**Examples:**\n")
for example in prop['examples']:
@@ -171,8 +158,7 @@ def render_subfields(schema, schema_refs, type_mapping):
markdown.append(json.dumps(example, indent=2))
markdown.append("```\n")
- return markdown
-
+ return markdown, key_to_title
def render_simple_field(schema, required, schema_refs):
markdown = []
@@ -191,52 +177,37 @@ def render_simple_field(schema, required, schema_refs):
elif isinstance(usage, str):
markdown.append(f"**Usage Notes:** {usage}\n")
- if schema.get('examples') and not is_array_of_objects(schema):
+ if schema.get('examples'):
markdown.append("**Examples:**\n")
for ex in schema['examples']:
- markdown.append("```")
- markdown.append(f" {ex}" if isinstance(ex, str) else json.dumps(ex, indent=2))
- markdown.append("```\n")
+ markdown.extend(["```", f"{ex}", "```\n"])
return markdown
-def shorten_multi_part(text):
- if text == "Multi-part element; see subfield definitions for more information.":
- return "Multi-part element; see subfields"
- return text
-
-def render_complete_examples(schema, has_subfields):
- """Render main property-level examples depending on whether subfields exist."""
- examples = schema.get('examples')
- if not examples:
- return []
-
- heading = "###### Complete Examples (with Subfields):" if has_subfields else "**Examples:**"
- markdown = [heading]
-
- for ex_group in examples:
- # ex_group can be a dict, list of dicts, or list of primitives
- if isinstance(ex_group, list):
- for ex_item in ex_group:
- markdown.append("```")
- if isinstance(ex_item, dict):
- for key, value in ex_item.items():
- markdown.append(f" {key}: {value}")
- else:
- markdown.append(f" {ex_item}")
- markdown.append("```\n")
- elif isinstance(ex_group, dict):
- markdown.append("```")
- for key, value in ex_group.items():
- markdown.append(f" {key}: {value}")
- markdown.append("```\n")
- else:
- markdown.append("```")
- markdown.append(f" {ex_group}")
- markdown.append("```\n")
+def render_complete_examples(schema, has_subfields, key_to_title=None):
+ markdown = []
+ if 'examples' not in schema:
+ return markdown
+
+ heading = "###### Complete Examples (with Subfields):" if has_subfields else "**Examples**:"
+ markdown.append(heading)
+
+ for example_group in schema['examples']:
+ markdown.append("```")
+ if isinstance(example_group, list): # array of objects
+ for obj in example_group:
+ for k, v in obj.items():
+ title = key_to_title.get(k, k) if key_to_title else k
+ markdown.append(f" {title}: {v}")
+ elif isinstance(example_group, dict):
+ for k, v in example_group.items():
+ title = key_to_title.get(k, k) if key_to_title else k
+ markdown.append(f" {title}: {v}")
+ else: # primitive example
+ markdown.append(f" {example_group}")
+ markdown.append("```\n")
return markdown
-
# ----------------------------
# Main conversion
# ----------------------------
@@ -262,25 +233,24 @@ def json_schema_to_markdown(schema, property_name=None, required_fields=None, sc
toc_entry = build_toc_entry(title, anchor, required, repeatable, accepted, description)
- has_subfields = is_array_of_objects(schema)
- if has_subfields:
- markdown.extend(render_subfields(schema, schema_refs, type_mapping))
+ if is_array_of_objects(schema) or is_object_with_properties(schema):
+ sub_md, key_to_title = render_subfields(schema, schema_refs, type_mapping)
+ markdown.extend(sub_md)
else:
markdown.extend(render_simple_field(schema, required, schema_refs))
+ key_to_title = None
- # Render main property-level examples
- markdown.extend(render_complete_examples(schema, has_subfields))
+ # Render property-level examples
+ markdown.extend(render_complete_examples(schema, is_array_of_objects(schema), key_to_title))
return '\n'.join(markdown), toc_entry
-
# ----------------------------
# Folder processing
# ----------------------------
def load_all_schemas(property_folder, skip_files, notes_folder=None):
refs = {}
-
for path in Path(property_folder).glob('*.json'):
if path.name in skip_files:
continue
@@ -297,7 +267,6 @@ def load_all_schemas(property_folder, skip_files, notes_folder=None):
return refs
-
def process_json_folder(property_folder, output_file, notes_folder=None):
skip_files = {
"common_data_elements.json",
@@ -337,9 +306,10 @@ def process_json_folder(property_folder, output_file, notes_folder=None):
all_md.append("| -------- | --------- | ----------- | --------------- | ----------- |")
for e in toc:
+ accepted_display = shorten_multi_part(e['accepted_values'])
all_md.append(
f"| [{e['title']}](#{e['anchor']}) | {e['required']} | {e['repeatable']} | "
- f"{shorten_multi_part(e['accepted_values'])} | {e['description']} |"
+ f"{accepted_display} | {e['description']} |"
)
all_md.append("\n---\n## Metadata Elements: Detailed Information\n")
@@ -351,17 +321,15 @@ def process_json_folder(property_folder, output_file, notes_folder=None):
Path(output_file).write_text('\n'.join(all_md), encoding='utf-8')
print(f"\nSuccessfully generated: {output_file}")
-
# ----------------------------
# Entry point
# ----------------------------
if __name__ == "__main__":
-
main_dir = "C:/icpsr_github/metadata/rde_schema"
process_json_folder(
- property_folder = os.path.join(main_dir, "property_bank"),
+ property_folder=os.path.join(main_dir, "property_bank"),
notes_folder=os.path.join(main_dir, "notes"),
output_file=os.path.join(main_dir, "icpsr_rde_schema.md")
- )
+ )
\ No newline at end of file
From 4b6ab42399a7572a17e1fdd960cdd6db20f453a1 Mon Sep 17 00:00:00 2001
From: Mike Shallcross
Date: Tue, 10 Feb 2026 14:02:32 -0500
Subject: [PATCH 007/119] PI issues
---
rde_schema/pi_issues.md | 35 -----------------------------------
1 file changed, 35 deletions(-)
diff --git a/rde_schema/pi_issues.md b/rde_schema/pi_issues.md
index e8398be..d3e7858 100644
--- a/rde_schema/pi_issues.md
+++ b/rde_schema/pi_issues.md
@@ -207,41 +207,6 @@ _Email Address_ (level 7 heading)
"j.doe@example.com"
```
-## Complete Examples (with Subfields):
-
-```json
-{
- "name": {
- "given": "Jane Q.",
- "family": "Doe II"
- },
- "orcid": "https://orcid.org/0000-0001-6666-5717",
- "researcher_passport_profile_id": "1234",
- "affiliations": [
- {
- "name": "Urban Institute",
- "name_code": "2342",
- "name_uri": "https://icpsr.example.com/organizations/2342",
- "ror": "https://ror.org/017pz3h73",
- "icpsr_org_id": "xyz123"
- },
- {
- "name": "Example University"
- }
- ],
- "email": "jane.doe@example.com"
-}
-```
-
-```json
-{
- "name": {
- "given": "Joe"
- }
-}
-```
-
-
##### Organization (level 5 heading)
**Description:** An organization associated with an ICPSR data collection or service.
From f7924040641e6fbe75f959aef650cac34e5c16ee Mon Sep 17 00:00:00 2001
From: Mike Shallcross
Date: Tue, 10 Feb 2026 14:09:48 -0500
Subject: [PATCH 008/119] PI issues
---
rde_schema/pi_issues.md | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/rde_schema/pi_issues.md b/rde_schema/pi_issues.md
index d3e7858..1332901 100644
--- a/rde_schema/pi_issues.md
+++ b/rde_schema/pi_issues.md
@@ -339,12 +339,3 @@ _Email Address_ (level 7 heading)
3
```
-###### Complete Examples (with Subfields):
-```
- Personal Principal Investigator
| First Name | Last Name | Affiliation |
|---|
| Veronica | Martinez-Ebers | National Institute for Law and Equity |
| Lawrence F. | Travis III | University of Cincinnati |
-```
-
-```
- Organizational Principal Investigator
| Name |
|---|
| United States Department of Labor. Bureau of Labor Statistics |
| The Washington Post |
-```
-
From 5184d0c1a706f5d80ce44825bc1c5679545d4db0 Mon Sep 17 00:00:00 2001
From: Mike Shallcross
Date: Fri, 6 Mar 2026 17:32:10 -0500
Subject: [PATCH 009/119] updated documentation example and code
---
rde_schema/icpsr_rde_schema.md | 3133 ++++++++---------
rde_schema/property_bank/person.json | 7 +-
rde_schema/rde_markdown_generation.py | 570 ++-
.../rde_markdown_generation_examples.py | 376 ++
4 files changed, 2124 insertions(+), 1962 deletions(-)
create mode 100644 rde_schema/rde_markdown_generation_examples.py
diff --git a/rde_schema/icpsr_rde_schema.md b/rde_schema/icpsr_rde_schema.md
index 2fe6aee..9f0137f 100644
--- a/rde_schema/icpsr_rde_schema.md
+++ b/rde_schema/icpsr_rde_schema.md
@@ -1,11 +1,11 @@
-# DRAFT ICPSR RDE Metadata Schema Documentation
+# ICPSR RDE Metadata Schema
-Last updated: February 04, 2026
+Last updated: March 06, 2026
-## Metadata Elements: Overview
+## Overview
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
+|---|---|---|---|---|
| [Alternate Titles](#alternate-titles) | No | Yes | Text | The alternate name(s) or acronym(s) commonly used to refer to the data collection. |
| [Citation](#citation) | No | No | Text | The official way to reference the data collection in writing. |
| [Collection Dates](#collection-dates) | No | Yes | Multi-part element; see subfields | The date(s) when the data were physically collected. |
@@ -16,11 +16,11 @@ Last updated: February 04, 2026
| [External Data Sources](#external-data-sources) | No | Yes | Text | The source of the data, when that source is external to the data collection and can be independently cited. |
| [Funding Sources](#funding-sources) | No | Yes | Multi-part element; see subfields | The sources of funding that supported the data collection. |
| [General Data Formats](#general-data-formats) | No | Yes | Multi-part element; see subfields | The file format types present in the data collection. |
-| [Geographic Coverage Areas](#geographic-coverage-areas) | No | Yes | Multi-part element; see subfields | The geographic locations where the data refer or are related. |
-| [ICPSR Subject Terms](#icpsr-subject-terms) | No | Yes | Multi-part element; see subfields | A controlled list of social science terms maintained by ICPSR and used to indicate topics related to the data collection. |
-| [Journal of Economic Literature (JEL) Classification Codes](#journal-of-economic-literature-jel-classification-codes) | No | Yes | Multi-part element; see subfields | Classification codes used to categorize economic research. |
+| [Geographic Coverage Areas](#geographic-coverage-areas) | Yes | Yes | Multi-part element; see subfields | The geographic locations where the data refer or are related. |
+| [ICPSR Subject Terms](#icpsr-subject-terms) | Yes | Yes | Multi-part element; see subfields | A controlled list of social science terms maintained by ICPSR and used to indicate topics related to the data collection. |
+| [Journal of Economic Literature (JEL) Classification Codes](#journal-of-economic-literature-(jel)-classification-codes) | No | Yes | Multi-part element; see subfields | Classification codes used to categorize economic research. |
| [License](#license) | No | No | Multi-part element; see subfields | A license governing the data's use. |
-| [Medical Subject Headings (MeSH) Terms](#medical-subject-headings-mesh-terms) | No | Yes | Multi-part element; see subfields | Biomedical and health-related terms from the National Library of Medicine that describe the data collection's topics. |
+| [Medical Subject Headings (MeSH) Terms](#medical-subject-headings-(mesh)-terms) | No | Yes | Multi-part element; see subfields | Biomedical and health-related terms from the National Library of Medicine that describe the data collection's topics. |
| [Nationally Representative Sample](#nationally-representative-sample) | No | No | Text | Indicates whether the data collection uses a sampling design intended to represent the demographics, behaviors, and/or characteristics of the entire nation. This typically involves probability-based methods that allow generalization. It does not include convenience samples that appear similar to the nation by chance. |
| [Notes](#notes) | No | Yes | Text | Important details about the data collection (like unique authoring, discrepancies, or processing information) that can't be recorded in other metadata elements. |
| [Organization](#organization) | No | No | Multi-part element; see subfields | An organization associated with an ICPSR data collection or service. |
@@ -34,10 +34,10 @@ Last updated: February 04, 2026
| [Smallest Geographic Unit](#smallest-geographic-unit) | No | No | Multi-part element; see subfields | The smallest geographic unit (e.g., state or census tract) used in the dataset. |
| [Software Applications](#software-applications) | No | Yes | Multi-part element; see subfields | Software used by the principal investigator(s) to collect or analyze data, required to understand how the data were obtained or to reproduce results. |
| [Study Design](#study-design) | No | No | Text | The procedures used to contact participants and gather data. |
-| [Summary](#summary) | No | No | Text | A description of the data collection that helps users understand its purpose, substance, and key topics. |
+| [Summary](#summary) | Yes | No | Text | A description of the data collection that helps users understand its purpose, substance, and key topics. |
| [Time Methods](#time-methods) | No | Yes | Multi-part element; see subfields | The methods used to collect data over time, like snapshots at one point (cross-sectional) or repeatedly (longitudinal) to study changes or trends |
-| [Time Periods](#time-periods) | No | Yes | Multi-part element; see subfields | The time period(s) to which the data refer, regardless of when the data were collected. |
-| [Title](#title) | No | No | Text | The official title that describes what the data collection is about, its geographic scope, and the time period it covered. |
+| [Time Periods](#time-periods) | Yes | Yes | Multi-part element; see subfields | The time period(s) to which the data refer, regardless of when the data were collected. |
+| [Title](#title) | Yes | No | Text | The official title that describes what the data collection is about, its geographic scope, and the time period it covered. |
| [Units of Analysis](#units-of-analysis) | No | Yes | Multi-part element; see subfields | The object(s) of analysis for the data collection, such as an organization, individual, or household. |
| [Universe](#universe) | No | No | Text | The total group of persons or other entities (e.g., households or organizations) that were the object of research and to which analytic results refer. |
| [Variable Description](#variable-description) | No | No | Text | Significant variables (particularly demographic variables) in the data files. |
@@ -45,58 +45,32 @@ Last updated: February 04, 2026
| [Weights](#weights) | No | No | Text | The weight variables and the criteria for using them in data analysis or other information about how the data are weighted if no weight variables are present. |
---
-## Metadata Elements: Detailed Information
+## Properties
### Alternate Titles
-**Description:** The alternate name(s) or acronym(s) commonly used to refer to the data collection.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Text
+**Description:** The alternate name(s) or acronym(s) commonly used to refer to the data collection.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Text
**Examples:**
-```
-[
- "Add Health Parent Study"
-]
-```
-
-```
-[
- "FACES 2009"
-]
-```
-
-```
-[
- "Survey of Consumers"
-]
-```
-
-```
-[
- "Eurobarometer 85.2"
-]
-```
-
-**Examples:**
-```
- Add Health Parent Study
+```yaml
+- Add Health Parent Study
```
-```
- FACES 2009
+```yaml
+- FACES 2009
```
-```
- Survey of Consumers
+```yaml
+- Survey of Consumers
```
-```
- Eurobarometer 85.2
+```yaml
+- Eurobarometer 85.2
```
@@ -105,31 +79,20 @@ Last updated: February 04, 2026
### Citation
-**Description:** The official way to reference the data collection in writing.
-
-**Repeatable**: No
-
-**Accepted Values**: Text
-
-**Usage Notes:** The Citation is dynamically assembled from other entry fields in this format: PI (list). Title. Distributor (list), Issued Date. DOI. Note: ICPSR 'union catalog' records (i.e., external resource to which ICPSR links as a courtesy) do not have citations.
+**Description:** The official way to reference the data collection in writing.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+**Usage Notes:** The Citation is dynamically assembled from other entry fields in this format: PI (list). Title. Distributor (list), Issued Date. DOI. Note: ICPSR 'union catalog' records (i.e., external resource to which ICPSR links as a courtesy) do not have citations.
**Examples:**
-```
- University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1
-```
-
-```
- United States Department of Justice. Office of Justice Programs. Office of Juvenile Justice and Delinquency Prevention. Juvenile Residential Facility Census, 2020 [United States]. Inter-university Consortium for Political and Social Research [distributor], 2024-07-15. https://doi.org/10.3886/ICPSR38914.v1
-```
-
-**Examples:**
-```
- University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1
+```text
+University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1
```
-```
- United States Department of Justice. Office of Justice Programs. Office of Juvenile Justice and Delinquency Prevention. Juvenile Residential Facility Census, 2020 [United States]. Inter-university Consortium for Political and Social Research [distributor], 2024-07-15. https://doi.org/10.3886/ICPSR38914.v1
+```text
+United States Department of Justice. Office of Justice Programs. Office of Juvenile Justice and Delinquency Prevention. Juvenile Residential Facility Census, 2020 [United States]. Inter-university Consortium for Political and Social Research [distributor], 2024-07-15. https://doi.org/10.3886/ICPSR38914.v1
```
@@ -138,100 +101,90 @@ Last updated: February 04, 2026
### Collection Dates
-**Description:** The date(s) when the data were physically collected.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** The date(s) when the data were physically collected.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| Start Date | Yes | No | Text | The start date of the data collection period. Must be in YYYY-MM-DD, YYYY-MM, or YYYY format with no spaces. |
-| End Date | Yes | No | Text | The end date of the data collection period. Must be in YYYY-MM-DD, YYYY-MM, or YYYY format with no spaces. |
-| Time Frame | No | No | Text | An optional free-text description of the data collection period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present. |
+|---|---|---|---|---|
+| [Start Date](#collection-dates_start_date) | Yes | No | Text | The start date of the data collection period. Must be in YYYY-MM-DD, YYYY-MM, or YYYY format with no spaces. |
+| [End Date](#collection-dates_end_date) | Yes | No | Text | The end date of the data collection period. Must be in YYYY-MM-DD, YYYY-MM, or YYYY format with no spaces. |
+| [Time Frame](#collection-dates_time_frame) | No | No | Text | An optional free-text description of the data collection period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present. |
+
##### Start Date
-**Description:** The start date of the data collection period. Must be in YYYY-MM-DD, YYYY-MM, or YYYY format with no spaces.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** The start date of the data collection period. Must be in YYYY-MM-DD, YYYY-MM, or YYYY format with no spaces.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"2000"
+```text
+2000
```
-```json
-"2019-10"
+```text
+2019-10
```
-```json
-"2021-03-01"
+```text
+2021-03-01
```
+
##### End Date
-**Description:** The end date of the data collection period. Must be in YYYY-MM-DD, YYYY-MM, or YYYY format with no spaces.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** The end date of the data collection period. Must be in YYYY-MM-DD, YYYY-MM, or YYYY format with no spaces.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"2000"
+```text
+2000
```
-```json
-"2019-10"
+```text
+2019-10
```
-```json
-"2021-03-01"
+```text
+2021-03-01
```
+
##### Time Frame
-**Description:** An optional free-text description of the data collection period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present.
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
-
-**Usage Notes:** The Time Frame should not simply restate the date(s) in words. For example, if the Collection Date starts in 2020-01, the Time Frame should repeat 'January 2020'.
+**Description:** An optional free-text description of the data collection period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+**Usage Notes:** The Time Frame should not simply restate the date(s) in words. For example, if the Collection Date starts in 2020-01, the Time Frame should repeat 'January 2020'.
**Examples:**
-```json
-"Fall 2001"
+```text
+Fall 2001
```
-```json
-"Student data"
+```text
+Student data
```
-###### Complete Examples (with Subfields):
-```
- start_date: 2018
- end_date: 2018
- time_frame: Summer and Fall 2018
-```
+###### Complete Collection Dates Examples (with Subfields):
-```
- start_date: 2020-10
- end_date: 2020-10
+```yaml
+- Start Date: '2018'
+ End Date: '2018'
+ Time Frame: Summer and Fall 2018
+
+- Start Date: 2020-10
+ End Date: 2020-10
```
@@ -240,95 +193,86 @@ Last updated: February 04, 2026
### Collection Modes
-**Description:** The method(s) or procedure(s) used to collect the data.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** The method(s) or procedure(s) used to collect the data.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
+**Usage Notes:** This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV ModeOfCollection https://rdf-vocabulary.ddialliance.org/ddi-cv/ModeOfCollection/4.0.3/ModeOfCollection.html.
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| Collection Mode | Yes | No | Text | A human-readable form of the term. |
-| Collection Mode Code | Yes | No | Text | A machine-readable/-actionable form of the term. |
-| Collection Mode URI | Yes | No | Text | The URI for the term. |
+|---|---|---|---|---|
+| [Collection Mode](#collection-modes_label) | Yes | No | Text | A human-readable form of the term. |
+| [Collection Mode Code](#collection-modes_code) | Yes | No | Text | A machine-readable/-actionable form of the term. |
+| [Collection Mode URI](#collection-modes_uri) | Yes | No | Text | The URI for the term. |
+
##### Collection Mode
-**Description:** A human-readable form of the term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A human-readable form of the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"Face-to-face interview: Computer-assisted (CAPI/CAMI)"
+```text
+Face-to-face interview: Computer-assisted (CAPI/CAMI)
```
-```json
-"Measurements and tests"
+```text
+Measurements and tests
```
-```json
-"Computer-based observation"
+```text
+Computer-based observation
```
+
##### Collection Mode Code
-**Description:** A machine-readable/-actionable form of the term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A machine-readable/-actionable form of the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"Interview.FaceToFace.CAPIorCAMI"
+```text
+Interview.FaceToFace.CAPIorCAMI
```
-```json
-"MeasurementsAndTests"
+```text
+MeasurementsAndTests
```
-```json
-"Observation.ComputerBased"
+```text
+Observation.ComputerBased
```
+
##### Collection Mode URI
-**Description:** The URI for the term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** The URI for the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
+###### Complete Collection Modes Examples (with Subfields):
-###### Complete Examples (with Subfields):
-```
- label: Face-to-face interview: Computer-assisted (CAPI/CAMI)
- code: Interview.FaceToFace.CAPIorCAMI
- uri: https://example.com/collection_modes/234
+```yaml
+- Collection Mode: 'Face-to-face interview: Computer-assisted (CAPI/CAMI)'
+ Collection Mode Code: Interview.FaceToFace.CAPIorCAMI
+ Collection Mode URI: https://example.com/collection_modes/234
```
-```
- label: Measurements and tests
- code: MeasurementsAndTests
- uri: https://example.com/collection_modes/972
-```
+```yaml
+- Collection Mode: Measurements and tests
+ Collection Mode Code: MeasurementsAndTests
+ Collection Mode URI: https://example.com/collection_modes/972
-```
- label: Computer-based observation
- code: Observation.ComputerBased
- uri: https://example.com/collection_modes/113
+- Collection Mode: Computer-based observation
+ Collection Mode Code: Observation.ComputerBased
+ Collection Mode URI: https://example.com/collection_modes/113
```
@@ -337,21 +281,15 @@ Last updated: February 04, 2026
### Data Management Plan
-**Description:** A link to the data management plan (preferably a persistent identifier such as a DOI).
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A link to the data management plan (preferably a persistent identifier such as a DOI).
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```
- https://doi.org/10.1000/182
-```
-
-**Examples:**
-```
- https://doi.org/10.1000/182
+```text
+https://doi.org/10.1000/182
```
@@ -360,95 +298,86 @@ Last updated: February 04, 2026
### Data Source Types
-**Description:** The source(s) of the data as collected by the Principal Investigators.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** The source(s) of the data as collected by the Principal Investigators.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
+**Usage Notes:** This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV DataSourceType https://rdf-vocabulary.ddialliance.org/ddi-cv/DataSourceType/1.0.2/DataSourceType.html.
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| Data Source Type | Yes | No | Text | A human-readable form of the term. |
-| Data Source Type Code | Yes | No | Text | A machine-readable/-actionable form of the term. |
-| Data Source Type URI | Yes | No | Text | The URI for the term. |
+|---|---|---|---|---|
+| [Data Source Type](#data-source-types_label) | Yes | No | Text | A human-readable form of the term. |
+| [Data Source Type Code](#data-source-types_code) | Yes | No | Text | A machine-readable/-actionable form of the term. |
+| [Data Source Type URI](#data-source-types_uri) | Yes | No | Text | The URI for the term. |
+
##### Data Source Type
-**Description:** A human-readable form of the term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A human-readable form of the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"Registers/Records/Accounts: Medical/Clinical"
+```text
+Registers/Records/Accounts: Medical/Clinical
```
-```json
-"Events/Interactions"
+```text
+Events/Interactions
```
-```json
-"Other"
+```text
+Other
```
+
##### Data Source Type Code
-**Description:** A machine-readable/-actionable form of the term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A machine-readable/-actionable form of the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"RegistersRecordsAccounts.MedicalClinical"
+```text
+RegistersRecordsAccounts.MedicalClinical
```
-```json
-"EventsInteractions"
+```text
+EventsInteractions
```
-```json
-"Other"
+```text
+Other
```
+
##### Data Source Type URI
-**Description:** The URI for the term.
+**Description:** The URI for the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
+###### Complete Data Source Types Examples (with Subfields):
-**Required**: Yes
+```yaml
+- Data Source Type: 'Registers/Records/Accounts: Medical/Clinical'
+ Data Source Type Code: RegistersRecordsAccounts.MedicalClinical
+ Data Source Type URI: https://example.com/data_source_type/123
-**Repeatable**: No
-
-**Accepted Values**: Text
-
-###### Complete Examples (with Subfields):
-```
- label: Registers/Records/Accounts: Medical/Clinical
- code: RegistersRecordsAccounts.MedicalClinical
- uri: https://example.com/data_source_type/123
-```
-
-```
- label: Events/Interactions
- code: EventsInteractions
- uri: https://example.com/data_source_type/234
+- Data Source Type: Events/Interactions
+ Data Source Type Code: EventsInteractions
+ Data Source Type URI: https://example.com/data_source_type/234
```
-```
- label: Other
- code: Other
- uri: https://example.com/data_source_type/737
+```yaml
+- Data Source Type: Other
+ Data Source Type Code: Other
+ Data Source Type URI: https://example.com/data_source_type/737
```
@@ -457,85 +386,83 @@ Last updated: February 04, 2026
### Distributors
-**Description:** The organization(s) responsible for distributing the data collection.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** The organization(s) responsible for distributing the data collection.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| Organization | Yes | No | Multi-part element; see subfields | An organization associated with an ICPSR data collection or service. |
-| Order | Yes | No | Number | The order of importance for the distributors of the data collection. |
+|---|---|---|---|---|
+| [Organization](#distributors_organization) | Yes | No | Object | See the [Organization](#organization) property. |
+| [Order](#distributors_order) | Yes | No | Number | The order of importance for the distributors of the data collection. |
+
##### Organization
-**Description:** An organization associated with an ICPSR data collection or service.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
-**Examples:**
-
-```json
-{
- "name": "Urban Institute",
- "name_code": "1234",
- "name_uri": "https://icpsr.example.com/organizations/1234",
- "ror": "https://ror.org/017pz3h73",
- "email": "info@urban.institute"
-}
-```
-
+**Description:** See the [Organization](#organization) property.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** See the [Organization](#organization) property
+
##### Order
-**Description:** The order of importance for the distributors of the data collection.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Number
-
-**Usage Notes:** A value of '0' indicates the primary distributor, '1' the second, and so forth.
+**Description:** The order of importance for the distributors of the data collection.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Number
+**Usage Notes:** A value of '0' indicates the primary distributor, '1' the second, and so forth.
**Examples:**
-```json
+```yaml
0
+...
+
```
-```json
+```yaml
1
+...
+
```
-```json
+```yaml
2
+...
+
```
-```json
+```yaml
3
-```
+...
-###### Complete Examples (with Subfields):
-```
- organization: {'name': 'Inter-university Consortium for Political and Social Research', 'name_code': '1234', 'name_uri': 'https://icpsr.example.com/organizations/1234', 'ror': 'https://ror.org/017pz3h73'}
- order: 0
```
-```
- organization: {'name': 'GESIS', 'name_code': '2345', 'name_uri': 'https://icpsr.example.com/organizations/2345', 'ror': 'https://ror.org/018afyw53'}
- order: 1
-```
+###### Complete Distributors Examples (with Subfields):
+
+```yaml
+- Organization:
+ Name: Inter-university Consortium for Political and Social Research
+ Name Code: '1234'
+ Name Uri: https://icpsr.example.com/organizations/1234
+ Ror: https://ror.org/017pz3h73
+ Order: 0
+- Organization:
+ Name: GESIS
+ Name Code: '2345'
+ Name Uri: https://icpsr.example.com/organizations/2345
+ Ror: https://ror.org/018afyw53
+ Order: 1
```
- organization: {'name': 'Roper Center for Public Opinion Research', 'name_code': '1234', 'name_uri': 'https://icpsr.example.com/organizations/1234'}
- order: 0
+
+```yaml
+- Organization:
+ Name: Roper Center for Public Opinion Research
+ Name Code: '1234'
+ Name Uri: https://icpsr.example.com/organizations/1234
+ Order: 0
```
@@ -544,50 +471,26 @@ Last updated: February 04, 2026
### External Data Sources
-**Description:** The source of the data, when that source is external to the data collection and can be independently cited.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Text
-
-**Usage Notes:** External data sources include books, journal articles, administrative records, agency-sponsored surveys, and machine-readable files. Each source includes at minimum the title, author, publication year, and journal (if applicable). Any citation format is accepted.
+**Description:** The source of the data, when that source is external to the data collection and can be independently cited.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Text
+**Usage Notes:** External data sources include books, journal articles, administrative records, agency-sponsored surveys, and machine-readable files. Each source includes at minimum the title, author, publication year, and journal (if applicable). Any citation format is accepted.
**Examples:**
-```
-[
- "'Voting Scores.' Congressional Quarterly Almanac 33 (1977), 487-498"
-]
-```
-
-```
-[
- "United States Bureau of the Census Economic Surveys, 1998-2000",
- "United States Congressional Record, 1989"
-]
-```
-
-```
-[
- "Annual Company Organization Survey, 2003"
-]
-```
-
-**Examples:**
-```
- 'Voting Scores.' Congressional Quarterly Almanac 33 (1977), 487-498
+```yaml
+- '''Voting Scores.'' Congressional Quarterly Almanac 33 (1977), 487-498'
```
-```
- United States Bureau of the Census Economic Surveys, 1998-2000
-```
+```yaml
+- United States Bureau of the Census Economic Surveys, 1998-2000
-```
- United States Congressional Record, 1989
+- United States Congressional Record, 1989
```
-```
- Annual Company Organization Survey, 2003
+```yaml
+- Annual Company Organization Survey, 2003
```
@@ -596,96 +499,138 @@ Last updated: February 04, 2026
### Funding Sources
-**Description:** The sources of funding that supported the data collection.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** The sources of funding that supported the data collection.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| Organization | Yes | No | Multi-part element; see subfields | An organization associated with an ICPSR data collection or service. |
-| Funding Awards | No | Yes | Multi-part element; see subfields | Financial support for the data collection. |
-| Order | Yes | No | Number | Internal ICPSR field used to determine the order of importance for the funders associated with the data collection. |
+|---|---|---|---|---|
+| [Organization](#funding-sources_organization) | Yes | No | Object | See the [Organization](#organization) property. |
+| [Funding Awards](#funding-sources_grants) | No | Yes | Multi-part element; see subfields | Financial support for the data collection. |
+| [Order](#funding-sources_order) | Yes | No | Number | Internal ICPSR field used to determine the order of importance for the funders associated with the data collection. |
+
##### Organization
-**Description:** An organization associated with an ICPSR data collection or service.
+**Description:** See the [Organization](#organization) property.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** See the [Organization](#organization) property
+
+##### Funding Awards
+
+**Description:** Financial support for the data collection.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
+##### Subfields:
-**Required**: Yes
+| Property | Required? | Repeatable? | Accepted Values | Description |
+|---|---|---|---|---|
+| [Funding Identifier](#funding-sources_grants_grant_number) | Yes | No | Text | The unique identifier for the funding (e.g., ABC-0123456. |
+| [Funding URL](#funding-sources_grants_grant_uri) | No | No | Text | A unique identifier (URL), preferably a persistent one like a DOI, linking to a landing page with funding information. |
-**Repeatable**: No
+
+###### Funding Identifier
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
+**Description:** The unique identifier for the funding (e.g., ABC-0123456.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-{
- "name": "Urban Institute",
- "name_code": "1234",
- "name_uri": "https://icpsr.example.com/organizations/1234",
- "ror": "https://ror.org/017pz3h73",
- "email": "info@urban.institute"
-}
+```text
+SES-1835721
```
-##### Funding Awards
-
-**Description:** Financial support for the data collection.
-
-**Required**: No
+```text
+MDR-8550085
+```
-**Repeatable**: No
+```text
+40791
+```
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+###### Funding URL
-##### Order
+**Description:** A unique identifier (URL), preferably a persistent one like a DOI, linking to a landing page with funding information.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
-**Description:** Internal ICPSR field used to determine the order of importance for the funders associated with the data collection.
+**Examples:**
-**Required**: Yes
+```text
+https://doi.org/10.35802/212242
+```
-**Repeatable**: No
+
+##### Order
-**Accepted Values**: Number
+**Description:** Internal ICPSR field used to determine the order of importance for the funders associated with the data collection.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Number
**Examples:**
-```json
+```yaml
0
+...
+
```
-```json
+```yaml
1
+...
+
```
-```json
+```yaml
2
+...
+
```
-```json
+```yaml
3
-```
+...
-###### Complete Examples (with Subfields):
-```
- organization: {'name': 'Robert Wood Johnson Foundation', 'name_code': '5643', 'name_uri': 'https://icpsr.example.com/organizations/5643', 'ror': 'https://ror.org/02ymmdj85'}
- grants: [{'grant_number': 'MDR-8550085'}, {'grant_number': 'MDR-8550204'}]
- order: 0
```
-```
- organization: {'name': 'United States Department of Justice. Office of Justice Programs. Bureau of Justice Statistics', 'name_code': '2342', 'name_uri': 'https://icpsr.example.com/organizations/2342', 'ror': 'https://ror.org/0006s4z66'}
- grants: [{'grant_number': 'SES-1835721', 'grant_uri': 'https://doi.org/10.35802/000000'}]
- order: 1
-```
+###### Complete Funding Sources Examples (with Subfields):
+
+```yaml
+- Organization:
+ Name: Robert Wood Johnson Foundation
+ Name Code: '5643'
+ Name Uri: https://icpsr.example.com/organizations/5643
+ Ror: https://ror.org/02ymmdj85
+ Funding Awards:
+ - Funding Identifier: MDR-8550085
+ - Funding Identifier: MDR-8550204
+ Order: 0
+- Organization:
+ Name: United States Department of Justice. Office of Justice Programs. Bureau
+ of Justice Statistics
+ Name Code: '2342'
+ Name Uri: https://icpsr.example.com/organizations/2342
+ Ror: https://ror.org/0006s4z66
+ Funding Awards:
+ - Funding Identifier: SES-1835721
+ Funding URL: https://doi.org/10.35802/000000
+ Order: 1
```
- organization: {'name': 'Acme Foundation'}
- order: 0
+
+```yaml
+- Organization:
+ Name: Acme Foundation
+ Order: 0
```
@@ -694,95 +639,86 @@ Last updated: February 04, 2026
### General Data Formats
-**Description:** The file format types present in the data collection.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** The file format types present in the data collection.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
+**Usage Notes:** This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV GeneralDataFormat https://rdf-vocabulary.ddialliance.org/ddi-cv/GeneralDataFormat/2.0.3/GeneralDataFormat.html.
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| General Data Format | Yes | No | Text | A human-readable form of the term. |
-| General Data Format Code | Yes | No | Text | A machine-readable/-actionable form of the term. |
-| General Data Format URI | Yes | No | Text | The URI for the term. |
+|---|---|---|---|---|
+| [General Data Format](#general-data-formats_label) | Yes | No | Text | A human-readable form of the term. |
+| [General Data Format Code](#general-data-formats_code) | Yes | No | Text | A machine-readable/-actionable form of the term. |
+| [General Data Format URI](#general-data-formats_uri) | Yes | No | Text | The URI for the term. |
+
##### General Data Format
-**Description:** A human-readable form of the term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A human-readable form of the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"Text"
+```text
+Text
```
-```json
-"Still image"
+```text
+Still image
```
-```json
-"Numeric"
+```text
+Numeric
```
+
##### General Data Format Code
-**Description:** A machine-readable/-actionable form of the term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A machine-readable/-actionable form of the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"Text"
+```text
+Text
```
-```json
-"StillImage"
+```text
+StillImage
```
-```json
-"Numeric"
+```text
+Numeric
```
+
##### General Data Format URI
-**Description:** The URI for the term.
-
-**Required**: Yes
-
-**Repeatable**: No
+**Description:** The URI for the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
+###### Complete General Data Formats Examples (with Subfields):
-**Accepted Values**: Text
+```yaml
+- General Data Format: Text
+ General Data Format Code: Text
+ General Data Format URI: https://example.com/general_data_format/972
-###### Complete Examples (with Subfields):
-```
- label: Text
- code: Text
- uri: https://example.com/general_data_format/972
-```
-
-```
- label: Still image
- code: StillImage
- uri: https://example.com/general_data_format/234
+- General Data Format: Still image
+ General Data Format Code: StillImage
+ General Data Format URI: https://example.com/general_data_format/234
```
-```
- label: Numeric
- code: Numeric
- uri: https://example.com/general_data_format/563
+```yaml
+- General Data Format: Numeric
+ General Data Format Code: Numeric
+ General Data Format URI: https://example.com/general_data_format/563
```
@@ -791,155 +727,143 @@ Last updated: February 04, 2026
### Geographic Coverage Areas
-**Description:** The geographic locations where the data refer or are related.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** The geographic locations where the data refer or are related.
+**Required:** Yes
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
+**Usage Notes:** In addition to the total geographic scope of the data, may include any additional levels of geographic coding provided in the variables.
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| City | No | No | Text | A town, city, or similar political entity covered in a data collection |
-| County | No | No | Text | A county or similar administrative area covered in a data collection |
-| State | No | No | Text | A state, province, canton or similar political entity covered in a data collection |
-| Country | Yes | No | Text | A country covered in a data collection |
-| Geographic Coverage Area URI | No | No | Text | The unique identifier for the geographic coverage area. |
-
+|---|---|---|---|---|
+| [City](#geographic-coverage-areas_city) | No | No | Text | A town, city, or similar political entity covered in a data collection |
+| [County](#geographic-coverage-areas_county) | No | No | Text | A county or similar administrative area covered in a data collection |
+| [State](#geographic-coverage-areas_state) | No | No | Text | A state, province, canton or similar political entity covered in a data collection |
+| [Country](#geographic-coverage-areas_country) | Yes | No | Text | A country covered in a data collection |
+| [Geographic Coverage Area URI](#geographic-coverage-areas_uri) | No | No | Text | The unique identifier for the geographic coverage area. |
+
+
##### City
-**Description:** A town, city, or similar political entity covered in a data collection
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A town, city, or similar political entity covered in a data collection
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"Ann Arbor"
+```text
+Ann Arbor
```
-```json
-"Hanover"
+```text
+Hanover
```
-```json
-"Chongqing"
+```text
+Chongqing
```
+
##### County
-**Description:** A county or similar administrative area covered in a data collection
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A county or similar administrative area covered in a data collection
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"Monroe County"
+```text
+Monroe County
```
-```json
-"Washtenaw County"
+```text
+Washtenaw County
```
-```json
-"Cuyahoga County"
+```text
+Cuyahoga County
```
+
##### State
-**Description:** A state, province, canton or similar political entity covered in a data collection
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A state, province, canton or similar political entity covered in a data collection
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"Michigan"
+```text
+Michigan
```
-```json
-"Manitoba"
+```text
+Manitoba
```
-```json
-"Yunnan"
+```text
+Yunnan
```
+
##### Country
-**Description:** A country covered in a data collection
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A country covered in a data collection
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"United States"
+```text
+United States
```
-```json
-"China"
+```text
+China
```
-```json
-"Ghana"
+```text
+Ghana
```
+
##### Geographic Coverage Area URI
-**Description:** The unique identifier for the geographic coverage area.
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** The unique identifier for the geographic coverage area.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"https://www.geonames.org/4990729/"
+```text
+https://www.geonames.org/4990729/
```
-```json
-"https://www.geonames.org/6269554"
+```text
+https://www.geonames.org/6269554
```
-###### Complete Examples (with Subfields):
-```
- city: Cleveland
- state: Ohio
- country: United States
- uri: https://www.geonames.org/5150529
-```
+###### Complete Geographic Coverage Areas Examples (with Subfields):
-```
- city: Pittsburgh
- state: Pennsylvania
- country: United States
- uri: https://www.geonames.org/5206379
-```
+```yaml
+- City: Cleveland
+ State: Ohio
+ Country: United States
+ Geographic Coverage Area URI: https://www.geonames.org/5150529
+- City: Pittsburgh
+ State: Pennsylvania
+ Country: United States
+ Geographic Coverage Area URI: https://www.geonames.org/5206379
```
- country: Germany
+
+```yaml
+- Country: Germany
```
@@ -948,208 +872,194 @@ Last updated: February 04, 2026
### ICPSR Subject Terms
-**Description:** A controlled list of social science terms maintained by ICPSR and used to indicate topics related to the data collection.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** A controlled list of social science terms maintained by ICPSR and used to indicate topics related to the data collection.
+**Required:** Yes
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
+**Usage Notes:** This controlled vocabulary was taken from the ICPSR Subject Terms Thesaurus. Source: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001.
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| ICPSR Subject Term | Yes | No | Text | A human-readable form of the subject term. |
-| ICPSR Subject Term Code | Yes | No | Text | A machine-readable/-actionable form of the subject term. |
-| ICPSR Subject Term URI | Yes | No | Text | The URI for the subject term. |
+|---|---|---|---|---|
+| [ICPSR Subject Term](#icpsr-subject-terms_label) | Yes | No | Text | A human-readable form of the subject term. |
+| [ICPSR Subject Term Code](#icpsr-subject-terms_code) | Yes | No | Text | A machine-readable/-actionable form of the subject term. |
+| [ICPSR Subject Term URI](#icpsr-subject-terms_uri) | Yes | No | Text | The URI for the subject term. |
+
##### ICPSR Subject Term
-**Description:** A human-readable form of the subject term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A human-readable form of the subject term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"abduction"
+```text
+abduction
```
-```json
-"ability"
+```text
+ability
```
-```json
-"Abolition movement"
+```text
+Abolition movement
```
+
##### ICPSR Subject Term Code
-**Description:** A machine-readable/-actionable form of the subject term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A machine-readable/-actionable form of the subject term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"20391"
+```text
+20391
```
-```json
-"24123"
+```text
+24123
```
-```json
-"23632"
+```text
+23632
```
+
##### ICPSR Subject Term URI
-**Description:** The URI for the subject term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** The URI for the subject term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/20391"
+```text
+https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/20391
```
-```json
-"https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24040"
+```text
+https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24040
```
-###### Complete Examples (with Subfields):
-```
- label: biographical data
- code: 20391
- uri: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/20391
-```
+###### Complete ICPSR Subject Terms Examples (with Subfields):
-```
- label: age
- code: 24123
- uri: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24123
-```
+```yaml
+- ICPSR Subject Term: biographical data
+ ICPSR Subject Term Code: '20391'
+ ICPSR Subject Term URI: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/20391
+- ICPSR Subject Term: age
+ ICPSR Subject Term Code: '24123'
+ ICPSR Subject Term URI: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24123
```
- label: happiness
- code: 25624
- uri: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/25624
+
+```yaml
+- ICPSR Subject Term: happiness
+ ICPSR Subject Term Code: '25624'
+ ICPSR Subject Term URI: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/25624
```
---
-
+
### Journal of Economic Literature (JEL) Classification Codes
-**Description:** Classification codes used to categorize economic research.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** Classification codes used to categorize economic research.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
+**Usage Notes:** This controlled vocabulary was taken from the American Economic Association's JEL Classifications Codes. Source: https://www.aeaweb.org/jel/guide/jel.php
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| JEL Classification Term | Yes | No | Text | A human-readable form of the term. |
-| JEL Classification Code | No | No | Text | A machine-readable/-actionable form of the term. |
-| JEL Classification URI | No | No | Text | The URI for the JEL classification code. |
+|---|---|---|---|---|
+| [JEL Classification Term](#journal-of-economic-literature-(jel)-classification-codes_label) | Yes | No | Text | A human-readable form of the term. |
+| [JEL Classification Code](#journal-of-economic-literature-(jel)-classification-codes_code) | No | No | Text | A machine-readable/-actionable form of the term. |
+| [JEL Classification URI](#journal-of-economic-literature-(jel)-classification-codes_uri) | No | No | Text | The URI for the JEL classification code. |
+
##### JEL Classification Term
-**Description:** A human-readable form of the term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A human-readable form of the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"A12 Relation of Economics to Other Disciplines"
+```text
+A12 Relation of Economics to Other Disciplines
```
-```json
-"B00 History of Economic Thought, Methodology, and Heterodox Approaches"
+```text
+B00 History of Economic Thought, Methodology, and Heterodox Approaches
```
+
##### JEL Classification Code
-**Description:** A machine-readable/-actionable form of the term.
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A machine-readable/-actionable form of the term.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"a12"
+```text
+a12
```
-```json
-"b00"
+```text
+b00
```
-```json
-"n22"
+```text
+n22
```
+
##### JEL Classification URI
-**Description:** The URI for the JEL classification code.
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** The URI for the JEL classification code.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"http://example.com/jel/a12"
+```text
+http://example.com/jel/a12
```
-```json
-"http://example.com/jel/b00"
+```text
+http://example.com/jel/b00
```
-###### Complete Examples (with Subfields):
-```
- label: A12 Relation of Economics to Other Disciplines
- code: a12
- uri: http://example.com/jel/a12
-```
+###### Complete Journal of Economic Literature (JEL) Classification Codes Examples (with Subfields):
-```
- label: B00 History of Economic Thought, Methodology, and Heterodox Approaches
- code: b00
- uri: http://example.com/jel/b00
-```
+```yaml
+- JEL Classification Term: A12 Relation of Economics to Other Disciplines
+ JEL Classification Code: a12
+ JEL Classification URI: http://example.com/jel/a12
+- JEL Classification Term: B00 History of Economic Thought, Methodology, and Heterodox
+ Approaches
+ JEL Classification Code: b00
+ JEL Classification URI: http://example.com/jel/b00
```
- label: N22 Economic History: Financial Markets and Institutions: U.S.; Canada: 1913-
- code: n22
- uri: http://example.com/jel/n22
+
+```yaml
+- JEL Classification Term: 'N22 Economic History: Financial Markets and Institutions:
+ U.S.; Canada: 1913-'
+ JEL Classification Code: n22
+ JEL Classification URI: http://example.com/jel/n22
```
@@ -1158,122 +1068,132 @@ Last updated: February 04, 2026
### License
-**Description:** A license governing the data's use.
+**Description:** A license governing the data's use.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Multi-part element; see subfields
+#### Subfields:
-**Repeatable**: No
+| Property | Required? | Repeatable? | Accepted Values | Description |
+|---|---|---|---|---|
+| [License Name](#license_name) | No | No | Text | |
+| [License Code](#license_code) | No | No | Text | |
+| [License URI](#license_uri) | No | No | Text | |
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+##### License Name
-**Examples:**
+**Description:**
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+
+##### License Code
-```
-{
- "name": "Creative Commons Attribution Non Commercial 4.0 International",
- "code": "CC-BY-NC-4.0",
- "uri": "https://creativecommons.org/licenses/by-nc/4.0/"
-}
-```
+**Description:**
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+
+##### License URI
+
+**Description:**
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+###### Complete License Examples (with Subfields):
+
+```yaml
+License Name: Creative Commons Attribution Non Commercial 4.0 International
+License Code: CC-BY-NC-4.0
+License URI: https://creativecommons.org/licenses/by-nc/4.0/
-**Examples:**
-```
- name: Creative Commons Attribution Non Commercial 4.0 International
- code: CC-BY-NC-4.0
- uri: https://creativecommons.org/licenses/by-nc/4.0/
```
---
-
+
### Medical Subject Headings (MeSH) Terms
-**Description:** Biomedical and health-related terms from the National Library of Medicine that describe the data collection's topics.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** Biomedical and health-related terms from the National Library of Medicine that describe the data collection's topics.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
+**Usage Notes:** This controlled vocabulary was taken from the National Library of Medicine's Medical Subject Headings (MeSH). Source: https://www.ncbi.nlm.nih.gov/mesh/
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| MeSH Subject Term | Yes | No | Text | A human-readable form of the subject term. |
-| MeSH Subject Term Code | Yes | No | Text | A machine-readable/-actionable form of the subject term. |
-| MeSH Subject Term URI | Yes | No | Text | The URI for the subject term as maintained in MeSH. |
+|---|---|---|---|---|
+| [MeSH Subject Term](#medical-subject-headings-(mesh)-terms_label) | Yes | No | Text | A human-readable form of the subject term. |
+| [MeSH Subject Term Code](#medical-subject-headings-(mesh)-terms_code) | Yes | No | Text | A machine-readable/-actionable form of the subject term. |
+| [MeSH Subject Term URI](#medical-subject-headings-(mesh)-terms_uri) | Yes | No | Text | The URI for the subject term as maintained in MeSH. |
+
##### MeSH Subject Term
-**Description:** A human-readable form of the subject term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A human-readable form of the subject term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"anxiety"
+```text
+anxiety
```
-```json
-"brain waves"
+```text
+brain waves
```
+
##### MeSH Subject Term Code
-**Description:** A machine-readable/-actionable form of the subject term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A machine-readable/-actionable form of the subject term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"D001007"
+```text
+D001007
```
-```json
-"D058256"
+```text
+D058256
```
+
##### MeSH Subject Term URI
-**Description:** The URI for the subject term as maintained in MeSH.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
-
-**Usage Notes:** Enter the MeSH RDF Unique Identifier.
+**Description:** The URI for the subject term as maintained in MeSH.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
+**Usage Notes:** Enter the MeSH RDF Unique Identifier.
**Examples:**
-```json
-"http://id.nlm.nih.gov/mesh/D001007"
+```text
+http://id.nlm.nih.gov/mesh/D001007
```
-```json
-"http://id.nlm.nih.gov/mesh/D058256"
+```text
+http://id.nlm.nih.gov/mesh/D058256
```
-###### Complete Examples (with Subfields):
-```
- label: anxiety
- code: D001007
- uri: http://id.nlm.nih.gov/mesh/D001007
-```
+###### Complete Medical Subject Headings (MeSH) Terms Examples (with Subfields):
-```
- label: brain waves
- code: D058256
- uri: http://id.nlm.nih.gov/mesh/D058256
+```yaml
+- MeSH Subject Term: anxiety
+ MeSH Subject Term Code: D001007
+ MeSH Subject Term URI: http://id.nlm.nih.gov/mesh/D001007
+
+- MeSH Subject Term: brain waves
+ MeSH Subject Term Code: D058256
+ MeSH Subject Term URI: http://id.nlm.nih.gov/mesh/D058256
```
@@ -1282,102 +1202,152 @@ Last updated: February 04, 2026
### Nationally Representative Sample
-**Description:** Indicates whether the data collection uses a sampling design intended to represent the demographics, behaviors, and/or characteristics of the entire nation. This typically involves probability-based methods that allow generalization. It does not include convenience samples that appear similar to the nation by chance.
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** Indicates whether the data collection uses a sampling design intended to represent the demographics, behaviors, and/or characteristics of the entire nation. This typically involves probability-based methods that allow generalization. It does not include convenience samples that appear similar to the nation by chance.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```
- Yes
+```text
+Yes
```
+```text
+No
```
- No
-```
+
+
+---
+
+
+### Notes
+
+**Description:** Important details about the data collection (like unique authoring, discrepancies, or processing information) that can't be recorded in other metadata elements.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Text
**Examples:**
-```
- Yes
-```
+```yaml
+- Information on the Index of Consumer Sentiment, the Index of Current Economic Conditions,
+ and the Index of Consumer Expectations and how they were created can be found in
+ the P.I. Codebook
+
+- Dataset 1 should be attributed to Jane Doe while datasets 2-6 should be attributed
+ to John Doe
```
- No
+
+```yaml
+- Additional information on the Survey of Consumers can be found by visiting the Survey
+ of Consumers Website
```
---
-
-### Notes
+
+### Organization
+
+**Description:** An organization associated with an ICPSR data collection or service.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Multi-part element; see subfields
+#### Subfields:
-**Description:** Important details about the data collection (like unique authoring, discrepancies, or processing information) that can't be recorded in other metadata elements.
+| Property | Required? | Repeatable? | Accepted Values | Description |
+|---|---|---|---|---|
+| [Organization Name](#organization_name) | Yes | No | Text | The organization's name. |
+| [Organization Name Code](#organization_name_code) | No | No | Text | A machine-readable/-actionable form of the organization's name. |
+| [Organization Name URI](#organization_name_uri) | No | No | Text | The URI for the organization's name. |
+| [ROR Identifier](#organization_ror) | No | No | Text | The organization's Research Organization Registry (ROR) identifier. |
+| [Email Address](#organization_email) | No | No | Text | The organization's email address. |
-**Repeatable**: Yes
+
+##### Organization Name
-**Accepted Values**: Text
+**Description:** The organization's name.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```
-[
- "Information on the Index of Consumer Sentiment, the Index of Current Economic Conditions, and the Index of Consumer Expectations and how they were created can be found in the P.I. Codebook",
- "Dataset 1 should be attributed to Jane Doe while datasets 2-6 should be attributed to John Doe"
-]
+```text
+Federal Reserve Bank of St. Louis. Research Division
```
-```
-[
- "Additional information on the Survey of Consumers can be found by visiting the Survey of Consumers Website"
-]
+```text
+University of Michigan. Institute for Social Research
```
+
+##### Organization Name Code
+
+**Description:** A machine-readable/-actionable form of the organization's name.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+
**Examples:**
-```
- Information on the Index of Consumer Sentiment, the Index of Current Economic Conditions, and the Index of Consumer Expectations and how they were created can be found in the P.I. Codebook
-```
-```
- Dataset 1 should be attributed to Jane Doe while datasets 2-6 should be attributed to John Doe
+```text
+1234
```
+```text
+2345
```
- Additional information on the Survey of Consumers can be found by visiting the Survey of Consumers Website
+
+```text
+3456
```
+
+##### Organization Name URI
----
+**Description:** The URI for the organization's name.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+
+##### ROR Identifier
-
-### Organization
+**Description:** The organization's Research Organization Registry (ROR) identifier.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
-**Description:** An organization associated with an ICPSR data collection or service.
+**Examples:**
+
+```text
+https://ror.org/02q7mkh03
+```
-**Repeatable**: No
+
+##### Email Address
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
+**Description:** The organization's email address.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```
-{
- "name": "Urban Institute",
- "name_code": "1234",
- "name_uri": "https://icpsr.example.com/organizations/1234",
- "ror": "https://ror.org/017pz3h73",
- "email": "info@urban.institute"
-}
+```text
+info@example.com
```
-**Examples:**
-```
- name: Urban Institute
- name_code: 1234
- name_uri: https://icpsr.example.com/organizations/1234
- ror: https://ror.org/017pz3h73
- email: info@urban.institute
+###### Complete Organization Examples (with Subfields):
+
+```yaml
+Organization Name: Urban Institute
+Organization Name Code: '1234'
+Organization Name URI: https://icpsr.example.com/organizations/1234
+ROR Identifier: https://ror.org/017pz3h73
+Email Address: info@urban.institute
+
```
@@ -1386,203 +1356,247 @@ Last updated: February 04, 2026
### Person
-**Description:** A person associated with an ICPSR data collection or service.
+**Description:** A person associated with an ICPSR data collection or service.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Multi-part element; see subfields
+#### Subfields:
+
+| Property | Required? | Repeatable? | Accepted Values | Description |
+|---|---|---|---|---|
+| [Personal Name](#person_name) | Yes | No | Multi-part element; see subfields | The person's name. |
+| [ORCID Identifier](#person_orcid) | No | No | Text | The person's Open Researcher and Contributor ID (ORCID). |
+| [Affiliation(s)](#person_affiliations) | No | Yes | Array | The person's affiliated organization(s). |
+| [Email Address](#person_email) | No | No | Text | The person's email address. |
-**Repeatable**: No
+
+##### Personal Name
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
+**Description:** The person's name.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Multi-part element; see subfields
**Examples:**
-```
-{
- "name": {
- "given": "Jane Q.",
- "family": "Doe II"
- },
- "orcid": "https://orcid.org/0000-0001-6666-5717",
- "researcher_passport_profile_id": "1234",
- "affiliations": [
- {
- "name": "Urban Institute",
- "name_code": "2342",
- "name_uri": "https://icpsr.example.com/organizations/2342",
- "ror": "https://ror.org/017pz3h73",
- "icpsr_org_id": "xyz123"
- },
- {
- "name": "Example University"
- }
- ],
- "email": "jane.doe@example.com"
-}
-```
+```yaml
+Given Name (First Name): Susan B.
+Family Name (Last Name): Anthony
-```
-{
- "name": {
- "given": "Joe"
- }
-}
```
-**Examples:**
-```
- name: {'given': 'Jane Q.', 'family': 'Doe II'}
- orcid: https://orcid.org/0000-0001-6666-5717
- researcher_passport_profile_id: 1234
- affiliations: [{'name': 'Urban Institute', 'name_code': '2342', 'name_uri': 'https://icpsr.example.com/organizations/2342', 'ror': 'https://ror.org/017pz3h73', 'icpsr_org_id': 'xyz123'}, {'name': 'Example University'}]
- email: jane.doe@example.com
-```
+```yaml
+Given Name (First Name): John
+Family Name (Last Name): Doe IV
-```
- name: {'given': 'Joe'}
```
+##### Subfields:
----
-
-
-### Preregistration
-
-**Description:** A link to a research plan for the data collection (preferably a persistent identifier such as a DOI).
+| Property | Required? | Repeatable? | Accepted Values | Description |
+|---|---|---|---|---|
+| [Given Name (First Name)](#person_name_given) | Yes | No | Text | The person's first (given) name, which may include a middle name or initial. |
+| [Family Name (Last Name)](#person_name_family) | Yes | No | Text | The person's last (family) name, which may include a suffix (e.g., Jr., Sr., IV). |
-**Repeatable**: No
+
+###### Given Name (First Name)
-**Accepted Values**: Text
+**Description:** The person's first (given) name, which may include a middle name or initial.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
+```text
+Chantel
```
- https://doi.org/10.1000/182
+
+```text
+Giannis
```
-**Examples:**
+```text
+Mary Kate
```
- https://doi.org/10.1000/182
+
+```text
+John Q.
```
+
+###### Family Name (Last Name)
----
+**Description:** The person's last (family) name, which may include a suffix (e.g., Jr., Sr., IV).
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
-
-### Principal Investigators
+**Examples:**
-**Description:** The key people or organizations responsible for the data collection, listed by importance. Each data collection requires at least one PI, either a person or an organization.
+```text
+Smith
+```
-**Repeatable**: Yes
+```text
+Jordan Jr.
+```
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
+```text
+Escobar-Vega
+```
-#### Subfields:
+
+##### ORCID Identifier
-| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| Person | No | No | Multi-part element; see subfields | A person associated with an ICPSR data collection or service. |
-| Organization | No | No | Multi-part element; see subfields | An organization associated with an ICPSR data collection or service. |
-| Order | No | No | Number | The order or rank of importance for the PIs associated with the data collection, typically provided to ICPSR by the lead PI. |
+**Description:** The person's Open Researcher and Contributor ID (ORCID).
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
-##### Person
+**Examples:**
-**Description:** A person associated with an ICPSR data collection or service.
+```text
+https://orcid.org/0000-0001-6289-1234
+```
-**Required**: No
+
+##### Affiliation(s)
-**Repeatable**: No
+**Description:** The person's affiliated organization(s).
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Array
+
+##### Email Address
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
+**Description:** The person's email address.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-{
- "name": {
- "given": "Jane Q.",
- "family": "Doe II"
- },
- "orcid": "https://orcid.org/0000-0001-6666-5717",
- "researcher_passport_profile_id": "1234",
- "affiliations": [
- {
- "name": "Urban Institute",
- "name_code": "2342",
- "name_uri": "https://icpsr.example.com/organizations/2342",
- "ror": "https://ror.org/017pz3h73",
- "icpsr_org_id": "xyz123"
- },
- {
- "name": "Example University"
- }
- ],
- "email": "jane.doe@example.com"
-}
+```text
+j.doe@example.com
```
-```json
-{
- "name": {
- "given": "Joe"
- }
-}
+###### Complete Person Examples (with Subfields):
+
+```yaml
+Personal Name:
+ Given Name (First Name): Jane Q.
+ Family Name (Last Name): Doe II
+ORCID Identifier: https://orcid.org/0000-0001-6666-5717
+Researcher Passport Profile Id: '1234'
+Affiliation(s):
+- Name: Urban Institute
+ Name Code: '2342'
+ Name Uri: https://icpsr.example.com/organizations/2342
+ Ror: https://ror.org/017pz3h73
+ Icpsr Org Id: xyz123
+- Name: Example University
+Email Address: jane.doe@example.com
+
```
-##### Organization
+```yaml
+Personal Name:
+ Given Name (First Name): Joe
+
+```
-**Description:** An organization associated with an ICPSR data collection or service.
-**Required**: No
+---
-**Repeatable**: No
+
+### Preregistration
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
+**Description:** A link to a research plan for the data collection (preferably a persistent identifier such as a DOI).
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-{
- "name": "Urban Institute",
- "name_code": "1234",
- "name_uri": "https://icpsr.example.com/organizations/1234",
- "ror": "https://ror.org/017pz3h73",
- "email": "info@urban.institute"
-}
+```text
+https://doi.org/10.1000/182
```
-##### Order
-**Description:** The order or rank of importance for the PIs associated with the data collection, typically provided to ICPSR by the lead PI.
+---
-**Required**: No
+
+### Principal Investigators
-**Repeatable**: No
+**Description:** The key people or organizations responsible for the data collection, listed by importance. Each data collection requires at least one PI, either a person or an organization.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
+#### Subfields:
-**Accepted Values**: Number
+| Property | Required? | Repeatable? | Accepted Values | Description |
+|---|---|---|---|---|
+| [Person](#principal-investigators_person) | No | No | Object | See the [Person](#person) property. |
+| [Organization](#principal-investigators_organization) | No | No | Object | See the [Organization](#organization) property. |
+| [Order](#principal-investigators_order) | No | No | Number | The order or rank of importance for the PIs associated with the data collection, typically provided to ICPSR by the lead PI. |
+
+
+##### Person
+
+**Description:** See the [Person](#person) property.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** See the [Person](#person) property
+
+##### Organization
+
+**Description:** See the [Organization](#organization) property.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** See the [Organization](#organization) property
+
+##### Order
+
+**Description:** The order or rank of importance for the PIs associated with the data collection, typically provided to ICPSR by the lead PI.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Number
**Examples:**
-```json
+```yaml
0
+...
+
```
-```json
+```yaml
1
+...
+
```
-```json
+```yaml
2
+...
+
```
-```json
+```yaml
3
-```
+...
-###### Complete Examples (with Subfields):
-```
- Personal Principal Investigator
| First Name | Last Name | Affiliation |
|---|
| Veronica | Martinez-Ebers | National Institute for Law and Equity |
| Lawrence F. | Travis III | University of Cincinnati |
```
+###### Complete Principal Investigators Examples (with Subfields):
+
+```text
+Personal Principal Investigator
| First Name | Last Name | Affiliation |
|---|
| Veronica | Martinez-Ebers | National Institute for Law and Equity |
| Lawrence F. | Travis III | University of Cincinnati |
```
- Organizational Principal Investigator
| Name |
|---|
| United States Department of Labor. Bureau of Labor Statistics |
| The Washington Post |
+
+```text
+Organizational Principal Investigator
| Name |
|---|
| United States Department of Labor. Bureau of Labor Statistics |
| The Washington Post |
```
@@ -1591,31 +1605,20 @@ Last updated: February 04, 2026
### Response Rates
-**Description:** The percentage of respondents in the sample who participated in the data collection.
-
-**Repeatable**: No
-
-**Accepted Values**: Text
-
-**Usage Notes:** This field is only applicable if the data were collected with a survey instrument and the response rates are provided.
+**Description:** The percentage of respondents in the sample who participated in the data collection.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+**Usage Notes:** This field is only applicable if the data were collected with a survey instrument and the response rates are provided.
**Examples:**
-```
- The overall response rate for this survey was 20.22%; 72.6% for existing panelists and 10.4% for new panelists, using AAPOR Response Rate 1.
-```
-
-```
- Not applicable.
-```
-
-**Examples:**
-```
- The overall response rate for this survey was 20.22%; 72.6% for existing panelists and 10.4% for new panelists, using AAPOR Response Rate 1.
+```text
+The overall response rate for this survey was 20.22%; 72.6% for existing panelists and 10.4% for new panelists, using AAPOR Response Rate 1.
```
-```
- Not applicable.
+```text
+Not applicable.
```
@@ -1624,31 +1627,20 @@ Last updated: February 04, 2026
### Sampling Note
-**Description:** Supplemental information about the sampling process that does not fit neatly into the Sampling Procedure field.
-
-**Repeatable**: No
-
-**Accepted Values**: Text
-
-**Usage Notes:** A detailed discussion of such things as sampling error or other limitations of the sampling methodology is not required here.
+**Description:** Supplemental information about the sampling process that does not fit neatly into the Sampling Procedure field.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+**Usage Notes:** A detailed discussion of such things as sampling error or other limitations of the sampling methodology is not required here.
**Examples:**
-```
- National sample of telephone numbers from cell (RDD) sampling frame.
+```text
+National sample of telephone numbers from cell (RDD) sampling frame.
```
-```
- The probability sample selected to represent the universe consists of approximately 71,000 households.
-```
-
-**Examples:**
-```
- National sample of telephone numbers from cell (RDD) sampling frame.
-```
-
-```
- The probability sample selected to represent the universe consists of approximately 71,000 households.
+```text
+The probability sample selected to represent the universe consists of approximately 71,000 households.
```
@@ -1657,58 +1649,28 @@ Last updated: February 04, 2026
### Sampling Procedures
-**Description:** The type(s) of sample and sample design used to select survey respondents to represent the population.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Text
-
-**Usage Notes:** The sample is a selection out of the universe of all possible relevant cases (e.g., adults in the United States, housing units in three counties of Michigan, etc.) that could have been included in the data collection. Note that some studies, such as censuses, do not utilize samples but include all members of the universe. This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV SamplingProcedure https://rdf-vocabulary.ddialliance.org/ddi-cv/SamplingProcedure/1.1.4/SamplingProcedure.html.
+**Description:** The type(s) of sample and sample design used to select survey respondents to represent the population.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Text
+**Usage Notes:** The sample is a selection out of the universe of all possible relevant cases (e.g., adults in the United States, housing units in three counties of Michigan, etc.) that could have been included in the data collection. Note that some studies, such as censuses, do not utilize samples but include all members of the universe. This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV SamplingProcedure https://rdf-vocabulary.ddialliance.org/ddi-cv/SamplingProcedure/1.1.4/SamplingProcedure.html.
**Examples:**
-```
-[
- {
- "label": "Probability: Systematic random",
- "code": "Probability.SystematicRandom",
- "uri": "https://example.com/sampling_procedures/123"
- },
- {
- "label": "Other",
- "code": "Other",
- "uri": "https://example.com/sampling_procedures/737"
- }
-]
-```
+```yaml
+- Label: 'Probability: Systematic random'
+ Code: Probability.SystematicRandom
+ Uri: https://example.com/sampling_procedures/123
-```
-[
- {
- "label": "Total universe/Complete enumeration",
- "code": "TotalUniverseCompleteEnumeration",
- "uri": "https://example.com/sampling_procedures/234"
- }
-]
+- Label: Other
+ Code: Other
+ Uri: https://example.com/sampling_procedures/737
```
-**Examples:**
-```
- label: Probability: Systematic random
- code: Probability.SystematicRandom
- uri: https://example.com/sampling_procedures/123
-```
-
-```
- label: Other
- code: Other
- uri: https://example.com/sampling_procedures/737
-```
-
-```
- label: Total universe/Complete enumeration
- code: TotalUniverseCompleteEnumeration
- uri: https://example.com/sampling_procedures/234
+```yaml
+- Label: Total universe/Complete enumeration
+ Code: TotalUniverseCompleteEnumeration
+ Uri: https://example.com/sampling_procedures/234
```
@@ -1717,45 +1679,35 @@ Last updated: February 04, 2026
### Scales
-**Description:** Any commonly known scales used to collect data for the data collection (e.g., MMPI, CPI, the Census Occupational Codes, etc.).
-
-**Repeatable**: No
-
-**Accepted Values**: Text
-
-**Usage Notes:** Include common scales that can be readily identified from the data, documentation, or other related materials. ICPSR curators are not expected to infer or research scales that are not explicitly indicated. The scales can be cited either as a list or described in full sentences. If the questionnaire used has a finite list of responses (e.g., 'Always, Sometimes, Rarely, Never' or Strongly Agree, Agree, Disagree, Strongly Disagree'), it is acceptable for this element to note 'A Likert-type scale was used,' or 'Several Likert-type scales were used.' However, it is not required to note Likart-type scales in situations where only such scales were used, given their ubiquity.
+**Description:** Any commonly known scales used to collect data for the data collection (e.g., MMPI, CPI, the Census Occupational Codes, etc.).
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+**Usage Notes:** Include common scales that can be readily identified from the data, documentation, or other related materials. ICPSR curators are not expected to infer or research scales that are not explicitly indicated. The scales can be cited either as a list or described in full sentences. If the questionnaire used has a finite list of responses (e.g., 'Always, Sometimes, Rarely, Never' or Strongly Agree, Agree, Disagree, Strongly Disagree'), it is acceptable for this element to note 'A Likert-type scale was used,' or 'Several Likert-type scales were used.' However, it is not required to note Likart-type scales in situations where only such scales were used, given their ubiquity.
**Examples:**
-```
-[
- "The baseline data collection included one scale - the CES-D index for maternal depression [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4), 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available under the 'Data and Documentation' tab, for details."
-]
-```
-
-```
-[
- "Squires, J., Bricker, D. D., and Twombly, E. (2009). Ages and stages questionnaires. Baltimore, MD: Paul H. Brookes.",
- "Briggs-Gowan, M. J., Carter, A. S., Irwin, J. R., Wachtel, K., and Cicchetti, D. V. (2004). The Brief Infant-Toddler Social and Emotional Assessment: screening for social-emotional problems and delays in competence. Journal of pediatric psychology, 29(2), 143-155.",
- "Yu, L., Buysse, D. J., Germain, A., Moul, D. E., Stover, A., Dodds, N. E., ... and Pilkonis, P. A. (2012). Development of short forms from the PROMIS sleep disturbance and sleep-related impairment item banks. Behavioral sleep medicine, 10(1), 6-24."
-]
-```
-
-**Examples:**
-```
- The baseline data collection included one scale - the CES-D index for maternal depression [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4), 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available under the 'Data and Documentation' tab, for details.
+```yaml
+- The baseline data collection included one scale - the CES-D index for maternal depression
+ [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development
+ and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4),
+ 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables
+ 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available
+ under the 'Data and Documentation' tab, for details.
```
-```
- Squires, J., Bricker, D. D., and Twombly, E. (2009). Ages and stages questionnaires. Baltimore, MD: Paul H. Brookes.
-```
+```yaml
+- 'Squires, J., Bricker, D. D., and Twombly, E. (2009). Ages and stages questionnaires.
+ Baltimore, MD: Paul H. Brookes.'
-```
- Briggs-Gowan, M. J., Carter, A. S., Irwin, J. R., Wachtel, K., and Cicchetti, D. V. (2004). The Brief Infant-Toddler Social and Emotional Assessment: screening for social-emotional problems and delays in competence. Journal of pediatric psychology, 29(2), 143-155.
-```
+- 'Briggs-Gowan, M. J., Carter, A. S., Irwin, J. R., Wachtel, K., and Cicchetti, D.
+ V. (2004). The Brief Infant-Toddler Social and Emotional Assessment: screening for
+ social-emotional problems and delays in competence. Journal of pediatric psychology,
+ 29(2), 143-155.'
-```
- Yu, L., Buysse, D. J., Germain, A., Moul, D. E., Stover, A., Dodds, N. E., ... and Pilkonis, P. A. (2012). Development of short forms from the PROMIS sleep disturbance and sleep-related impairment item banks. Behavioral sleep medicine, 10(1), 6-24.
+- Yu, L., Buysse, D. J., Germain, A., Moul, D. E., Stover, A., Dodds, N. E., ... and
+ Pilkonis, P. A. (2012). Development of short forms from the PROMIS sleep disturbance
+ and sleep-related impairment item banks. Behavioral sleep medicine, 10(1), 6-24.
```
@@ -1764,57 +1716,61 @@ Last updated: February 04, 2026
### Smallest Geographic Unit
-**Description:** The smallest geographic unit (e.g., state or census tract) used in the dataset.
+**Description:** The smallest geographic unit (e.g., state or census tract) used in the dataset.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Multi-part element; see subfields
+**Usage Notes:** Geographic Unit is intended to represent specific, known geography -- e.g., county, census district, FIPS code, electoral district, and any other conveyor of specific geography that is represented by a variable. If the data do not include a geographic variable by which the data can be analyzed, this element is not indicated. If all the cases are from a single state, but the cases are not subdivided geographically within that state, then 'state' is not indicated. This element is only meant to convey specific, known, geography. If there is a variable indicating which testing site a survey was taken at, but the locations of the testing sites were masked by the PI, this element is likely not indicated.
+#### Subfields:
-**Repeatable**: No
+| Property | Required? | Repeatable? | Accepted Values | Description |
+|---|---|---|---|---|
+| [Smallest Geographic Unit Term](#smallest-geographic-unit_label) | No | No | Text | |
+| [Smallest Geographic Unit Code](#smallest-geographic-unit_code) | No | No | Text | |
+| [Smallest Geographic Unit URI](#smallest-geographic-unit_uri) | No | No | Text | |
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
+
+##### Smallest Geographic Unit Term
-**Usage Notes:** Geographic Unit is intended to represent specific, known geography -- e.g., county, census district, FIPS code, electoral district, and any other conveyor of specific geography that is represented by a variable. If the data do not include a geographic variable by which the data can be analyzed, this element is not indicated. If all the cases are from a single state, but the cases are not subdivided geographically within that state, then 'state' is not indicated. This element is only meant to convey specific, known, geography. If there is a variable indicating which testing site a survey was taken at, but the locations of the testing sites were masked by the PI, this element is likely not indicated.
+**Description:**
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+
+##### Smallest Geographic Unit Code
-**Examples:**
+**Description:**
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+
+##### Smallest Geographic Unit URI
-```
-{
- "label": "state",
- "code": "123",
- "uri": "https://example.com/smallest_geographic_unit/123"
-}
-```
+**Description:**
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+###### Complete Smallest Geographic Unit Examples (with Subfields):
-```
-{
- "label": "Census tract",
- "code": "234",
- "uri": "https://example.com/smallest_geographic_unit/234"
-}
-```
+```yaml
+Smallest Geographic Unit Term: state
+Smallest Geographic Unit Code: '123'
+Smallest Geographic Unit URI: https://example.com/smallest_geographic_unit/123
-```
-{
- "label": "precinct",
- "code": "345",
- "uri": "https://example.com/smallest_geographic_unit/345"
-}
```
-**Examples:**
-```
- label: state
- code: 123
- uri: https://example.com/smallest_geographic_unit/123
-```
+```yaml
+Smallest Geographic Unit Term: Census tract
+Smallest Geographic Unit Code: '234'
+Smallest Geographic Unit URI: https://example.com/smallest_geographic_unit/234
-```
- label: Census tract
- code: 234
- uri: https://example.com/smallest_geographic_unit/234
```
-```
- label: precinct
- code: 345
- uri: https://example.com/smallest_geographic_unit/345
+```yaml
+Smallest Geographic Unit Term: precinct
+Smallest Geographic Unit Code: '345'
+Smallest Geographic Unit URI: https://example.com/smallest_geographic_unit/345
+
```
@@ -1823,336 +1779,311 @@ Last updated: February 04, 2026
### Software Applications
-**Description:** Software used by the principal investigator(s) to collect or analyze data, required to understand how the data were obtained or to reproduce results.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** Software used by the principal investigator(s) to collect or analyze data, required to understand how the data were obtained or to reproduce results.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| Software Name | Yes | No | Text | The name of the software application. |
-| Software Version | No | No | Text | The version of the application. |
-| Software Description | No | No | Text | Short description or overview of the application and its intended purpose |
-| Programming Languages | No | Yes | Text | The programming language(s) used in the development of the application |
-| Operating Systems | No | Yes | Text | Computer operating systems supported by the application |
-| Memory Requirements | No | No | Text | Minimum memory (e.g., RAM) requirements to operate the application |
-| Processor Requirements | No | No | Text | Processor architecture required to run the application |
-| Software Requirements | No | No | Text | Required components for the application, like runtime environments and shared libraries not included in the package but needed to run it. |
-| Storage Requirements | No | No | Text | Amount of storage space required by the application |
-| Device Requirements | No | No | Text | Device required to run the application. Used in cases where a specific make/model is required to run the application |
-| License | No | No | Text | The license associated with the application, preferably expressed as a URL. |
-| Download URL | No | No | Text | A direct link to a downloadable software artifact (e.g., executable, package, archive, or single script file) that retrieves the application itself, without additional navigation or instructions. |
-| Installation URL | No | No | Text | A link to a repository or project landing page where users can obtain resources and instructions to install the application (as opposed to directly downloading a single file). |
-
+|---|---|---|---|---|
+| [Software Name](#software-applications_name) | Yes | No | Text | The name of the software application. |
+| [Software Version](#software-applications_software_version) | No | No | Text | The version of the application. |
+| [Software Description](#software-applications_description) | No | No | Text | Short description or overview of the application and its intended purpose |
+| [Programming Languages](#software-applications_programming_languages) | No | Yes | Text | The programming language(s) used in the development of the application |
+| [Operating Systems](#software-applications_operating_systems) | No | Yes | Text | Computer operating systems supported by the application |
+| [Memory Requirements](#software-applications_memory_requirements) | No | No | Text | Minimum memory (e.g., RAM) requirements to operate the application |
+| [Processor Requirements](#software-applications_processor_requirements) | No | No | Text | Processor architecture required to run the application |
+| [Software Requirements](#software-applications_software_requirements) | No | No | Text | Required components for the application, like runtime environments and shared libraries not included in the package but needed to run it. |
+| [Storage Requirements](#software-applications_storage_requirements) | No | No | Text | Amount of storage space required by the application |
+| [Device Requirements](#software-applications_device_requirements) | No | No | Text | Device required to run the application. Used in cases where a specific make/model is required to run the application |
+| [License](#software-applications_license) | No | No | Text | The license associated with the application, preferably expressed as a URL. |
+| [Download URL](#software-applications_download_url) | No | No | Text | A direct link to a downloadable software artifact (e.g., executable, package, archive, or single script file) that retrieves the application itself, without additional navigation or instructions. |
+| [Installation URL](#software-applications_install_url) | No | No | Text | A link to a repository or project landing page where users can obtain resources and instructions to install the application (as opposed to directly downloading a single file). |
+
+
##### Software Name
-**Description:** The name of the software application.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** The name of the software application.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"JHOVE"
+```text
+JHOVE
```
-```json
-"ffmpeg"
+```text
+ffmpeg
```
-```json
-"json-schema-for-humans"
+```text
+json-schema-for-humans
```
+
##### Software Version
-**Description:** The version of the application.
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** The version of the application.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"1"
+```text
+1
```
-```json
-"2.0.4"
+```text
+2.0.4
```
-```json
-"Auto-Build 2023-01-15 12:36"
+```text
+Auto-Build 2023-01-15 12:36
```
+
##### Software Description
-**Description:** Short description or overview of the application and its intended purpose
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** Short description or overview of the application and its intended purpose
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"JHOVE, the JSTOR/Harvard Object Validation Environment, is an extensible software framework for performing format identification, validation, and characterization of digital objects."
+```text
+JHOVE, the JSTOR/Harvard Object Validation Environment, is an extensible software framework for performing format identification, validation, and characterization of digital objects.
```
-```json
-"ffmpeg is a very fast video and audio converter that can also grab from a live audio/video source. It can also convert between arbitrary sample rates and resize video on the fly with a high quality polyphase filter."
+```text
+ffmpeg is a very fast video and audio converter that can also grab from a live audio/video source. It can also convert between arbitrary sample rates and resize video on the fly with a high quality polyphase filter.
```
+
##### Programming Languages
-**Description:** The programming language(s) used in the development of the application
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** The programming language(s) used in the development of the application
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Text
**Examples:**
-```json
-[
- "python"
-]
+```yaml
+- python
```
-```json
-[
- "shell",
- "r"
-]
+```yaml
+- shell
+
+- r
```
-```json
-[
- "other"
-]
+```yaml
+- other
```
+
##### Operating Systems
-**Description:** Computer operating systems supported by the application
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** Computer operating systems supported by the application
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Text
**Examples:**
-```json
-[
- "windows"
-]
+```yaml
+- windows
```
-```json
-[
- "windows",
- "mac",
- "linux"
-]
+```yaml
+- windows
+
+- mac
+
+- linux
```
-```json
-[
- "other"
-]
+```yaml
+- other
```
+
##### Memory Requirements
-**Description:** Minimum memory (e.g., RAM) requirements to operate the application
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** Minimum memory (e.g., RAM) requirements to operate the application
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"4 GB"
+```text
+4 GB
```
-```json
-"1GB of RAM (2GB for a 64-bit version)"
+```text
+1GB of RAM (2GB for a 64-bit version)
```
-```json
-"4 GB of GPU memory for HD and some 4K media; 6 GB or more for 4K and higher"
+```text
+4 GB of GPU memory for HD and some 4K media; 6 GB or more for 4K and higher
```
+
##### Processor Requirements
-**Description:** Processor architecture required to run the application
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** Processor architecture required to run the application
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"Intel i5/ i7/ Ryzen 7"
+```text
+Intel i5/ i7/ Ryzen 7
```
-```json
-"Minimum 1 GHz; Recommended 2GHz or more"
+```text
+Minimum 1 GHz; Recommended 2GHz or more
```
-```json
-"2.5–2.9 GHz or faster processor"
+```text
+2.5–2.9 GHz or faster processor
```
+
##### Software Requirements
-**Description:** Required components for the application, like runtime environments and shared libraries not included in the package but needed to run it.
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** Required components for the application, like runtime environments and shared libraries not included in the package but needed to run it.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"Java runtime environment"
+```text
+Java runtime environment
```
-```json
-"Requires additional Python libraries: numpy, v1.11.2; scipy, v0.18.1, and pandas, v0.19.0"
+```text
+Requires additional Python libraries: numpy, v1.11.2; scipy, v0.18.1, and pandas, v0.19.0
```
-```json
-"Compile with GNU auto tools"
+```text
+Compile with GNU auto tools
```
+
##### Storage Requirements
-**Description:** Amount of storage space required by the application
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** Amount of storage space required by the application
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"3.5 GB for new installations, 5 GB for upgrades (including temporary files required during installation)"
+```text
+3.5 GB for new installations, 5 GB for upgrades (including temporary files required during installation)
```
-```json
-"15 GB of free disk space"
+```text
+15 GB of free disk space
```
-```json
-"8 GB of available hard-disk space for installation; additional free space required during installation"
+```text
+8 GB of available hard-disk space for installation; additional free space required during installation
```
+
##### Device Requirements
-**Description:** Device required to run the application. Used in cases where a specific make/model is required to run the application
-
-**Required**: No
+**Description:** Device required to run the application. Used in cases where a specific make/model is required to run the application
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Examples:**
+
##### License
-**Description:** The license associated with the application, preferably expressed as a URL.
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** The license associated with the application, preferably expressed as a URL.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"https://www.apache.org/licenses/LICENSE-2.0"
+```text
+https://www.apache.org/licenses/LICENSE-2.0
```
-```json
-"https://opensource.org/licenses/LGPL-2.0"
+```text
+https://opensource.org/licenses/LGPL-2.0
```
+
##### Download URL
-**Description:** A direct link to a downloadable software artifact (e.g., executable, package, archive, or single script file) that retrieves the application itself, without additional navigation or instructions.
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A direct link to a downloadable software artifact (e.g., executable, package, archive, or single script file) that retrieves the application itself, without additional navigation or instructions.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"https://github.com/richardlehane/siegfried/archive/refs/heads/main.zip"
+```text
+https://github.com/richardlehane/siegfried/archive/refs/heads/main.zip
```
-```json
-"https://cdn.nationalarchives.gov.uk/documents/droid-binary-6.5.2-bin-win32-with-jre.zip"
+```text
+https://cdn.nationalarchives.gov.uk/documents/droid-binary-6.5.2-bin-win32-with-jre.zip
```
+
##### Installation URL
-**Description:** A link to a repository or project landing page where users can obtain resources and instructions to install the application (as opposed to directly downloading a single file).
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A link to a repository or project landing page where users can obtain resources and instructions to install the application (as opposed to directly downloading a single file).
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"https://github.com/richardlehane/siegfried"
+```text
+https://github.com/richardlehane/siegfried
```
-```json
-"https://www.nationalarchives.gov.uk/information-management/manage-information/preserving-digital-records/droid/"
+```text
+https://www.nationalarchives.gov.uk/information-management/manage-information/preserving-digital-records/droid/
```
-###### Complete Examples (with Subfields):
-```
- name: siegfried
- software_version: 1.11.1
- description: Siegfried is a signature-based file format identification tool, implementing the National Archives UK's PRONOM file format signatures; freedesktop.org's MIME-info file format signatures; the Library of Congress's FDD file format signatures (beta); and Wikidata (beta).
- programming_languages: ['go', 'javascript', 'other']
- operating_systems: ['mac', 'linux', 'windows']
- license: https://www.apache.org/licenses/LICENSE-2.0
- download_url: https://github.com/richardlehane/siegfried/archive/refs/heads/main.zip
+###### Complete Software Applications Examples (with Subfields):
+
+```yaml
+- Software Name: siegfried
+ Software Version: 1.11.1
+ Software Description: Siegfried is a signature-based file format identification
+ tool, implementing the National Archives UK's PRONOM file format signatures; freedesktop.org's
+ MIME-info file format signatures; the Library of Congress's FDD file format signatures
+ (beta); and Wikidata (beta).
+ Programming Languages:
+ - go
+ - javascript
+ - other
+ Operating Systems:
+ - mac
+ - linux
+ - windows
+ License: https://www.apache.org/licenses/LICENSE-2.0
+ Download URL: https://github.com/richardlehane/siegfried/archive/refs/heads/main.zip
```
@@ -2161,23 +2092,16 @@ Last updated: February 04, 2026
### Study Design
-**Description:** The procedures used to contact participants and gather data.
-
-**Repeatable**: No
-
-**Accepted Values**: Text
-
-**Usage Notes:** The Study Design provides more detailed information than the Summary, including how surveys were prepared and administered, how interviews were conducted, or how the data were obtained and compiled, as well as information about deadlines and follow-ups to respondents.
+**Description:** The procedures used to contact participants and gather data.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+**Usage Notes:** The Study Design provides more detailed information than the Summary, including how surveys were prepared and administered, how interviews were conducted, or how the data were obtained and compiled, as well as information about deadlines and follow-ups to respondents.
**Examples:**
-```
- Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years.
-```
-
-**Examples:**
-```
- Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years.
+```text
+Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years.
```
@@ -2186,34 +2110,22 @@ Last updated: February 04, 2026
### Summary
-**Description:** A description of the data collection that helps users understand its purpose, substance, and key topics.
-
-**Repeatable**: No
-
-**Accepted Values**: Text
-
+**Description:** A description of the data collection that helps users understand its purpose, substance, and key topics.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Usage Notes:** The Summary may include information about the different parts of the data collection not adequately conveyed by the Fileset names or found elsewhere in the metadata. Other important components include a listing of major variables or categories of variables (with examples) as well as an indication of the data collection's unit of analysis (i.e., who or what is being studied: individuals, housing units, courts, criminal acts, etc.). Most often the unit of analysis is the individual; where it is not, it is particularly important to make this clear.
-The Summary is written in the third person and avoids attempting to address issues of how the data might be used, who might be interested in the data, or any evaluative comments about the worth or usefulness of the data collection. The Summary uses past tense when describing the process of collecting the data and present tense when necessary, such as when describing the data (e.g., 'The MIDUS Refresher collection is split into two datasets.'). Numerals are used instead of spelling them out; if a number is spelled out for emphasis, the number is attached in parentheses (e.g. 'Two thousand (2,000)').
-
+The Summary is written in the third person and avoids attempting to address issues of how the data might be used, who might be interested in the data, or any evaluative comments about the worth or usefulness of the data collection. The Summary uses past tense when describing the process of collecting the data and present tense when necessary, such as when describing the data (e.g., 'The MIDUS Refresher collection is split into two datasets.'). Numerals are used instead of spelling them out; if a number is spelled out for emphasis, the number is attached in parentheses (e.g. 'Two thousand (2,000)').
**Examples:**
-```
- In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.
+```text
+In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.
```
-```
- The Health and Relationship Project is a study of both spouses in same-sex and different-sex marriages who were legally married and aged 35 to 65 at the time of data collection (2015). There are two parts of this study: a baseline questionnaire and a daily diary questionnaire completed for 10 consecutive days; both components were completed online and spouses were asked to complete the surveys separately. The baseline questionnaire asks participants about a number of topics related to marriage and health, including stress, health status and health behaviors, relationship quality, and how they have approached health problems in the past. The diary questionnaire asks participants a number of questions about the past 24 hours, including daily stress experiences, social interactions, and health behaviors.
-```
-
-**Examples:**
-```
- In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.
-```
-
-```
- The Health and Relationship Project is a study of both spouses in same-sex and different-sex marriages who were legally married and aged 35 to 65 at the time of data collection (2015). There are two parts of this study: a baseline questionnaire and a daily diary questionnaire completed for 10 consecutive days; both components were completed online and spouses were asked to complete the surveys separately. The baseline questionnaire asks participants about a number of topics related to marriage and health, including stress, health status and health behaviors, relationship quality, and how they have approached health problems in the past. The diary questionnaire asks participants a number of questions about the past 24 hours, including daily stress experiences, social interactions, and health behaviors.
+```text
+The Health and Relationship Project is a study of both spouses in same-sex and different-sex marriages who were legally married and aged 35 to 65 at the time of data collection (2015). There are two parts of this study: a baseline questionnaire and a daily diary questionnaire completed for 10 consecutive days; both components were completed online and spouses were asked to complete the surveys separately. The baseline questionnaire asks participants about a number of topics related to marriage and health, including stress, health status and health behaviors, relationship quality, and how they have approached health problems in the past. The diary questionnaire asks participants a number of questions about the past 24 hours, including daily stress experiences, social interactions, and health behaviors.
```
@@ -2222,95 +2134,86 @@ The Summary is written in the third person and avoids attempting to address issu
### Time Methods
-**Description:** The methods used to collect data over time, like snapshots at one point (cross-sectional) or repeatedly (longitudinal) to study changes or trends
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** The methods used to collect data over time, like snapshots at one point (cross-sectional) or repeatedly (longitudinal) to study changes or trends
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
+**Usage Notes:** This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV TimeMethod https://rdf-vocabulary.ddialliance.org/ddi-cv/TimeMethod/1.2.3/TimeMethod.html.
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| Time Method | Yes | No | Text | A human-readable form of the term. |
-| Time Method Code | Yes | No | Text | A machine-readable/-actionable form of the term. |
-| Time Method URI | Yes | No | Text | The URI for the term. |
+|---|---|---|---|---|
+| [Time Method](#time-methods_label) | Yes | No | Text | A human-readable form of the term. |
+| [Time Method Code](#time-methods_code) | Yes | No | Text | A machine-readable/-actionable form of the term. |
+| [Time Method URI](#time-methods_uri) | Yes | No | Text | The URI for the term. |
+
##### Time Method
-**Description:** A human-readable form of the term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A human-readable form of the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"Cross-section"
+```text
+Cross-section
```
-```json
-"Longitudinal: Cohort/Event-based"
+```text
+Longitudinal: Cohort/Event-based
```
-```json
-"Time series"
+```text
+Time series
```
+
##### Time Method Code
-**Description:** A machine-readable/-actionable form of the term.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A machine-readable/-actionable form of the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"CrossSection"
+```text
+CrossSection
```
-```json
-"Longitudinal.CohortEventBased"
+```text
+Longitudinal.CohortEventBased
```
-```json
-"Other"
+```text
+Other
```
+
##### Time Method URI
-**Description:** The URI for the term.
-
-**Required**: Yes
+**Description:** The URI for the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
+###### Complete Time Methods Examples (with Subfields):
-**Repeatable**: No
-
-**Accepted Values**: Text
-
-###### Complete Examples (with Subfields):
-```
- label: Registers/Records/Accounts: Medical/Clinical
- code: RegistersRecordsAccounts.MedicalClinical
- uri: https://example.com/time_methods/123
-```
+```yaml
+- Time Method: 'Registers/Records/Accounts: Medical/Clinical'
+ Time Method Code: RegistersRecordsAccounts.MedicalClinical
+ Time Method URI: https://example.com/time_methods/123
-```
- label: Events/Interactions
- code: EventsInteractions
- uri: https://example.com/time_methods/234
+- Time Method: Events/Interactions
+ Time Method Code: EventsInteractions
+ Time Method URI: https://example.com/time_methods/234
```
-```
- label: Other
- code: Other
- uri: https://example.com/time_methods/737
+```yaml
+- Time Method: Other
+ Time Method Code: Other
+ Time Method URI: https://example.com/time_methods/737
```
@@ -2319,100 +2222,90 @@ The Summary is written in the third person and avoids attempting to address issu
### Time Periods
-**Description:** The time period(s) to which the data refer, regardless of when the data were collected.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** The time period(s) to which the data refer, regardless of when the data were collected.
+**Required:** Yes
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| Start Date | Yes | No | Text | The start date for the time period the data refer to, formatted as YYYY, YYYY-MM, or YYYY-MM-DD, with no spaces in date expressions. |
-| End Date | Yes | No | Text | The end date for the time period the data refer to, formatted as YYYY, YYYY-MM, or YYYY-MM-DD, with no spaces in date expressions. |
-| Time Frame | No | No | Text | An optional free-text description of the time period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present. |
+|---|---|---|---|---|
+| [Start Date](#time-periods_start_date) | Yes | No | Text | The start date for the time period the data refer to, formatted as YYYY, YYYY-MM, or YYYY-MM-DD, with no spaces in date expressions. |
+| [End Date](#time-periods_end_date) | Yes | No | Text | The end date for the time period the data refer to, formatted as YYYY, YYYY-MM, or YYYY-MM-DD, with no spaces in date expressions. |
+| [Time Frame](#time-periods_time_frame) | No | No | Text | An optional free-text description of the time period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present. |
+
##### Start Date
-**Description:** The start date for the time period the data refer to, formatted as YYYY, YYYY-MM, or YYYY-MM-DD, with no spaces in date expressions.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** The start date for the time period the data refer to, formatted as YYYY, YYYY-MM, or YYYY-MM-DD, with no spaces in date expressions.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"2000"
+```text
+2000
```
-```json
-"2019-10"
+```text
+2019-10
```
-```json
-"2021-03-01"
+```text
+2021-03-01
```
+
##### End Date
-**Description:** The end date for the time period the data refer to, formatted as YYYY, YYYY-MM, or YYYY-MM-DD, with no spaces in date expressions.
-
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** The end date for the time period the data refer to, formatted as YYYY, YYYY-MM, or YYYY-MM-DD, with no spaces in date expressions.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"2000"
+```text
+2000
```
-```json
-"2019-10"
+```text
+2019-10
```
-```json
-"2021-03-01"
+```text
+2021-03-01
```
+
##### Time Frame
-**Description:** An optional free-text description of the time period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present.
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
-
-**Usage Notes:** The Time Frame should not simply restate the date(s) in words. For example, if the Time Period starts in 2020-01, the Time Frame should repeat 'January 2020'.
+**Description:** An optional free-text description of the time period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+**Usage Notes:** The Time Frame should not simply restate the date(s) in words. For example, if the Time Period starts in 2020-01, the Time Frame should repeat 'January 2020'.
**Examples:**
-```json
-"Fall 2001"
+```text
+Fall 2001
```
-```json
-"Winter Semester 2019"
+```text
+Winter Semester 2019
```
-###### Complete Examples (with Subfields):
-```
- start_date: 2018
- end_date: 2018
- time_frame: Summer and Fall 2018
-```
+###### Complete Time Periods Examples (with Subfields):
-```
- start_date: 2020-10
- end_date: 2020-10
+```yaml
+- Start Date: '2018'
+ End Date: '2018'
+ Time Frame: Summer and Fall 2018
+
+- Start Date: 2020-10
+ End Date: 2020-10
```
@@ -2421,53 +2314,31 @@ The Summary is written in the third person and avoids attempting to address issu
### Title
-**Description:** The official title that describes what the data collection is about, its geographic scope, and the time period it covered.
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** The official title that describes what the data collection is about, its geographic scope, and the time period it covered.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```
- Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017
-```
-
-```
- Health and Relationships Project, United States, 2014-2015
-```
-
-```
- Targeted Interventions to Prevent Chronic Low Back Pain in High Risk Patients: A Multi-Site Pragmatic Randomized Controlled Trial (TARGET Trial), 4 U.S. cities, 2016-2019
-```
-
-```
- Aid Like A Paycheck (ALAP), Texas and California, 2014-2017
-```
-
-```
- COVID-19 Disruptions Disproportionately Affect Female Academics, Global, 2020
-```
-
-**Examples:**
-```
- Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017
+```text
+Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017
```
-```
- Health and Relationships Project, United States, 2014-2015
+```text
+Health and Relationships Project, United States, 2014-2015
```
-```
- Targeted Interventions to Prevent Chronic Low Back Pain in High Risk Patients: A Multi-Site Pragmatic Randomized Controlled Trial (TARGET Trial), 4 U.S. cities, 2016-2019
+```text
+Targeted Interventions to Prevent Chronic Low Back Pain in High Risk Patients: A Multi-Site Pragmatic Randomized Controlled Trial (TARGET Trial), 4 U.S. cities, 2016-2019
```
-```
- Aid Like A Paycheck (ALAP), Texas and California, 2014-2017
+```text
+Aid Like A Paycheck (ALAP), Texas and California, 2014-2017
```
-```
- COVID-19 Disruptions Disproportionately Affect Female Academics, Global, 2020
+```text
+COVID-19 Disruptions Disproportionately Affect Female Academics, Global, 2020
```
@@ -2476,95 +2347,86 @@ The Summary is written in the third person and avoids attempting to address issu
### Units of Analysis
-**Description:** The object(s) of analysis for the data collection, such as an organization, individual, or household.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** The object(s) of analysis for the data collection, such as an organization, individual, or household.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
+**Usage Notes:** This controlled vocabulary was taken from the DDI Alliance. Source: DDI Alliance CV AnalysisUnit https://rdf-vocabulary.ddialliance.org/ddi-cv/AnalysisUnit/2.1.3/AnalysisUnit.html.
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| label | Yes | No | Text | A human-readable form of the term. |
-| code | Yes | No | Text | A machine-readable/-actionable form of the term. |
-| uri | Yes | No | Text | The URI for the term. |
-
-##### label
+|---|---|---|---|---|
+| [Label](#units-of-analysis_label) | Yes | No | Text | A human-readable form of the term. |
+| [Code](#units-of-analysis_code) | Yes | No | Text | A machine-readable/-actionable form of the term. |
+| [Uri](#units-of-analysis_uri) | Yes | No | Text | The URI for the term. |
-**Description:** A human-readable form of the term.
+
+##### Label
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A human-readable form of the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"Organization/Institution"
+```text
+Organization/Institution
```
-```json
-"Individual"
+```text
+Individual
```
-```json
-"Household"
+```text
+Household
```
-##### code
-
-**Description:** A machine-readable/-actionable form of the term.
+
+##### Code
-**Required**: Yes
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** A machine-readable/-actionable form of the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"OrganizationOrInstitution"
+```text
+OrganizationOrInstitution
```
-```json
-"Individual"
+```text
+Individual
```
-```json
-"Household"
+```text
+Household
```
-##### uri
-
-**Description:** The URI for the term.
+
+##### Uri
-**Required**: Yes
+**Description:** The URI for the term.
+**Required:** Yes
+**Repeatable:** No
+**Accepted Values:** Text
+###### Complete Units of Analysis Examples (with Subfields):
-**Repeatable**: No
+```yaml
+- Label: Organization/Institution
+ Code: OrganizationOrInstitution
+ Uri: https://example.com/units_of_analysis/123
-**Accepted Values**: Text
-
-###### Complete Examples (with Subfields):
-```
- label: Organization/Institution
- code: OrganizationOrInstitution
- uri: https://example.com/units_of_analysis/123
-```
-
-```
- label: Individual
- code: Individual
- uri: https://example.com/units_of_analysis/234
+- Label: Individual
+ Code: Individual
+ Uri: https://example.com/units_of_analysis/234
```
-```
- label: Household
- code: Household
- uri: https://example.com/units_of_analysis/737
+```yaml
+- Label: Household
+ Code: Household
+ Uri: https://example.com/units_of_analysis/737
```
@@ -2573,63 +2435,36 @@ The Summary is written in the third person and avoids attempting to address issu
### Universe
-**Description:** The total group of persons or other entities (e.g., households or organizations) that were the object of research and to which analytic results refer.
-
-**Repeatable**: No
-
-**Accepted Values**: Text
-
-**Usage Notes:** Age, nationality, and residence commonly help to delineate a given universe, but any of a number of factors may be involved, such as sex, race, income, veteran status, criminal convictions, etc. The Universe may consist of elements other than persons, such as housing units, court cases, deaths, countries, etc. It should be possible to tell from the description of the universe whether a given individual or element (hypothetical or real) is a member of the population under study. Typically, the Universe statement is about one sentence or shorter, and reflects the entire possible population a data collection sought to study.
+**Description:** The total group of persons or other entities (e.g., households or organizations) that were the object of research and to which analytic results refer.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+**Usage Notes:** Age, nationality, and residence commonly help to delineate a given universe, but any of a number of factors may be involved, such as sex, race, income, veteran status, criminal convictions, etc. The Universe may consist of elements other than persons, such as housing units, court cases, deaths, countries, etc. It should be possible to tell from the description of the universe whether a given individual or element (hypothetical or real) is a member of the population under study. Typically, the Universe statement is about one sentence or shorter, and reflects the entire possible population a data collection sought to study.
**Examples:**
-```
- All households in the United States with phones.
-```
-
-```
- Part 1: Thirty cities in Massachusetts during 1980-1986. Parts 2-4: All residents in Massachusetts during 1986.
-```
-
-```
- Individuals self-identified as transgender, trans, genderqueer, non-binary, or other identities on the transgender identity spectrum aged 18 and older residing in the fifty U.S. states, the District of Columbia, American Samoa, Guam, Puerto Rico, and U.S. military bases overseas.
-```
-
-```
- Jihadists from the United States and Canada, along with Incels from Germany, Canada, the United States, and United Kingdom.
-```
-
-```
- All publicly funded medical examiner and coroner offices.
-```
-
-```
- Uncertified ballots for the 2000 United States presidential election in Florida.
-```
-
-**Examples:**
-```
- All households in the United States with phones.
+```text
+All households in the United States with phones.
```
-```
- Part 1: Thirty cities in Massachusetts during 1980-1986. Parts 2-4: All residents in Massachusetts during 1986.
+```text
+Part 1: Thirty cities in Massachusetts during 1980-1986. Parts 2-4: All residents in Massachusetts during 1986.
```
-```
- Individuals self-identified as transgender, trans, genderqueer, non-binary, or other identities on the transgender identity spectrum aged 18 and older residing in the fifty U.S. states, the District of Columbia, American Samoa, Guam, Puerto Rico, and U.S. military bases overseas.
+```text
+Individuals self-identified as transgender, trans, genderqueer, non-binary, or other identities on the transgender identity spectrum aged 18 and older residing in the fifty U.S. states, the District of Columbia, American Samoa, Guam, Puerto Rico, and U.S. military bases overseas.
```
-```
- Jihadists from the United States and Canada, along with Incels from Germany, Canada, the United States, and United Kingdom.
+```text
+Jihadists from the United States and Canada, along with Incels from Germany, Canada, the United States, and United Kingdom.
```
-```
- All publicly funded medical examiner and coroner offices.
+```text
+All publicly funded medical examiner and coroner offices.
```
-```
- Uncertified ballots for the 2000 United States presidential election in Florida.
+```text
+Uncertified ballots for the 2000 United States presidential election in Florida.
```
@@ -2638,31 +2473,20 @@ The Summary is written in the third person and avoids attempting to address issu
### Variable Description
-**Description:** Significant variables (particularly demographic variables) in the data files.
-
-**Repeatable**: No
-
-**Accepted Values**: Text
-
-**Usage Notes:** The Variable Description provides more detailed information than the Summary, including a review of variables that are important for users to know about. The codebook, setup files, and variable groups are appropriate sources of information for Variable Description.
+**Description:** Significant variables (particularly demographic variables) in the data files.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+**Usage Notes:** The Variable Description provides more detailed information than the Summary, including a review of variables that are important for users to know about. The codebook, setup files, and variable groups are appropriate sources of information for Variable Description.
**Examples:**
-```
- The data includes variables about participants' and their parents' moods, interviewer observations, families' activities, families' health history, participants' school records, and parents' substance use. Demographic variables include race, religion, annual household income, and the participants' parents' employment statuses.
-```
-
-```
- The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, including victim demographic information, substance abuse history, information on whether the victim is open about their LGBTQ identification, the victim's job status, and information about how the victim reacted to the crime, such as whether or not they reported the crime to the police and their level of cooperation with the police and prosecution.
-```
-
-**Examples:**
-```
- The data includes variables about participants' and their parents' moods, interviewer observations, families' activities, families' health history, participants' school records, and parents' substance use. Demographic variables include race, religion, annual household income, and the participants' parents' employment statuses.
+```text
+The data includes variables about participants' and their parents' moods, interviewer observations, families' activities, families' health history, participants' school records, and parents' substance use. Demographic variables include race, religion, annual household income, and the participants' parents' employment statuses.
```
-```
- The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, including victim demographic information, substance abuse history, information on whether the victim is open about their LGBTQ identification, the victim's job status, and information about how the victim reacted to the crime, such as whether or not they reported the crime to the police and their level of cooperation with the police and prosecution.
+```text
+The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, including victim demographic information, substance abuse history, information on whether the victim is open about their LGBTQ identification, the victim's job status, and information about how the victim reacted to the crime, such as whether or not they reported the crime to the police and their level of cooperation with the police and prosecution.
```
@@ -2671,107 +2495,97 @@ The Summary is written in the third person and avoids attempting to address issu
### Version History
-**Description:** A record of how the data collection has changed over time.
-
-**Repeatable**: Yes
-
-**Accepted Values**: Multi-part element; see subfield definitions for more information.
-
+**Description:** A record of how the data collection has changed over time.
+**Required:** No
+**Repeatable:** Yes
+**Accepted Values:** Multi-part element; see subfields
#### Subfields:
| Property | Required? | Repeatable? | Accepted Values | Description |
-| -------- | --------- | ----------- | --------------- | ----------- |
-| version_number | No | No | Text | A version number for a study. |
-| version_date | No | No | Text | The date on which a given version of a data collection was released. |
-| version_note | No | No | Text | Provenance information about a given version of the data collection. |
-
-##### version_number
-
-**Description:** A version number for a study.
-
-**Required**: No
-
-**Repeatable**: No
+|---|---|---|---|---|
+| [Version Number](#version-history_version_number) | No | No | Text | A version number for a study. |
+| [Version Date](#version-history_version_date) | No | No | Text | The date on which a given version of a data collection was released. |
+| [Version Note](#version-history_version_note) | No | No | Text | Provenance information about a given version of the data collection. |
-**Accepted Values**: Text
+
+##### Version Number
-**Usage Notes:** Versioning should follow ICPSR conventions
+**Description:** A version number for a study.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+**Usage Notes:** Versioning should follow ICPSR conventions
**Examples:**
-```json
-"V1"
+```text
+V1
```
-```json
-"V2"
+```text
+V2
```
-```json
-"V3"
+```text
+V3
```
-##### version_date
+
+##### Version Date
-**Description:** The date on which a given version of a data collection was released.
-
-**Required**: No
-
-**Repeatable**: No
-
-**Accepted Values**: Text
+**Description:** The date on which a given version of a data collection was released.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"2020-07-20"
+```text
+2020-07-20
```
-```json
-"2022-01-31"
+```text
+2022-01-31
```
-##### version_note
-
-**Description:** Provenance information about a given version of the data collection.
-
-**Required**: No
-
-**Repeatable**: No
+
+##### Version Note
-**Accepted Values**: Text
+**Description:** Provenance information about a given version of the data collection.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
**Examples:**
-```json
-"File CB3025.ALL.PDF was removed from any previous datasets and flagged as a study-level file, so that it will accompany all downloads."
+```text
+File CB3025.ALL.PDF was removed from any previous datasets and flagged as a study-level file, so that it will accompany all downloads.
```
-```json
-"The data producer provided additional data files."
+```text
+The data producer provided additional data files.
```
-```json
-"The codebook descriptions of variables TANSUP, EMOSUP, and SOCSUP were corrected."
+```text
+The codebook descriptions of variables TANSUP, EMOSUP, and SOCSUP were corrected.
```
-###### Complete Examples (with Subfields):
-```
- version_number: V2
- version_date: 2023-08-12
- version_note: The data producer provided additional data files.
-```
+###### Complete Version History Examples (with Subfields):
-```
- version_number: V1
- version_date: 2021-03-01
- version_note: Initial release
-```
+```yaml
+- Version Number: V2
+ Version Date: '2023-08-12'
+ Version Note: The data producer provided additional data files.
+- Version Number: V1
+ Version Date: '2021-03-01'
+ Version Note: Initial release
```
- version_number: V1
- version_date: 2024-06-28
- version_note: Initial release
+
+```yaml
+- Version Number: V1
+ Version Date: '2024-06-28'
+ Version Note: Initial release
```
@@ -2780,31 +2594,20 @@ The Summary is written in the third person and avoids attempting to address issu
### Weights
-**Description:** The weight variables and the criteria for using them in data analysis or other information about how the data are weighted if no weight variables are present.
-
-**Repeatable**: No
-
-**Accepted Values**: Text
-
-**Usage Notes:** Weight includes any information about weighting variables in the data, as well as any other weight information provided by the Principal Investigator. If a weighting formula or coefficient was developed, provide this formula, define its elements, and indicate how the formula is applied to the data. It is acceptable to summarize additional documentation and refer users to those resources for more information.
+**Description:** The weight variables and the criteria for using them in data analysis or other information about how the data are weighted if no weight variables are present.
+**Required:** No
+**Repeatable:** No
+**Accepted Values:** Text
+**Usage Notes:** Weight includes any information about weighting variables in the data, as well as any other weight information provided by the Principal Investigator. If a weighting formula or coefficient was developed, provide this formula, define its elements, and indicate how the formula is applied to the data. It is acceptable to summarize additional documentation and refer users to those resources for more information.
**Examples:**
-```
- Both the TransPop and Cisgender datasets have the same variable named WEIGHT as the weighting variable. The combination datasets have a set of three weight variables (WEIGHT_TRANSPOP, WEIGHT_CISGENDER, WEIGHT_CISGENDER_TRANSPOP)
-```
-
-```
- A weight variable with two implied decimal places has been included and must be used in any analysis.
+```text
+Both the TransPop and Cisgender datasets have the same variable named WEIGHT as the weighting variable. The combination datasets have a set of three weight variables (WEIGHT_TRANSPOP, WEIGHT_CISGENDER, WEIGHT_CISGENDER_TRANSPOP)
```
-**Examples:**
-```
- Both the TransPop and Cisgender datasets have the same variable named WEIGHT as the weighting variable. The combination datasets have a set of three weight variables (WEIGHT_TRANSPOP, WEIGHT_CISGENDER, WEIGHT_CISGENDER_TRANSPOP)
-```
-
-```
- A weight variable with two implied decimal places has been included and must be used in any analysis.
+```text
+A weight variable with two implied decimal places has been included and must be used in any analysis.
```
diff --git a/rde_schema/property_bank/person.json b/rde_schema/property_bank/person.json
index d1cfbc8..61e1672 100644
--- a/rde_schema/property_bank/person.json
+++ b/rde_schema/property_bank/person.json
@@ -38,17 +38,12 @@
]
},
"orcid": {
- "Title": "ORCID Identifier",
+ "title": "ORCID Identifier",
"description": "The person's Open Researcher and Contributor ID (ORCID).",
"type": "string",
"format": "uri",
"examples": [ "https://orcid.org/0000-0001-6289-1234" ]
},
- "researcher_passport_profile_id": {
- "description": "The person's ICPSR Researcher Passport Identifier.",
- "type": "string",
- "examples": []
- },
"affiliations": {
"title": "Affiliation(s)",
"description": "The person's affiliated organization(s).",
diff --git a/rde_schema/rde_markdown_generation.py b/rde_schema/rde_markdown_generation.py
index ae0ded4..e331d9f 100644
--- a/rde_schema/rde_markdown_generation.py
+++ b/rde_schema/rde_markdown_generation.py
@@ -1,335 +1,323 @@
import json
-import yaml
from pathlib import Path
from datetime import datetime
-import os
+import yaml
+
+ROOT = Path("C:/icpsr_github/metadata/rde_schema")
+PROPERTY_DIR = ROOT / "property_bank"
+OUTPUT_FILE = ROOT / "icpsr_rde_schema.md"
+
+# ----------------------------
+# Configuration
+# ----------------------------
+
+TOP_LEVEL_REQUIRED = {
+ "title",
+ "time_periods",
+ "geographic_coverage_areas",
+ "icpsr_subject_terms",
+ "summary"
+}
+
+skip_files = {
+ "common_data_elements.json",
+ "contributors.json",
+ "deposits.json",
+ "extent_of_processing.json",
+ "external_source_id.json",
+ "languages.json",
+ "link_title.json",
+ "link_url.json",
+ "manuscript_number.json",
+ "oversamples.json",
+ "restrictions.json",
+ "study_purpose.json"
+}
# ----------------------------
# Utilities
# ----------------------------
-def create_anchor(title):
- anchor = title.lower().replace(' ', '-')
- anchor = ''.join(c for c in anchor if c.isalnum() or c == '-')
- while '--' in anchor:
- anchor = anchor.replace('--', '-')
- return anchor.strip('-')
-
-def shorten_multi_part(text):
- if text == "Multi-part element; see subfield definitions for more information.":
- return "Multi-part element; see subfields"
- return text
-
-def describe_schema_type(schema, type_mapping):
- if not isinstance(schema, dict):
- return "", "No"
- schema_type = schema.get("type")
- if schema_type == "array":
- items = schema.get("items", {})
- item_type = items.get("type")
- accepted = type_mapping.get(item_type, item_type or "Array")
- return accepted, "Yes"
- accepted = type_mapping.get(schema_type, schema_type or "")
- return accepted, "No"
-
-def is_array_of_objects(schema):
- return (
- schema.get("type") == "array"
- and schema.get("items", {}).get("type") == "object"
- and "properties" in schema.get("items", {})
- )
-
-def extract_from_pointer(doc, pointer_path):
- current = doc
- for part in pointer_path.split('/'):
- if isinstance(current, dict) and part in current:
- current = current[part]
+def anchor(text):
+ return text.lower().replace(" ", "-").replace("_", "-")
+
+def get_usage_notes(note):
+ """
+ Returns usage notes text for a property.
+ Supports either inline string or $ref to local YAML file.
+ """
+ if isinstance(note, str):
+ return note # inline text
+
+ if isinstance(note, dict) and "$ref" in note:
+ ref = note["$ref"]
+ # Extract filename from URL, e.g., summary
+ filename = ref.split("notes/")[-1].split("#")[0].rstrip("/")
+ notes_file = Path(ROOT, "notes", f"{filename}.yaml")
+ if notes_file.exists():
+ with open(notes_file, "r") as f:
+ data = yaml.safe_load(f)
+ match = data.get('usageNotes')
+
+ return match.strip() if match else None
+
+ return None
+
+def check_cvs(short_cv):
+ cv_definitions = Path(ROOT, "vocab_preset", "definitions.json")
+ with open(cv_definitions, 'r', encoding='utf-8') as cvd:
+ cv_data = json.load(cvd)
+
+ match = [d for d in cv_data if d['code'] == short_cv]
+
+ if match:
+ if match[0].get('externalURI'):
+ external_uri = f" ({match[0]['externalURI']})"
else:
- return None
- return current
+ external_uri = ""
+ return f"{match[0]['description']}{external_uri}"
+ else:
+ return None
+
+def type_label(t):
+ mapping = {
+ "string": "Text",
+ "integer": "Number",
+ "boolean": "Boolean",
+ "object": "Multi-part element; see subfields",
+ "array": "Array"
+ }
+ return mapping.get(t, t or "")
-def resolve_ref(ref_url, schema_refs):
- if '#/' in ref_url:
- base, pointer = ref_url.split('#/', 1)
- doc = schema_refs.get(base) or schema_refs.get(base.split('/version/')[0])
- if doc:
- return doc, pointer
- return schema_refs.get(ref_url) or schema_refs.get(ref_url.split('/version/')[0])
+def ref_to_link(ref):
+ """
+ Convert schema $ref → markdown link
+ """
+ name = ref.split("/")[-3] if "/version/" in ref else ref.split("/")[-1]
+ title = name.replace("_", " ").title()
+ return title, f"See the [{title}](#{anchor(title)}) property."
# ----------------------------
-# Rendering helpers
+# Schema loading
# ----------------------------
-def render_property_header(schema):
- title = schema.get('title', 'Untitled')
- anchor = create_anchor(title)
- return [
- f'',
- f"### {title}\n"
- ], title, anchor
-
-def render_core_metadata(schema, type_mapping):
- markdown = []
- description = schema.get('description', '')
- if description:
- markdown.append(f"**Description:** {description}\n")
- accepted, repeatable = describe_schema_type(schema, type_mapping)
- markdown.append(f"**Repeatable**: {repeatable}\n")
- markdown.append(f"**Accepted Values**: {accepted}\n")
- return markdown, accepted, repeatable, description
-
-def build_toc_entry(title, anchor, required, repeatable, accepted_values, description):
- accepted_values = shorten_multi_part(accepted_values)
- return {
- 'title': title,
- 'anchor': anchor,
- 'required': required,
- 'repeatable': repeatable,
- 'accepted_values': accepted_values,
- 'description': description
- }
+def load_schemas():
+ schemas = {}
+ for f in PROPERTY_DIR.glob("*.json"):
+ if f.name in skip_files:
+ continue
+ data = json.loads(f.read_text(encoding="utf-8"))
+ schemas[f.stem] = data
+ return schemas
-def render_subfields(schema, schema_refs, type_mapping):
- markdown = []
+# ----------------------------
+# Schema parsing
+# ----------------------------
- # Support both:
- # - object with properties
- # - array of objects
+def get_subfields(schema):
+ """
+ Normalize object + array-of-object schemas
+ """
+ if schema.get("type") == "object":
+ return schema.get("properties", {}), schema.get("required", [])
if schema.get("type") == "array":
- items = schema['items']
- properties = items.get('properties', {})
- required = items.get('required', [])
- else:
- properties = schema.get('properties', {})
- required = schema.get('required', [])
+ items = schema.get("items", {})
+ if items.get("type") == "object":
+ return items.get("properties", {}), items.get("required", [])
+ return {}, []
- markdown.append("#### Subfields:\n")
- markdown.append("| Property | Required? | Repeatable? | Accepted Values | Description |")
- markdown.append("| -------- | --------- | ----------- | --------------- | ----------- |")
+def get_repeatable(schema):
+ return "Yes" if schema.get("type") == "array" else "No"
- resolved = {}
- for name, prop in properties.items():
- if '$ref' in prop:
- ref = resolve_ref(prop['$ref'], schema_refs)
- if isinstance(ref, tuple):
- doc, pointer = ref
- resolved[name] = extract_from_pointer(doc, pointer) or prop
- elif ref:
- resolved[name] = ref
- else:
- resolved[name] = prop
- else:
- resolved[name] = prop
-
- # Build a map of key -> title for complete examples
- key_to_title = {k: v.get('title', k) for k, v in resolved.items()}
-
- for name, prop in resolved.items():
- accepted, repeatable = describe_schema_type(prop, type_mapping)
- accepted = shorten_multi_part(accepted)
- markdown.append(
- f"| {prop.get('title', name)} | "
- f"{'Yes' if name in required else 'No'} | "
- f"{repeatable} | "
- f"{accepted} | "
- f"{prop.get('description', '')} |"
- )
- markdown.append("")
-
- for name, prop in resolved.items():
- accepted, _ = describe_schema_type(prop, type_mapping)
- accepted = shorten_multi_part(accepted)
- markdown.extend([
- f"##### {prop.get('title', name)}\n",
- f"**Description:** {prop.get('description', '')}\n",
- f"**Required**: {'Yes' if name in required else 'No'}\n",
- "**Repeatable**: No\n",
- f"**Accepted Values**: {accepted}\n"
- ])
- if 'usageNotes' in prop:
- markdown.append(f"**Usage Notes:** {prop['usageNotes']}\n")
- if prop.get('examples'):
- markdown.append("**Examples:**\n")
- for example in prop['examples']:
- markdown.append("```json")
- if isinstance(example, str):
- markdown.append(f'"{example}"')
- else:
- markdown.append(json.dumps(example, indent=2))
- markdown.append("```\n")
-
- return markdown, key_to_title
-
-def render_simple_field(schema, required, schema_refs):
- markdown = []
-
- if required == "Yes":
- markdown.append(f"**Required**: {required}\n")
-
- usage = schema.get('usageNotes')
- if isinstance(usage, dict) and '$ref' in usage:
- ref = resolve_ref(usage['$ref'], schema_refs)
- if isinstance(ref, tuple):
- doc, pointer = ref
- text = extract_from_pointer(doc, pointer)
- if text:
- markdown.append(f"**Usage Notes:** {text}\n")
- elif isinstance(usage, str):
- markdown.append(f"**Usage Notes:** {usage}\n")
-
- if schema.get('examples'):
- markdown.append("**Examples:**\n")
- for ex in schema['examples']:
- markdown.extend(["```", f"{ex}", "```\n"])
-
- return markdown
-
-def render_complete_examples(schema, has_subfields, key_to_title=None):
- markdown = []
- if 'examples' not in schema:
- return markdown
-
- heading = "###### Complete Examples (with Subfields):" if has_subfields else "**Examples**:"
- markdown.append(heading)
-
- for example_group in schema['examples']:
- markdown.append("```")
- if isinstance(example_group, list): # array of objects
- for obj in example_group:
- for k, v in obj.items():
- title = key_to_title.get(k, k) if key_to_title else k
- markdown.append(f" {title}: {v}")
- elif isinstance(example_group, dict):
- for k, v in example_group.items():
- title = key_to_title.get(k, k) if key_to_title else k
- markdown.append(f" {title}: {v}")
- else: # primitive example
- markdown.append(f" {example_group}")
- markdown.append("```\n")
- return markdown
+def get_type(schema):
+ if schema.get("type") == "array":
+ item_type = schema.get("items", {}).get("type")
+ return type_label(item_type) if item_type else "Array"
+ return type_label(schema.get("type"))
# ----------------------------
-# Main conversion
+# Rendering helpers
# ----------------------------
-def json_schema_to_markdown(schema, property_name=None, required_fields=None, schema_refs=None):
- type_mapping = {
- 'string': 'Text',
- 'integer': 'Number',
- 'boolean': 'Boolean',
- 'object': 'Multi-part element; see subfield definitions for more information.'
- }
-
- schema_refs = schema_refs or {}
- markdown = []
-
- required = "Yes" if property_name and required_fields and property_name in required_fields else "No"
+def render_examples(examples):
+ md = []
+ for ex in examples:
+ md.append("```json")
+ if isinstance(ex, (dict, list)):
+ md.append(json.dumps(ex, indent=2))
+ else:
+ md.append(str(ex))
+ md.append("```\n")
+ return md
- header, title, anchor = render_property_header(schema)
- markdown.extend(header)
+def render_subfields(properties, required, parent_anchor, level=4):
+ """
+ Render subfields table AND detailed per-subfield sections with anchors and examples.
+ """
+ md = []
- core_md, accepted, repeatable, description = render_core_metadata(schema, type_mapping)
- markdown.extend(core_md)
+ md.append(f"{'#' * level} Subfields:\n")
- toc_entry = build_toc_entry(title, anchor, required, repeatable, accepted, description)
+ # Table header
+ md.append("| Property | Required? | Repeatable? | Accepted Values | Description |")
+ md.append("|---|---|---|---|---|")
- if is_array_of_objects(schema) or is_object_with_properties(schema):
- sub_md, key_to_title = render_subfields(schema, schema_refs, type_mapping)
- markdown.extend(sub_md)
- else:
- markdown.extend(render_simple_field(schema, required, schema_refs))
- key_to_title = None
+ # Table rows
+ for name, prop in properties.items():
+ title = prop.get("title", name.replace("_", " ").title())
+ desc = prop.get("description", "")
+ if "$ref" in prop and ("property_banks/person/" in prop["$ref"] or "property_banks/organization/" in prop["$ref"]):
+ ref_title, desc = ref_to_link(prop["$ref"])
+ typ = "Object"
+ else:
+ typ = get_type(prop)
+ anchor_id = f"{parent_anchor}_{name}"
+ md.append(f"| [{title}](#{anchor_id}) | {'Yes' if name in required else 'No'} | "
+ f"{get_repeatable(prop)} | {typ} | {desc} |")
- # Render property-level examples
- markdown.extend(render_complete_examples(schema, is_array_of_objects(schema), key_to_title))
+ md.append("")
- return '\n'.join(markdown), toc_entry
+ # ---- Per-subfield detailed sections ----
+ for name, prop in properties.items():
+ title = prop.get("title", name.replace("_", " ").title())
+ rep = get_repeatable(prop)
+ req = "Yes" if name in required else "No"
+
+ if "$ref" in prop and ("property_banks/person/" in prop["$ref"] or "property_banks/organization/" in prop["$ref"]):
+ ref_title, ref_link = ref_to_link(prop["$ref"])
+ desc = f"See the [{ref_title}](#{anchor(ref_title)}) property."
+ typ = f"See the [{ref_title}](#{anchor(ref_title)}) property"
+ else:
+ desc = prop.get("description", "")
+ typ = get_type(prop)
+
+
+ anchor_id = f"{parent_anchor}_{name}"
+ md.append(f"")
+ md.append(f"{'#' * (level + 1)} {title}\n")
+
+ md.append(f"**Description:** {desc} ")
+ md.append(f"**Required:** {req} ")
+ md.append(f"**Repeatable:** {rep} ")
+ md.append(f"**Accepted Values:** {typ} ")
+
+ # if "controlledVocab" in prop:
+ # md.append(f"**Controlled Vocabulary:** {check_cvs(prop['controlledVocab'])} ")
+
+ if "usageNotes" in prop:
+ note = get_usage_notes(prop['usageNotes'])
+ if note:
+ md.append(f"**Usage Notes:** {note} ")
+
+ # Examples per subfield
+ if "examples" in prop:
+ md.append("\n**Examples:**\n")
+ for ex in prop["examples"]:
+ md.append("```json")
+ md.append(json.dumps(ex, indent=2) if isinstance(ex, (dict, list)) else f'"{ex}"')
+ md.append("```\n")
+
+ # Recurse for nested subfields
+ subprops, subreq = get_subfields(prop)
+ if subprops:
+ md.extend(render_subfields(subprops, subreq, anchor_id, level + 1))
+
+ return md
+
+def render_property(name, schema):
+ md = []
+
+ title = schema.get("title", name.replace("_", " ").title())
+ desc = schema.get("description", "")
+ required = "Yes" if name in TOP_LEVEL_REQUIRED else "No"
+ anchor_id = anchor(title)
+
+ md.append(f"")
+ md.append(f"### {title}\n")
+ if desc:
+ md.append(f"**Description:** {desc} ")
+ md.append(f"**Required:** {required} ")
+ md.append(f"**Repeatable:** {get_repeatable(schema)} ")
+ md.append(f"**Accepted Values:** {get_type(schema)} ")
+
+ # Check for additional keywords: controlledVocab and usageNotes
+ # if "controlledVocab" in schema:
+ # md.append(f"**Controlled Vocabulary:** {check_cvs(schema['controlledVocab'])} ")
+
+ if "usageNotes" in schema:
+ note = get_usage_notes(schema['usageNotes'])
+ if note:
+ md.append(f"**Usage Notes:** {note} ")
+
+ properties, required_subfields = get_subfields(schema)
+ if properties:
+ md.extend(render_subfields(properties, required_subfields, anchor_id))
+
+ # Examples
+ schema_type = schema.get("type")
+ items_type = schema.get("items", {}).get("type")
+
+ if "examples" in schema:
+ if schema_type == "object" or (schema_type == "array" and items_type == "object"):
+ # Complex type → "Complete Examples (with Subfields)"
+ md.append(f"###### Complete {title} Examples (with Subfields):\n")
+ md.append("```json")
+ md.append(json.dumps(schema["examples"], indent=2))
+ md.append("```\n")
+ else:
+ # Scalar type → normal examples
+ md.append("\n**Examples:**\n")
+ for ex in schema["examples"]:
+ md.append("```json")
+ md.append(json.dumps(ex, indent=2) if isinstance(ex, (dict, list)) else f'"{ex}"')
+ md.append("```\n")
+
+ return md, {
+ "title": title,
+ "anchor": anchor_id,
+ "required": required,
+ "repeatable": get_repeatable(schema),
+ "type": get_type(schema),
+ "description": desc
+ }
# ----------------------------
-# Folder processing
+# Main
# ----------------------------
-def load_all_schemas(property_folder, skip_files, notes_folder=None):
- refs = {}
- for path in Path(property_folder).glob('*.json'):
- if path.name in skip_files:
- continue
- data = json.loads(path.read_text(encoding='utf-8'))
- if '$id' in data:
- refs[data['$id']] = data
- refs[data['$id'].split('/version/')[0]] = data
-
- if notes_folder and Path(notes_folder).exists():
- for path in Path(notes_folder).glob('*.yaml'):
- data = yaml.safe_load(path.read_text(encoding='utf-8'))
- if data and '$id' in data:
- refs[data['$id']] = data
-
- return refs
-
-def process_json_folder(property_folder, output_file, notes_folder=None):
- skip_files = {
- "common_data_elements.json",
- "contributors.json",
- "deposits.json",
- "extent_of_processing.json",
- "external_source_id.json",
- "languages.json",
- "link_title.json",
- "link_url.json",
- "manuscript_number.json",
- "oversamples.json",
- "restrictions.json",
- "study_purpose.json"
- }
-
- schema_refs = load_all_schemas(property_folder, skip_files, notes_folder)
- json_files = sorted(f for f in Path(property_folder).glob('*.json') if f.name not in skip_files)
-
- all_md = [
- "# DRAFT ICPSR RDE Metadata Schema Documentation\n",
- f"Last updated: {datetime.now().strftime('%B %d, %Y')}\n"
- ]
-
- toc = []
+def main():
+ schemas = load_schemas()
sections = []
+ toc = []
- for path in json_files:
- print(f"Processing {os.path.basename(path)}...")
- schema = json.loads(path.read_text(encoding='utf-8'))
- md, entry = json_schema_to_markdown(schema, schema_refs=schema_refs)
- sections.append(md)
+ for name, schema in sorted(schemas.items()):
+ md, entry = render_property(name, schema)
+ sections.extend(md)
+ sections.append("\n---\n")
toc.append(entry)
- all_md.append("## Metadata Elements: Overview\n")
- all_md.append("| Property | Required? | Repeatable? | Accepted Values | Description |")
- all_md.append("| -------- | --------- | ----------- | --------------- | ----------- |")
+ output = []
+ output.append("# ICPSR RDE Metadata Schema\n")
+ output.append(f"Last updated: {datetime.now():%B %d, %Y}\n")
+ output.append("## Overview\n")
+
+ output.append("| Property | Required? | Repeatable? | Accepted Values | Description |")
+ output.append("|---|---|---|---|---|")
for e in toc:
- accepted_display = shorten_multi_part(e['accepted_values'])
- all_md.append(
- f"| [{e['title']}](#{e['anchor']}) | {e['required']} | {e['repeatable']} | "
- f"{accepted_display} | {e['description']} |"
+ output.append(
+ f"| [{e['title']}](#{e['anchor']}) | "
+ f"{e['required']} | "
+ f"{e['repeatable']} | "
+ f"{e['type']} | "
+ f"{e['description']} |"
)
- all_md.append("\n---\n## Metadata Elements: Detailed Information\n")
-
- for section in sections:
- all_md.append(section)
- all_md.append("\n---\n")
-
- Path(output_file).write_text('\n'.join(all_md), encoding='utf-8')
- print(f"\nSuccessfully generated: {output_file}")
+ output.append("\n---\n## Properties\n")
+ output.extend(sections)
-# ----------------------------
-# Entry point
-# ----------------------------
+ OUTPUT_FILE.write_text("\n".join(output), encoding="utf-8")
+ print(f"Markdown generated: {OUTPUT_FILE}")
if __name__ == "__main__":
- main_dir = "C:/icpsr_github/metadata/rde_schema"
-
- process_json_folder(
- property_folder=os.path.join(main_dir, "property_bank"),
- notes_folder=os.path.join(main_dir, "notes"),
- output_file=os.path.join(main_dir, "icpsr_rde_schema.md")
- )
\ No newline at end of file
+ main()
\ No newline at end of file
diff --git a/rde_schema/rde_markdown_generation_examples.py b/rde_schema/rde_markdown_generation_examples.py
new file mode 100644
index 0000000..1e496a8
--- /dev/null
+++ b/rde_schema/rde_markdown_generation_examples.py
@@ -0,0 +1,376 @@
+import json
+from pathlib import Path
+from datetime import datetime
+import yaml
+
+ROOT = Path("C:/icpsr_github/metadata/rde_schema")
+PROPERTY_DIR = ROOT / "property_bank"
+OUTPUT_FILE = ROOT / "icpsr_rde_schema.md"
+
+# ----------------------------
+# Configuration
+# ----------------------------
+
+TOP_LEVEL_REQUIRED = {
+ "title",
+ "time_periods",
+ "geographic_coverage_areas",
+ "icpsr_subject_terms",
+ "summary"
+}
+
+skip_files = {
+ "common_data_elements.json",
+ "contributors.json",
+ "deposits.json",
+ "extent_of_processing.json",
+ "external_source_id.json",
+ "languages.json",
+ "link_title.json",
+ "link_url.json",
+ "manuscript_number.json",
+ "oversamples.json",
+ "restrictions.json",
+ "study_purpose.json"
+}
+
+# ----------------------------
+# Utilities
+# ----------------------------
+
+def anchor(text):
+ return text.lower().replace(" ", "-").replace("_", "-")
+
+def convert_example_to_titles(data, schema):
+ """
+ Recursively replace property keys with schema 'title' values.
+ Works for objects and arrays of objects.
+ """
+ if isinstance(data, dict):
+ props = schema.get("properties", {})
+ result = {}
+
+ for key, value in data.items():
+ prop_schema = props.get(key, {})
+ title = prop_schema.get("title", key.replace("_", " ").title())
+
+ result[title] = convert_example_to_titles(value, prop_schema)
+
+ return result
+
+ elif isinstance(data, list):
+ items_schema = schema.get("items", {})
+ return [convert_example_to_titles(item, items_schema) for item in data]
+
+ else:
+ return data
+
+def render_yaml_examples(examples, schema):
+ md = []
+
+ for ex in examples:
+
+ # strings stay unchanged
+ if isinstance(ex, str):
+ md.append("```text")
+ md.append(ex)
+ md.append("```\n")
+ continue
+
+ # convert keys to titles
+ human_ex = convert_example_to_titles(ex, schema)
+
+ # dump YAML normally
+ yaml_str = yaml.safe_dump(human_ex, sort_keys=False)
+
+ # insert a blank line between top-level list items
+ if isinstance(human_ex, list):
+ lines = yaml_str.splitlines()
+ new_lines = []
+ for i, line in enumerate(lines):
+ new_lines.append(line)
+ # if the next line starts a new '- ', insert a blank line
+ if i + 1 < len(lines) and lines[i + 1].startswith("- "):
+ new_lines.append("") # blank line between items
+ yaml_str = "\n".join(new_lines)
+
+ md.append("```yaml")
+ md.append(yaml_str)
+ md.append("```\n")
+
+ return md
+
+def get_usage_notes(note):
+ """
+ Returns usage notes text for a property.
+ Supports either inline string or $ref to local YAML file.
+ """
+ if isinstance(note, str):
+ return note # inline text
+
+ if isinstance(note, dict) and "$ref" in note:
+ ref = note["$ref"]
+ # Extract filename from URL, e.g., summary
+ filename = ref.split("notes/")[-1].split("#")[0].rstrip("/")
+ notes_file = Path(ROOT, "notes", f"{filename}.yaml")
+ if notes_file.exists():
+ with open(notes_file, "r") as f:
+ data = yaml.safe_load(f)
+ match = data.get('usageNotes')
+
+ return match.strip() if match else None
+
+ return None
+
+def check_cvs(short_cv):
+ cv_definitions = Path(ROOT, "vocab_preset", "definitions.json")
+ with open(cv_definitions, 'r', encoding='utf-8') as cvd:
+ cv_data = json.load(cvd)
+
+ match = [d for d in cv_data if d['code'] == short_cv]
+
+ if match:
+ if match[0].get('externalURI'):
+ external_uri = f" ({match[0]['externalURI']})"
+ else:
+ external_uri = ""
+ return f"{match[0]['description']}{external_uri}"
+ else:
+ return None
+
+def type_label(t):
+ mapping = {
+ "string": "Text",
+ "integer": "Number",
+ "boolean": "Boolean",
+ "object": "Multi-part element; see subfields",
+ "array": "Array"
+ }
+ return mapping.get(t, t or "")
+
+def ref_to_link(ref):
+ """
+ Convert schema $ref → markdown link
+ """
+ name = ref.split("/")[-3] if "/version/" in ref else ref.split("/")[-1]
+ title = name.replace("_", " ").title()
+ return title, f"See the [{title}](#{anchor(title)}) property."
+
+# ----------------------------
+# Schema loading
+# ----------------------------
+
+def load_schemas():
+ schemas = {}
+ for f in PROPERTY_DIR.glob("*.json"):
+ if f.name in skip_files:
+ continue
+ data = json.loads(f.read_text(encoding="utf-8"))
+ schemas[f.stem] = data
+ return schemas
+
+# ----------------------------
+# Schema parsing
+# ----------------------------
+
+def get_subfields(schema):
+ """
+ Normalize object + array-of-object schemas
+ """
+ if schema.get("type") == "object":
+ return schema.get("properties", {}), schema.get("required", [])
+ if schema.get("type") == "array":
+ items = schema.get("items", {})
+ if items.get("type") == "object":
+ return items.get("properties", {}), items.get("required", [])
+ return {}, []
+
+def get_repeatable(schema):
+ return "Yes" if schema.get("type") == "array" else "No"
+
+def get_type(schema):
+ if schema.get("type") == "array":
+ item_type = schema.get("items", {}).get("type")
+ return type_label(item_type) if item_type else "Array"
+ return type_label(schema.get("type"))
+
+# ----------------------------
+# Rendering helpers
+# ----------------------------
+
+def render_examples(examples):
+ md = []
+ for ex in examples:
+ md.append("```json")
+ if isinstance(ex, (dict, list)):
+ md.append(json.dumps(ex, indent=2))
+ else:
+ md.append(str(ex))
+ md.append("```\n")
+ return md
+
+def render_subfields(properties, required, parent_anchor, level=4):
+ """
+ Render subfields table AND detailed per-subfield sections with anchors and examples.
+ """
+ md = []
+
+ md.append(f"{'#' * level} Subfields:\n")
+
+ # Table header
+ md.append("| Property | Required? | Repeatable? | Accepted Values | Description |")
+ md.append("|---|---|---|---|---|")
+
+ # Table rows
+ for name, prop in properties.items():
+ title = prop.get("title", name.replace("_", " ").title())
+ desc = prop.get("description", "")
+ if "$ref" in prop and ("property_banks/person/" in prop["$ref"] or "property_banks/organization/" in prop["$ref"]):
+ ref_title, desc = ref_to_link(prop["$ref"])
+ typ = "Object"
+ else:
+ typ = get_type(prop)
+ anchor_id = f"{parent_anchor}_{name}"
+ md.append(f"| [{title}](#{anchor_id}) | {'Yes' if name in required else 'No'} | "
+ f"{get_repeatable(prop)} | {typ} | {desc} |")
+
+ md.append("")
+
+ # ---- Per-subfield detailed sections ----
+ for name, prop in properties.items():
+ title = prop.get("title", name.replace("_", " ").title())
+ rep = get_repeatable(prop)
+ req = "Yes" if name in required else "No"
+
+ if "$ref" in prop and ("property_banks/person/" in prop["$ref"] or "property_banks/organization/" in prop["$ref"]):
+ ref_title, ref_link = ref_to_link(prop["$ref"])
+ desc = f"See the [{ref_title}](#{anchor(ref_title)}) property."
+ typ = f"See the [{ref_title}](#{anchor(ref_title)}) property"
+ else:
+ desc = prop.get("description", "")
+ typ = get_type(prop)
+
+
+ anchor_id = f"{parent_anchor}_{name}"
+ md.append(f"")
+ md.append(f"{'#' * (level + 1)} {title}\n")
+
+ md.append(f"**Description:** {desc} ")
+ md.append(f"**Required:** {req} ")
+ md.append(f"**Repeatable:** {rep} ")
+ md.append(f"**Accepted Values:** {typ} ")
+
+ # if "controlledVocab" in prop:
+ # md.append(f"**Controlled Vocabulary:** {check_cvs(prop['controlledVocab'])} ")
+
+ if "usageNotes" in prop:
+ note = get_usage_notes(prop['usageNotes'])
+ if note:
+ md.append(f"**Usage Notes:** {note} ")
+
+ # Examples per subfield
+ if "examples" in prop:
+ md.append("\n**Examples:**\n")
+ md.extend(render_yaml_examples(prop["examples"], prop))
+
+ # Recurse for nested subfields
+ subprops, subreq = get_subfields(prop)
+ if subprops:
+ md.extend(render_subfields(subprops, subreq, anchor_id, level + 1))
+
+ return md
+
+def render_property(name, schema):
+ md = []
+
+ title = schema.get("title", name.replace("_", " ").title())
+ desc = schema.get("description", "")
+ required = "Yes" if name in TOP_LEVEL_REQUIRED else "No"
+ anchor_id = anchor(title)
+
+ md.append(f"")
+ md.append(f"### {title}\n")
+ if desc:
+ md.append(f"**Description:** {desc} ")
+ md.append(f"**Required:** {required} ")
+ md.append(f"**Repeatable:** {get_repeatable(schema)} ")
+ md.append(f"**Accepted Values:** {get_type(schema)} ")
+
+ # Check for additional keywords: controlledVocab and usageNotes
+ # if "controlledVocab" in schema:
+ # md.append(f"**Controlled Vocabulary:** {check_cvs(schema['controlledVocab'])} ")
+
+ if "usageNotes" in schema:
+ note = get_usage_notes(schema['usageNotes'])
+ if note:
+ md.append(f"**Usage Notes:** {note} ")
+
+ properties, required_subfields = get_subfields(schema)
+ if properties:
+ md.extend(render_subfields(properties, required_subfields, anchor_id))
+
+ # Examples
+ schema_type = schema.get("type")
+ items_type = schema.get("items", {}).get("type")
+
+ if "examples" in schema:
+
+ schema_type = schema.get("type")
+ items_type = schema.get("items", {}).get("type")
+
+ if schema_type == "object" or (schema_type == "array" and items_type == "object"):
+ md.append(f"###### Complete {title} Examples (with Subfields):\n")
+ else:
+ md.append("\n**Examples:**\n")
+
+ md.extend(render_yaml_examples(schema["examples"], schema))
+
+ return md, {
+ "title": title,
+ "anchor": anchor_id,
+ "required": required,
+ "repeatable": get_repeatable(schema),
+ "type": get_type(schema),
+ "description": desc
+ }
+
+# ----------------------------
+# Main
+# ----------------------------
+
+def main():
+ schemas = load_schemas()
+ sections = []
+ toc = []
+
+ for name, schema in sorted(schemas.items()):
+ md, entry = render_property(name, schema)
+ sections.extend(md)
+ sections.append("\n---\n")
+ toc.append(entry)
+
+ output = []
+ output.append("# ICPSR RDE Metadata Schema\n")
+ output.append(f"Last updated: {datetime.now():%B %d, %Y}\n")
+ output.append("## Overview\n")
+
+ output.append("| Property | Required? | Repeatable? | Accepted Values | Description |")
+ output.append("|---|---|---|---|---|")
+
+ for e in toc:
+ output.append(
+ f"| [{e['title']}](#{e['anchor']}) | "
+ f"{e['required']} | "
+ f"{e['repeatable']} | "
+ f"{e['type']} | "
+ f"{e['description']} |"
+ )
+
+ output.append("\n---\n## Properties\n")
+ output.extend(sections)
+
+ OUTPUT_FILE.write_text("\n".join(output), encoding="utf-8")
+ print(f"Markdown generated: {OUTPUT_FILE}")
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file
From 7e40b11b3b8b165554c163f29f325ddc677da8b1 Mon Sep 17 00:00:00 2001
From: Mike Shallcross
Date: Tue, 10 Mar 2026 16:02:15 -0400
Subject: [PATCH 010/119] fixed markdown display
---
rde_schema/icpsr_rde_schema.md | 917 ++++++++----------
rde_schema/rde_markdown_generation.py | 117 ++-
...mples.py => rde_markdown_generation_V2.py} | 97 +-
3 files changed, 548 insertions(+), 583 deletions(-)
rename rde_schema/{rde_markdown_generation_examples.py => rde_markdown_generation_V2.py} (78%)
diff --git a/rde_schema/icpsr_rde_schema.md b/rde_schema/icpsr_rde_schema.md
index 9f0137f..d7bac0c 100644
--- a/rde_schema/icpsr_rde_schema.md
+++ b/rde_schema/icpsr_rde_schema.md
@@ -1,6 +1,6 @@
# ICPSR RDE Metadata Schema
-Last updated: March 06, 2026
+Last updated: March 10, 2026
## Overview
@@ -57,20 +57,20 @@ Last updated: March 06, 2026
**Examples:**
-```yaml
-- Add Health Parent Study
+```text
+"Add Health Parent Study"
```
-```yaml
-- FACES 2009
+```text
+"FACES 2009"
```
-```yaml
-- Survey of Consumers
+```text
+"Survey of Consumers"
```
-```yaml
-- Eurobarometer 85.2
+```text
+"Eurobarometer 85.2"
```
@@ -88,11 +88,11 @@ Last updated: March 06, 2026
**Examples:**
```text
-University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1
+"University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1"
```
```text
-United States Department of Justice. Office of Justice Programs. Office of Juvenile Justice and Delinquency Prevention. Juvenile Residential Facility Census, 2020 [United States]. Inter-university Consortium for Political and Social Research [distributor], 2024-07-15. https://doi.org/10.3886/ICPSR38914.v1
+"United States Department of Justice. Office of Justice Programs. Office of Juvenile Justice and Delinquency Prevention. Juvenile Residential Facility Census, 2020 [United States]. Inter-university Consortium for Political and Social Research [distributor], 2024-07-15. https://doi.org/10.3886/ICPSR38914.v1"
```
@@ -124,15 +124,15 @@ United States Department of Justice. Office of Justice Programs. Office of Juven
**Examples:**
```text
-2000
+"2000"
```
```text
-2019-10
+"2019-10"
```
```text
-2021-03-01
+"2021-03-01"
```
@@ -146,15 +146,15 @@ United States Department of Justice. Office of Justice Programs. Office of Juven
**Examples:**
```text
-2000
+"2000"
```
```text
-2019-10
+"2019-10"
```
```text
-2021-03-01
+"2021-03-01"
```
@@ -169,22 +169,22 @@ United States Department of Justice. Office of Justice Programs. Office of Juven
**Examples:**
```text
-Fall 2001
+"Fall 2001"
```
```text
-Student data
+"Student data"
```
###### Complete Collection Dates Examples (with Subfields):
```yaml
-- Start Date: '2018'
- End Date: '2018'
- Time Frame: Summer and Fall 2018
+- "Start Date": "2018"
+ "End Date": "2018"
+ "Time Frame": "Summer and Fall 2018"
-- Start Date: 2020-10
- End Date: 2020-10
+- "Start Date": "2020-10"
+ "End Date": "2020-10"
```
@@ -217,15 +217,15 @@ Student data
**Examples:**
```text
-Face-to-face interview: Computer-assisted (CAPI/CAMI)
+"Face-to-face interview: Computer-assisted (CAPI/CAMI)"
```
```text
-Measurements and tests
+"Measurements and tests"
```
```text
-Computer-based observation
+"Computer-based observation"
```
@@ -239,15 +239,15 @@ Computer-based observation
**Examples:**
```text
-Interview.FaceToFace.CAPIorCAMI
+"Interview.FaceToFace.CAPIorCAMI"
```
```text
-MeasurementsAndTests
+"MeasurementsAndTests"
```
```text
-Observation.ComputerBased
+"Observation.ComputerBased"
```
@@ -260,19 +260,19 @@ Observation.ComputerBased
###### Complete Collection Modes Examples (with Subfields):
```yaml
-- Collection Mode: 'Face-to-face interview: Computer-assisted (CAPI/CAMI)'
- Collection Mode Code: Interview.FaceToFace.CAPIorCAMI
- Collection Mode URI: https://example.com/collection_modes/234
+- "Collection Mode": "Face-to-face interview: Computer-assisted (CAPI/CAMI)"
+ "Collection Mode Code": "Interview.FaceToFace.CAPIorCAMI"
+ "Collection Mode URI": "https://example.com/collection_modes/234"
```
```yaml
-- Collection Mode: Measurements and tests
- Collection Mode Code: MeasurementsAndTests
- Collection Mode URI: https://example.com/collection_modes/972
+- "Collection Mode": "Measurements and tests"
+ "Collection Mode Code": "MeasurementsAndTests"
+ "Collection Mode URI": "https://example.com/collection_modes/972"
-- Collection Mode: Computer-based observation
- Collection Mode Code: Observation.ComputerBased
- Collection Mode URI: https://example.com/collection_modes/113
+- "Collection Mode": "Computer-based observation"
+ "Collection Mode Code": "Observation.ComputerBased"
+ "Collection Mode URI": "https://example.com/collection_modes/113"
```
@@ -289,7 +289,7 @@ Observation.ComputerBased
**Examples:**
```text
-https://doi.org/10.1000/182
+"https://doi.org/10.1000/182"
```
@@ -322,15 +322,15 @@ https://doi.org/10.1000/182
**Examples:**
```text
-Registers/Records/Accounts: Medical/Clinical
+"Registers/Records/Accounts: Medical/Clinical"
```
```text
-Events/Interactions
+"Events/Interactions"
```
```text
-Other
+"Other"
```
@@ -344,15 +344,15 @@ Other
**Examples:**
```text
-RegistersRecordsAccounts.MedicalClinical
+"RegistersRecordsAccounts.MedicalClinical"
```
```text
-EventsInteractions
+"EventsInteractions"
```
```text
-Other
+"Other"
```
@@ -365,19 +365,19 @@ Other
###### Complete Data Source Types Examples (with Subfields):
```yaml
-- Data Source Type: 'Registers/Records/Accounts: Medical/Clinical'
- Data Source Type Code: RegistersRecordsAccounts.MedicalClinical
- Data Source Type URI: https://example.com/data_source_type/123
+- "Data Source Type": "Registers/Records/Accounts: Medical/Clinical"
+ "Data Source Type Code": "RegistersRecordsAccounts.MedicalClinical"
+ "Data Source Type URI": "https://example.com/data_source_type/123"
-- Data Source Type: Events/Interactions
- Data Source Type Code: EventsInteractions
- Data Source Type URI: https://example.com/data_source_type/234
+- "Data Source Type": "Events/Interactions"
+ "Data Source Type Code": "EventsInteractions"
+ "Data Source Type URI": "https://example.com/data_source_type/234"
```
```yaml
-- Data Source Type: Other
- Data Source Type Code: Other
- Data Source Type URI: https://example.com/data_source_type/737
+- "Data Source Type": "Other"
+ "Data Source Type Code": "Other"
+ "Data Source Type URI": "https://example.com/data_source_type/737"
```
@@ -415,54 +415,46 @@ Other
**Examples:**
-```yaml
-0
-...
-
+```text
+"0"
```
-```yaml
-1
-...
-
+```text
+"1"
```
-```yaml
-2
-...
-
+```text
+"2"
```
-```yaml
-3
-...
-
+```text
+"3"
```
###### Complete Distributors Examples (with Subfields):
```yaml
-- Organization:
- Name: Inter-university Consortium for Political and Social Research
- Name Code: '1234'
- Name Uri: https://icpsr.example.com/organizations/1234
- Ror: https://ror.org/017pz3h73
- Order: 0
+- "Organization":
+ "Name": "Inter-university Consortium for Political and Social Research"
+ "Name Code": "1234"
+ "Name Uri": "https://icpsr.example.com/organizations/1234"
+ "Ror": "https://ror.org/017pz3h73"
+ "Order": 0
-- Organization:
- Name: GESIS
- Name Code: '2345'
- Name Uri: https://icpsr.example.com/organizations/2345
- Ror: https://ror.org/018afyw53
- Order: 1
+- "Organization":
+ "Name": "GESIS"
+ "Name Code": "2345"
+ "Name Uri": "https://icpsr.example.com/organizations/2345"
+ "Ror": "https://ror.org/018afyw53"
+ "Order": 1
```
```yaml
-- Organization:
- Name: Roper Center for Public Opinion Research
- Name Code: '1234'
- Name Uri: https://icpsr.example.com/organizations/1234
- Order: 0
+- "Organization":
+ "Name": "Roper Center for Public Opinion Research"
+ "Name Code": "1234"
+ "Name Uri": "https://icpsr.example.com/organizations/1234"
+ "Order": 0
```
@@ -479,18 +471,17 @@ Other
**Examples:**
-```yaml
-- '''Voting Scores.'' Congressional Quarterly Almanac 33 (1977), 487-498'
+```text
+"'Voting Scores.' Congressional Quarterly Almanac 33 (1977), 487-498"
```
-```yaml
-- United States Bureau of the Census Economic Surveys, 1998-2000
-
-- United States Congressional Record, 1989
+```text
+"United States Bureau of the Census Economic Surveys, 1998-2000"
+"United States Congressional Record, 1989"
```
-```yaml
-- Annual Company Organization Survey, 2003
+```text
+"Annual Company Organization Survey, 2003"
```
@@ -543,15 +534,15 @@ Other
**Examples:**
```text
-SES-1835721
+"SES-1835721"
```
```text
-MDR-8550085
+"MDR-8550085"
```
```text
-40791
+"40791"
```
@@ -565,7 +556,7 @@ MDR-8550085
**Examples:**
```text
-https://doi.org/10.35802/212242
+"https://doi.org/10.35802/212242"
```
@@ -578,59 +569,51 @@ https://doi.org/10.35802/212242
**Examples:**
-```yaml
-0
-...
-
+```text
+"0"
```
-```yaml
-1
-...
-
+```text
+"1"
```
-```yaml
-2
-...
-
+```text
+"2"
```
-```yaml
-3
-...
-
+```text
+"3"
```
###### Complete Funding Sources Examples (with Subfields):
```yaml
-- Organization:
- Name: Robert Wood Johnson Foundation
- Name Code: '5643'
- Name Uri: https://icpsr.example.com/organizations/5643
- Ror: https://ror.org/02ymmdj85
- Funding Awards:
- - Funding Identifier: MDR-8550085
- - Funding Identifier: MDR-8550204
- Order: 0
-
-- Organization:
- Name: United States Department of Justice. Office of Justice Programs. Bureau
- of Justice Statistics
- Name Code: '2342'
- Name Uri: https://icpsr.example.com/organizations/2342
- Ror: https://ror.org/0006s4z66
- Funding Awards:
- - Funding Identifier: SES-1835721
- Funding URL: https://doi.org/10.35802/000000
- Order: 1
+- "Organization":
+ "Name": "Robert Wood Johnson Foundation"
+ "Name Code": "5643"
+ "Name Uri": "https://icpsr.example.com/organizations/5643"
+ "Ror": "https://ror.org/02ymmdj85"
+ "Funding Awards":
+ - "Funding Identifier": "MDR-8550085"
+ - "Funding Identifier": "MDR-8550204"
+ "Order": 0
+
+- "Organization":
+ "Name": "United States Department of Justice. Office of Justice Programs. Bureau\
+ \ of Justice Statistics"
+ "Name Code": "2342"
+ "Name Uri": "https://icpsr.example.com/organizations/2342"
+ "Ror": "https://ror.org/0006s4z66"
+ "Funding Awards":
+ - "Funding Identifier": "SES-1835721"
+ "Funding URL": "https://doi.org/10.35802/000000"
+ "Order": 1
```
```yaml
-- Organization:
- Name: Acme Foundation
- Order: 0
+- "Organization":
+ "Name": "Acme Foundation"
+ "Order": 0
```
@@ -663,15 +646,15 @@ https://doi.org/10.35802/212242
**Examples:**
```text
-Text
+"Text"
```
```text
-Still image
+"Still image"
```
```text
-Numeric
+"Numeric"
```
@@ -685,15 +668,15 @@ Numeric
**Examples:**
```text
-Text
+"Text"
```
```text
-StillImage
+"StillImage"
```
```text
-Numeric
+"Numeric"
```
@@ -706,19 +689,19 @@ Numeric
###### Complete General Data Formats Examples (with Subfields):
```yaml
-- General Data Format: Text
- General Data Format Code: Text
- General Data Format URI: https://example.com/general_data_format/972
+- "General Data Format": "Text"
+ "General Data Format Code": "Text"
+ "General Data Format URI": "https://example.com/general_data_format/972"
-- General Data Format: Still image
- General Data Format Code: StillImage
- General Data Format URI: https://example.com/general_data_format/234
+- "General Data Format": "Still image"
+ "General Data Format Code": "StillImage"
+ "General Data Format URI": "https://example.com/general_data_format/234"
```
```yaml
-- General Data Format: Numeric
- General Data Format Code: Numeric
- General Data Format URI: https://example.com/general_data_format/563
+- "General Data Format": "Numeric"
+ "General Data Format Code": "Numeric"
+ "General Data Format URI": "https://example.com/general_data_format/563"
```
@@ -753,15 +736,15 @@ Numeric
**Examples:**
```text
-Ann Arbor
+"Ann Arbor"
```
```text
-Hanover
+"Hanover"
```
```text
-Chongqing
+"Chongqing"
```
@@ -775,15 +758,15 @@ Chongqing
**Examples:**
```text
-Monroe County
+"Monroe County"
```
```text
-Washtenaw County
+"Washtenaw County"
```
```text
-Cuyahoga County
+"Cuyahoga County"
```
@@ -797,15 +780,15 @@ Cuyahoga County
**Examples:**
```text
-Michigan
+"Michigan"
```
```text
-Manitoba
+"Manitoba"
```
```text
-Yunnan
+"Yunnan"
```
@@ -819,15 +802,15 @@ Yunnan
**Examples:**
```text
-United States
+"United States"
```
```text
-China
+"China"
```
```text
-Ghana
+"Ghana"
```
@@ -841,29 +824,29 @@ Ghana
**Examples:**
```text
-https://www.geonames.org/4990729/
+"https://www.geonames.org/4990729/"
```
```text
-https://www.geonames.org/6269554
+"https://www.geonames.org/6269554"
```
###### Complete Geographic Coverage Areas Examples (with Subfields):
```yaml
-- City: Cleveland
- State: Ohio
- Country: United States
- Geographic Coverage Area URI: https://www.geonames.org/5150529
+- "City": "Cleveland"
+ "State": "Ohio"
+ "Country": "United States"
+ "Geographic Coverage Area URI": "https://www.geonames.org/5150529"
-- City: Pittsburgh
- State: Pennsylvania
- Country: United States
- Geographic Coverage Area URI: https://www.geonames.org/5206379
+- "City": "Pittsburgh"
+ "State": "Pennsylvania"
+ "Country": "United States"
+ "Geographic Coverage Area URI": "https://www.geonames.org/5206379"
```
```yaml
-- Country: Germany
+- "Country": "Germany"
```
@@ -896,15 +879,15 @@ https://www.geonames.org/6269554
**Examples:**
```text
-abduction
+"abduction"
```
```text
-ability
+"ability"
```
```text
-Abolition movement
+"Abolition movement"
```
@@ -918,15 +901,15 @@ Abolition movement
**Examples:**
```text
-20391
+"20391"
```
```text
-24123
+"24123"
```
```text
-23632
+"23632"
```
@@ -940,29 +923,29 @@ Abolition movement
**Examples:**
```text
-https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/20391
+"https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/20391"
```
```text
-https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24040
+"https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24040"
```
###### Complete ICPSR Subject Terms Examples (with Subfields):
```yaml
-- ICPSR Subject Term: biographical data
- ICPSR Subject Term Code: '20391'
- ICPSR Subject Term URI: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/20391
+- "ICPSR Subject Term": "biographical data"
+ "ICPSR Subject Term Code": "20391"
+ "ICPSR Subject Term URI": "https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/20391"
-- ICPSR Subject Term: age
- ICPSR Subject Term Code: '24123'
- ICPSR Subject Term URI: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24123
+- "ICPSR Subject Term": "age"
+ "ICPSR Subject Term Code": "24123"
+ "ICPSR Subject Term URI": "https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24123"
```
```yaml
-- ICPSR Subject Term: happiness
- ICPSR Subject Term Code: '25624'
- ICPSR Subject Term URI: https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/25624
+- "ICPSR Subject Term": "happiness"
+ "ICPSR Subject Term Code": "25624"
+ "ICPSR Subject Term URI": "https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/25624"
```
@@ -995,11 +978,11 @@ https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10001/terms/24040
**Examples:**
```text
-A12 Relation of Economics to Other Disciplines
+"A12 Relation of Economics to Other Disciplines"
```
```text
-B00 History of Economic Thought, Methodology, and Heterodox Approaches
+"B00 History of Economic Thought, Methodology, and Heterodox Approaches"
```
@@ -1013,15 +996,15 @@ B00 History of Economic Thought, Methodology, and Heterodox Approaches
**Examples:**
```text
-a12
+"a12"
```
```text
-b00
+"b00"
```
```text
-n22
+"n22"
```
@@ -1035,31 +1018,31 @@ n22
**Examples:**
```text
-http://example.com/jel/a12
+"http://example.com/jel/a12"
```
```text
-http://example.com/jel/b00
+"http://example.com/jel/b00"
```
###### Complete Journal of Economic Literature (JEL) Classification Codes Examples (with Subfields):
```yaml
-- JEL Classification Term: A12 Relation of Economics to Other Disciplines
- JEL Classification Code: a12
- JEL Classification URI: http://example.com/jel/a12
+- "JEL Classification Term": "A12 Relation of Economics to Other Disciplines"
+ "JEL Classification Code": "a12"
+ "JEL Classification URI": "http://example.com/jel/a12"
-- JEL Classification Term: B00 History of Economic Thought, Methodology, and Heterodox
- Approaches
- JEL Classification Code: b00
- JEL Classification URI: http://example.com/jel/b00
+- "JEL Classification Term": "B00 History of Economic Thought, Methodology, and Heterodox\
+ \ Approaches"
+ "JEL Classification Code": "b00"
+ "JEL Classification URI": "http://example.com/jel/b00"
```
```yaml
-- JEL Classification Term: 'N22 Economic History: Financial Markets and Institutions:
- U.S.; Canada: 1913-'
- JEL Classification Code: n22
- JEL Classification URI: http://example.com/jel/n22
+- "JEL Classification Term": "N22 Economic History: Financial Markets and Institutions:\
+ \ U.S.; Canada: 1913-"
+ "JEL Classification Code": "n22"
+ "JEL Classification URI": "http://example.com/jel/n22"
```
@@ -1104,10 +1087,9 @@ http://example.com/jel/b00
###### Complete License Examples (with Subfields):
```yaml
-License Name: Creative Commons Attribution Non Commercial 4.0 International
-License Code: CC-BY-NC-4.0
-License URI: https://creativecommons.org/licenses/by-nc/4.0/
-
+"License Name": "Creative Commons Attribution Non Commercial 4.0 International"
+"License Code": "CC-BY-NC-4.0"
+"License URI": "https://creativecommons.org/licenses/by-nc/4.0/"
```
@@ -1140,11 +1122,11 @@ License URI: https://creativecommons.org/licenses/by-nc/4.0/
**Examples:**
```text
-anxiety
+"anxiety"
```
```text
-brain waves
+"brain waves"
```
@@ -1158,11 +1140,11 @@ brain waves
**Examples:**
```text
-D001007
+"D001007"
```
```text
-D058256
+"D058256"
```
@@ -1177,23 +1159,23 @@ D058256
**Examples:**
```text
-http://id.nlm.nih.gov/mesh/D001007
+"http://id.nlm.nih.gov/mesh/D001007"
```
```text
-http://id.nlm.nih.gov/mesh/D058256
+"http://id.nlm.nih.gov/mesh/D058256"
```
###### Complete Medical Subject Headings (MeSH) Terms Examples (with Subfields):
```yaml
-- MeSH Subject Term: anxiety
- MeSH Subject Term Code: D001007
- MeSH Subject Term URI: http://id.nlm.nih.gov/mesh/D001007
+- "MeSH Subject Term": "anxiety"
+ "MeSH Subject Term Code": "D001007"
+ "MeSH Subject Term URI": "http://id.nlm.nih.gov/mesh/D001007"
-- MeSH Subject Term: brain waves
- MeSH Subject Term Code: D058256
- MeSH Subject Term URI: http://id.nlm.nih.gov/mesh/D058256
+- "MeSH Subject Term": "brain waves"
+ "MeSH Subject Term Code": "D058256"
+ "MeSH Subject Term URI": "http://id.nlm.nih.gov/mesh/D058256"
```
@@ -1210,11 +1192,11 @@ http://id.nlm.nih.gov/mesh/D058256
**Examples:**
```text
-Yes
+"Yes"
```
```text
-No
+"No"
```
@@ -1230,18 +1212,13 @@ No
**Examples:**
-```yaml
-- Information on the Index of Consumer Sentiment, the Index of Current Economic Conditions,
- and the Index of Consumer Expectations and how they were created can be found in
- the P.I. Codebook
-
-- Dataset 1 should be attributed to Jane Doe while datasets 2-6 should be attributed
- to John Doe
+```text
+"Information on the Index of Consumer Sentiment, the Index of Current Economic Conditions, and the Index of Consumer Expectations and how they were created can be found in the P.I. Codebook"
+"Dataset 1 should be attributed to Jane Doe while datasets 2-6 should be attributed to John Doe"
```
-```yaml
-- Additional information on the Survey of Consumers can be found by visiting the Survey
- of Consumers Website
+```text
+"Additional information on the Survey of Consumers can be found by visiting the Survey of Consumers Website"
```
@@ -1275,11 +1252,11 @@ No
**Examples:**
```text
-Federal Reserve Bank of St. Louis. Research Division
+"Federal Reserve Bank of St. Louis. Research Division"
```
```text
-University of Michigan. Institute for Social Research
+"University of Michigan. Institute for Social Research"
```
@@ -1293,15 +1270,15 @@ University of Michigan. Institute for Social Research
**Examples:**
```text
-1234
+"1234"
```
```text
-2345
+"2345"
```
```text
-3456
+"3456"
```
@@ -1322,7 +1299,7 @@ University of Michigan. Institute for Social Research
**Examples:**
```text
-https://ror.org/02q7mkh03
+"https://ror.org/02q7mkh03"
```
@@ -1336,18 +1313,17 @@ https://ror.org/02q7mkh03
**Examples:**
```text
-info@example.com
+"info@example.com"
```
###### Complete Organization Examples (with Subfields):
```yaml
-Organization Name: Urban Institute
-Organization Name Code: '1234'
-Organization Name URI: https://icpsr.example.com/organizations/1234
-ROR Identifier: https://ror.org/017pz3h73
-Email Address: info@urban.institute
-
+"Organization Name": "Urban Institute"
+"Organization Name Code": "1234"
+"Organization Name URI": "https://icpsr.example.com/organizations/1234"
+"ROR Identifier": "https://ror.org/017pz3h73"
+"Email Address": "info@urban.institute"
```
@@ -1380,15 +1356,13 @@ Email Address: info@urban.institute
**Examples:**
```yaml
-Given Name (First Name): Susan B.
-Family Name (Last Name): Anthony
-
+"Given Name (First Name)": "Susan B."
+"Family Name (Last Name)": "Anthony"
```
```yaml
-Given Name (First Name): John
-Family Name (Last Name): Doe IV
-
+"Given Name (First Name)": "John"
+"Family Name (Last Name)": "Doe IV"
```
##### Subfields:
@@ -1409,19 +1383,19 @@ Family Name (Last Name): Doe IV
**Examples:**
```text
-Chantel
+"Chantel"
```
```text
-Giannis
+"Giannis"
```
```text
-Mary Kate
+"Mary Kate"
```
```text
-John Q.
+"John Q."
```
@@ -1435,15 +1409,15 @@ John Q.
**Examples:**
```text
-Smith
+"Smith"
```
```text
-Jordan Jr.
+"Jordan Jr."
```
```text
-Escobar-Vega
+"Escobar-Vega"
```
@@ -1457,7 +1431,7 @@ Escobar-Vega
**Examples:**
```text
-https://orcid.org/0000-0001-6289-1234
+"https://orcid.org/0000-0001-6289-1234"
```
@@ -1478,32 +1452,30 @@ https://orcid.org/0000-0001-6289-1234
**Examples:**
```text
-j.doe@example.com
+"j.doe@example.com"
```
###### Complete Person Examples (with Subfields):
```yaml
-Personal Name:
- Given Name (First Name): Jane Q.
- Family Name (Last Name): Doe II
-ORCID Identifier: https://orcid.org/0000-0001-6666-5717
-Researcher Passport Profile Id: '1234'
-Affiliation(s):
-- Name: Urban Institute
- Name Code: '2342'
- Name Uri: https://icpsr.example.com/organizations/2342
- Ror: https://ror.org/017pz3h73
- Icpsr Org Id: xyz123
-- Name: Example University
-Email Address: jane.doe@example.com
-
+"Personal Name":
+ "Given Name (First Name)": "Jane Q."
+ "Family Name (Last Name)": "Doe II"
+"ORCID Identifier": "https://orcid.org/0000-0001-6666-5717"
+"Researcher Passport Profile Id": "1234"
+"Affiliation(s)":
+- "Name": "Urban Institute"
+ "Name Code": "2342"
+ "Name Uri": "https://icpsr.example.com/organizations/2342"
+ "Ror": "https://ror.org/017pz3h73"
+ "Icpsr Org Id": "xyz123"
+- "Name": "Example University"
+"Email Address": "jane.doe@example.com"
```
```yaml
-Personal Name:
- Given Name (First Name): Joe
-
+"Personal Name":
+ "Given Name (First Name)": "Joe"
```
@@ -1520,7 +1492,7 @@ Personal Name:
**Examples:**
```text
-https://doi.org/10.1000/182
+"https://doi.org/10.1000/182"
```
@@ -1565,38 +1537,30 @@ https://doi.org/10.1000/182
**Examples:**
-```yaml
-0
-...
-
+```text
+"0"
```
-```yaml
-1
-...
-
+```text
+"1"
```
-```yaml
-2
-...
-
+```text
+"2"
```
-```yaml
-3
-...
-
+```text
+"3"
```
###### Complete Principal Investigators Examples (with Subfields):
```text
-Personal Principal Investigator
| First Name | Last Name | Affiliation |
|---|
| Veronica | Martinez-Ebers | National Institute for Law and Equity |
| Lawrence F. | Travis III | University of Cincinnati |
+"Personal Principal Investigator
| First Name | Last Name | Affiliation |
|---|
| Veronica | Martinez-Ebers | National Institute for Law and Equity |
| Lawrence F. | Travis III | University of Cincinnati |
"
```
```text
-Organizational Principal Investigator
| Name |
|---|
| United States Department of Labor. Bureau of Labor Statistics |
| The Washington Post |
+"Organizational Principal Investigator
| Name |
|---|
| United States Department of Labor. Bureau of Labor Statistics |
| The Washington Post |
"
```
@@ -1614,11 +1578,11 @@ https://doi.org/10.1000/182
**Examples:**
```text
-The overall response rate for this survey was 20.22%; 72.6% for existing panelists and 10.4% for new panelists, using AAPOR Response Rate 1.
+"The overall response rate for this survey was 20.22%; 72.6% for existing panelists and 10.4% for new panelists, using AAPOR Response Rate 1."
```
```text
-Not applicable.
+"Not applicable."
```
@@ -1636,11 +1600,11 @@ Not applicable.
**Examples:**
```text
-National sample of telephone numbers from cell (RDD) sampling frame.
+"National sample of telephone numbers from cell (RDD) sampling frame."
```
```text
-The probability sample selected to represent the universe consists of approximately 71,000 households.
+"The probability sample selected to represent the universe consists of approximately 71,000 households."
```
@@ -1658,19 +1622,19 @@ The probability sample selected to represent the universe consists of approximat
**Examples:**
```yaml
-- Label: 'Probability: Systematic random'
- Code: Probability.SystematicRandom
- Uri: https://example.com/sampling_procedures/123
+- "Label": "Probability: Systematic random"
+ "Code": "Probability.SystematicRandom"
+ "Uri": "https://example.com/sampling_procedures/123"
-- Label: Other
- Code: Other
- Uri: https://example.com/sampling_procedures/737
+- "Label": "Other"
+ "Code": "Other"
+ "Uri": "https://example.com/sampling_procedures/737"
```
```yaml
-- Label: Total universe/Complete enumeration
- Code: TotalUniverseCompleteEnumeration
- Uri: https://example.com/sampling_procedures/234
+- "Label": "Total universe/Complete enumeration"
+ "Code": "TotalUniverseCompleteEnumeration"
+ "Uri": "https://example.com/sampling_procedures/234"
```
@@ -1687,27 +1651,14 @@ The probability sample selected to represent the universe consists of approximat
**Examples:**
-```yaml
-- The baseline data collection included one scale - the CES-D index for maternal depression
- [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development
- and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4),
- 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables
- 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available
- under the 'Data and Documentation' tab, for details.
+```text
+"The baseline data collection included one scale - the CES-D index for maternal depression [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4), 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available under the 'Data and Documentation' tab, for details."
```
-```yaml
-- 'Squires, J., Bricker, D. D., and Twombly, E. (2009). Ages and stages questionnaires.
- Baltimore, MD: Paul H. Brookes.'
-
-- 'Briggs-Gowan, M. J., Carter, A. S., Irwin, J. R., Wachtel, K., and Cicchetti, D.
- V. (2004). The Brief Infant-Toddler Social and Emotional Assessment: screening for
- social-emotional problems and delays in competence. Journal of pediatric psychology,
- 29(2), 143-155.'
-
-- Yu, L., Buysse, D. J., Germain, A., Moul, D. E., Stover, A., Dodds, N. E., ... and
- Pilkonis, P. A. (2012). Development of short forms from the PROMIS sleep disturbance
- and sleep-related impairment item banks. Behavioral sleep medicine, 10(1), 6-24.
+```text
+"Squires, J., Bricker, D. D., and Twombly, E. (2009). Ages and stages questionnaires. Baltimore, MD: Paul H. Brookes."
+"Briggs-Gowan, M. J., Carter, A. S., Irwin, J. R., Wachtel, K., and Cicchetti, D. V. (2004). The Brief Infant-Toddler Social and Emotional Assessment: screening for social-emotional problems and delays in competence. Journal of pediatric psychology, 29(2), 143-155."
+"Yu, L., Buysse, D. J., Germain, A., Moul, D. E., Stover, A., Dodds, N. E., ... and Pilkonis, P. A. (2012). Development of short forms from the PROMIS sleep disturbance and sleep-related impairment item banks. Behavioral sleep medicine, 10(1), 6-24."
```
@@ -1753,24 +1704,21 @@ The probability sample selected to represent the universe consists of approximat
###### Complete Smallest Geographic Unit Examples (with Subfields):
```yaml
-Smallest Geographic Unit Term: state
-Smallest Geographic Unit Code: '123'
-Smallest Geographic Unit URI: https://example.com/smallest_geographic_unit/123
-
+"Smallest Geographic Unit Term": "state"
+"Smallest Geographic Unit Code": "123"
+"Smallest Geographic Unit URI": "https://example.com/smallest_geographic_unit/123"
```
```yaml
-Smallest Geographic Unit Term: Census tract
-Smallest Geographic Unit Code: '234'
-Smallest Geographic Unit URI: https://example.com/smallest_geographic_unit/234
-
+"Smallest Geographic Unit Term": "Census tract"
+"Smallest Geographic Unit Code": "234"
+"Smallest Geographic Unit URI": "https://example.com/smallest_geographic_unit/234"
```
```yaml
-Smallest Geographic Unit Term: precinct
-Smallest Geographic Unit Code: '345'
-Smallest Geographic Unit URI: https://example.com/smallest_geographic_unit/345
-
+"Smallest Geographic Unit Term": "precinct"
+"Smallest Geographic Unit Code": "345"
+"Smallest Geographic Unit URI": "https://example.com/smallest_geographic_unit/345"
```
@@ -1812,15 +1760,15 @@ Smallest Geographic Unit URI: https://example.com/smallest_geographic_unit/345
**Examples:**
```text
-JHOVE
+"JHOVE"
```
```text
-ffmpeg
+"ffmpeg"
```
```text
-json-schema-for-humans
+"json-schema-for-humans"
```
@@ -1834,15 +1782,15 @@ json-schema-for-humans
**Examples:**
```text
-1
+"1"
```
```text
-2.0.4
+"2.0.4"
```
```text
-Auto-Build 2023-01-15 12:36
+"Auto-Build 2023-01-15 12:36"
```
@@ -1856,11 +1804,11 @@ Auto-Build 2023-01-15 12:36
**Examples:**
```text
-JHOVE, the JSTOR/Harvard Object Validation Environment, is an extensible software framework for performing format identification, validation, and characterization of digital objects.
+"JHOVE, the JSTOR/Harvard Object Validation Environment, is an extensible software framework for performing format identification, validation, and characterization of digital objects."
```
```text
-ffmpeg is a very fast video and audio converter that can also grab from a live audio/video source. It can also convert between arbitrary sample rates and resize video on the fly with a high quality polyphase filter.
+"ffmpeg is a very fast video and audio converter that can also grab from a live audio/video source. It can also convert between arbitrary sample rates and resize video on the fly with a high quality polyphase filter."
```
@@ -1873,18 +1821,17 @@ ffmpeg is a very fast video and audio converter that can also grab from a live a
**Examples:**
-```yaml
-- python
+```text
+"python"
```
-```yaml
-- shell
-
-- r
+```text
+"shell"
+"r"
```
-```yaml
-- other
+```text
+"other"
```
@@ -1897,20 +1844,18 @@ ffmpeg is a very fast video and audio converter that can also grab from a live a
**Examples:**
-```yaml
-- windows
+```text
+"windows"
```
-```yaml
-- windows
-
-- mac
-
-- linux
+```text
+"windows"
+"mac"
+"linux"
```
-```yaml
-- other
+```text
+"other"
```
@@ -1924,15 +1869,15 @@ ffmpeg is a very fast video and audio converter that can also grab from a live a
**Examples:**
```text
-4 GB
+"4 GB"
```
```text
-1GB of RAM (2GB for a 64-bit version)
+"1GB of RAM (2GB for a 64-bit version)"
```
```text
-4 GB of GPU memory for HD and some 4K media; 6 GB or more for 4K and higher
+"4 GB of GPU memory for HD and some 4K media; 6 GB or more for 4K and higher"
```
@@ -1946,15 +1891,15 @@ ffmpeg is a very fast video and audio converter that can also grab from a live a
**Examples:**
```text
-Intel i5/ i7/ Ryzen 7
+"Intel i5/ i7/ Ryzen 7"
```
```text
-Minimum 1 GHz; Recommended 2GHz or more
+"Minimum 1 GHz; Recommended 2GHz or more"
```
```text
-2.5–2.9 GHz or faster processor
+"2.5–2.9 GHz or faster processor"
```
@@ -1968,15 +1913,15 @@ Minimum 1 GHz; Recommended 2GHz or more
**Examples:**
```text
-Java runtime environment
+"Java runtime environment"
```
```text
-Requires additional Python libraries: numpy, v1.11.2; scipy, v0.18.1, and pandas, v0.19.0
+"Requires additional Python libraries: numpy, v1.11.2; scipy, v0.18.1, and pandas, v0.19.0"
```
```text
-Compile with GNU auto tools
+"Compile with GNU auto tools"
```
@@ -1990,15 +1935,15 @@ Compile with GNU auto tools
**Examples:**
```text
-3.5 GB for new installations, 5 GB for upgrades (including temporary files required during installation)
+"3.5 GB for new installations, 5 GB for upgrades (including temporary files required during installation)"
```
```text
-15 GB of free disk space
+"15 GB of free disk space"
```
```text
-8 GB of available hard-disk space for installation; additional free space required during installation
+"8 GB of available hard-disk space for installation; additional free space required during installation"
```
@@ -2022,11 +1967,11 @@ Compile with GNU auto tools
**Examples:**
```text
-https://www.apache.org/licenses/LICENSE-2.0
+"https://www.apache.org/licenses/LICENSE-2.0"
```
```text
-https://opensource.org/licenses/LGPL-2.0
+"https://opensource.org/licenses/LGPL-2.0"
```
@@ -2040,11 +1985,11 @@ https://opensource.org/licenses/LGPL-2.0
**Examples:**
```text
-https://github.com/richardlehane/siegfried/archive/refs/heads/main.zip
+"https://github.com/richardlehane/siegfried/archive/refs/heads/main.zip"
```
```text
-https://cdn.nationalarchives.gov.uk/documents/droid-binary-6.5.2-bin-win32-with-jre.zip
+"https://cdn.nationalarchives.gov.uk/documents/droid-binary-6.5.2-bin-win32-with-jre.zip"
```
@@ -2058,32 +2003,32 @@ https://cdn.nationalarchives.gov.uk/documents/droid-binary-6.5.2-bin-win32-with-
**Examples:**
```text
-https://github.com/richardlehane/siegfried
+"https://github.com/richardlehane/siegfried"
```
```text
-https://www.nationalarchives.gov.uk/information-management/manage-information/preserving-digital-records/droid/
+"https://www.nationalarchives.gov.uk/information-management/manage-information/preserving-digital-records/droid/"
```
###### Complete Software Applications Examples (with Subfields):
```yaml
-- Software Name: siegfried
- Software Version: 1.11.1
- Software Description: Siegfried is a signature-based file format identification
- tool, implementing the National Archives UK's PRONOM file format signatures; freedesktop.org's
- MIME-info file format signatures; the Library of Congress's FDD file format signatures
- (beta); and Wikidata (beta).
- Programming Languages:
- - go
- - javascript
- - other
- Operating Systems:
- - mac
- - linux
- - windows
- License: https://www.apache.org/licenses/LICENSE-2.0
- Download URL: https://github.com/richardlehane/siegfried/archive/refs/heads/main.zip
+- "Software Name": "siegfried"
+ "Software Version": "1.11.1"
+ "Software Description": "Siegfried is a signature-based file format identification\
+ \ tool, implementing the National Archives UK's PRONOM file format signatures;\
+ \ freedesktop.org's MIME-info file format signatures; the Library of Congress's\
+ \ FDD file format signatures (beta); and Wikidata (beta)."
+ "Programming Languages":
+ - "go"
+ - "javascript"
+ - "other"
+ "Operating Systems":
+ - "mac"
+ - "linux"
+ - "windows"
+ "License": "https://www.apache.org/licenses/LICENSE-2.0"
+ "Download URL": "https://github.com/richardlehane/siegfried/archive/refs/heads/main.zip"
```
@@ -2101,7 +2046,7 @@ https://www.nationalarchives.gov.uk/information-management/manage-information/pr
**Examples:**
```text
-Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years.
+"Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years."
```
@@ -2121,11 +2066,11 @@ The Summary is written in the third person and avoids attempting to address issu
**Examples:**
```text
-In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.
+"In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days."
```
```text
-The Health and Relationship Project is a study of both spouses in same-sex and different-sex marriages who were legally married and aged 35 to 65 at the time of data collection (2015). There are two parts of this study: a baseline questionnaire and a daily diary questionnaire completed for 10 consecutive days; both components were completed online and spouses were asked to complete the surveys separately. The baseline questionnaire asks participants about a number of topics related to marriage and health, including stress, health status and health behaviors, relationship quality, and how they have approached health problems in the past. The diary questionnaire asks participants a number of questions about the past 24 hours, including daily stress experiences, social interactions, and health behaviors.
+"The Health and Relationship Project is a study of both spouses in same-sex and different-sex marriages who were legally married and aged 35 to 65 at the time of data collection (2015). There are two parts of this study: a baseline questionnaire and a daily diary questionnaire completed for 10 consecutive days; both components were completed online and spouses were asked to complete the surveys separately. The baseline questionnaire asks participants about a number of topics related to marriage and health, including stress, health status and health behaviors, relationship quality, and how they have approached health problems in the past. The diary questionnaire asks participants a number of questions about the past 24 hours, including daily stress experiences, social interactions, and health behaviors."
```
@@ -2158,15 +2103,15 @@ The Health and Relationship Project is a study of both spouses in same-sex and d
**Examples:**
```text
-Cross-section
+"Cross-section"
```
```text
-Longitudinal: Cohort/Event-based
+"Longitudinal: Cohort/Event-based"
```
```text
-Time series
+"Time series"
```
@@ -2180,15 +2125,15 @@ Time series
**Examples:**
```text
-CrossSection
+"CrossSection"
```
```text
-Longitudinal.CohortEventBased
+"Longitudinal.CohortEventBased"
```
```text
-Other
+"Other"
```
@@ -2201,19 +2146,19 @@ Other
###### Complete Time Methods Examples (with Subfields):
```yaml
-- Time Method: 'Registers/Records/Accounts: Medical/Clinical'
- Time Method Code: RegistersRecordsAccounts.MedicalClinical
- Time Method URI: https://example.com/time_methods/123
+- "Time Method": "Registers/Records/Accounts: Medical/Clinical"
+ "Time Method Code": "RegistersRecordsAccounts.MedicalClinical"
+ "Time Method URI": "https://example.com/time_methods/123"
-- Time Method: Events/Interactions
- Time Method Code: EventsInteractions
- Time Method URI: https://example.com/time_methods/234
+- "Time Method": "Events/Interactions"
+ "Time Method Code": "EventsInteractions"
+ "Time Method URI": "https://example.com/time_methods/234"
```
```yaml
-- Time Method: Other
- Time Method Code: Other
- Time Method URI: https://example.com/time_methods/737
+- "Time Method": "Other"
+ "Time Method Code": "Other"
+ "Time Method URI": "https://example.com/time_methods/737"
```
@@ -2245,15 +2190,15 @@ Other
**Examples:**
```text
-2000
+"2000"
```
```text
-2019-10
+"2019-10"
```
```text
-2021-03-01
+"2021-03-01"
```
@@ -2267,15 +2212,15 @@ Other
**Examples:**
```text
-2000
+"2000"
```
```text
-2019-10
+"2019-10"
```
```text
-2021-03-01
+"2021-03-01"
```
@@ -2290,22 +2235,22 @@ Other
**Examples:**
```text
-Fall 2001
+"Fall 2001"
```
```text
-Winter Semester 2019
+"Winter Semester 2019"
```
###### Complete Time Periods Examples (with Subfields):
```yaml
-- Start Date: '2018'
- End Date: '2018'
- Time Frame: Summer and Fall 2018
+- "Start Date": "2018"
+ "End Date": "2018"
+ "Time Frame": "Summer and Fall 2018"
-- Start Date: 2020-10
- End Date: 2020-10
+- "Start Date": "2020-10"
+ "End Date": "2020-10"
```
@@ -2322,23 +2267,23 @@ Winter Semester 2019
**Examples:**
```text
-Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017
+"Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017"
```
```text
-Health and Relationships Project, United States, 2014-2015
+"Health and Relationships Project, United States, 2014-2015"
```
```text
-Targeted Interventions to Prevent Chronic Low Back Pain in High Risk Patients: A Multi-Site Pragmatic Randomized Controlled Trial (TARGET Trial), 4 U.S. cities, 2016-2019
+"Targeted Interventions to Prevent Chronic Low Back Pain in High Risk Patients: A Multi-Site Pragmatic Randomized Controlled Trial (TARGET Trial), 4 U.S. cities, 2016-2019"
```
```text
-Aid Like A Paycheck (ALAP), Texas and California, 2014-2017
+"Aid Like A Paycheck (ALAP), Texas and California, 2014-2017"
```
```text
-COVID-19 Disruptions Disproportionately Affect Female Academics, Global, 2020
+"COVID-19 Disruptions Disproportionately Affect Female Academics, Global, 2020"
```
@@ -2371,15 +2316,15 @@ COVID-19 Disruptions Disproportionately Affect Female Academics, Global, 2020
**Examples:**
```text
-Organization/Institution
+"Organization/Institution"
```
```text
-Individual
+"Individual"
```
```text
-Household
+"Household"
```
@@ -2393,15 +2338,15 @@ Household
**Examples:**
```text
-OrganizationOrInstitution
+"OrganizationOrInstitution"
```
```text
-Individual
+"Individual"
```
```text
-Household
+"Household"
```
@@ -2414,19 +2359,19 @@ Household
###### Complete Units of Analysis Examples (with Subfields):
```yaml
-- Label: Organization/Institution
- Code: OrganizationOrInstitution
- Uri: https://example.com/units_of_analysis/123
+- "Label": "Organization/Institution"
+ "Code": "OrganizationOrInstitution"
+ "Uri": "https://example.com/units_of_analysis/123"
-- Label: Individual
- Code: Individual
- Uri: https://example.com/units_of_analysis/234
+- "Label": "Individual"
+ "Code": "Individual"
+ "Uri": "https://example.com/units_of_analysis/234"
```
```yaml
-- Label: Household
- Code: Household
- Uri: https://example.com/units_of_analysis/737
+- "Label": "Household"
+ "Code": "Household"
+ "Uri": "https://example.com/units_of_analysis/737"
```
@@ -2444,27 +2389,27 @@ Household
**Examples:**
```text
-All households in the United States with phones.
+"All households in the United States with phones."
```
```text
-Part 1: Thirty cities in Massachusetts during 1980-1986. Parts 2-4: All residents in Massachusetts during 1986.
+"Part 1: Thirty cities in Massachusetts during 1980-1986. Parts 2-4: All residents in Massachusetts during 1986."
```
```text
-Individuals self-identified as transgender, trans, genderqueer, non-binary, or other identities on the transgender identity spectrum aged 18 and older residing in the fifty U.S. states, the District of Columbia, American Samoa, Guam, Puerto Rico, and U.S. military bases overseas.
+"Individuals self-identified as transgender, trans, genderqueer, non-binary, or other identities on the transgender identity spectrum aged 18 and older residing in the fifty U.S. states, the District of Columbia, American Samoa, Guam, Puerto Rico, and U.S. military bases overseas."
```
```text
-Jihadists from the United States and Canada, along with Incels from Germany, Canada, the United States, and United Kingdom.
+"Jihadists from the United States and Canada, along with Incels from Germany, Canada, the United States, and United Kingdom."
```
```text
-All publicly funded medical examiner and coroner offices.
+"All publicly funded medical examiner and coroner offices."
```
```text
-Uncertified ballots for the 2000 United States presidential election in Florida.
+"Uncertified ballots for the 2000 United States presidential election in Florida."
```
@@ -2482,11 +2427,11 @@ Uncertified ballots for the 2000 United States presidential election in Florida.
**Examples:**
```text
-The data includes variables about participants' and their parents' moods, interviewer observations, families' activities, families' health history, participants' school records, and parents' substance use. Demographic variables include race, religion, annual household income, and the participants' parents' employment statuses.
+"The data includes variables about participants' and their parents' moods, interviewer observations, families' activities, families' health history, participants' school records, and parents' substance use. Demographic variables include race, religion, annual household income, and the participants' parents' employment statuses."
```
```text
-The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, including victim demographic information, substance abuse history, information on whether the victim is open about their LGBTQ identification, the victim's job status, and information about how the victim reacted to the crime, such as whether or not they reported the crime to the police and their level of cooperation with the police and prosecution.
+"The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, including victim demographic information, substance abuse history, information on whether the victim is open about their LGBTQ identification, the victim's job status, and information about how the victim reacted to the crime, such as whether or not they reported the crime to the police and their level of cooperation with the police and prosecution."
```
@@ -2519,15 +2464,15 @@ The LGBTQ Hate Crimes Interviews dataset contains more in-depth information, inc
**Examples:**
```text
-V1
+"V1"
```
```text
-V2
+"V2"
```
```text
-V3
+"V3"
```
@@ -2541,11 +2486,11 @@ V3
**Examples:**
```text
-2020-07-20
+"2020-07-20"
```
```text
-2022-01-31
+"2022-01-31"
```
@@ -2559,33 +2504,33 @@ V3
**Examples:**
```text
-File CB3025.ALL.PDF was removed from any previous datasets and flagged as a study-level file, so that it will accompany all downloads.
+"File CB3025.ALL.PDF was removed from any previous datasets and flagged as a study-level file, so that it will accompany all downloads."
```
```text
-The data producer provided additional data files.
+"The data producer provided additional data files."
```
```text
-The codebook descriptions of variables TANSUP, EMOSUP, and SOCSUP were corrected.
+"The codebook descriptions of variables TANSUP, EMOSUP, and SOCSUP were corrected."
```
###### Complete Version History Examples (with Subfields):
```yaml
-- Version Number: V2
- Version Date: '2023-08-12'
- Version Note: The data producer provided additional data files.
+- "Version Number": "V2"
+ "Version Date": "2023-08-12"
+ "Version Note": "The data producer provided additional data files."
-- Version Number: V1
- Version Date: '2021-03-01'
- Version Note: Initial release
+- "Version Number": "V1"
+ "Version Date": "2021-03-01"
+ "Version Note": "Initial release"
```
```yaml
-- Version Number: V1
- Version Date: '2024-06-28'
- Version Note: Initial release
+- "Version Number": "V1"
+ "Version Date": "2024-06-28"
+ "Version Note": "Initial release"
```
@@ -2603,11 +2548,11 @@ The codebook descriptions of variables TANSUP, EMOSUP, and SOCSUP were corrected
**Examples:**
```text
-Both the TransPop and Cisgender datasets have the same variable named WEIGHT as the weighting variable. The combination datasets have a set of three weight variables (WEIGHT_TRANSPOP, WEIGHT_CISGENDER, WEIGHT_CISGENDER_TRANSPOP)
+"Both the TransPop and Cisgender datasets have the same variable named WEIGHT as the weighting variable. The combination datasets have a set of three weight variables (WEIGHT_TRANSPOP, WEIGHT_CISGENDER, WEIGHT_CISGENDER_TRANSPOP)"
```
```text
-A weight variable with two implied decimal places has been included and must be used in any analysis.
+"A weight variable with two implied decimal places has been included and must be used in any analysis."
```
diff --git a/rde_schema/rde_markdown_generation.py b/rde_schema/rde_markdown_generation.py
index e331d9f..ba379b6 100644
--- a/rde_schema/rde_markdown_generation.py
+++ b/rde_schema/rde_markdown_generation.py
@@ -3,6 +3,14 @@
from datetime import datetime
import yaml
+class QuoteDumper(yaml.SafeDumper):
+ pass
+
+def quoted_str_representer(dumper, data):
+ return dumper.represent_scalar("tag:yaml.org,2002:str", data, style='"')
+
+QuoteDumper.add_representer(str, quoted_str_representer)
+
ROOT = Path("C:/icpsr_github/metadata/rde_schema")
PROPERTY_DIR = ROOT / "property_bank"
OUTPUT_FILE = ROOT / "icpsr_rde_schema.md"
@@ -41,6 +49,77 @@
def anchor(text):
return text.lower().replace(" ", "-").replace("_", "-")
+def convert_example_to_titles(data, schema):
+ """
+ Recursively replace property keys with schema 'title' values.
+ Works for objects and arrays of objects.
+ """
+ if isinstance(data, dict):
+ props = schema.get("properties", {})
+ result = {}
+
+ for key, value in data.items():
+ prop_schema = props.get(key, {})
+ title = prop_schema.get("title", key.replace("_", " ").title())
+
+ result[title] = convert_example_to_titles(value, prop_schema)
+
+ return result
+
+ elif isinstance(data, list):
+ items_schema = schema.get("items", {})
+ return [convert_example_to_titles(item, items_schema) for item in data]
+
+ else:
+ return data
+
+def render_yaml_examples(examples, schema):
+ md = []
+
+ for ex in examples:
+
+ # strings stay unchanged
+ if isinstance(ex, (str, int, float)):
+ md.append("```text")
+ md.append(f'"{ex}"')
+ md.append("```\n")
+ continue
+
+ # list containing only simple values (strings or numbers)
+ if isinstance(ex, list) and all(isinstance(i, (str, int, float)) for i in ex):
+ md.append("```text")
+ for item in ex:
+ md.append(f'"{item}"')
+ md.append("```\n")
+ continue
+
+ # convert keys to titles
+ human_ex = convert_example_to_titles(ex, schema)
+
+ # dump YAML normally
+ #yaml_str = yaml.safe_dump(human_ex, sort_keys=False)
+
+ # dump YAML; enclose everything in quotes
+ yaml_str = yaml.dump(human_ex, Dumper=QuoteDumper, sort_keys=False)
+ yaml_str = yaml_str.replace("\n...\n", "\n").rstrip(".\n")
+
+ # insert a blank line between top-level list items
+ if isinstance(human_ex, list):
+ lines = yaml_str.splitlines()
+ new_lines = []
+ for i, line in enumerate(lines):
+ new_lines.append(line)
+ # if the next line starts a new '- ', insert a blank line
+ if i + 1 < len(lines) and lines[i + 1].startswith("- "):
+ new_lines.append("") # blank line between items
+ yaml_str = "\n".join(new_lines)
+
+ md.append("```yaml")
+ md.append(yaml_str)
+ md.append("```\n")
+
+ return md
+
def get_usage_notes(note):
"""
Returns usage notes text for a property.
@@ -212,10 +291,7 @@ def render_subfields(properties, required, parent_anchor, level=4):
# Examples per subfield
if "examples" in prop:
md.append("\n**Examples:**\n")
- for ex in prop["examples"]:
- md.append("```json")
- md.append(json.dumps(ex, indent=2) if isinstance(ex, (dict, list)) else f'"{ex}"')
- md.append("```\n")
+ md.extend(render_yaml_examples(prop["examples"], prop))
# Recurse for nested subfields
subprops, subreq = get_subfields(prop)
@@ -258,28 +334,25 @@ def render_property(name, schema):
items_type = schema.get("items", {}).get("type")
if "examples" in schema:
+
+ schema_type = schema.get("type")
+ items_type = schema.get("items", {}).get("type")
+
if schema_type == "object" or (schema_type == "array" and items_type == "object"):
- # Complex type → "Complete Examples (with Subfields)"
md.append(f"###### Complete {title} Examples (with Subfields):\n")
- md.append("```json")
- md.append(json.dumps(schema["examples"], indent=2))
- md.append("```\n")
else:
- # Scalar type → normal examples
md.append("\n**Examples:**\n")
- for ex in schema["examples"]:
- md.append("```json")
- md.append(json.dumps(ex, indent=2) if isinstance(ex, (dict, list)) else f'"{ex}"')
- md.append("```\n")
-
- return md, {
- "title": title,
- "anchor": anchor_id,
- "required": required,
- "repeatable": get_repeatable(schema),
- "type": get_type(schema),
- "description": desc
- }
+
+ md.extend(render_yaml_examples(schema["examples"], schema))
+
+ return md, {
+ "title": title,
+ "anchor": anchor_id,
+ "required": required,
+ "repeatable": get_repeatable(schema),
+ "type": get_type(schema),
+ "description": desc
+ }
# ----------------------------
# Main
diff --git a/rde_schema/rde_markdown_generation_examples.py b/rde_schema/rde_markdown_generation_V2.py
similarity index 78%
rename from rde_schema/rde_markdown_generation_examples.py
rename to rde_schema/rde_markdown_generation_V2.py
index 1e496a8..e331d9f 100644
--- a/rde_schema/rde_markdown_generation_examples.py
+++ b/rde_schema/rde_markdown_generation_V2.py
@@ -41,65 +41,6 @@
def anchor(text):
return text.lower().replace(" ", "-").replace("_", "-")
-def convert_example_to_titles(data, schema):
- """
- Recursively replace property keys with schema 'title' values.
- Works for objects and arrays of objects.
- """
- if isinstance(data, dict):
- props = schema.get("properties", {})
- result = {}
-
- for key, value in data.items():
- prop_schema = props.get(key, {})
- title = prop_schema.get("title", key.replace("_", " ").title())
-
- result[title] = convert_example_to_titles(value, prop_schema)
-
- return result
-
- elif isinstance(data, list):
- items_schema = schema.get("items", {})
- return [convert_example_to_titles(item, items_schema) for item in data]
-
- else:
- return data
-
-def render_yaml_examples(examples, schema):
- md = []
-
- for ex in examples:
-
- # strings stay unchanged
- if isinstance(ex, str):
- md.append("```text")
- md.append(ex)
- md.append("```\n")
- continue
-
- # convert keys to titles
- human_ex = convert_example_to_titles(ex, schema)
-
- # dump YAML normally
- yaml_str = yaml.safe_dump(human_ex, sort_keys=False)
-
- # insert a blank line between top-level list items
- if isinstance(human_ex, list):
- lines = yaml_str.splitlines()
- new_lines = []
- for i, line in enumerate(lines):
- new_lines.append(line)
- # if the next line starts a new '- ', insert a blank line
- if i + 1 < len(lines) and lines[i + 1].startswith("- "):
- new_lines.append("") # blank line between items
- yaml_str = "\n".join(new_lines)
-
- md.append("```yaml")
- md.append(yaml_str)
- md.append("```\n")
-
- return md
-
def get_usage_notes(note):
"""
Returns usage notes text for a property.
@@ -271,7 +212,10 @@ def render_subfields(properties, required, parent_anchor, level=4):
# Examples per subfield
if "examples" in prop:
md.append("\n**Examples:**\n")
- md.extend(render_yaml_examples(prop["examples"], prop))
+ for ex in prop["examples"]:
+ md.append("```json")
+ md.append(json.dumps(ex, indent=2) if isinstance(ex, (dict, list)) else f'"{ex}"')
+ md.append("```\n")
# Recurse for nested subfields
subprops, subreq = get_subfields(prop)
@@ -314,25 +258,28 @@ def render_property(name, schema):
items_type = schema.get("items", {}).get("type")
if "examples" in schema:
-
- schema_type = schema.get("type")
- items_type = schema.get("items", {}).get("type")
-
if schema_type == "object" or (schema_type == "array" and items_type == "object"):
+ # Complex type → "Complete Examples (with Subfields)"
md.append(f"###### Complete {title} Examples (with Subfields):\n")
+ md.append("```json")
+ md.append(json.dumps(schema["examples"], indent=2))
+ md.append("```\n")
else:
+ # Scalar type → normal examples
md.append("\n**Examples:**\n")
-
- md.extend(render_yaml_examples(schema["examples"], schema))
-
- return md, {
- "title": title,
- "anchor": anchor_id,
- "required": required,
- "repeatable": get_repeatable(schema),
- "type": get_type(schema),
- "description": desc
- }
+ for ex in schema["examples"]:
+ md.append("```json")
+ md.append(json.dumps(ex, indent=2) if isinstance(ex, (dict, list)) else f'"{ex}"')
+ md.append("```\n")
+
+ return md, {
+ "title": title,
+ "anchor": anchor_id,
+ "required": required,
+ "repeatable": get_repeatable(schema),
+ "type": get_type(schema),
+ "description": desc
+ }
# ----------------------------
# Main
From 59b45c0b4367b3228ef67681fe4d6c5f9baec322 Mon Sep 17 00:00:00 2001
From: Mike Shallcross
Date: Thu, 12 Mar 2026 16:28:37 -0400
Subject: [PATCH 011/119] updated legacy JSON Schema
---
...study_schema.md => icpsr_legacy_schema.md} | 0
rde_schema/property_bank/README.md | 3 +-
.../property_bank/collection_dates.json | 11 +-
.../property_bank/collection_modes.json | 15 +--
.../property_bank/common_data_elements.json | 6 +-
rde_schema/property_bank/contributors.json | 5 -
.../property_bank/data_source_types.json | 30 +++--
rde_schema/property_bank/distributors.json | 14 +--
rde_schema/property_bank/funding_sources.json | 9 +-
.../property_bank/general_data_formats.json | 12 +-
.../geographic_coverage_areas.json | 8 +-
.../property_bank/jel_classifications.json | 43 +++----
rde_schema/property_bank/languages.json | 12 +-
rde_schema/property_bank/license.json | 38 +++++--
.../property_bank/mesh_subject_terms.json | 7 +-
rde_schema/property_bank/organization.json | 13 ---
rde_schema/property_bank/oversamples.json | 30 +++--
rde_schema/property_bank/person.json | 9 +-
.../principal_investigators.json | 16 +--
.../property_bank/sampling_procedures.json | 24 ++--
.../smallest_geographic_unit.json | 47 +++++---
rde_schema/property_bank/time_methods.json | 25 ++--
rde_schema/property_bank/time_periods.json | 6 +
.../property_bank/units_of_analysis.json | 16 ++-
rde_schema/property_bank/version_history.json | 3 +
resources/requirements.txt | 1 +
...y_schema.json => icpsr_legacy_schema.json} | 107 ++++++++++++++----
schema/{yaml => notes}/citation.yaml | 2 +-
.../collection_date_time_frame.yaml | 2 +-
schema/{yaml => notes}/collection_mode.yaml | 2 +-
schema/{yaml => notes}/data_type.yaml | 2 +-
schema/{yaml => notes}/distributor.yaml | 2 +-
.../{yaml => notes}/extent_of_processing.yaml | 2 +-
schema/{yaml => notes}/funding_agency.yaml | 2 +-
schema/{yaml => notes}/funding_purpose.yaml | 2 +-
.../geographic_coverage_area.yaml | 2 +-
schema/{yaml => notes}/pi_names.yaml | 2 +-
schema/{yaml => notes}/scale.yaml | 2 +-
.../smallest_geographic_unit.yaml | 2 +-
schema/{yaml => notes}/study_design.yaml | 2 +-
schema/{yaml => notes}/summary.yaml | 2 +-
schema/{yaml => notes}/time_method.yaml | 2 +-
schema/{yaml => notes}/time_period_date.yaml | 2 +-
.../time_period_time_frame.yaml | 2 +-
schema/{yaml => notes}/title.yaml | 2 +-
schema/{yaml => notes}/version.yaml | 2 +-
46 files changed, 332 insertions(+), 216 deletions(-)
rename markdown/{icpsr_study_schema.md => icpsr_legacy_schema.md} (100%)
rename schema/{icpsr_study_schema.json => icpsr_legacy_schema.json} (92%)
rename schema/{yaml => notes}/citation.yaml (87%)
rename schema/{yaml => notes}/collection_date_time_frame.yaml (87%)
rename schema/{yaml => notes}/collection_mode.yaml (98%)
rename schema/{yaml => notes}/data_type.yaml (96%)
rename schema/{yaml => notes}/distributor.yaml (85%)
rename schema/{yaml => notes}/extent_of_processing.yaml (97%)
rename schema/{yaml => notes}/funding_agency.yaml (91%)
rename schema/{yaml => notes}/funding_purpose.yaml (86%)
rename schema/{yaml => notes}/geographic_coverage_area.yaml (91%)
rename schema/{yaml => notes}/pi_names.yaml (97%)
rename schema/{yaml => notes}/scale.yaml (91%)
rename schema/{yaml => notes}/smallest_geographic_unit.yaml (92%)
rename schema/{yaml => notes}/study_design.yaml (89%)
rename schema/{yaml => notes}/summary.yaml (95%)
rename schema/{yaml => notes}/time_method.yaml (97%)
rename schema/{yaml => notes}/time_period_date.yaml (89%)
rename schema/{yaml => notes}/time_period_time_frame.yaml (87%)
rename schema/{yaml => notes}/title.yaml (97%)
rename schema/{yaml => notes}/version.yaml (91%)
diff --git a/markdown/icpsr_study_schema.md b/markdown/icpsr_legacy_schema.md
similarity index 100%
rename from markdown/icpsr_study_schema.md
rename to markdown/icpsr_legacy_schema.md
diff --git a/rde_schema/property_bank/README.md b/rde_schema/property_bank/README.md
index 8ec12d1..9a941e6 100644
--- a/rde_schema/property_bank/README.md
+++ b/rde_schema/property_bank/README.md
@@ -1,5 +1,5 @@
# ICPSR Property Bank Entries
-Updated on December 17, 2025
+Updated on February 23, 2026
The RDE Ingest module presents an important opportunity to revise and refine the RDE Metadata Schema. To facilitate a metadata-driven ingest process, we are pivoting from archive-based schemas (e.g., one schema developed explicitly for the AEA Repository, a separate one for NACJD, etc.) to a 'property bank' model, which involves a collection of individually-defined metadata elements (i.e., the 'property bank') that may be reused (via the JSON Schema [$ref](https://json-schema.org/understanding-json-schema/structuring#dollarref) keyword) in one or more composite metadata schemas. Within the property bank, each metadata element will be defined in its own [JSON Schema](https://json-schema.org/understanding-json-schema) document; Metadata & Preservation will contribute information about how the property may be used (e.g., definition of the term, accepted data type, controlled vocabularies, examples of valid values, etc.), while CNS will contribute technical details (e.g., limits on string lengths, UI components, error messages, etc.).
@@ -9,6 +9,7 @@ These metadata elements have been reviewed by the Metadata & Preservation team,
| Property Title | Description |
| ----- | ----------- |
+| [ADA Accessibility](ada_accessibility.json) | Indicates whether the data collection is ADA accessible, conforming to WCAG 2.1 AA standards, or qualifies for the ADA archival exception. |
| [Alternate Titles](alternate_titles.json) | The alternate name(s) or acronym(s) commonly used to refer to the data collection. |
| [Citation](citation.json) | The official way to reference the data collection in writing. |
| [Collection Dates](collection_dates.json) | The date(s) when the data were physically collected. |
diff --git a/rde_schema/property_bank/collection_dates.json b/rde_schema/property_bank/collection_dates.json
index 0e86d87..ed66433 100644
--- a/rde_schema/property_bank/collection_dates.json
+++ b/rde_schema/property_bank/collection_dates.json
@@ -35,11 +35,18 @@
{
"start_date": "2018",
"end_date": "2018",
- "time_frame": "Summer and Fall 2018"
+ "time_frame": "Wave 1"
},
{
"start_date": "2020-10",
- "end_date": "2020-10"
+ "end_date": "2020-10",
+ "time_frame": "Wave 2"
+ }
+ ],
+ [
+ {
+ "start_date": "2003-01-01",
+ "end_date": "2003-12-31"
}
]
]
diff --git a/rde_schema/property_bank/collection_modes.json b/rde_schema/property_bank/collection_modes.json
index 5867be8..2694c59 100644
--- a/rde_schema/property_bank/collection_modes.json
+++ b/rde_schema/property_bank/collection_modes.json
@@ -10,7 +10,7 @@
"type": "object",
"properties": {
"label": {
- "title": "Collection Mode",
+ "title": "Label",
"description": "A human-readable form of the term.",
"type": "string",
"examples": [
@@ -20,15 +20,16 @@
]
},
"code": {
- "title": "Collection Mode Code",
+ "title": "Code",
"description": "A machine-readable/-actionable form of the term.",
"type": "string",
"examples": ["Interview.FaceToFace.CAPIorCAMI", "MeasurementsAndTests", "Observation.ComputerBased"]
},
"uri": {
- "title": "Collection Mode URI",
+ "title": "URI",
"description": "The URI for the term.",
- "type": "string"
+ "type": "string",
+ "examples": ["/api/v1/vocab-terms/collectionModes/terms/Interview.FaceToFace.CAPIorCAMI"]
}
},
"required": ["label", "code", "uri"]
@@ -38,19 +39,19 @@
{
"label": "Face-to-face interview: Computer-assisted (CAPI/CAMI)",
"code": "Interview.FaceToFace.CAPIorCAMI",
- "uri": "https://example.com/collection_modes/234"
+ "uri": "/api/v1/vocab-terms/collectionModes/terms/Interview.FaceToFace.CAPIorCAMI"
}
],
[
{
"label": "Measurements and tests",
"code": "MeasurementsAndTests",
- "uri": "https://example.com/collection_modes/972"
+ "uri": "/api/v1/vocab-terms/collectionModes/terms/MeasurementsAndTests"
},
{
"label": "Computer-based observation",
"code": "Observation.ComputerBased",
- "uri": "https://example.com/collection_modes/113"
+ "uri": "/api/v1/vocab-terms/collectionModes/terms/Observation.ComputerBased"
}
]
]
diff --git a/rde_schema/property_bank/common_data_elements.json b/rde_schema/property_bank/common_data_elements.json
index acf2629..da0f564 100644
--- a/rde_schema/property_bank/common_data_elements.json
+++ b/rde_schema/property_bank/common_data_elements.json
@@ -14,7 +14,7 @@
"type": "object",
"properties": {
"label": {
- "title": "Common Data Element Label",
+ "title": "Label",
"description": "A human-readable form of the term.",
"type": "string",
"examples": [
@@ -22,7 +22,7 @@
]
},
"code": {
- "title": "Common Data Element Code",
+ "title": "Code",
"description": "A machine-readable/-actionable form of the term.",
"type": "string",
"examples": [
@@ -30,7 +30,7 @@
]
},
"uri": {
- "title": "Common Data Element URI",
+ "title": "URI",
"description": "The URI for the term.",
"type": "string"
}
diff --git a/rde_schema/property_bank/contributors.json b/rde_schema/property_bank/contributors.json
index c14df1e..a32c8be 100644
--- a/rde_schema/property_bank/contributors.json
+++ b/rde_schema/property_bank/contributors.json
@@ -109,12 +109,9 @@
"family": "Doe"
},
"orcid": "https://orcid.org/0000-0001-6666-5717",
- "researcher_passport_profile_id": "1234",
"affiliations": [
{
"name": "Urban Institute",
- "name_code": "1234",
- "name_uri": "https://icpsr.example.com/organizations/1234",
"ror": "https://ror.org/017pz3h73",
"icpsr_org_id": "xyz123"
},
@@ -140,8 +137,6 @@
"organization":
{
"name": "Harvard University. Medical School",
- "name_code": "7823",
- "name_uri": "https://icpsr.example.com/organizations/7823",
"ror": "https://ror.org/456cg6k91"
},
"contributor_type": [
diff --git a/rde_schema/property_bank/data_source_types.json b/rde_schema/property_bank/data_source_types.json
index 7c6b231..5feca85 100644
--- a/rde_schema/property_bank/data_source_types.json
+++ b/rde_schema/property_bank/data_source_types.json
@@ -10,25 +10,33 @@
"type": "object",
"properties": {
"label": {
- "title": "Data Source Type",
+ "title": "Label",
"description": "A human-readable form of the term.",
"type": "string",
"examples": [
"Registers/Records/Accounts: Medical/Clinical",
"Events/Interactions",
- "Other"
+ "Research data: Published"
]
},
"code": {
- "title": "Data Source Type Code",
+ "title": "Code",
"description": "A machine-readable/-actionable form of the term.",
"type": "string",
- "examples": ["RegistersRecordsAccounts.MedicalClinical", "EventsInteractions", "Other"]
+ "examples": [
+ "RegistersRecordsAccounts.MedicalClinical",
+ "EventsInteractions",
+ "ResearchData.Published"]
},
"uri": {
- "title": "Data Source Type URI",
+ "title": "URI",
"description": "The URI for the term.",
- "type": "string"
+ "type": "string",
+ "examples": [
+ "/api/v1/vocab-terms/dataSourceTypes/terms/RegistersRecordsAccounts.MedicalClinical",
+ "/api/v1/vocab-terms/dataSourceTypes/terms/EventsInteractions",
+ "/api/v1/vocab-terms/dataSourceTypes/terms/ResearchData.Published"
+ ]
}
},
"required": ["label", "code", "uri"]
@@ -38,19 +46,19 @@
{
"label": "Registers/Records/Accounts: Medical/Clinical",
"code": "RegistersRecordsAccounts.MedicalClinical",
- "uri": "https://example.com/data_source_type/123"
+ "uri": "/api/v1/vocab-terms/dataSourceTypes/terms/RegistersRecordsAccounts.MedicalClinical"
},
{
"label": "Events/Interactions",
"code": "EventsInteractions",
- "uri": "https://example.com/data_source_type/234"
+ "uri": "/api/v1/vocab-terms/dataSourceTypes/terms/EventsInteractions"
}
],
[
{
- "label": "Other",
- "code": "Other",
- "uri": "https://example.com/data_source_type/737"
+ "label": "Research data: Published",
+ "code": "ResearchData.Published",
+ "uri": "/api/v1/vocab-terms/dataSourceTypes/terms/ResearchData.Published"
}
]
]
diff --git a/rde_schema/property_bank/distributors.json b/rde_schema/property_bank/distributors.json
index e024c27..49a6efb 100644
--- a/rde_schema/property_bank/distributors.json
+++ b/rde_schema/property_bank/distributors.json
@@ -15,7 +15,7 @@
"description": "The order of importance for the distributors of the data collection.",
"type": "integer",
"usageNotes": "A value of '0' indicates the primary distributor, '1' the second, and so forth.",
- "examples": [0,1,2,3]
+ "examples": [0,1,2]
}
},
"required": ["organization", "order"]
@@ -26,17 +26,13 @@
{
"organization": {
"name": "Inter-university Consortium for Political and Social Research",
- "name_code": "1234",
- "name_uri": "https://icpsr.example.com/organizations/1234",
- "ror": "https://ror.org/017pz3h73"
+ "ror": "https://ror.org/02q7mkh03"
},
"order": 0
},
{
"organization": {
- "name": "GESIS",
- "name_code": "2345",
- "name_uri": "https://icpsr.example.com/organizations/2345",
+ "name": "GESIS - Leibniz-Institute for the Social Sciences",
"ror": "https://ror.org/018afyw53"
},
"order": 1
@@ -45,9 +41,7 @@
[
{
"organization": {
- "name": "Roper Center for Public Opinion Research",
- "name_code": "1234",
- "name_uri": "https://icpsr.example.com/organizations/1234"
+ "name": "Roper Center for Public Opinion Research"
},
"order": 0
}
diff --git a/rde_schema/property_bank/funding_sources.json b/rde_schema/property_bank/funding_sources.json
index 0c454e1..c5f695d 100644
--- a/rde_schema/property_bank/funding_sources.json
+++ b/rde_schema/property_bank/funding_sources.json
@@ -47,8 +47,7 @@
"examples": [
0,
1,
- 2,
- 3
+ 2
]
}
},
@@ -59,8 +58,6 @@
{
"organization": {
"name": "Robert Wood Johnson Foundation",
- "name_code": "5643",
- "name_uri": "https://icpsr.example.com/organizations/5643",
"ror": "https://ror.org/02ymmdj85"
},
"grants": [
@@ -75,9 +72,7 @@
},
{
"organization": {
- "name": "United States Department of Justice. Office of Justice Programs. Bureau of Justice Statistics",
- "name_code": "2342",
- "name_uri": "https://icpsr.example.com/organizations/2342",
+ "name": "Bureau of Justice Statistics",
"ror": "https://ror.org/0006s4z66"
},
"grants": [
diff --git a/rde_schema/property_bank/general_data_formats.json b/rde_schema/property_bank/general_data_formats.json
index c2ef6a8..8578cf6 100644
--- a/rde_schema/property_bank/general_data_formats.json
+++ b/rde_schema/property_bank/general_data_formats.json
@@ -10,7 +10,7 @@
"type": "object",
"properties": {
"label": {
- "title": "General Data Format",
+ "title": "Label",
"description": "A human-readable form of the term.",
"type": "string",
"examples": [
@@ -20,7 +20,7 @@
]
},
"code": {
- "title": "General Data Format Code",
+ "title": "Code",
"description": "A machine-readable/-actionable form of the term.",
"type": "string",
"examples": [
@@ -30,7 +30,7 @@
]
},
"uri": {
- "title": "General Data Format URI",
+ "title": "URI",
"description": "The URI for the term.",
"type": "string"
}
@@ -42,19 +42,19 @@
{
"label": "Text",
"code": "Text",
- "uri": "https://example.com/general_data_format/972"
+ "uri": "/api/v1/vocab-terms/generalDataFormats/terms/Text"
},
{
"label": "Still image",
"code": "StillImage",
- "uri": "https://example.com/general_data_format/234"
+ "uri": "/api/v1/vocab-terms/generalDataFormats/terms/StillImage"
}
],
[
{
"label": "Numeric",
"code": "Numeric",
- "uri": "https://example.com/general_data_format/563"
+ "uri": "/api/v1/vocab-terms/generalDataFormats/terms/Numeric"
}
]
]
diff --git a/rde_schema/property_bank/geographic_coverage_areas.json b/rde_schema/property_bank/geographic_coverage_areas.json
index fb5e442..f08e358 100644
--- a/rde_schema/property_bank/geographic_coverage_areas.json
+++ b/rde_schema/property_bank/geographic_coverage_areas.json
@@ -38,7 +38,7 @@
"description": "The unique identifier for the geographic coverage area.",
"type": "string",
"format": "uri",
- "examples": [ "https://www.geonames.org/4990729/", "https://www.geonames.org/6269554" ]
+ "examples": [ "https://sws.geonames.org/4990729/", "https://sws.geonames.org/6269554/" ]
}
},
"required": ["country"]
@@ -50,18 +50,18 @@
"city": "Cleveland",
"state": "Ohio",
"country": "United States",
- "uri": "https://www.geonames.org/5150529"
+ "uri": "https://sws.geonames.org/5150529/"
},
{
"city": "Pittsburgh",
"state": "Pennsylvania",
"country": "United States",
- "uri": "https://www.geonames.org/5206379"
+ "uri": "https://sws.geonames.org/5206379/"
}
],
[
{
- "country": "Germany"
+ "country": "Prussia"
}
]
]
diff --git a/rde_schema/property_bank/jel_classifications.json b/rde_schema/property_bank/jel_classifications.json
index 6fb3cb1..bc7c257 100644
--- a/rde_schema/property_bank/jel_classifications.json
+++ b/rde_schema/property_bank/jel_classifications.json
@@ -10,55 +10,56 @@
"type": "object",
"properties": {
"label": {
- "title": "JEL Classification Term",
+ "title": "Label",
"description": "A human-readable form of the term.",
"type": "string",
"examples": [
- "A12 Relation of Economics to Other Disciplines",
- "B00 History of Economic Thought, Methodology, and Heterodox Approaches"
+ "Relation of Economics to Other Disciplines",
+ "History of Economic Thought, Methodology, and Heterodox Approaches",
+ "Economic History: Financial Markets and Institutions: U.S.; Canada: 1913-"
]
},
"code": {
- "title": "JEL Classification Code",
+ "title": "Code",
"description": "A machine-readable/-actionable form of the term.",
"type": "string",
"examples": [
- "a12",
- "b00",
- "n22"
+ "A12",
+ "B00",
+ "N22"
]
},
"uri": {
- "title": "JEL Classification URI",
+ "title": "URI",
"description": "The URI for the JEL classification code.",
"type": "string",
- "format": "uri",
"examples": [
- "http://example.com/jel/a12",
- "http://example.com/jel/b00"
+ "/api/v1/vocab-terms/jelClassifications/terms/A12",
+ "/api/v1/vocab-terms/jelClassifications/terms/B00",
+ "/api/v1/vocab-terms/jelClassifications/terms/N22"
]
}
},
- "required": ["label"]
+ "required": ["label", "code", "uri"]
},
"examples": [
[
{
- "label": "A12 Relation of Economics to Other Disciplines",
- "code": "a12",
- "uri": "http://example.com/jel/a12"
+ "label": "Relation of Economics to Other Disciplines",
+ "code": "A12",
+ "uri": "/api/v1/vocab-terms/jelClassifications/terms/A12"
},
{
- "label": "B00 History of Economic Thought, Methodology, and Heterodox Approaches",
- "code": "b00",
- "uri": "http://example.com/jel/b00"
+ "label": "History of Economic Thought, Methodology, and Heterodox Approaches",
+ "code": "B00",
+ "uri": "/api/v1/vocab-terms/jelClassifications/terms/B00"
}
],
[
{
- "label": "N22 Economic History: Financial Markets and Institutions: U.S.; Canada: 1913-",
- "code": "n22",
- "uri": "http://example.com/jel/n22"
+ "label": "Economic History: Financial Markets and Institutions: U.S.; Canada: 1913-",
+ "code": "N22",
+ "uri": "/api/v1/vocab-terms/jelClassifications/terms/N22"
}
]
]
diff --git a/rde_schema/property_bank/languages.json b/rde_schema/property_bank/languages.json
index 5c6e67a..84d42e7 100644
--- a/rde_schema/property_bank/languages.json
+++ b/rde_schema/property_bank/languages.json
@@ -9,7 +9,7 @@
"type": "object",
"properties": {
"label": {
- "title": "Language",
+ "title": "Label",
"description": "A human-readable form of the language name.",
"type": "string",
"examples": [
@@ -19,7 +19,7 @@
]
},
"code": {
- "title": "Language Code",
+ "title": "Code",
"description": "A machine-readable/-actionable form of the term.",
"type": "string",
"examples": [
@@ -29,7 +29,7 @@
]
},
"uri": {
- "title": "Language URI",
+ "title": "URI",
"description": "The URI for the term.",
"type": "string"
}
@@ -45,9 +45,9 @@
],
[
{
- "label": "English",
- "code": "en",
- "uri": "https://example.com/languages/en"
+ "label": "German",
+ "code": "de",
+ "uri": "https://example.com/languages/de"
},
{
"label": "French",
diff --git a/rde_schema/property_bank/license.json b/rde_schema/property_bank/license.json
index 9fdab72..cc06513 100644
--- a/rde_schema/property_bank/license.json
+++ b/rde_schema/property_bank/license.json
@@ -6,25 +6,45 @@
"type": "object",
"controlledVocab": "licenses",
"properties": {
- "name": {
- "title": "License Name",
- "type": "string"
+ "label": {
+ "title": "Label",
+ "description": "A human-readable form of the term.",
+ "type": "string",
+ "examples": [
+ "Creative Commons Attribution Non Commercial 4.0 International",
+ "Apache License 1.0"
+ ]
},
"code": {
- "title": "License Code",
- "type": "string"
+ "title": "Code",
+ "description": "A machine-readable/-actionable form of the term.",
+ "type": "string",
+ "examples": [
+ "CC-BY-NC-4.0",
+ "Apache-1.0"
+ ]
},
"uri": {
- "title": "License URI",
+ "title": "URI",
+ "description": "The URI for the term.",
"type": "string",
- "format": "uri"
+ "examples": [
+ "/api/v1/vocab-terms/licenses/terms/CC-BY-4.0",
+ "/api/v1/vocab-terms/licenses/terms/Apache-1.0"
+ ]
}
},
+ "required": ["label", "code", "uri"],
"examples": [
{
- "name": "Creative Commons Attribution Non Commercial 4.0 International",
+ "label": "Creative Commons Attribution Non Commercial 4.0 International",
"code": "CC-BY-NC-4.0",
- "uri": "https://creativecommons.org/licenses/by-nc/4.0/"
+ "uri": "/api/v1/vocab-terms/licenses/terms/CC-BY-4.0"
+ },
+ {
+ "label": "Apache License 1.0",
+ "code": "Apache-1.0",
+ "uri": "/api/v1/vocab-terms/licenses/terms/Apache-1.0"
}
]
}
\ No newline at end of file
diff --git a/rde_schema/property_bank/mesh_subject_terms.json b/rde_schema/property_bank/mesh_subject_terms.json
index a5f904f..cd1a29e 100644
--- a/rde_schema/property_bank/mesh_subject_terms.json
+++ b/rde_schema/property_bank/mesh_subject_terms.json
@@ -10,22 +10,21 @@
"type": "object",
"properties": {
"label": {
- "title": "MeSH Subject Term",
+ "title": "Label",
"description": "A human-readable form of the subject term.",
"type": "string",
"examples": ["anxiety", "brain waves"]
},
"code": {
- "title": "MeSH Subject Term Code",
+ "title": "Code",
"description": "A machine-readable/-actionable form of the subject term.",
"type": "string",
"examples": ["D001007", "D058256"]
},
"uri": {
- "title": "MeSH Subject Term URI",
+ "title": "URI",
"description": "The URI for the subject term as maintained in MeSH.",
"type": "string",
- "format": "uri",
"usageNotes": "Enter the MeSH RDF Unique Identifier.",
"examples": [
"http://id.nlm.nih.gov/mesh/D001007",
diff --git a/rde_schema/property_bank/organization.json b/rde_schema/property_bank/organization.json
index 155e152..34caa59 100644
--- a/rde_schema/property_bank/organization.json
+++ b/rde_schema/property_bank/organization.json
@@ -15,17 +15,6 @@
"University of Michigan. Institute for Social Research"
]
},
- "name_code": {
- "title": "Organization Name Code",
- "description": "A machine-readable/-actionable form of the organization's name.",
- "type": "string",
- "examples": ["1234", "2345", "3456"]
- },
- "name_uri": {
- "title": "Organization Name URI",
- "description": "The URI for the organization's name.",
- "type": "string"
- },
"ror": {
"title": "ROR Identifier",
"description": "The organization's Research Organization Registry (ROR) identifier.",
@@ -45,8 +34,6 @@
"examples": [
{
"name": "Urban Institute",
- "name_code": "1234",
- "name_uri": "https://icpsr.example.com/organizations/1234",
"ror": "https://ror.org/017pz3h73",
"email": "info@urban.institute"
}
diff --git a/rde_schema/property_bank/oversamples.json b/rde_schema/property_bank/oversamples.json
index 1657b82..8fafd56 100644
--- a/rde_schema/property_bank/oversamples.json
+++ b/rde_schema/property_bank/oversamples.json
@@ -10,50 +10,56 @@
"type": "object",
"properties": {
"label": {
- "title": "Oversample",
+ "title": "Label",
"description": "A human-readable form of the language name.",
"type": "string",
"examples": [
"Age",
"Race/Ethnicity",
- "Other"
+ "Sex"
]
},
"code": {
- "title": "Oversample Code",
+ "title": "Code",
"description": "A machine-readable/-actionable form of the term.",
"type": "string",
"examples": [
"Age",
"RaceEthnicity",
- "Other"
+ "Sex"
]
},
"uri": {
- "title": "Oversample URI",
+ "title": "URI",
"description": "The URI for the term.",
- "type": "string"
+ "type": "string",
+ "examples": [
+ "/api/v1/vocab-terms/oversamples/terms/Age",
+ "/api/v1/vocab-terms/oversamples/terms/RaceEthnicity",
+ "/api/v1/vocab-terms/oversamples/terms/Sex"
+ ]
}
- }
+ },
+ "required": ["label", "code", "uri"]
},
"examples": [
[
{
"label": "Age",
"code": "Age",
- "uri": "https://example.com/oversamples/789"
+ "uri": "/api/v1/vocab-terms/oversamples/terms/Age"
}
],
[
{
"label": "Race/Ethnicity",
"code": "RaceEthnicity",
- "uri": "https://example.com/oversamples/456"
+ "uri": "/api/v1/vocab-terms/oversamples/terms/RaceEthnicity"
},
{
- "label": "Other",
- "code": "Other",
- "uri": "https://example.com/oversamples/123"
+ "label": "Sex",
+ "code": "Sex",
+ "uri": "/api/v1/vocab-terms/oversamples/terms/Sex"
}
]
]
diff --git a/rde_schema/property_bank/person.json b/rde_schema/property_bank/person.json
index 61e1672..6677b55 100644
--- a/rde_schema/property_bank/person.json
+++ b/rde_schema/property_bank/person.json
@@ -68,14 +68,10 @@
"family": "Doe II"
},
"orcid": "https://orcid.org/0000-0001-6666-5717",
- "researcher_passport_profile_id": "1234",
"affiliations": [
{
"name": "Urban Institute",
- "name_code": "2342",
- "name_uri": "https://icpsr.example.com/organizations/2342",
- "ror": "https://ror.org/017pz3h73",
- "icpsr_org_id": "xyz123"
+ "ror": "https://ror.org/017pz3h73"
},
{
"name": "Example University"
@@ -85,7 +81,8 @@
},
{
"name": {
- "given": "Joe"
+ "given": "Joe",
+ "family": "Smith"
}
}
]
diff --git a/rde_schema/property_bank/principal_investigators.json b/rde_schema/property_bank/principal_investigators.json
index e1769a7..15f3df8 100644
--- a/rde_schema/property_bank/principal_investigators.json
+++ b/rde_schema/property_bank/principal_investigators.json
@@ -17,7 +17,7 @@
"title": "Order",
"description": "The order or rank of importance for the PIs associated with the data collection, typically provided to ICPSR by the lead PI.",
"type": "integer",
- "examples": [0,1,2,3]
+ "examples": [0,1,2]
}
},
"allOf": [
@@ -34,15 +34,12 @@
},
"minItems": 1,
"examples": [
- "Personal Principal Investigator
| First Name | Last Name | Affiliation |
|---|
| Veronica | Martinez-Ebers | National Institute for Law and Equity |
| Lawrence F. | Travis III | University of Cincinnati |
",
- "Organizational Principal Investigator
| Name |
|---|
| United States Department of Labor. Bureau of Labor Statistics |
| The Washington Post |
"
- ],
- "json_examples": [
[
{
"person": {
"name": {
- "given": "Jane"
+ "given": "Jane",
+ "family": "Smith"
}
},
"order": 0
@@ -56,12 +53,9 @@
"family": "Doe IV"
},
"orcid": "https://orcid.org/0000-0001-6666-5717",
- "researcher_passport_profile_id": "1234",
"affiliations": [
{
"name": "Urban Institute",
- "name_code": "1234",
- "name_uri": "https://icpsr.example.com/organizations/1234",
"ror": "https://ror.org/017pz3h73",
"icpsr_org_id": "xyz123"
},
@@ -75,9 +69,7 @@
{
"organization":
{
- "name": "Harvard University. Medical School",
- "name_code": "7823",
- "name_uri": "https://icpsr.example.com/organizations/7823",
+ "name": "Harvard University",
"ror": "https://ror.org/456cg6k91"
},
"order": 1
diff --git a/rde_schema/property_bank/sampling_procedures.json b/rde_schema/property_bank/sampling_procedures.json
index ca50412..0faedc9 100644
--- a/rde_schema/property_bank/sampling_procedures.json
+++ b/rde_schema/property_bank/sampling_procedures.json
@@ -10,26 +10,34 @@
"type": "object",
"properties": {
"label": {
+ "title": "Label",
"description": "A human-readable form of the term.",
"type": "string",
"examples": [
"Probability: Systematic random",
- "Other",
+ "Theoretical Sampling",
"Total universe/Complete enumeration"
]
},
"code": {
+ "title": "Code",
"description": "A machine-readable/-actionable form of the term.",
"type": "string",
"examples": [
"Probability.SystematicRandom",
- "Other",
+ "TheoreticalSampling",
"TotalUniverseCompleteEnumeration"
]
},
"uri": {
+ "title": "URI",
"description": "The URI for the term.",
- "type": "string"
+ "type": "string",
+ "examples": [
+ "/api/v1/vocab-terms/samplingProcedures/terms/Probability.SystematicRandom",
+ "/api/v1/vocab-terms/samplingProcedures/terms/TheoreticalSampling",
+ "/api/v1/vocab-terms/samplingProcedures/terms/TotalUniverseCompleteEnumeration"
+ ]
}
},
"required": ["label", "code", "uri"]
@@ -42,19 +50,19 @@
{
"label": "Probability: Systematic random",
"code": "Probability.SystematicRandom",
- "uri": "https://example.com/sampling_procedures/123"
+ "uri": "/api/v1/vocab-terms/samplingProcedures/terms/Probability.SystematicRandom"
},
{
- "label": "Other",
- "code": "Other",
- "uri": "https://example.com/sampling_procedures/737"
+ "label": "Theoretical Sampling",
+ "code": "TheoreticalSampling",
+ "uri": "/api/v1/vocab-terms/samplingProcedures/terms/TheoreticalSampling"
}
],
[
{
"label": "Total universe/Complete enumeration",
"code": "TotalUniverseCompleteEnumeration",
- "uri": "https://example.com/sampling_procedures/234"
+ "uri": "/api/v1/vocab-terms/samplingProcedures/terms/TotalUniverseCompleteEnumeration"
}
]
]
diff --git a/rde_schema/property_bank/smallest_geographic_unit.json b/rde_schema/property_bank/smallest_geographic_unit.json
index 2698de8..4ee818a 100644
--- a/rde_schema/property_bank/smallest_geographic_unit.json
+++ b/rde_schema/property_bank/smallest_geographic_unit.json
@@ -7,35 +7,52 @@
"type": "object",
"properties": {
"label": {
- "title": "Smallest Geographic Unit Term",
- "type": "string"
+ "title": "Label",
+ "description": "A human-readable form of the term.",
+ "type": "string",
+ "examples": [
+ "Basic Geographic Units",
+ "Postal Code/Zip Code",
+ "State/Province"
+ ]
},
"code": {
- "title": "Smallest Geographic Unit Code",
- "type": "string"
+ "title": "Code",
+ "description": "A machine-readable/-actionable form of the term.",
+ "type": "string",
+ "examples": [
+ "BasicUnits",
+ "PostalCodeZipCode",
+ "StateProvince"
+ ]
},
"uri": {
- "title": "Smallest Geographic Unit URI",
+ "title": "URI",
+ "description": "The URI for the term.",
"type": "string",
- "format": "uri"
+ "examples": [
+ "/api/v1/vocab-terms/smallestGeographicUnits/terms/BasicUnits",
+ "/api/v1/vocab-terms/smallestGeographicUnits/terms/PostalCodeZipCode",
+ "/api/v1/vocab-terms/smallestGeographicUnits/terms/StateProvince"
+ ]
}
},
"usageNotes": "Geographic Unit is intended to represent specific, known geography -- e.g., county, census district, FIPS code, electoral district, and any other conveyor of specific geography that is represented by a variable. If the data do not include a geographic variable by which the data can be analyzed, this element is not indicated. If all the cases are from a single state, but the cases are not subdivided geographically within that state, then 'state' is not indicated. This element is only meant to convey specific, known, geography. If there is a variable indicating which testing site a survey was taken at, but the locations of the testing sites were masked by the PI, this element is likely not indicated.",
"examples": [
{
- "label": "state",
- "code": "123",
- "uri": "https://example.com/smallest_geographic_unit/123"
+ "label": "Basic Geographic Units",
+ "code": "BasicUnits",
+ "uri": "/api/v1/vocab-terms/smallestGeographicUnits/terms/BasicUnits"
},
{
- "label": "Census tract",
- "code": "234",
- "uri": "https://example.com/smallest_geographic_unit/234"
+ "label": "Postal Code/Zip Code",
+ "code": "PostalCodeZipCode",
+ "uri": "/api/v1/vocab-terms/smallestGeographicUnits/terms/PostalCodeZipCode"
},
{
- "label": "precinct",
- "code": "345",
- "uri": "https://example.com/smallest_geographic_unit/345"
+ "label": "State/Province",
+ "code": "StateProvince",
+ "uri": "/api/v1/vocab-terms/smallestGeographicUnits/terms/StateProvince"
}
]
}
\ No newline at end of file
diff --git a/rde_schema/property_bank/time_methods.json b/rde_schema/property_bank/time_methods.json
index 55d19fe..6223989 100644
--- a/rde_schema/property_bank/time_methods.json
+++ b/rde_schema/property_bank/time_methods.json
@@ -10,7 +10,7 @@
"type": "object",
"properties": {
"label": {
- "title": "Time Method",
+ "title": "Label",
"description": "A human-readable form of the term.",
"type": "string",
"examples": [
@@ -20,19 +20,24 @@
]
},
"code": {
- "title": "Time Method Code",
+ "title": "Code",
"description": "A machine-readable/-actionable form of the term.",
"type": "string",
"examples": [
"CrossSection",
"Longitudinal.CohortEventBased",
- "Other"
+ "TimeSeries"
]
},
"uri": {
- "title": "Time Method URI",
+ "title": "URI",
"description": "The URI for the term.",
- "type": "string"
+ "type": "string",
+ "examples": [
+ "/api/v1/vocab-terms/timeMethods/terms/CrossSection",
+ "/api/v1/vocab-terms/timeMethods/terms/Longitudinal.CohortEventBased",
+ "/api/v1/vocab-terms/timeMethods/terms/TimeSeries"
+ ]
}
},
"required": [ "label", "code", "uri" ]
@@ -42,19 +47,19 @@
{
"label": "Registers/Records/Accounts: Medical/Clinical",
"code": "RegistersRecordsAccounts.MedicalClinical",
- "uri": "https://example.com/time_methods/123"
+ "uri": "/api/v1/vocab-terms/timeMethods/terms/RegistersRecordsAccounts.MedicalClinical"
},
{
"label": "Events/Interactions",
"code": "EventsInteractions",
- "uri": "https://example.com/time_methods/234"
+ "uri": "/api/v1/vocab-terms/timeMethods/terms/EventsInteractions"
}
],
[
{
- "label": "Other",
- "code": "Other",
- "uri": "https://example.com/time_methods/737"
+ "label": "Time series",
+ "code": "TimeSeries",
+ "uri": "/api/v1/vocab-terms/timeMethods/terms/TimeSeries"
}
]
]
diff --git a/rde_schema/property_bank/time_periods.json b/rde_schema/property_bank/time_periods.json
index 1c5eb2e..240ee77 100644
--- a/rde_schema/property_bank/time_periods.json
+++ b/rde_schema/property_bank/time_periods.json
@@ -41,6 +41,12 @@
"start_date": "2020-10",
"end_date": "2020-10"
}
+ ],
+ [
+ {
+ "start_date": "2003-01-01",
+ "end_date": "2003-12-31"
+ }
]
]
}
\ No newline at end of file
diff --git a/rde_schema/property_bank/units_of_analysis.json b/rde_schema/property_bank/units_of_analysis.json
index 6de6e09..30dc62d 100644
--- a/rde_schema/property_bank/units_of_analysis.json
+++ b/rde_schema/property_bank/units_of_analysis.json
@@ -10,6 +10,7 @@
"type": "object",
"properties": {
"label": {
+ "title": "Label",
"description": "A human-readable form of the term.",
"type": "string",
"examples": [
@@ -19,6 +20,7 @@
]
},
"code": {
+ "title": "Code",
"description": "A machine-readable/-actionable form of the term.",
"type": "string",
"examples": [
@@ -28,8 +30,14 @@
]
},
"uri": {
+ "title": "URI",
"description": "The URI for the term.",
- "type": "string"
+ "type": "string",
+ "examples": [
+ "/api/v1/vocab-terms/analysisUnits/OrganizationOrInstitution",
+ "/api/v1/vocab-terms/analysisUnits/Individual",
+ "/api/v1/vocab-terms/analysisUnits/Household"
+ ]
}
},
"required": ["label", "code", "uri"]
@@ -39,19 +47,19 @@
{
"label": "Organization/Institution",
"code": "OrganizationOrInstitution",
- "uri": "https://example.com/units_of_analysis/123"
+ "uri": "/api/v1/vocab-terms/analysisUnits/OrganizationOrInstitution"
},
{
"label": "Individual",
"code": "Individual",
- "uri": "https://example.com/units_of_analysis/234"
+ "uri": "/api/v1/vocab-terms/analysisUnits/Individual"
}
],
[
{
"label": "Household",
"code": "Household",
- "uri": "https://example.com/units_of_analysis/737"
+ "uri": "/api/v1/vocab-terms/analysisUnits/Household"
}
]
]
diff --git a/rde_schema/property_bank/version_history.json b/rde_schema/property_bank/version_history.json
index 9f6f79f..b86dcca 100644
--- a/rde_schema/property_bank/version_history.json
+++ b/rde_schema/property_bank/version_history.json
@@ -8,6 +8,7 @@
"type": "object",
"properties": {
"version_number": {
+ "title": "Version Number",
"description": "A version number for a study.",
"type": "string",
"pattern": "^[vV]\\d+(.\\d+)?(.\\d+)?$",
@@ -19,12 +20,14 @@
]
},
"version_date": {
+ "title": "Version Date",
"description": "The date on which a given version of a data collection was released.",
"type": "string",
"format": "date",
"examples": ["2020-07-20", "2022-01-31"]
},
"version_note": {
+ "title": "Version Note",
"description": "Provenance information about a given version of the data collection.",
"type": "string",
"examples": [
diff --git a/resources/requirements.txt b/resources/requirements.txt
index d388731..532c0a4 100644
--- a/resources/requirements.txt
+++ b/resources/requirements.txt
@@ -1,3 +1,4 @@
pyyaml~=6.0.1
mkdocs~=1.5.2
+mkdocs-redirects~=1.2
git+https://github.com/shallcro/jsfh-revised.git@acf3dbe5d16e9c9512f877a1d7b2cc872093ee87
\ No newline at end of file
diff --git a/schema/icpsr_study_schema.json b/schema/icpsr_legacy_schema.json
similarity index 92%
rename from schema/icpsr_study_schema.json
rename to schema/icpsr_legacy_schema.json
index 15f9bb7..d76f090 100644
--- a/schema/icpsr_study_schema.json
+++ b/schema/icpsr_legacy_schema.json
@@ -8,13 +8,15 @@
"additionalProperties": false,
"properties": {
"version": {
+ "title": "Version",
"description": "The current version number for the data collection.",
"type": "integer",
"controlledVocab": "N/A",
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/version?version=v1",
+ "usageNotes": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/version#/usageNotes"},
"examples": [ 1, 2 ]
},
"version_date": {
+ "title": "Version Date",
"description": "The date on which the current version of the data collection was released by ICPSR.",
"type": "string",
"format": "date",
@@ -23,6 +25,7 @@
"examples": [ "2006-03-30", "2019-05-05" ]
},
"original_release_date": {
+ "title": "Original Release Date",
"description": "The date on which the data collection was originally released by ICPSR.",
"type": "string",
"format": "date",
@@ -31,10 +34,11 @@
"examples": [ "2001-02-07", "2020-08-12" ]
},
"title": {
+ "title": "Title",
"description": "The official title that describes what the data collection is about, its geographic scope, and the time period it covered.",
"type": "string",
"controlledVocab": "N/A",
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/title?version=v1",
+ "usageNotes": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/title#/usageNotes"},
"examples": [
"Bridge of Faith: Aim4Peace Community-Based Violence Prevention Project, Kansas City, Missouri, 2014-2017",
"Health and Relationships Project, United States, 2014-2015",
@@ -44,6 +48,7 @@
]
},
"alternate_title": {
+ "title": "Alternate Title",
"description": "The alternate name(s) or acronym(s) commonly used to refer to the data collection.",
"type": "array",
"items": {
@@ -59,6 +64,7 @@
]
},
"link_title": {
+ "title": "Link Title",
"description": "The title of an external resource that is included in the ICPSR catalog as a courtesy to users.",
"type": "string",
"controlledVocab": "N/A",
@@ -66,6 +72,7 @@
"examples": [ "Cebu Longitudinal Health and Nutrition Survey" ]
},
"link_url": {
+ "title": "Link URL",
"description": "The URL of an external resource that is included in the ICPSR catalog as a courtesy to users.",
"type": "string",
"controlledVocab": "N/A",
@@ -73,22 +80,26 @@
"examples": [ "https://cebu.cpc.unc.edu/" ]
},
"principal_investigator": {
+ "title": "Principal Investigator",
"description": "The key people or organizations responsible for the data collection, listed by importance. Each data collection requires at least one PI, either a person or an organization.",
"type": "array",
"controlledVocab": "The [ICPSR Personal Names Authority List](https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10002) and [Organization Names Authority List](https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10004) are the primary authority control sources for PI names. The [Virtual International Authority File](https://viaf.org/) (VIAF) serves as a secondary resource if names are not present in ICPSR lists.",
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/pi_names?version=v1",
+ "usageNotes": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/pi_names#/usageNotes"},
"items": {
"type": "object",
"properties": {
"person": {
+ "title": "Person",
"description": "The name of a person primarily responsible for the data collection.",
"type": "object",
"properties": {
+ "title": "Given (First) Name",
"given_name": {
"description": "The person's given name.",
"type": "string"
},
"family_name": {
+ "title": "Family (Last) Name",
"description": "The person's family name (e.g., surname).",
"type": "string"
}
@@ -115,6 +126,7 @@
]
},
"organization": {
+ "title": "Organization",
"description": "The name of the organization primarily responsible for the data collection OR the organization with which an individual PI was affiliated at the time of a data collection's deposit at ICPSR.",
"type": "string",
"examples": [
@@ -125,6 +137,7 @@
]
},
"order": {
+ "title": "Order",
"description": "The order or rank of importance for the PIs associated with the data collection, typically provided to ICPSR by the lead PI.",
"type": "integer",
"controlledVocab": "N/A",
@@ -168,22 +181,25 @@
]
},
"citation": {
+ "title": "Citation",
"description": "The official way to reference the data collection in writing.",
"type": "string",
"controlledVocab": "N/A",
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/citation?version=v1",
+ "usageNotes": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/citation#/usageNotes"},
"examples": [
["University of Michigan. Survey Research Center. Economic Behavior Program. Survey of Consumer Attitudes and Behavior, September 2018. Inter-university Consortium for Political and Social Research [distributor], 2021-11-18. https://doi.org/10.3886/ICPSR38121.v1"],
["Goldin, Claudia, and Lawrence Katz. The 1915 Iowa State Census Project. ICPSR28501-v1. Ann Arbor, MI: Inter-university Consortium for Political and Social Research [distributor], 2010-12-14. http://doi.org/10.3886/ICPSR28501.v1"]
]
},
"distributor": {
+ "title": "Distributor",
"description": "The organization(s) responsible for distributing the data collection.",
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
+ "title": "Name",
"description": "The name of the data distributor.",
"type": "string",
"controlledVocab": "[ICPSR Organization Names Authority List](https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10004)",
@@ -193,6 +209,7 @@
]
},
"location": {
+ "title": "Location",
"description": "The location of the data distributor.",
"type": "string",
"controlledVocab": "N/A",
@@ -200,6 +217,7 @@
"examples": ["Ann Arbor, MI", "Chicago, IL"]
},
"order": {
+ "title": "Title",
"description": "The order of importance for the distributors of the data collection.",
"type": "integer",
"controlledVocab": "N/A",
@@ -211,7 +229,7 @@
"additionalProperties": false
},
"minItems": 1,
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/distributor?version=v1",
+ "icpsrGuidance": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/distributor#/icpsrGuidance"},
"examples": [
[
{
@@ -235,6 +253,7 @@
]
},
"study_number": {
+ "title": "Study Number",
"description": "A unique, numerical value used by ICPSR to identify and track data collections.",
"type": "integer",
"controlledVocab": "N/A",
@@ -242,6 +261,7 @@
"examples": [2760, 3025, 38672]
},
"doi": {
+ "title": "Digital Object Identifier (DOI)",
"description": "The registered persistent digital object identifier (DOI) associated with the data collection.",
"type": "string",
"format": "uri",
@@ -250,16 +270,18 @@
"examples": [ "https://doi.org/10.3886/ICPSR03025.v2", "https://doi.org/10.3886/ICPSR06425.v1" ]
},
"funding_source": {
+ "title": "Funding Source",
"description": "The sources of funding that supported the data collection.",
"type": "array",
"items": {
"type": "object",
"properties": {
"agency": {
+ "title": "Agency",
"description": "An organization that supported the data collection.",
"type": "string",
"controlledVocab": "The [ICPSR Organization Names Authority List](https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10004) is the primary authority control source for funding agencies. The [Virtual International Authority File](https://viaf.org/) (VIAF) serves as a secondary resource if names are not present in the ICPSR list.",
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/funding_agency?version=v1",
+ "usageNotes": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/funding_agency#/usageNotes"},
"icpsrGuidance": "The Principal Investigator's home institution does not need to be listed as a funding agency unless the PI provides a grant number (or other award information) or makes a specific request.",
"examples": [
"United States Department of Justice. Office of Justice Programs. Bureau of Justice Statistics",
@@ -268,6 +290,7 @@
]
},
"grant_number": {
+ "title": "Grant Number",
"description": "A unique identifier associated with the funding.",
"type": "array",
"items": {
@@ -282,13 +305,14 @@
]
},
"purpose": {
+ "title": "Purpose",
"description": "The purpose of the funding.",
"type": "array",
"items": {
"type": "string",
"enum": ["collection and/or analysis of data", "secondary analysis of data", "archiving of data"]
},
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/funding_purpose?version=v1",
+ "controlledVocab": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/funding_purpose#/controlledVocab"},
"icpsrGuidance": "This is an internal ICPSR element that is not publicly displayed. Certain ICPSR topical archives find this useful as they assemble reports for their funding agencies.",
"examples": [
["collection and/or analysis of data", "secondary analysis of data"],
@@ -296,6 +320,7 @@
]
},
"order": {
+ "title": "Order",
"description": "The relative order of funding sources associated with the data collection.",
"type": "integer",
"controlledVocab": "N/A",
@@ -304,7 +329,7 @@
}
},
"required": ["agency", "order"],
- "dependentRequired": { "grant_numbers": ["agency"] },
+ "dependentRequired": { "grant_number": ["agency"] },
"additionalProperties": false
},
"examples": [
@@ -331,6 +356,7 @@
]
},
"external_source_ID": {
+ "title": "External Source ID",
"description": "A unique identifier supplied by the data depositor.",
"type": "array",
"items": {
@@ -344,16 +370,18 @@
]
},
"summary": {
+ "title": "Summary",
"description": "A description of the data collection that helps users understand its purpose, substance, and key topics.",
"type": "string",
"controlledVocab": "N/A",
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/summary?version=v1",
+ "usageNotes": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/summary#/usageNotes"},
"examples": [
"In 2014, Chicago Public Schools, looking to reduce the possibility of gun violence among school-aged youth, applied for a grant through the National Institute of Justice. CPS was awarded the Comprehensive School Safety Initiative grant and use said grant to establish the 'Connect and Redirect to Respect' program. This program used student social media data to identify and intervene with students thought to be at higher risk for committing violence. At-risk behaviors included brandishing a weapon, instigating conflict online, signaling gang involvement, and threats towards others. Identified at-risk students would be contacted by a member of the CPS Network Safety Team or the Chicago Police Department's Gang School Safety Team, depending on the risk level of the behavior. To evaluate the efficacy of CRR, the University of Chicago Crime Lab compared outcomes for students enrolled in schools that received the program to outcomes for students enrolled in comparison schools, which did not receive the program. 32 schools were selected for the study, with a total of 44,503 students. Demographic variables included age, race, sex, and ethnicity. Misconduct and academic variables included arrest history, in-school suspensions, out-of-school suspensions, GPA, and attendance days.",
"The Health and Relationship Project is a study of both spouses in same-sex and different-sex marriages who were legally married and aged 35 to 65 at the time of data collection (2015). There are two parts of this study: a baseline questionnaire and a daily diary questionnaire completed for 10 consecutive days; both components were completed online and spouses were asked to complete the surveys separately. The baseline questionnaire asks participants about a number of topics related to marriage and health, including stress, health status and health behaviors, relationship quality, and how they have approached health problems in the past. The diary questionnaire asks participants a number of questions about the past 24 hours, including daily stress experiences, social interactions, and health behaviors."
]
},
"subject_term": {
+ "title": "Subject Term",
"description": "A controlled list of social science terms maintained by ICPSR and used to indicate topics related to the data collection.",
"type": "array",
"items": {
@@ -370,6 +398,7 @@
]
},
"geographic_coverage_area": {
+ "title": "Geographic Coverage Area",
"description": "The geographic locations where the data refer or are related.",
"type": "array",
"items": {
@@ -377,7 +406,7 @@
},
"minItems": 1,
"controlledVocab": "[ICPSR Geographic Names Thesaurus](https://www.icpsr.umich.edu/web/ICPSR/thesaurus/10003).",
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/geographic_coverage_area?version=v1",
+ "usageNotes": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/geographic_coverage_area#/usageNotes"},
"icpsrGuidance": "The metadata editor will automatically put this element's values in alphabetical order, regardless of hierarchy.",
"examples": [
["United States", "Maryland", "Baltimore"],
@@ -386,16 +415,18 @@
]
},
"time_period": {
+ "title": "Time Period",
"description": "The time period(s) to which the data refer, regardless of when the data were collected.",
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
+ "title": "Date",
"description": "The date (or date range) for a time period to which the data refer.",
"type": "string",
"controlledVocab": "N/A",
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/time_period_date?version=v1",
+ "usageNotes": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/time_period_date#/usageNotes"},
"examples": [
"2020",
"2021--2022",
@@ -405,10 +436,11 @@
},
"time_frame": {
+ "title": "Time Frame",
"description": "An optional free-text description of the time period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present.",
"type": "string",
"controlledVocab": "N/A",
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/time_period_time_frame?version=v1",
+ "usageNotes": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/time_period_time_frame#/usageNotes"},
"examples": [
"Wave 1",
"Spring 2013",
@@ -437,12 +469,14 @@
]
},
"collection_date": {
+ "title": "Collection Date",
"description": "The date(s) when the data were physically collected.",
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
+ "title": "Date",
"description": "The date (or date range) of the data collection period.",
"type": "string",
"controlledVocab": "N/A",
@@ -455,10 +489,11 @@
]
},
"time_frame": {
+ "title": "Time Frame",
"description": "An optional free-text description of the data collection period, used for non-numeric dates (e.g., 'Fall 2012') or to add context when multiple dates are present.",
"type": "string",
"controlledVocab": "N/A",
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/collection_date_time_frame?version=v1",
+ "usageNotes": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/collection_date_time_frame#/usageNotes"},
"examples": [
"Wave 1",
"Spring 2013",
@@ -487,6 +522,7 @@
]
},
"universe": {
+ "title": "Universe",
"description": "The total group of persons or other entities (e.g., households or organizations) that were the object of research and to which analytic results refer.",
"type": "string",
"controlledVocab": "N/A",
@@ -502,6 +538,7 @@
]
},
"data_type": {
+ "title": "Data Type",
"description": "The types of data included in the data collection.",
"type": "array",
"items": {
@@ -525,13 +562,14 @@
"video: film, animation, etc."
]
},
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/data_type?version=v1",
+ "controlledVocab": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/data_type#/controlledVocab"},
"examples": [
["administrative records data"],
["census/enumeration data", "survey data", "video: film, animation, etc."]
]
},
"collection_note": {
+ "title": "Collection Note",
"description": "Important details about the data collection (like unique authoring, discrepencies, or processing information) that can't be recorded in other metadata elements.",
"type": "array",
"items": {
@@ -556,6 +594,7 @@
]
},
"study_purpose": {
+ "title": "Study Purpose",
"description": "The study's main goals and associated research questions.",
"type": "string",
"controlledVocab": "N/A",
@@ -567,15 +606,18 @@
]
},
"study_design": {
+ "title": "Study Design",
"description": "The procedures used to contact participants and gather data.",
"type": "string",
"controlledVocab": "N/A",
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/study_design?version=v1",
+ "usageNotes": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/study_design#/usageNotes"},
+ "icpsrGuidance": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/study_design#/icpsrGuidance"},
"examples": [
"Data on organizational culture in each of the 12 courts (Part 1) were obtained by administering the Court Culture Assessment Instrument (CCAI) to all judges with a felony criminal court docket and to all senior court administrators. A total of 224 respondents completed the questionnaire. The CCAI was used to assess five key dimensions of current court culture orientation: (1) dominant case management style, (2) judicial and court staff relations, (3) change management, (4) courthouse leadership, and (5) internal organization. The determination of what culture judges and court administrators desired to establish in the near future was also obtained through the application of the same instrument (CACI) as practitioners were asked to indicate the type of culture in each work area (or content dimension) they would like to see in their court in the next five years. Additionally, surveys were conducted of prosecuting attorneys (Part 2) and public defender attorneys (Part 3) to gauge their views on how well the courts in which they practice achieve the goals of access, fairness, and managerial effectiveness. Every prosecutor and public defender with two years or more experience in representing the state or criminal defendants in felony cases was asked to complete a questionnaire probing their thoughts on how well their court acted to promote access to records through availability and staff cooperation, treating litigants, witnesses, jurors and others fairly, and demonstrating concern for the rights and interests of others in the criminal trial process, including attorney and victims. A total of 334 prosecuting attorneys and 260 public defense attorneys completed the 46-item trial court process survey."
]
},
"variable_description": {
+ "title": "Variable Description",
"description": "Significant variables (particularly demographic variables) in the data files.",
"type": "string",
"controlledVocab": "N/A",
@@ -586,6 +628,7 @@
]
},
"sampling": {
+ "title": "Sampling",
"description": "The methods used to select the subset of the population that data are to be collected from (e.g., simple, systematic, stratified).",
"type": "string",
"controlledVocab": "N/A",
@@ -611,6 +654,7 @@
]
},
"time_method": {
+ "title": "Time Method",
"description": "The methods used to collect data over time, like snapshots at one point (cross-sectional) or repeatedly (longitudinal) to study changes or trends.",
"type": "array",
"items": {
@@ -629,13 +673,14 @@
"Time Series: Discrete"
]
},
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/time_method?version=v1",
+ "controlledVocab": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/time_method#/controlledVocab"},
"examples": [
["Cross-sectional"],
["Longitudinal: Cohort / Event-based", "Time Series"]
]
},
"data_source": {
+ "title": "Data Source",
"description": "The source of the data, when that source is external to the data collection and can be independently cited.",
"type": "array",
"items": {
@@ -657,6 +702,7 @@
]
},
"collection_mode": {
+ "title": "Collection Mode",
"description": "The method(s) or procedure(s) used to collect the data.",
"type": "array",
"items": {
@@ -684,13 +730,14 @@
"web-based survey"
]
},
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/collection_mode?version=v1",
+ "controlledVocab": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/collection_mode#/controlledVocab"},
"examples": [
["audio computer-assisted self interview (ACASI)"],
["computer-assisted self interview (CASI)", "face-to-face interview"]
]
},
"extent_of_processing": {
+ "title": "Extent of Processing",
"description": "Processing activities and checks performed on the data collection by ICPSR curation staff.",
"icpsrGuidance": "This element is displayed to end-users in version history.",
"type": "array",
@@ -705,7 +752,7 @@
"Standardized missing values"
]
},
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/extent_of_processing?version=v1",
+ "controlledVocab": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/extent_of_processing#/controlledVocab"},
"examples": [
[
"Created variable labels and/or value labels.",
@@ -718,6 +765,7 @@
]
},
"weight": {
+ "title": "Weight",
"description": "The weight variables and the criteria for using them in data analysis or other information about how the data are weighted if no weight variables are present.",
"type": "string",
"controlledVocab": "N/A",
@@ -729,6 +777,7 @@
]
},
"response_rates": {
+ "title": "Response Rates",
"description": "The percentage of respondents in the sample who participated in the data collection.",
"type": "string",
"controlledVocab": "N/A",
@@ -740,16 +789,18 @@
]
},
"scale": {
+ "title": "Scale",
"description": "Any commonly known scales used to collect data for the data collection (e.g., MMPI, CPI, the Census Occupational Codes, etc.).",
"type": "string",
"controlledVocab": "N/A",
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/scale?version=v1",
+ "usageNotes": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/scale#/usageNotes"},
"examples": [
["The baseline data collection included one scale - the CES-D index for maternal depression [Cole, J. C., Rabin, A. S., Smith, T. L., and Kaufman, A. S. (2004). Development and validation of a Rasch-derived CES-D short form. Psychological assessment, 16(4), 360]. All scales used for outcomes at ages 1 through 3 are listed in Appendix Tables 1 and 2 in the User Guide. Please refer to the User Guide and P.I. Codebook, available under the 'Data and Documentation' tab, for details."],
["Squires, J., Bricker, D. D., and Twombly, E. (2009). Ages and stages questionnaires. Baltimore, MD: Paul H. Brookes.", "Briggs-Gowan, M. J., Carter, A. S., Irwin, J. R., Wachtel, K., and Cicchetti, D. V. (2004). The Brief Infant-Toddler Social and Emotional Assessment: screening for social-emotional problems and delays in competence. Journal of pediatric psychology, 29(2), 143-155.", "Yu, L., Buysse, D. J., Germain, A., Moul, D. E., Stover, A., Dodds, N. E., ... and Pilkonis, P. A. (2012). Development of short forms from the PROMIS sleep disturbance and sleep-related impairment item banks. Behavioral sleep medicine, 10(1), 6-24."]
]
},
"unit_of_observation": {
+ "title": "Unit of Observation",
"description": "The object(s) of analysis for the data collection, such as an organization, individual, or household.",
"type": "array",
"controlledVocab": "N/A",
@@ -764,10 +815,12 @@
]
},
"smallest_geographic_unit": {
+ "title": "Smallest Geographic Unit",
"description": "The smallest geographic unit (e.g., state or census tract) used in the dataset.",
"type": "string",
"controlledVocab": "N/A",
- "$ref": "https://schemas.icpsr.umich.edu/schema/yaml/smallest_geographic_unit?version=v1",
+ "usageNotes": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/smallest_geographic_unit#/usageNotes"},
+ "icpsrGuidance": {"$ref": "https://schemas.icpsr.umich.edu/schema/notes/smallest_geographic_unit#/icpsrGuidance"},
"examples": [
"state",
"Census tract",
@@ -775,6 +828,7 @@
]
},
"restrictions": {
+ "title": "Restrictions",
"description": "Rules about how the data collection can be accessed or used.",
"type": "string",
"controlledVocab": "N/A",
@@ -784,6 +838,7 @@
]
},
"membership_required": {
+ "title": "Membership Required",
"description": "The availability of the data collection in terms of ICPSR membership. Members-only data may only be downloaded by affiliates of ICPSR member institutions who contribute funding to support the data.",
"type": "boolean",
"controlledVocab": "N/A",
@@ -791,6 +846,7 @@
"examples": ["True", "False"]
},
"restricted_access": {
+ "title": "Restricted Access",
"description": "General indication of any access restrictions associated with the data collection. More detailed information is provided in the Restrictions element.",
"type": "boolean",
"controlledVocab": "N/A",
@@ -798,6 +854,7 @@
"examples": ["True", "False"]
},
"changes_to_collection": {
+ "title": "Changes to Collection",
"description": "A record of how the data collection has changed over time.",
"type": "array",
"controlledVocab": "N/A",
@@ -805,12 +862,14 @@
"type": "object",
"properties": {
"date": {
+ "title": "Date",
"description": "The date on which an update occurred. ICPSR automatically generates this date.",
"type": "string",
"format": "date",
"examples": [ "2006-03-30", "2019-05-05" ]
},
"note": {
+ "title": "Note",
"description": "An explanation of the nature of the update.",
"type": "string",
"examples": [
@@ -838,6 +897,7 @@
]
},
"series": {
+ "title": "Series",
"description": "A named collection of related studies.",
"type": "string",
"controlledVocab": "[ICPSR Series](https://www.icpsr.umich.edu/web/ICPSR/search/series)",
@@ -850,6 +910,7 @@
]
},
"classification": {
+ "title": "Classification",
"description": "Topics used to organize data collections and help users explore the ICPSR catalog.",
"type": "array",
"items": {
@@ -863,6 +924,7 @@
]
},
"filesets": {
+ "title": "Filesets",
"description": "The grouping of files in the data collection.",
"type": "array",
"controlledVocab": "N/A",
@@ -870,12 +932,14 @@
"type": "object",
"properties": {
"number": {
+ "title": "Number",
"description": "A number that uniquely identifies a 'part' or component file that is associated with the data collection.",
"type": "integer",
"usageNotes": "Fileset numbers are typically (but not always) consecutive integers beginning with 1. (In some cases, the number may be drawn from an external resource, such as FIPS state and county codes.) The numbers correspond to the 'part numbers' embedded in ICPSR standard filenames.",
"examples": [1, 2, 3]
},
"name": {
+ "title": "Name",
"description": "A brief title used to distinguish each fileset within a data collection.",
"type": "string",
"controlledVocab": "N/A",
@@ -888,6 +952,7 @@
]
},
"sda_note": {
+ "title": "SDA Note",
"description": "Additional information about the fileset for the purpose of helping online analysis users.",
"type": "string",
"controlledVocab": "N/A",
@@ -932,4 +997,4 @@
]
}
}
-}
+}
\ No newline at end of file
diff --git a/schema/yaml/citation.yaml b/schema/notes/citation.yaml
similarity index 87%
rename from schema/yaml/citation.yaml
rename to schema/notes/citation.yaml
index 8006e43..3829130 100644
--- a/schema/yaml/citation.yaml
+++ b/schema/notes/citation.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/citation?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/citation?version=v1
usageNotes: |
The Citation is dynamically assembled from other entry elements in this format: Principal-Investigator-list. Study-Title. Distributor-list, Version-Date. DOI. ICPSR 'union catalog' records – i.e., external resource to which ICPSR links as a courtesy – do not have citations generated.
diff --git a/schema/yaml/collection_date_time_frame.yaml b/schema/notes/collection_date_time_frame.yaml
similarity index 87%
rename from schema/yaml/collection_date_time_frame.yaml
rename to schema/notes/collection_date_time_frame.yaml
index b69021a..7166226 100644
--- a/schema/yaml/collection_date_time_frame.yaml
+++ b/schema/notes/collection_date_time_frame.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/collection_date_time_frame?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/collection_date_time_frame?version=v1
usageNotes: |
The textual description ('time frame') is used to add context to the Collection Date when multiple time periods exist (e.g., to describe different study waves, dataset names, or fiscal year designation) and/or when the date cannot be expressed exclusively through numbers, such as seasons or other units of time where the data producer did not clarify the exact dates they meant.
diff --git a/schema/yaml/collection_mode.yaml b/schema/notes/collection_mode.yaml
similarity index 98%
rename from schema/yaml/collection_mode.yaml
rename to schema/notes/collection_mode.yaml
index 3abd996..ebf11c9 100644
--- a/schema/yaml/collection_mode.yaml
+++ b/schema/notes/collection_mode.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/collection_mode?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/collection_mode?version=v1
controlledVocab: |
Local ICPSR controlled vocabulary. See below for terms and definitions:
diff --git a/schema/yaml/data_type.yaml b/schema/notes/data_type.yaml
similarity index 96%
rename from schema/yaml/data_type.yaml
rename to schema/notes/data_type.yaml
index 7fcfb27..de8fa0b 100644
--- a/schema/yaml/data_type.yaml
+++ b/schema/notes/data_type.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/data_type?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/data_type?version=v1
controlledVocab: |
Local ICPSR controlled vocabulary. See below for terms and definitions:
diff --git a/schema/yaml/distributor.yaml b/schema/notes/distributor.yaml
similarity index 85%
rename from schema/yaml/distributor.yaml
rename to schema/notes/distributor.yaml
index 2ca7daf..4e992b9 100644
--- a/schema/yaml/distributor.yaml
+++ b/schema/notes/distributor.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/distributor?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/distributor?version=v1
icpsrGuidance: |
Most data collections list ICPSR as the distributor. As such, the full name and location of ICPSR are easily accessible in the metadata editor.
diff --git a/schema/yaml/extent_of_processing.yaml b/schema/notes/extent_of_processing.yaml
similarity index 97%
rename from schema/yaml/extent_of_processing.yaml
rename to schema/notes/extent_of_processing.yaml
index 444b596..ef30e23 100644
--- a/schema/yaml/extent_of_processing.yaml
+++ b/schema/notes/extent_of_processing.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/extent_of_processing?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/extent_of_processing?version=v1
controlledVocab: |
Local ICPSR controlled vocabulary. See below for terms and definitions:
diff --git a/schema/yaml/funding_agency.yaml b/schema/notes/funding_agency.yaml
similarity index 91%
rename from schema/yaml/funding_agency.yaml
rename to schema/notes/funding_agency.yaml
index 42f0c6b..e7d7e8d 100644
--- a/schema/yaml/funding_agency.yaml
+++ b/schema/notes/funding_agency.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/funding_agency?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/funding_agency?version=v1
usageNotes: |
When entering the name of a funding agency, the following hierarchy of authority control sources should be used to make sure the name conforms to best practices within ICPSR and the broader academic community:
diff --git a/schema/yaml/funding_purpose.yaml b/schema/notes/funding_purpose.yaml
similarity index 86%
rename from schema/yaml/funding_purpose.yaml
rename to schema/notes/funding_purpose.yaml
index f329742..5cee239 100644
--- a/schema/yaml/funding_purpose.yaml
+++ b/schema/notes/funding_purpose.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/funding_purpose?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/funding_purpose?version=v1
controlledVocab: |
Local ICPSR controlled vocabulary. See below for terms and definitions:
diff --git a/schema/yaml/geographic_coverage_area.yaml b/schema/notes/geographic_coverage_area.yaml
similarity index 91%
rename from schema/yaml/geographic_coverage_area.yaml
rename to schema/notes/geographic_coverage_area.yaml
index e1febe0..b2988ac 100644
--- a/schema/yaml/geographic_coverage_area.yaml
+++ b/schema/notes/geographic_coverage_area.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/geographic_coverage_area?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/geographic_coverage_area?version=v1
usageNotes: |
Each geographic term's full hierarchy must be included; please note:
diff --git a/schema/yaml/pi_names.yaml b/schema/notes/pi_names.yaml
similarity index 97%
rename from schema/yaml/pi_names.yaml
rename to schema/notes/pi_names.yaml
index 5fb6e95..19b4de3 100644
--- a/schema/yaml/pi_names.yaml
+++ b/schema/notes/pi_names.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/pi_names?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/pi_names?version=v1
usageNotes: |+
List individuals and organizations that are chiefly responsible for the study across its entire life cycle or made significant intellectual contributions to the research. A principal investigator (PI) may be a person or an organization; use the Person or Organization element as appropriate. If the PI is identified as a person, their affiliated organization (if applicable) should be included in the Organization element.
diff --git a/schema/yaml/scale.yaml b/schema/notes/scale.yaml
similarity index 91%
rename from schema/yaml/scale.yaml
rename to schema/notes/scale.yaml
index f490890..1f348fe 100644
--- a/schema/yaml/scale.yaml
+++ b/schema/notes/scale.yaml
@@ -1,5 +1,5 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/scale?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/scale?version=v1
usageNotes: |
Include common scales that can be readily identified from the data, documentation, or other related materials. ICPSR curators are not expected to infer or research scales that are not explicitly indicated. The scales can be cited either as a list or described in full sentences. If the questionnaire used has a finite list of responses (e.g., 'Always, Sometimes, Rarely, Never' or Strongly Agree, Agree, Disagree, Strongly Disagree'), it is acceptable for this element to note 'A Likert-type scale was used,' or 'Several Likert-type scales were used.' However, it is not required to note Likart-type scales in situations where only such scales were used, given their ubiquity.
diff --git a/schema/yaml/smallest_geographic_unit.yaml b/schema/notes/smallest_geographic_unit.yaml
similarity index 92%
rename from schema/yaml/smallest_geographic_unit.yaml
rename to schema/notes/smallest_geographic_unit.yaml
index 099b3c3..3995f0e 100644
--- a/schema/yaml/smallest_geographic_unit.yaml
+++ b/schema/notes/smallest_geographic_unit.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/smallest_geographic_unit?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/smallest_geographic_unit?version=v1
usageNotes: |
Geographic Unit is intended to represent specific, known geography -- e.g., county, census district, FIPS code, electoral district, and any other conveyor of specific geography that is represented by a variable.
diff --git a/schema/yaml/study_design.yaml b/schema/notes/study_design.yaml
similarity index 89%
rename from schema/yaml/study_design.yaml
rename to schema/notes/study_design.yaml
index a5bd239..79aa7d7 100644
--- a/schema/yaml/study_design.yaml
+++ b/schema/notes/study_design.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/study_design?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/study_design?version=v1
usageNotes: |
The Study Design provides more detailed information than the Summary, including how surveys were prepared and administered, how interviews were conducted, or how the data were obtained and compiled, as well as information about deadlines and follow-ups to respondents.
icpsrGuidance: |
diff --git a/schema/yaml/summary.yaml b/schema/notes/summary.yaml
similarity index 95%
rename from schema/yaml/summary.yaml
rename to schema/notes/summary.yaml
index 8200296..7ec58cd 100644
--- a/schema/yaml/summary.yaml
+++ b/schema/notes/summary.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/summary?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/summary?version=v1
usageNotes: |
The main goal of the Summary is to give the reader a clear sense of what the data collection is about, including substantive information about the different parts of the data collection not adequately conveyed by the Fileset names or found elsewhere in the metadata.
diff --git a/schema/yaml/time_method.yaml b/schema/notes/time_method.yaml
similarity index 97%
rename from schema/yaml/time_method.yaml
rename to schema/notes/time_method.yaml
index 2cca6c1..7d222ed 100644
--- a/schema/yaml/time_method.yaml
+++ b/schema/notes/time_method.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/time_method?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/time_method?version=v1
controlledVocab: |
[DDI Controlled Vocabulary for Time Method](https://vocabularies.cessda.eu/vocabulary/TimeMethod). See below for terms and definitions:
diff --git a/schema/yaml/time_period_date.yaml b/schema/notes/time_period_date.yaml
similarity index 89%
rename from schema/yaml/time_period_date.yaml
rename to schema/notes/time_period_date.yaml
index 64f500f..749f198 100644
--- a/schema/yaml/time_period_date.yaml
+++ b/schema/notes/time_period_date.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/time_period_date?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/time_period_date?version=v1
usageNotes: |
Time Periods focus on the dates the data are actually about, regardless of when the data were collected.
diff --git a/schema/yaml/time_period_time_frame.yaml b/schema/notes/time_period_time_frame.yaml
similarity index 87%
rename from schema/yaml/time_period_time_frame.yaml
rename to schema/notes/time_period_time_frame.yaml
index 920186c..324948d 100644
--- a/schema/yaml/time_period_time_frame.yaml
+++ b/schema/notes/time_period_time_frame.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/time_period_time_frame?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/time_period_time_frame?version=v1
usageNotes: |
The textual description ('time frame') is used to add context to the Time Period when multiple time periods exist (e.g., to describe different waves, dataset names, or fiscal year designation) and/or when the date cannot be expressed exclusively through numbers, such as seasons or other units of time where the data producer did not clarify the exact dates they meant.
diff --git a/schema/yaml/title.yaml b/schema/notes/title.yaml
similarity index 97%
rename from schema/yaml/title.yaml
rename to schema/notes/title.yaml
index 4939296..6a42d3f 100644
--- a/schema/yaml/title.yaml
+++ b/schema/notes/title.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/title?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/title?version=v1
usageNotes: |
The Title includes three essential parts: the title proper, the geography, and the time period.
diff --git a/schema/yaml/version.yaml b/schema/notes/version.yaml
similarity index 91%
rename from schema/yaml/version.yaml
rename to schema/notes/version.yaml
index dc9f834..f0905db 100644
--- a/schema/yaml/version.yaml
+++ b/schema/notes/version.yaml
@@ -1,6 +1,6 @@
---
$schema: https://json-schema.org/draft-07/schema#
- $id: https://schemas.icpsr.umich.edu/schema/yaml/version?version=v1
+ $id: https://schemas.icpsr.umich.edu/schema/notes/version?version=v1
usageNotes: |
Version numbers are integers without leading zeros. Versioning begins when a data collection is first archived. Each subsequent update of the data collection increments the version number by 1. The version number is incremented when modifying or adding:
From c7621cd41491d9b1e57a10e8a8b9f34a704784d4 Mon Sep 17 00:00:00 2001
From: Mike Shallcross
Date: Fri, 13 Mar 2026 16:25:03 -0400
Subject: [PATCH 012/119] updates for mkdocs
---
markdown/assets/a11y-nav.js | 23 ++++++++++++
markdown/request_change.md | 2 +-
...own_generation.py => generate_markdown.py} | 36 ++++++++++++++-----
resources/custom_theme/base.html | 6 +++-
resources/custom_theme/footer.html | 6 ++--
resources/mkdocs.yml | 13 +++++--
resources/readthedocs_theme_extra.css | 5 +++
schema/icpsr_legacy_schema.json | 2 +-
schema/notes/title.yaml | 2 +-
9 files changed, 76 insertions(+), 19 deletions(-)
create mode 100644 markdown/assets/a11y-nav.js
rename rde_schema/{rde_markdown_generation.py => generate_markdown.py} (90%)
diff --git a/markdown/assets/a11y-nav.js b/markdown/assets/a11y-nav.js
new file mode 100644
index 0000000..a9ee9a1
--- /dev/null
+++ b/markdown/assets/a11y-nav.js
@@ -0,0 +1,23 @@
+document.addEventListener("DOMContentLoaded", function () {
+
+ // Find sidebar navigation
+ const menuItems = document.querySelectorAll(".wy-menu-vertical li");
+
+ menuItems.forEach(item => {
+ const link = item.querySelector("a");
+ const submenu = item.querySelector("ul");
+
+ if (link && submenu) {
+
+ // Initial state
+ link.setAttribute("aria-expanded", item.classList.contains("current") ? "true" : "false");
+
+ link.addEventListener("click", function () {
+ const expanded = link.getAttribute("aria-expanded") === "true";
+ link.setAttribute("aria-expanded", expanded ? "false" : "true");
+ });
+
+ }
+ });
+
+});
\ No newline at end of file
diff --git a/markdown/request_change.md b/markdown/request_change.md
index f2311b5..a5babc2 100644
--- a/markdown/request_change.md
+++ b/markdown/request_change.md
@@ -2,7 +2,7 @@
Modifications of ICPSR's metadata follow a four-step governance process:
-
+
1. **Evaluate**: Using this documentation portal, an ICPSR team member evaluates the existing metadata properties to determine if the existing schema will meet their project needs.
diff --git a/rde_schema/rde_markdown_generation.py b/rde_schema/generate_markdown.py
similarity index 90%
rename from rde_schema/rde_markdown_generation.py
rename to rde_schema/generate_markdown.py
index ba379b6..51db7b3 100644
--- a/rde_schema/rde_markdown_generation.py
+++ b/rde_schema/generate_markdown.py
@@ -2,6 +2,7 @@
from pathlib import Path
from datetime import datetime
import yaml
+import sys
class QuoteDumper(yaml.SafeDumper):
pass
@@ -11,9 +12,9 @@ def quoted_str_representer(dumper, data):
QuoteDumper.add_representer(str, quoted_str_representer)
-ROOT = Path("C:/icpsr_github/metadata/rde_schema")
-PROPERTY_DIR = ROOT / "property_bank"
-OUTPUT_FILE = ROOT / "icpsr_rde_schema.md"
+ROOT = Path("C:/icpsr_github/metadata/schema")
+PROPERTY_DIR = ROOT
+OUTPUT_FILE = ROOT / "icpsr_legacy_schema-TEST.md"
# ----------------------------
# Configuration
@@ -182,11 +183,20 @@ def ref_to_link(ref):
def load_schemas():
schemas = {}
- for f in PROPERTY_DIR.glob("*.json"):
- if f.name in skip_files:
- continue
+ file_list = PROPERTY_DIR.glob("*.json")
+
+ if len(file_list) == 1:
+ f = Path(file_list[0])
data = json.loads(f.read_text(encoding="utf-8"))
- schemas[f.stem] = data
+ schemas = data['properties']
+
+ elif len(file_list) > 1:
+ for f in PROPERTY_DIR.glob("*.json"):
+ if f.name in skip_files:
+ continue
+ data = json.loads(f.read_text(encoding="utf-8"))
+ schemas[f.stem] = data
+
return schemas
# ----------------------------
@@ -243,7 +253,11 @@ def render_subfields(properties, required, parent_anchor, level=4):
# Table rows
for name, prop in properties.items():
- title = prop.get("title", name.replace("_", " ").title())
+ try:
+ title = prop.get("title", name.replace("_", " ").title())
+ except AttributeError:
+ print(name, prop)
+ sys.exit(1)
desc = prop.get("description", "")
if "$ref" in prop and ("property_banks/person/" in prop["$ref"] or "property_banks/organization/" in prop["$ref"]):
ref_title, desc = ref_to_link(prop["$ref"])
@@ -364,7 +378,11 @@ def main():
toc = []
for name, schema in sorted(schemas.items()):
- md, entry = render_property(name, schema)
+ try:
+ md, entry = render_property(name, schema)
+ except TypeError:
+ print(name)
+ sys.exit(1)
sections.extend(md)
sections.append("\n---\n")
toc.append(entry)
diff --git a/resources/custom_theme/base.html b/resources/custom_theme/base.html
index 0b30a97..6a27ea8 100644
--- a/resources/custom_theme/base.html
+++ b/resources/custom_theme/base.html
@@ -93,7 +93,7 @@
{{ config.site_name }}
{%- endif %}
{%- if config.theme.logo %}
-
+
{{ config.site_name }}
{%- endif %}
@@ -173,6 +173,10 @@
+
+
+
+