{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "IDERHA JSON Schema",
  "description": "IDERHA JSON metadata specification",
  "type": "object",
  "properties": {
    "Dataset": {
      "type": "object",
      "properties": {
        "identifier": {
          "type": "string",
          "propertyIRI": "dct:identifier",
          "rangeIRI": "Literal",
          "description": "The main identifier for the Dataset, e.g. the URI or other unique identifier in the context of the Catalogue. For Health DCAT Application Profile the identifier is mandatory and its value must be unique from the origin database of the Dataset. In the process of dataset transmition to the next database, the 'identifier' property is overwriten by the new database identifier, and the original identifier becomes the value of the 'other identifier' property."
        },
        "title": {
          "type": "string",
          "propertyIRI": "dct:title",
          "rangeIRI": "Literal",
          "description": "A name given to the Dataset. Provide a title(s) for your Dataset, which can be repeated in multiple languages. Example: Healthy Brain Study - Physiological Data"
        },
        "description": {
          "type": "string",
          "propertyIRI": "dct:description",
          "rangeIRI": "Literal",
          "description": "A free-text information about the Dataset. Brief description of the dataset. This property can be repeated for including several language versions of the description."
        },
        "keyword": {
          "type": "string",
          "propertyIRI": "dcat:keyword",
          "rangeIRI": "Literal",
          "description": "A keyword or tag describing the Dataset. Add keywords to increase dataset discoverability. You can include keywords in different languages, submitting each keyword as a separate entry. Example: Physiological measures, Heart Rate, Stress Measures."
        },
        "alternative_acronym": {
          "type": "string",
          "propertyIRI": "dct:alternative",
          "rangeIRI": "Literal",
          "description": "An alternative name for the Dataset. This property contains an alternative name for the Dataset. This property can be repeated for parallel language versions of the alternative name."
        },
        "type": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "dct:type",
          "rangeIRI": "Concept",
          "description": "A type of the Dataset. A recommended controlled vocabulary data-type is foreseen. This list supports dataset categorization for the EU Open Data Portal. Currently, 'PERSONAL_DATA' is not adapted to this EU vocabulary and cannot be filled out.",
          "vocabulary": "https://publications.europa.eu/resource/authority/dataset-type"
        },
        "theme": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "dcat:theme",
          "rangeIRI": "Concept",
          "description": "Information that indicates whether the Dataset is publicly accessible, has access restrictions or is not public. A category of the Dataset. This property should use a controlled vocabulary. In the Health Data Catalogue, all datasets will use the theme 'HEAL' (http://publications.europa.eu/resource/authority/data-theme/HEAL), but additional values from the same vocabulary are allowed.",
          "vocabulary": "http://publications.europa.eu/resource/authority/data-theme"
        },
        "access_rights": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "dct:accessRights",
          "rangeIRI": "Rights statement",
          "description": "This property allows you to indicate whether the dataset is publicly accessible, has restrictions, or is not publicly available. This is a mandatory property in HealthDCAT-AP. Use one of the following values :public, :restricted, :non-public, which means:\nNON_PUBLIC \u2014 The dataset is not publicly available and access is subject to restrictions.\nPUBLIC \u2014 The dataset is openly accessible to everyone.\nRESTRICTED \u2014 The dataset has access restrictions but may be available under specific conditions.",
          "vocabulary": "http://publications.europa.eu/resource/authority/access-right"
        },
        "modification_date": {
          "type": "string",
          "propertyIRI": "dct:modified",
          "rangeIRI": "Temporal Literal",
          "description": "The most recent date on which the Dataset was changed or modified. The values must be data typed as either xsd:date, xsd:dateTime, xsd:gYear or xsd:gYearMonth."
        },
        "sample": {
          "$ref": "#/$defs/Distribution",
          "propertyIRI": "adms:sample",
          "rangeIRI": "Distribution",
          "description": "A sample distribution of the dataset. This property makes use of the dcat:Distribution class to describe a sample distribution of the dataset, which can be anonymized or synthetic data, or the data dictionary provided in CSVW format."
        },
        "purpose": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "dpv:hasPurpose",
          "rangeIRI": "Purpose",
          "description": "A free text statement of the purpose of the processing of data or personal data. One or many categories or sub-categories of the purposes can be chosen from the taxonomy provided by dpv https://w3c.github.io/dpv/2.1/dpv/#vocab-purposes. Example value could be: dpv:ResearchAndDevelopment. Or simply use free text description with source url on dpv:Purpose."
        },

        "publisher": {
          "$ref": "#/$defs/Agent",
          "propertyIRI": "dct:publisher",
          "rangeIRI": "Agent",
          "description": "This property allows you to specify the organisation responsible for making the dataset available. The publisher is typically the data holder - the entity accountable for ensuring the dataset can be accessed and used. Provide the name of the organisation that manages and maintains access to the dataset."
        },
        "provenance": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "dct:provenance",
          "rangeIRI": "Provenance Statement",
          "description": "Information about how the data was collected, including methodologies, tools, and protocols used. The provenance or business context of a dataset can be described using elements from the W3C Provenance Ontology [PROV-O], ex: https://www.w3.org/TR/vocab-dcat-3/#ex-dataset-project More basic representation is to describe the label of the ProvenanceStatement in free text"
        },
        "health_theme": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "healthdcatap:healththeme",
          "rangeIRI": "Concept",
          "description": "A category of the Dataset or tag describing the Dataset.A Dataset may be associated with multiple health themes.",
          "vocabulary": "http://13.81.34.152:1101/resource/authority/health-theme"
        },
        "health_data_access_body": {
          "$ref": "#/$defs/Agent",
          "propertyIRI": "healthdcatap:hdab",
          "rangeIRI": "Agent",
          "description": "Health Data Access Body supporting access to data in the Member State. Member state-designated authority that facilitates the secondary use of electronic health data. HDABs assess the information provided by the health data applicant and decide on health data requests and access applications, authorise and issue data permits, obtain data from data holders and make data available in Secure Processing Environments. HDABs systematically track the data request and data access applications received and the data permits issued. As per Article 58 of the EHDS, HDABs are required to publicly list information on the data permits issued. (Article 55; Recital 52 of EHDS Regulation)."
        },
        "health_category": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "healthdcatap:healthCategory",
          "rangeIRI": "Concept",
          "description": "The health category to which this dataset belongs as described in the Commission Regulation on the European Health Data Space laying down a list of categories of electronic data for secondary use, Art.51.This property indicates the EHDS data category the dataset belongs to, based on Article 51 (https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=OJ:L_202500327#ntr35-L_202500327EN.000101-E0035 ) of the EHDS Regulation. Use the controlled vocabulary http://13.81.34.152:1101/resource/authority/healthcategories/ to ensure standardised classification across all datasets",
          "vocabulary": "http://13.81.34.152:1101/resource/authority/healthcategories"
        },
        "geographical_coverage": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "dct:spatial",
          "rangeIRI": "Location",
          "description": "A geographic region that is covered by the Dataset. The EU Vocabularies Name Authority Lists must be used for continents, countries and places that are in those lists; if a particular location is not in one of the mentioned Named Authority Lists, Geonames URIs must be used.",
          "vocabulary": "http://publications.europa.eu/resource/authority/country"
        },
        "distribution": {
          "$ref": "#/$defs/Distribution",
          "propertyIRI": "dcat:distribution",
          "rangeIRI": "Distribution",
          "description": "An available Distribution for the Dataset.\nFor Health DCAT Application Profile a distribution is mandatory independently of the access rights. A distribution must include information on the Health Data Access Body supporting data access."
        },
        "contact_point": {
          "$ref": "#/$defs/Kind",
          "propertyIRI": "dcat:contactPoint",
          "rangeIRI": "Kind",
          "description": "Contact information that can be used for sending comments about the Dataset. This property informs about a contact point (Individual, Organization, Location, Group) that can answer questions about the dataset. Details on how to describe these are provided under class vcard:Kind."
        },
        "applicable_legislation": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "dcatap:applicableLegislation",
          "rangeIRI": "Legal Resource",
          "description": "The legislation that mandates the creation or management of the Dataset.The ELI of the EHDS was published in March 2025 and can now be included as the applicable legislation, the value must include the ELI of the EHDS Regulation (http://data.europa.eu/eli/reg/2025/327/oj). As multiple legislations may apply to the resource the maximum cardinality is not limited."
        },
        "language": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "dct:language",
          "rangeIRI": "Linguistic system",
          "description": "A language of the Dataset.",
          "vocabulary": "http://publications.europa.eu/resource/authority/language"
        },
        "temporal": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "dct:temporal",
          "rangeIRI": "Period of time",
          "description": "A temporal period that the Dataset covers."
        },
        "population_coverage": {
          "type": "string",
          "propertyIRI": "healthdcatap:populationcoverage",
          "rangeIRI": "Literal",
          "description": "A definition of the population within the dataset"
        },
        "rights": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "dct:rights",
          "rangeIRI": "dcat:Catalog",
          "description": "A statement that specifies rights associated with the Catalogue."
        },

        "hasPersonal_data": {
          "type": "string",
          "propertyIRI": "dpv:hasPersonalData",
          "rangeIRI": "Literal",
          "description": "Indicates association with Personal Data aslo indicate here wether the data is dpv:PseudonymisedData"
        },
        "hasLegalBasis": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "dpv:hasLegalBasis",
          "rangeIRI": "Legal Basis",
          "description": "The legal basis used to justify processing of personal data",
          "vocabulary": "https://w3id.org/dpv/dpv-gdpr"
        },
        "version": {
          "type": "string",
          "propertyIRI": "dcat:version",
          "rangeIRI": "Literal",
          "description": "The version indicator (name or identifier) of a resource."
        },

         "hasDataSubject": {
          "type": "string",
          "propertyIRI": "dpv:hasDataSubject",
          "rangeIRI": "Literal",
          "description": "ex:MedicalTrial a dpv:Process ;\n\u00a0\u00a0\u00a0\u00a0dpv:hasHumanSubject [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0a dpv:HumanSubject ;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0skos:broader dpv:Participant, dpv:VulnerableHuman ;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0dct:description \"Participating subjects who have condition X\"@en ;\n\u00a0\u00a0\u00a0\u00a0] .",
          "vocabulary": "https://w3c.github.io/dpv/2.1/dpv/#vocab-entities-datasubject"
        },

        "Scope": {
          "type": "string",
          "propertyIRI": "dpv:Processing",
          "rangeIRI": "Literal",
          "description": "dpv:hasProcessingCondition [\n        a dpv:ProcessingLocation ;\n        dpv:hasLocation loc:IE, loc:NL  ] ."
        },
        "spatial": {
          "type": "string",
          "propertyIRI": "dct:Location",
          "rangeIRI": "Literal",
          "description": "Conditions regarding location or geospatial scope where processing takes places, Indicates information about location,",
          "vocabulary": "http://publications.europa.eu/resource/authority/country"
        },
        "numberOfRecords": {
          "type": "integer",
          "propertyIRI": "healthdcatap:numberOfRecords",
          "rangeIRI": "Integer",
          "description": "Size of the dataset in terms of the number of records. Use this property to indicate the total number of records in the dataset, giving users an idea of the dataset's size and whether it suits their analysis or research needs. You can provide the exact count or an approximate average if the exact figure is unavailable. It reflects the total data entries (e.g., consultations, prescriptions, lab results, hospital admissions) according to the dataset's content."
        },
        "numberOfUniqueIndividuals": {
          "type": "integer",
          "propertyIRI": "healthdcatap:numberOfUniqueIndividuals",
          "rangeIRI": "Integer",
          "description": "Number of records for unique individuals. Use this property to indicate the number of unique individuals represented in the dataset. It helps users understand the dataset's scale and assess whether it meets their needs for secondary use. Provide the total or an approximate count of distinct individuals whose data is included. If the exact number is unknown, a well-founded estimate is still valuable (e.g., \"Approximately 10,000 unique patients over 3 years\")."
        },
        "minTypicalAge": {
          "type": "integer",
          "propertyIRI": "healthdcatap:minTypicalAge",
          "rangeIRI": "Integer",
          "description": "The minimum age of subjects within the dataset."
        },
        "maxTypicalAge": {
          "type": "integer",
          "propertyIRI": "healthdcatap:maxTypicalAge",
          "rangeIRI": "Integer",
          "description": "The maximum age of subjects within the dataset."
        },
        "age_median": {
          "type": "integer",
          "propertyIRI": "IDERHA:age_median",
          "rangeIRI": "Integer",
          "description": "The median age of subjects within the dataset."
        },
        "birthsex": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "skos:Concept",
          "rangeIRI": "Concept",
          "description": "BirthSex of subjects in the dataset",
          "vocabulary": "https://hyperontology.eucaim.cancerimage.eu/#COM1001396"
        },
        "number_of_studies": {
          "type": "integer",
          "propertyIRI": "IDERHA:number_of_studies",
          "rangeIRI": "Integer",
          "description": "Total count of DICOM studies"
        },
        "number_of_series": {
          "type": "integer",
          "propertyIRI": "IDERHA:number_of_series",
          "rangeIRI": "Integer",
          "description": "Total count of DICOM series"
        },
        "condition": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "IDERHA:condition",
          "rangeIRI": "Concept",
          "description": "The primary cancer condition of individuals in the dataset.",
          "vocabulary": "https://hyperontology.eucaim.cancerimage.eu/#CLIN1007988"
        },
        "image_modality": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "IDERHA:image_modality",
          "rangeIRI": "Concept",
          "description": "The set of modalities for the images in the dataset.",
          "vocabulary": "https://cancerimage.eu /ontology/EUCAIM#IMG 1000022>"
        },
        "image_vendor": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "IDERHA:image_vendor",
          "rangeIRI": "Concept",
          "description": "Manufacturer of the imaging device as it is defined in DICOM tag (0008,0070).",
          "vocabulary": "https://cancerimage.eu/ontology/EUCAIM#IMG1000010"
        },
        "Number_of_persons": {
          "type": "integer",
          "propertyIRI": "IDERHA:Number_of_persons",
          "description": "Count distinct PERSON_ID in PERSON.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "Number_of_persons_by_gender": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_persons_by_gender",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count distinct PERSON_ID grouped by GENDER_CONCEPT_ID (standard)."
        },
        "Number_of_persons_by_year_of_birth": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_persons_by_year_of_birth",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count distinct PERSON_ID grouped by YEAR_OF_BIRTH."
        },
        "Number_of_persons_by_race": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_persons_by_race",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count distinct PERSON_ID grouped by RACE_CONCEPT_ID (standard)."
        },
        "Number_of_persons_by_ethnicity": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_persons_by_ethnicity",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count distinct PERSON_ID grouped by ETHNICITY_CONCEPT_ID (standard)."
        },
        "Number_of_persons_by_observation_period_start_month": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_persons_by_observation_period_start_month",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Group OBSERVATION_PERIOD_START_DATE by calendar month and count distinct PERSON_ID."
        },
        "Number_of_persons_by_number_of_observation_periods": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_persons_by_number_of_observation_periods",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count persons grouped by the number of OBSERVATION_PERIODs they have."
        },
        "Number_of_persons_with_at_least_one_visit_occurrence_by_VISIT_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_persons_with_at_least_one_visit_occurrence_by_VISIT_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count distinct PERSON_ID grouped by VISIT_CONCEPT_ID with at least one VISIT_OCCURRENCE."
        },
        "Number_of_persons_with_at_least_one_concept_id_by_MEASUREMENT_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_persons_with_at_least_one_concept_id_by_MEASUREMENT_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count distinct PERSON_ID grouped by MEASUREMENT_CONCEPT_ID with at least one MEASUREMENT."
        },
        "Number_of_MEASUREMENT_records_by_MEASUREMENT_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_MEASUREMENT_records_by_MEASUREMENT_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count rows grouped by MEASUREMENT_CONCEPT_ID."
        },
        "Number_of_MEASUREMENT_records_by_MEASUREMENT_SOURCE_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_MEASUREMENT_records_by_MEASUREMENT_SOURCE_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count rows grouped by MEASUREMENT_SOURCE_CONCEPT_ID."
        },
        "Number_of_MEASUREMENT_records_with_no_value": {
          "type": "integer",
          "propertyIRI": "IDERHA:Number_of_MEASUREMENT_records_with_no_value",
          "description": "Count MEASUREMENT rows where VALUE_AS_NUMBER, VALUE_AS_CONCEPT_ID, and VALUE_SOURCE_VALUE are all NULL.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "Number_of_persons_with_at_least_one_concept_id_by_CONDITION_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_persons_with_at_least_one_concept_id_by_CONDITION_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count distinct PERSON_ID grouped by CONDITION_CONCEPT_ID with at least one CONDITION_OCCURRENCE."
        },
        "Number_of_CONDITION_OCCURRENCE_records_by_CONDITION_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_CONDITION_OCCURRENCE_records_by_CONDITION_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count rows grouped by CONDITION_CONCEPT_ID."
        },
        "Number_of_CONDITION_OCCURRENCE_records_by_CONDITION_SOURCE_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_CONDITION_OCCURRENCE_records_by_CONDITION_SOURCE_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count rows grouped by CONDITION_SOURCE_CONCEPT_ID."
        },
        "Number_of_persons_with_at_least_one_concept_id_by_PROCEDURE_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_persons_with_at_least_one_concept_id_by_PROCEDURE_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count distinct PERSON_ID grouped by PROCEDURE_CONCEPT_ID with at least one PROCEDURE_OCCURRENCE."
        },
        "Number_of_PROCEDURE_OCCURRENCE_records_by_PROCEDURE_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_PROCEDURE_OCCURRENCE_records_by_PROCEDURE_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count rows grouped by PROCEDURE_CONCEPT_ID."
        },
        "Number_of_PROCEDURE_OCCURRENCE_records_by_PROCEDURE_SOURCE_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_PROCEDURE_OCCURRENCE_records_by_PROCEDURE_SOURCE_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count rows grouped by PROCEDURE_SOURCE_CONCEPT_ID."
        },
        "Number_of_persons_with_at_least_one_concept_id_by_DRUG_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_persons_with_at_least_one_concept_id_by_DRUG_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count distinct PERSON_ID grouped by DRUG_CONCEPT_ID with at least one DRUG_EXPOSURE."
        },
        "Number_of_DRUG_EXPOSURE_records_by_DRUG_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_DRUG_EXPOSURE_records_by_DRUG_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count rows grouped by DRUG_CONCEPT_ID."
        },
        "Number_of_DRUG_EXPOSURE_records_by_DRUG_SOURCE_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_DRUG_EXPOSURE_records_by_DRUG_SOURCE_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count rows grouped by DRUG_SOURCE_CONCEPT_ID."
        },
        "Number_of_persons_with_at_least_one_drug_era_by_DRUG_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_persons_with_at_least_one_drug_era_by_DRUG_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count distinct PERSON_ID grouped by DRUG_CONCEPT_ID with at least one DRUG_ERA."
        },
        "Number_of_DRUG_ERA_records_by_DRUG_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_DRUG_ERA_records_by_DRUG_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count DRUG_ERA rows grouped by DRUG_CONCEPT_ID."
        },
        "Number_of_persons_with_at_least_one_concept_id_by_OBSERVATION_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_persons_with_at_least_one_concept_id_by_OBSERVATION_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count distinct PERSON_ID grouped by OBSERVATION_CONCEPT_ID with at least one OBSERVATION."
        },
        "Number_of_OBSERVATION_records_by_OBSERVATION_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_OBSERVATION_records_by_OBSERVATION_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count rows grouped by OBSERVATION_CONCEPT_ID."
        },
        "Number_of_OBSERVATION_records_by_OBSERVATION_SOURCE_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_OBSERVATION_records_by_OBSERVATION_SOURCE_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count rows grouped by OBSERVATION_SOURCE_CONCEPT_ID."
        },
        "Number_of_OBSERVATION_records_by_OBSERVATION_CONCEPT_ID_and_VALUE_AS_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "IDERHA:Number_of_OBSERVATION_records_by_OBSERVATION_CONCEPT_ID_and_VALUE_AS_CONCEPT_ID",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Grouped count by OBSERVATION_CONCEPT_ID x VALUE_AS_CONCEPT_ID."
        },
        "Number_of_persons_with_at_least_one_concept_id_by_DEVICE_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "dqv:hasQualityMeasurement",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count distinct PERSON_ID grouped by DEVICE_CONCEPT_ID with at least one DEVICE_EXPOSURE."
        },
        "Number_of_DEVICE_EXPOSURE_records_by_DEVICE_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "dqv:hasQualityMeasurement",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count rows grouped by DEVICE_CONCEPT_ID."
        },
        "Number_of_DEVICE_EXPOSURE_records_by_DEVICE_SOURCE_CONCEPT_ID": {
          "type": "object",
          "propertyIRI": "dqv:hasQualityMeasurement",
          "rangeIRI": "dqv:QualityMeasurement",
          "description": "Count rows grouped by DEVICE_SOURCE_CONCEPT_ID."
        },
        "Distribution_of_numeric_values_by_MEASUREMENT_CONCEPT_ID_and_UNIT_CONCEPT_ID": {
          "type": "integer",
          "propertyIRI": "IDERHA:Distribution_of_numeric_values_by_MEASUREMENT_CONCEPT_ID_and_UNIT_CONCEPT_ID",
          "rangeIRI": "Measure: count; Dimension: ethnicity",
          "description": "For VALUE_AS_NUMBER in MEASUREMENT, compute summary stats (N, mean, sd, min, p25, p50, p75, max) grouped by MEASUREMENT_CONCEPT_ID x UNIT_CONCEPT_ID.",
          "classIRI": "qb:DataSet"
        },
        "cdmField": {
          "type": "integer",
          "propertyIRI": "IDERHA:cdmField",
          "description": "Verify that each expected CDM field exists in the database.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "cdmTable": {
          "type": "integer",
          "propertyIRI": "IDERHA:cdmTable",
          "description": "Verify that each expected CDM table exists in the database.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "isRequired": {
          "type": "integer",
          "propertyIRI": "IDERHA:isRequired",
          "description": "Percent of records with NULL in fields defined as NOT NULL.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "cdmDatatype": {
          "type": "integer",
          "propertyIRI": "IDERHA:cdmDatatype",
          "description": "Check that the field data type matches the CDM specification.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "isPrimaryKey": {
          "type": "integer",
          "propertyIRI": "IDERHA:isPrimaryKey",
          "description": "Check uniqueness and non-nullness of declared primary key fields.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "isForeignKey": {
          "type": "integer",
          "propertyIRI": "IDERHA:isForeignKey",
          "description": "Check that foreign key fields only contain values that exist in the referenced table.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "fkDomain": {
          "type": "integer",
          "propertyIRI": "IDERHA:fkDomain",
          "description": "For *_CONCEPT_ID fields, verify values belong to the expected OMOP domain.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "fkClass": {
          "type": "integer",
          "propertyIRI": "IDERHA:fkClass",
          "description": "For *_CONCEPT_ID fields, verify values belong to the expected concept class when required.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "isStandardValidConcept": {
          "type": "integer",
          "propertyIRI": "IDERHA:isStandardValidConcept",
          "description": "For standard concept fields, verify concepts are both STANDARD='S' and valid (valid_end_date in the future).",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "measurePersonCompleteness": {
          "type": "integer",
          "propertyIRI": "IDERHA:measurePersonCompleteness",
          "description": "Percent of PERSONs with at least one record in required clinical domain tables (e.g., OBSERVATION_PERIOD; optionally CONDITION, DRUG, PROCEDURE, MEASUREMENT, OBSERVATION, DEVICE, VISIT).",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "measureValueCompleteness": {
          "type": "integer",
          "propertyIRI": "IDERHA:measureValueCompleteness",
          "description": "Percent non-missing for non-required fields to characterize missingness.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "standardConceptRecordCompleteness": {
          "type": "integer",
          "propertyIRI": "IDERHA:standardConceptRecordCompleteness",
          "description": "Percent of records with a STANDARD concept populated (vs 0 or non-standard).",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "sourceConceptRecordCompleteness": {
          "type": "integer",
          "propertyIRI": "IDERHA:sourceConceptRecordCompleteness",
          "description": "Percent of records with a SOURCE_CONCEPT_ID populated.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "sourceValueCompleteness": {
          "type": "integer",
          "propertyIRI": "IDERHA:sourceValueCompleteness",
          "description": "Percent of records with a SOURCE_VALUE populated where appropriate.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "plausibleValueLow": {
          "type": "integer",
          "propertyIRI": "IDERHA:plausibleValueLow",
          "description": "Percent of numeric values below clinically plausible lower bounds.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "plausibleValueHigh": {
          "type": "integer",
          "propertyIRI": "IDERHA:plausibleValueHigh",
          "description": "Percent of numeric values above clinically plausible upper bounds.",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "plausibleTemporalAfter": {
          "type": "integer",
          "propertyIRI": "IDERHA:plausibleTemporalAfter",
          "description": "Percent of dates that occur after an expected reference event (e.g., condition_start_date after observation_end_date).",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "plausibleDuringLife": {
          "type": "integer",
          "propertyIRI": "IDERHA:plausibleDuringLife",
          "description": "Percent of dates that occur outside a person's lifespan (before birth or after death).",
          "rangeIRI": "dqv:QualityMeasurement"
        },
        "plausibleGender": {
          "type": "integer",
          "propertyIRI": "IDERHA:plausibleGender",
          "description": "Percent of records with concepts implausible for the recorded gender.",
          "rangeIRI": "dqv:QualityMeasurement"
        }
      },
      "description": "Dataset entity",
      "required": [
        "identifier",
        "title",
        "description",
        "keyword",
        "theme",
        "access_rights",
        "publisher",
        "health_theme",
        "health_data_access_body",
        "health_category",
        "distribution",
        "contact_point",
        "applicable_legislation",
        "rights"
      ]
    },
    "Catalogue": {
      "type": "object",
      "properties": {
          "title": {
          "type": "string",
          "propertyIRI": "dct:title",
          "rangeIRI": "Literal",
          "description": "A name given to the Catalogue."
        },
        "description": {
          "type": "string",
          "propertyIRI": "dct:description",
          "rangeIRI": "Literal",
          "description": "Briefly describe the catalog and what it contains. You can repeat this in multiple languages."
        },
        "publisher": {
          "$ref": "#/$defs/Agent",
          "propertyIRI": "dct:publisher",
          "rangeIRI": "Agent",
          "description": "An entity (organisation) responsible for making the Catalogue available.",
          "vocabulary": "http://publications.europa.eu/resource/authority/corporate-body"
        }
      
      }
    },
    "Study": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string",
          "propertyIRI": "dct:title",
          "rangeIRI": "String",
          "description": "Study type"
        },
        "identifier": {
          "type": "string",
          "propertyIRI": "dct:identifier",
          "rangeIRI": "String",
          "description": "Study identifier"
        },
        "acronym": {
          "type": "string",
          "propertyIRI": "dct:acronym",
          "rangeIRI": "String",
          "description": "Study acronym"
        },
        "description": {
          "type": "string",
          "propertyIRI": "dct:description",
          "rangeIRI": "String",
          "description": "Stydy description"
        },
        "keywords": {
          "type": "string",
          "propertyIRI": "dcat:keywords",
          "rangeIRI": "String",
          "description": "Study keywords"
        },
        "fundedBy": {
          "$ref": "#/$defs/Agent",
          "propertyIRI": "IDERHA:fundedBy",
          "rangeIRI": "Agent",
          "description": "Funding partner"
        },
        "Agent": {
          "propertyIRI": "IDERHA:Agent",
          "rangeIRI": "Agent",
          "description": "Mandatory",
          "vocabulary": "foaf:Agent",
          "$ref": "#/$defs/Agent"
        },
        "projectWebsite": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "IDERHA:projectWebsite",
          "rangeIRI": "anyURI",
          "description": "type of study (a controlled vocabulary to be defined)"
        },
        "types": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "skos:Concept",
          "rangeIRI": "Concept"
        }
      },
      "description": "Study entity",
      "required": []
    }
  },
  "required": [],
  "$defs": {
    "Agent": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "propertyIRI": "foaf:name",
          "rangeIRI": "Literal",
          "description": "A name of the agent.This property can be repeated for different versions of the name (e.g. the name in different languages)."
        }
      },
      "description": "Agent entity",
      "contactPoint": {
        "$ref": "#/$defs/Kind",
        "propertyIRI": "dcat:contactPoint",
        "rangeIRI": "vcard:Kind"
      },
      "required": [
        "name", "contactPoint"
      ]
    },
    "Distribution": {
      "type": "object",
      "properties": {
        "access_URL": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "dcat:accessURL",
          "rangeIRI": "Resource",
          "description": "A URL that provides the access procedure to a Distribution of the Dataset.\tA URL of a Website that contains information on how to request the data."
        },
        "applicable_legislation": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "dcatap:applicableLegislation",
          "rangeIRI": "Legal Resource",
          "description": "The ELI URI (to create) of the EHDS Regulation proposal that mandates the creation of the Health Data Access Body."
        }
      },
      "description": "Distribution entity",
      "required": [
        "access_URL",
        "applicable_legislation"
      ]
    },
    "Kind": {
      "type": "object",
      "properties": {
        "contact_page": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "",
          "rangeIRI": "Resource",
          "description": "A webpage that either allows to make contact (i.e. a webform) or the information contains how to get into contact.It is recommended to provide at least either an email or a contact form from e.g. a service desk. A webpage that either allows to make contact (i.e. a webform) or the information contains how to get into contact."
        },
        "email": {
          "type": "string",
          "format": "uri",
          "pattern": "^(https?|urn):",
          "propertyIRI": "",
          "rangeIRI": "Resource",
          "description": "A email address via which contact can be made. It is recommended to provide at least either an email or a contact form from e.g. a service desk. When naming a contact point this information needs to be further specified with additional information, i.e., an email address. This email address does not need to be a direct contact to the person responsible for the management of the data, it could be a generic information email. The email address has to be provided starting with mailto: prefix. For example: mailto:info@example.com / mailto: jane.doe@example.com"
        }
      },
      "description": "Kind entity",
      "required": [
        "contact_page",
        "email"
      ]
    }
  }
}