{
"id": "org.hypercerts.entity.feature",
"defs": {
"main": {
"key": "any",
"type": "record",
"record": {
"type": "object",
"required": [
"title",
"createdAt"
],
"properties": {
"tags": {
"type": "array",
"items": {
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"maxLength": 20,
"description": "References to org.hypercerts.vocab.tag records classifying this record. All listed tags apply simultaneously (logical AND); the array carries no ordering, weighting, negation, inheritance, or rule logic, and never will — any future expression logic must arrive as a new field and must never reinterpret this one."
},
"type": {
"type": "string",
"maxLength": 64,
"description": "The coarse kind of subject this feature is. The initial known kinds are spatial — zone (an area a steward authors and manages) and stratum (an analytical unit derived from a model or methodology) — but the record is subject-general: spatiality comes from the presence of locations, not from type, and further kinds may be documented as adoption demonstrates need. This is not the feature's role or detailed classification — those are expressed through tags. Values beyond the known set are permitted.",
"knownValues": [
"zone",
"stratum"
]
},
"title": {
"type": "string",
"maxLength": 800,
"description": "Display name of the feature.",
"maxGraphemes": 80
},
"sameAs": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"maxLength": 20,
"description": "URIs of external identifiers that denote the same real-world subject, for example a cadastral parcel ID or a gazetteer entry. Entity identity only; vocabulary concordance belongs on org.hypercerts.vocab.tag."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this record was originally created."
},
"locations": {
"type": "array",
"items": {
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"maxLength": 1000,
"description": "Optional published spatial representations of this feature. Each referenced record must conform with app.certified.location. Multiple entries are alternative representations of the same subject at different precisions or encodings — never different places. Genuinely different places are either one MultiPolygon inside a single location record, or separate features. Writers SHOULD list entries in publisher-preferred order, most preferred first. All referenced locations are public once published: for sensitive subjects, publish only a coarse representation and keep exact geometry unpublished. An empty or absent array is valid: the subject's geometry is unpublished or not applicable."
},
"signatures": {
"ref": "app.certified.signature.defs#list",
"type": "ref",
"description": "Optional cryptographic signatures attesting to this record's content."
},
"description": {
"refs": [
"org.hypercerts.defs#descriptionString",
"pub.leaflet.pages.linearDocument",
"com.atproto.repo.strongRef"
],
"type": "union",
"description": "Long-form description of the feature, as an inline string, a Leaflet document, or a reference to another record."
}
}
},
"description": "A record for a non-agent subject that other records (measurements, evaluations, etc.) can be about, for example a land zone or an ecological stratum. It carries the subject's identity, classification, and optional published spatial representations. Geometry lives in app.certified.location records; grouping lives in org.hypercerts.collection records."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}