Data Model v1
All metadata are modelled according to the model as described in the following.
There are two schemas for metadata: draft and final. 
Final describes the metadata as they should be in the end, 
draft has fewer constraints, in case the metadata is not yet complete. 
Any metadata of a project that is marked as Finished must use the final schema,
metadata of a projects that are marked as Ongoing may use the draft schema.
The two schemas can be found here.
The following description is based on the final schema.
Top Level
A set of metadata consists of the following top-level elements:
- Project
- Dataset
- Person
- Organization
- Grant
Each of these elements is an entity identified by a unique identifier. 
Other elements can refer to these entities by their identifier.
Any other metadata element may itself be a complex object,
but it is always part of one of the top-level elements.
Such elements do not have an identifier, 
but are identified by their position in the hierarchy.
| Field | Type | Cardinality | 
| $schema | string | 0-1 | 
| project | project | 1 | 
| datasets | dataset[] | 1-n | 
| persons | person[] | 0-n | 
| organizations | organization[] | 0-n | 
| grants | grant[] | 0-n | 
Types
Entity Types
Project
| Field | Type | Cardinality | Restrictions | 
| __type | string | 1 | Literal "Project" | 
| shortcode | string | 1 | 4 char hexadecimal | 
| status | string | 1 | Literal "Ongoing" or "Finished" | 
| name | string | 1 |  | 
| description | lang_string | 1 |  | 
| startDate | date | 1 | String of format "YYYY-MM-DD" | 
| teaserText | string | 1 |  | 
| url | url | 1 |  | 
| howToCite | string | 1 |  | 
| datasets | id[] | 1-n | String containing the identifier of a dataset | 
| keywords | lang_string[] | 1-n |  | 
| disciplines | lang_string|url[] | 1-n |  | 
| temporalCoverage | lang_string|url[] | 1-n |  | 
| spatialCoverage | url[] | 1-n |  | 
| funders | id[] | 1-n | String containing the identifier of a person or organization | 
| endDate | date | 0-1 | String of format "YYYY-MM-DD" | 
| secondaryURL | url | 0-1 |  | 
| dataManagementPlan | dmp | 0-1 |  | 
| contactPoint | id | 0-1 | String containing the identifier of a person or organization | 
| publications | publication[] | 0-n |  | 
| grants | id[] | 0-n | String containing the identifier of a grant | 
| alternativeNames | lang_string[] | 0-n |  | 
Dataset
| Field | Type | Cardinality | Restrictions | 
| __id | string | 1 |  | 
| __type | string | 1 | Literal "Dataset" | 
| title | string | 1 |  | 
| accessConditions | string | 1 | Literal "open", "restricted" or "closed" | 
| howToCite | string | 1 |  | 
| status | string | 1 | Literal "In Planning", "Ongoing", "On hold", "Finished" | 
| abstract | lang_string|url | 1-n |  | 
| typeOfData | string[] | 1-n | Literal "XML", "Text", "Image", "Video", "Audio" | 
| licenses | license[] | 1-n |  | 
| languages | lang_string[] | 1-n |  | 
| attributions | attribution[] | 1-n |  | 
| datePublished | date | 0-1 |  | 
| dateCreated | date | 0-1 |  | 
| dateModified | date | 0-1 |  | 
| distribution | url | 0-1 |  | 
| alternativeTitles | lang_string[] | 0-n |  | 
| urls | url[] | 0-n |  | 
| additional | lang_string|url | 0-n |  | 
Person
| Field | Type | Cardinality | Restrictions | 
| __id | string | 1 |  | 
| __type | string | 1 | Literal 'Person' | 
| givenNames | string[] | 1-n |  | 
| familyNames | string[] | 1-n |  | 
| jobTitles | string[] | 0-n |  | 
| affiliations | id[] | 0-n | Organization IDs | 
| address | address | 0-1 |  | 
| email | string | 0-1 |  | 
| secondaryEmail | string | 0-1 |  | 
| authorityRefs | url[] | 0-n | References to external authority files | 
Organization
| Field | Type | Cardinality | Restrictions | 
| __id | string | 1 |  | 
| __type | string | 1 | Literal 'Organization' | 
| name | string | 1 |  | 
| url | url | 1 |  | 
| address | address | 0-1 |  | 
| email | string | 0-1 |  | 
| alternativeName | lang_string | 0-1 |  | 
| authorityRefs | url[] | 0-n | References to external authority files | 
Grant
| Field | Type | Cardinality | Restrictions | 
| __id | string | 1 |  | 
| __type | string | 1 | Literal 'Grant' | 
| funders | id[] | 1-n | Person or Organization IDs | 
| number | string | 0-1 |  | 
| name | string | 0-1 |  | 
| url | url | 0-1 |  | 
Value Types
String with Language Tag (lang_string)
Object with an ISO language code as key and a string as value.
{
    "en": "Lorem ipsum in English.",
    "de": "Lorem ipsum auf Deutsch."
}
Date
String with the format YYYY-MM-DD.
URL
An object representing a URL. 
Depending on the type field,
the URL may be a generic URL
or a more specific link, like a PID
or a reference to a resource in an external authority file.
| Field | Type | Cardinality | Restrictions | 
| __type | string | 1 | Literal 'URL' | 
| type | string | 1 | Literal 'URL', 'Geonames', 'Pleiades', 'Skos', 'Periodo', 'Chronontology', 'GND', 'VIAF', 'Grid', 'ORCID', 'Creative Commons', 'DOI', 'ARK' | 
| url | string | 1 |  | 
| text | string | 0-1 |  | 
Data Management Plan (dmp)
| Field | Type | Cardinality | Restrictions | 
| __type | string | 1 | Literal 'DataManagementPlan' | 
| `available | boolean | 0-1 |  | 
| url | url | 0-1 |  | 
Publication
| Field | Type | Cardinality | Restrictions | 
| text | string | 1 |  | 
| url | url | 0-1 |  | 
Address
| Field | Type | Cardinality | Restrictions | 
| __type | string | 1 | Literal 'Address' | 
| street | string | 1 |  | 
| postalCode | string | 1 |  | 
| locality | string | 1 |  | 
| country | string | 1 |  | 
| canton | string | 0-1 |  | 
| additional | string | 0-1 |  | 
License
| Field | Type | Cardinality | Restrictions | 
| __type | string | 1 | Literal 'License' | 
| license | url | 1 |  | 
| date | date | 1 |  | 
| details | string | 0-1 |  | 
Attribution
| Field | Type | Cardinality | Restrictions | 
| __type | string | 1 | Literal 'Attribution' | 
| agent | string | 1 |  | 
| roles | string | 1-n |  | 
Entity-Relationship Diagram
erDiagram
    project ||--|{ dataset : datasets
    project ||--|| person : contactPoint
    project ||--|| organization : contactPoint
    project ||--|{ person : funders
    project ||--|{ organization : funders
    project ||--|{ grant : grants
    person ||--|{ organization : affiliations
    grant ||--|{ organization : funders
    grant ||--|{ person : funders
    project {
        string __type "1; Literal 'Project'"
        string shortcode "1"
        string status "1; Literal 'Ongoing' or 'Finished'"
        string name "1"
        lang_string description "1"
        date startDate "1"
        string teaserText "1"
        url url "1"
        string howToCite "1"
        id[] datasets "1-n; Dataset IDs"
        lang_string[] keywords "1-n"
        lang_string_or_url[] disciplines "1-n"
        lang_string_or_url[] temporalCoverage "1-n"
        url[] spatialCoverage "1-n"
        id[] funders "1-n; Person or Organization IDs"
        date endDate "0-1"
        url secondaryURL "0-1"
        dmp dataManagementPlan "0-1"
        id contactPoint "0-1"
        publication[] publications "0-n"
        id[] grants "0-n"
        lang_string[] alternativeNames "0-n"
    }
    dataset {
        string __id "1"
        string __type "1; Literal 'Dataset'"
        string title "1"
        string accessConditions "1; Literal 'open', 'restricted' or 'closed'"
        string howToCite "1"
        string status "1; Literal 'In Planning', 'Ongoing', 'On hold', 'Finished'"
        lang_string_or_url[] abstract "1-n"
        string[] typeOfData "1-n; Literal 'XML', 'Text', 'Image', 'Video', 'Audio'"
        license[] licenses "1-n"
        lang_string[] languages "1-n"
        attribution[] attributions "1-n"
        date datePublished "0-1"
        date dateCreated "0-1"
        date dateModified "0-1"
        url distribution "0-1"
        lang_string[] alternativeTitles "0-n"
        url[] urls "0-n"
        lang_string_or_url[] additional "0-n"
    }
    person {
        string __id "1"
        string __type "1; Literal 'Person'"
        string[] givenNames "1-n"
        string[] familyNames "1-n"
        string[] jobTitles "0-n"
        id[] affiliations "0-n; Organization IDs"
        address address "0-1"
        string email "0-1"
        string secondaryEmail "0-1"
        url[] authorityRefs "0-n"
    }
    organization {
        string __id "1"
        string __type "1; Literal 'Organization'"
        string name "1"
        url url "1"
        address address "0-1"
        string email "0-1"
        lang_string alternativeName "0-1"
        url[] authorityRefs "0-n"
    }
    grant {
        string __id "1"
        string __type "1; Literal 'Grant'"
        id[] funders "1-n; Person or Organization IDs"
        string number "0-1"
        string name "0-1"
        url url "0-1"
    }
Legacy docs
The legacy documentation can be found here.
This includes thoughts on mappings to external aggregators 
and on RDF representation of the metadata.