{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://b2base.eu/schemas/1.0.0-draft.1/person/attributes.schema.json", "title": "Personenmerkmale und Status", "$comment": "B2Base 1.0.0-draft.1. Projektentwurf, kein durch ISO oder andere Normungsgremien verabschiedeter Standard.", "type": "object", "description": "Optionale, zweckgebundene Personenmerkmale.", "properties": { "citizenshipStatus": { "type": "string", "minLength": 1, "description": "Unterscheidet bekannte Staatsangehörigkeit, Staatenlosigkeit und unbekannte Angaben.", "enum": [ "known", "stateless", "undetermined", "notProvided" ] }, "nationalities": { "type": "array", "description": "Bekannte Staatsangehörigkeiten; keine ethnische Zugehörigkeit.", "items": { "$ref": "#/$defs/CountryCode" }, "uniqueItems": true }, "maritalStatus": { "$ref": "#/$defs/CodedValue", "description": "Familienstand aus einem benannten fachlichen oder nationalen Vokabular." }, "employmentStatus": { "$ref": "#/$defs/CodedValue", "description": "Beschäftigungsstatus mit Vokabular." }, "effectiveDate": { "type": "string", "minLength": 1, "description": "Datum, für das die Angaben gelten.", "format": "date" }, "extensions": { "type": "object", "description": "Vereinbarte Erweiterungen; Schlüssel als absolute URI des Herausgebers. Keine stillschweigende Änderung von Kernfeldern.", "properties": {}, "additionalProperties": true, "propertyNames": { "format": "uri" } } }, "additionalProperties": false, "minProperties": 1, "allOf": [ { "if": { "properties": { "citizenshipStatus": { "const": "stateless" } }, "required": [ "citizenshipStatus" ] }, "then": { "properties": { "nationalities": { "maxItems": 0 } } } }, { "if": { "properties": { "citizenshipStatus": { "const": "known" } }, "required": [ "citizenshipStatus" ] }, "then": { "required": [ "nationalities" ], "properties": { "nationalities": { "minItems": 1 } } } } ], "$defs": { "CountryCode": { "type": "string", "minLength": 1, "description": "ISO 3166-1 Alpha-2, Großbuchstaben. Das Muster prüft nur die Schreibweise; zugewiesenen Code und Gültigkeitszeitpunkt gesondert prüfen.", "pattern": "^[A-Z]{2}$" }, "CodedValue": { "type": "object", "description": "Fachlicher Code mit benanntem Vokabular.", "properties": { "value": { "type": "string", "minLength": 1, "description": "Code aus dem bezeichneten Vokabular; als Text unverändert übernehmen." }, "scheme": { "type": "string", "minLength": 1, "description": "Absolute URI des Vokabulars, einschließlich einer Version, falls dessen Bedeutung veränderlich ist.", "format": "uri" }, "label": { "type": "string", "minLength": 1, "description": "Optionale lesbare Bezeichnung." }, "language": { "$ref": "#/$defs/LanguageTag", "description": "Sprache der Bezeichnung, nicht Staatsangehörigkeit." } }, "required": [ "value", "scheme" ], "additionalProperties": false }, "LanguageTag": { "type": "string", "minLength": 1, "description": "BCP-47-Sprachtag, etwa de, zh-Hant-TW, sr-Latn oder x-internal. Das Muster prüft nur die Grundform, nicht Registrierung oder alle BCP-47-Regeln.", "pattern": "^[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*$" } }, "examples": [ { "citizenshipStatus": "stateless", "nationalities": [], "effectiveDate": "2026-09-08" }, { "citizenshipStatus": "known", "nationalities": [ "CA", "FR" ] } ] }