Core profile
The basic building blocks every other profile depends on: jurisdictions, organizations, people, and the roles people hold.
Schemas: 9
Code lists: 3
Standards: schema.org, Popolo, W3C ORG
Boundary
The extent of a governed area over a period of time.
| Field | Type | Definition | Required |
|---|---|---|---|
@id |
string |
This boundary's own dereferenceable identifier. | Yes |
@type |
"Boundary" |
Always Boundary - a separate, citable entity rather than a field on the jurisdiction, because boundaries change and the change matters: wards are redrawn, municipalities annex and merge, electoral districts are reapportioned. A 2022 contest was fought on the 2022 boundary, and a budget line or permit attributed to an area is anchored to the boundary in force at the time. Attaching a single current geometry to a Jurisdiction silently rewrites history. |
Yes |
name |
string |
A human-readable label for this boundary, e.g. 'Ward 3 (2022)'. | No |
boundaryOf |
Reference |
The Jurisdiction this is the extent of. |
Yes |
geometry |
Geometry |
The Geometry describing this boundary's shape. |
Yes |
validFrom |
string |
When this extent took effect. | Yes |
validUntil |
string |
When it ceased to apply. Absent means current. A superseded boundary is retained, not deleted - it is what historical records were drawn against. | No |
authoritative |
boolean |
Whether this is the legally definitive extent, as opposed to a published rendering of it. | No |
supersedes |
Reference |
The Boundary this replaced. |
No |
identifier |
Identifier[] |
Any scheme-qualified identifiers for this boundary beyond its @id. |
No |
sourceDataset |
string |
The Dataset this record was published as part of. |
No |
{
"@id": "https://example-city.gov/id/boundary/example-city/current",
"@type": "Boundary",
"name": "Example City municipal boundary, from 2018",
"boundaryOf": {
"@id": "https://example-city.gov/id/jurisdiction/example-city",
"name": "Example City"
},
"validFrom": "2018-07-01",
"authoritative": true,
"identifier": [
{
"@type": "PropertyValue",
"propertyID": "gs:local",
"value": "city-2018"
}
],
"geometry": {
"@type": "Geometry",
"geometryType": "MultiPolygon",
"contentUrl": "https://example-city.gov/geo/city-boundary-2018.geojson",
"encodingFormat": "application/geo+json",
"sourceReferenceSystem": "epsg:2229",
"simplified": false,
"vertexCount": 4812
}
}
Facility
A physical place operated by government: a city hall, chamber, courthouse, depot, library.
| Field | Type | Definition | Required |
|---|---|---|---|
@id |
string |
This facility's own dereferenceable identifier. | Yes |
@type |
"GovernmentBuilding" | "CityHall" | "LegislativeBuilding" | "Courthouse" | "Embassy" | "DefenceEstablishment" | "CivicStructure" | "EventVenue" | "Place" |
A Facility is a Place and nothing else - it is neither the territory (Jurisdiction) nor the body (GovernmentOrganization). The occupying organization points here with schema:location; meetings point here with schema:location too, which is why this belongs in _core rather than in the meetings profile. Types listed here are cleanly Place-only: avoid GovernmentOffice, PoliceStation, FireStation, and Library, each of which is dual-typed as Organization and Place through LocalBusiness, collapsing the distinction this profile depends on. Use GovernmentBuilding for those buildings instead. |
Yes |
name |
string |
The facility's public name, e.g. 'City Hall'. | Yes |
alternateName |
string[] |
Other names this facility is known by. | No |
description |
string |
A plain-language description of the facility. | No |
url |
string |
Where more information about this facility can be found. | No |
identifier |
Identifier[] |
Any scheme-qualified identifiers for this facility beyond its @id. |
No |
address |
object |
schema.org PostalAddress. |
No |
geo |
object |
schema.org GeoCoordinates or GeoShape. |
No |
containedInPlace |
Reference |
The Jurisdiction this facility sits in. Lets a facility be located without duplicating the territorial hierarchy. |
No |
openingHoursSpecification |
object[] |
schema.org OpeningHoursSpecification. Note that schema:publicAccess is a Boolean on Place, not an hours structure - a common mistake. |
No |
publicAccess |
boolean |
Whether the public may enter. Boolean, per schema.org. | No |
isAccessibleForFree |
boolean |
Whether visiting this facility costs nothing. | No |
maximumAttendeeCapacity |
integer |
Useful for chambers hosting public meetings. | No |
hasMap |
string |
A URL to a map of this facility. | No |
photo |
string |
A photo of this facility. | No |
branchCode |
string |
The facility's internal branch or location code, when the organization uses one. | No |
sourceDataset |
string |
The Dataset this record was published as part of. |
No |
{
"@id": "https://example-city.gov/id/facility/city-hall",
"@type": "CityHall",
"name": "Example City Hall",
"url": "https://example-city.gov/city-hall",
"identifier": [
{
"@type": "PropertyValue",
"propertyID": "gs:local",
"value": "city-hall"
}
],
"containedInPlace": {
"@id": "https://example-city.gov/id/jurisdiction/example-city",
"name": "Example City"
},
"address": {
"@type": "PostalAddress",
"streetAddress": "123 City Hall Drive",
"addressLocality": "Example City",
"addressRegion": "CA",
"postalCode": "90210",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 34.0522,
"longitude": -118.2437
},
"publicAccess": true,
"isAccessibleForFree": true,
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "08:00",
"closes": "17:00"
}
]
}
Geometry
A shape on the earth, held either by reference or inline.
| Field | Type | Definition | Required |
|---|---|---|---|
@type |
"Geometry" |
Always Geometry - a value type rather than an entity, like Identifier and MonetaryAmount. schema:GeoShape cannot do this job: its polygon is a space-delimited text string with no coordinate reference system, no multipolygon and no interior rings, and schema.org's own GeospatialGeometry is a declared placeholder that was never filled in. Exactly one of contentUrl or coordinates must be present. |
Yes |
geometryType |
"Point" | "LineString" | "Polygon" | "MultiPoint" | "MultiLineString" | "MultiPolygon" | "GeometryCollection" |
GeoJSON geometry type. MultiPolygon is the common case for real administrative areas, which have islands and exclaves. | Yes |
contentUrl |
string |
URL of a GeoJSON resource. The default for anything shared, authoritative or large: a jurisdiction boundary is referenced by every record in that jurisdiction, and duplicating it into each is the drift SPEC section 1.2 exists to prevent. | No |
coordinates |
array |
Inline GeoJSON coordinates. Permitted for geometry that is specific to one record and small - an alert polygon, a parcel outline - because real standards inline it and a profile that forbade it could not describe CAP. The validator warns above a vertex threshold rather than failing, since that is a publishing judgement rather than a correctness error. | No |
encodingFormat |
string |
Usually application/geo+json. | No |
sourceReferenceSystem |
string |
The CRS the publisher's authoritative source is held in, as an OGC CRS URI or 'epsg:NNNN' shorthand. This is provenance, not a claim about the coordinates here: GeoJSON mandates WGS84 longitude/latitude and forbids alternatives, so referenced and inline GeoJSON are always CRS84. Recording it matters because national-grid coordinates read as WGS84 land in the wrong hemisphere. | No |
simplified |
boolean |
Whether this is a generalised rendering for display. A simplified boundary is not the legal boundary, and using one to decide whether an address falls inside a district gives wrong answers at the edges. A consumer needs to know which it has. | No |
vertexCount |
integer |
Approximate vertex count, where the publisher knows it. | No |
Identifier
A scheme-qualified identifier.
Standards: Open Contracting Data Standard, Wikidata QID, Open Civic Data
| Field | Type | Definition | Required |
|---|---|---|---|
@type |
"PropertyValue" |
Always PropertyValue, where propertyID names the scheme and value carries the code. This is the mechanism that makes the model work internationally: no national identifier system is privileged, and an entity may carry as many as it has. The same pattern is used by OCDS for organization identifiers. |
Yes |
propertyID |
string |
The identifier scheme. Use a registered token below, an 'org-id:<prefix>' token from the org-id.guide register, 'local:<scheme>' for a publisher's own internal register (distinct from org-id: so that provenance is never overstated), or an absolute IRI. | Yes |
value |
string |
The identifier's actual code or value. | Yes |
name |
string |
Human-readable name of the scheme. | No |
Jurisdiction
A governed territory: a country, region, municipality, or special-purpose area.
Standards: Wikidata QID
| Field | Type | Definition | Required |
|---|---|---|---|
@id |
string |
This jurisdiction's own dereferenceable identifier. | Yes |
@type |
"AdministrativeArea" | "Country" | "State" | "City" |
A Jurisdiction is a Place. It has no employees, departments, or legislation - those belong to the Organization that governs it, which points here with areaServed. Keeping these two apart is the central rule of this profile. Use the most specific schema.org type below that applies. |
Yes |
name |
string |
The jurisdiction's official name. | Yes |
alternateName |
string[] |
Endonyms, historical names, and the local-language term for the tier (e.g. 'Comune di Bologna'). | No |
description |
string |
A plain-language description of the jurisdiction. | No |
url |
string |
Where more information about this jurisdiction can be found. | No |
identifier |
Identifier[] |
At least one. A Wikidata QID is strongly recommended as the cross-border join key. | Yes |
sameAs |
string[] |
Links to authoritative external records for this jurisdiction, e.g. its Wikidata entry. | No |
governmentLevel |
string |
termCode from the GovernmentLevel code list. |
Yes |
containedInPlace |
Reference |
The next jurisdiction up. Chaining these yields the full territorial hierarchy without any country-specific nesting rules. | No |
containsPlace |
Reference[] |
Jurisdictions directly contained within this one. | No |
geo |
object |
schema.org GeoCoordinates or GeoShape. |
No |
population |
object |
A QuantitativeValue, so the count keeps its observation date and source. | No |
timeZone |
string |
IANA time zone, e.g. 'Europe/Lisbon'. | No |
jurisdictionOf |
Reference[] |
GovernmentOrganizations governing this area. Convenience inverse of Organization.areaServed. |
No |
boundary |
Reference[] |
References to Boundary entities for this area, including superseded ones. Separate entities rather than inline geometry so that a historical extent can be cited: an electoral district boundary is exactly what gets cited in a dispute, and a citation needs something to point at. |
No |
{
"@id": "https://example-city.gov/id/jurisdiction/us",
"@type": "Country",
"name": "United States of America",
"governmentLevel": "national",
"identifier": [
{
"@type": "PropertyValue",
"propertyID": "iso3166-1-alpha2",
"value": "US"
},
{
"@type": "PropertyValue",
"propertyID": "iso3166-1-alpha3",
"value": "USA"
},
{
"@type": "PropertyValue",
"propertyID": "wikidata",
"value": "Q30"
}
]
}
GovernmentOrganization
A body that exercises public authority: a government, a department, a council, a committee, an agency.
| Field | Type | Definition | Required |
|---|---|---|---|
@id |
string |
This organization's own dereferenceable identifier. | Yes |
@type |
"GovernmentOrganization" |
Always GovernmentOrganization. This is where people, budgets, decisions, and legislation attach. It points at the territory it governs with areaServed; it is not itself a place. |
Yes |
name |
string |
The organization's official name. | Yes |
alternateName |
string[] |
Other names this organization is known by. | No |
description |
string |
A plain-language description of the organization. | No |
url |
string |
Where more information about this organization can be found. | No |
identifier |
Identifier[] |
At least one scheme-qualified identifier for this organization. | Yes |
sameAs |
string[] |
Links to authoritative external records for this organization. | No |
organizationClassification |
string |
termCode from the OrganizationClassification code list. |
Yes |
governmentLevel |
string |
termCode from the GovernmentLevel code list. |
No |
areaServed |
Reference |
The Jurisdiction this body governs. Optional at Core conformance, because an organization referenced from another profile (a buyer in a procurement record, an issuing body on a permit) is legitimately known by identity without its territory being restated. Required at Standard conformance for organizations a publisher describes in their own org chart. |
No |
parentOrganization |
Reference |
The body this organization reports to or operates under. | No |
subOrganization |
Reference[] |
Bodies constituted under this one, including committees and commissions. | No |
department |
Reference[] |
Operating units. Use subOrganization for bodies with their own constitution, department for units of this body's administration. |
No |
member |
OrganizationRole[] |
Officeholders, as Roles. A bare Person here loses the term of office, so always wrap in a Role. |
No |
contactPoint |
object[] |
Ways to contact this organization. | No |
address |
object |
schema.org PostalAddress. |
No |
location |
Reference |
The Facility this body occupies. The organization points at the place; the place never points back with an organization property. |
No |
foundingDate |
string |
When this organization was established. | No |
dissolutionDate |
string |
Present means the body no longer exists. Records are retained rather than deleted, so historical documents keep resolving. | No |
knowsLanguage |
string[] |
BCP 47 tags for the languages this body conducts business in. Consumers use this to pick among multilingual name and document variants. | No |
timeZone |
string |
IANA time zone this organization operates in, e.g. Europe/Lisbon. |
No |
sourceDataset |
string |
The Dataset this record was published as part of. |
No |
{
"@id": "https://example-city.gov/id/organization/city-government",
"@type": "GovernmentOrganization",
"name": "Example City Government",
"organizationClassification": "executive",
"governmentLevel": "municipal",
"url": "https://example-city.gov",
"identifier": [
{
"@type": "PropertyValue",
"propertyID": "gs:local",
"value": "city-government"
}
],
"areaServed": {
"@id": "https://example-city.gov/id/jurisdiction/example-city",
"name": "Example City"
},
"foundingDate": "1950-03-15",
"knowsLanguage": [
"en-US",
"es-US"
],
"timeZone": "America/Los_Angeles",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 City Hall Drive",
"addressLocality": "Example City",
"addressRegion": "CA",
"postalCode": "90210",
"addressCountry": "US"
},
"subOrganization": [
{
"@id": "https://example-city.gov/id/organization/city-council",
"name": "Example City Council"
}
],
"department": [
{
"@id": "https://example-city.gov/id/organization/public-works",
"name": "Public Works Department"
}
],
"member": [
{
"@type": "OrganizationRole",
"@id": "https://example-city.gov/id/role/mayor-2023",
"roleName": "Mayor",
"startDate": "2023-01-01",
"member": {
"@id": "https://example-city.gov/id/person/jane-smith",
"name": "Jane Smith"
},
"post": {
"@id": "https://example-city.gov/id/post/mayor"
}
},
{
"@type": "EmployeeRole",
"@id": "https://example-city.gov/id/role/city-manager-2021",
"roleName": "City Manager",
"startDate": "2021-06-14",
"member": {
"@id": "https://example-city.gov/id/person/john-doe",
"name": "John Doe"
},
"post": {
"@id": "https://example-city.gov/id/post/city-manager"
}
},
{
"@type": "OrganizationRole",
"@id": "https://example-city.gov/id/role/mayor-2019",
"roleName": "Mayor",
"startDate": "2019-01-01",
"endDate": "2022-12-31",
"post": {
"@id": "https://example-city.gov/id/post/mayor"
},
"member": {
"@id": "https://example-city.gov/id/person/alan-reyes",
"name": "Alan Reyes"
}
}
],
"location": {
"@id": "https://example-city.gov/id/facility/city-hall",
"name": "Example City Hall"
}
}
Person
A human being who holds or held a public role.
Standards: Popolo
| Field | Type | Definition | Required |
|---|---|---|---|
@id |
string |
This person's own dereferenceable identifier. | Yes |
@type |
"Person" |
Always Person. A Person record carries identity only - never the office, the term, or the body. Those live on the Role, so that one person can hold several offices over time without duplicate Person records. |
Yes |
name |
string |
Full name as the person presents it. | Yes |
givenName |
string |
Given (first) name, where the naming culture decomposes this way. | No |
familyName |
string |
Family (last) name, where the naming culture decomposes this way. | No |
additionalName |
string |
A middle name or patronymic, where applicable. | No |
honorificPrefix |
string |
A title preceding the name, e.g. 'Dr.', 'The Honorable'. | No |
honorificSuffix |
string |
A title following the name, e.g. 'Jr.', 'Esq.'. | No |
alternateName |
string[] |
Transliterations and other-script forms. Do not assume given/family decomposition applies to every naming culture; name is the authoritative field and the decomposed parts are optional. | No |
identifier |
Identifier[] |
Any scheme-qualified identifiers for this person beyond their @id. |
No |
sameAs |
string[] |
Links to authoritative external records for this person. | No |
image |
string |
A photo of this person. | No |
url |
string |
This person's official page, when one exists. | No |
email |
string |
Official contact only. Do not publish personal contact details. | No |
telephone |
string |
Official contact only. | No |
knowsLanguage |
string[] |
Languages this person conducts official business in. | No |
sourceDataset |
string |
The Dataset this record was published as part of. |
No |
{
"@id": "https://example-city.gov/id/person/jane-smith",
"@type": "Person",
"name": "Jane Smith",
"givenName": "Jane",
"familyName": "Smith",
"email": "mayor@example-city.gov",
"identifier": [
{
"@type": "PropertyValue",
"propertyID": "gs:local",
"value": "jane-smith"
}
]
}
Reference
A pointer to another entity. Cross-domain links MUST be references, never inlined copies of the target entity. The optional @type and name are display hints for consumers that will not dereference; they are not authoritative and MUST NOT be relied on.
| Field | Type | Definition | Required |
|---|---|---|---|
@id |
string |
Absolute IRI of the referenced entity. | Yes |
@type |
string |
The referenced entity's type, as a display hint. | No |
name |
string |
The referenced entity's name, as a display hint. | No |
OrganizationRole
One person holding one office in one body for one span of time - the equivalent of a Popolo Membership.
Standards: Popolo
| Field | Type | Definition | Required |
|---|---|---|---|
@id |
string |
This role's own dereferenceable identifier. | No |
@type |
"OrganizationRole" | "EmployeeRole" | "Role" |
Always OrganizationRole (or the EmployeeRole/Role schema.org supertypes, where more specific). This is the join between Person and Organization, and the reason the model can answer 'who was mayor in 2019' rather than only 'who is mayor'. Follows the schema.org Role idiom: the Role sits in the property slot, and the property name repeats inside it to carry the actual value. |
Yes |
roleName |
string |
Title of the office as the body names it locally, e.g. 'Alcalde', 'Ratsvorsitzende', 'Chair'. | Yes |
member |
Reference |
The Person holding the office. Repeating the outer property name here is the schema.org Role idiom, not a mistake. |
Yes |
memberOf |
Reference |
The Organization, when the Role is published standalone rather than nested under one. |
No |
post |
Reference |
The Post this tenure fills, when the org profile is in use. Grouping Roles by Post is what turns a list of officeholders into a succession. |
No |
startDate |
string |
When this tenure began. | No |
endDate |
string |
Absent means the role is current. | No |
identifier |
Identifier[] |
Any scheme-qualified identifiers for this role beyond its @id. |
No |
representsJurisdiction |
Reference |
For seats tied to a district or ward rather than the whole area - a Jurisdiction of level submunicipal or subregional. |
No |
sourceDataset |
string |
The Dataset this record was published as part of. |
No |
{
"@type": "OrganizationRole",
"@id": "https://example-city.gov/id/role/mayor-2023",
"roleName": "Mayor",
"startDate": "2023-01-01",
"member": {
"@id": "https://example-city.gov/id/person/jane-smith",
"name": "Jane Smith"
},
"post": {
"@id": "https://example-city.gov/id/post/mayor"
}
}