AXIOM|
LayerOverwatchLocusCodex
Ontology crosswalk

Permit Signals — Ontology Crosswalk

Schema: upcoming (extends events-timeline — all permit rows live under event_category='civic' with event_type LIKE 'permit.%') Target standards: DCAT-US v3.0 (dataset-level), schema.org/GovernmentPermit + schema.org/ConstructionPermit, W3C PROV-DM (permit lifecycle as activity chain) Authority: Schema.org, W3C, U.S. DOC Status: FAIR-aligned, schema.org rich-results compatible Dataset SPDX license: CC-BY-4.0 (research) · proprietary commercial


1. Why this pairing

Permit data is structurally a lifecycle — filed → approved → issued → finaled / revoked / expired. schema.org/ConstructionPermit gives us the consumer-facing semantic surface, GovernmentPermit the more general slot. Because each stage is a separate record in the Events Timeline linked by metadata.related_event_ids, PROV-DM is the right way to express the chain.


2. Dataset-level (DCAT-US v3.0)

DCAT-US field Value
dct:identifier urn:axiom:codex:dataset:permit-signals:v1.0.0
dct:title "Axiom Permit Signals Dataset"
dct:description "Building, demolition, zoning, and construction permits across U.S. jurisdictions with LLM-classified scope extraction, parcel linkage, and developer entity resolution."
dcat:keyword ["permits", "construction", "zoning", "parcels", "development-pipeline"]
dcat:theme ["http://publications.europa.eu/resource/authority/data-theme/REGI", "...ECON"]
dct:license CC-BY-4.0 (research)

3. Record-level crosswalk → schema.org/ConstructionPermit

{
  "@context": "https://schema.org",
  "@type": "ConstructionPermit",
  "@id": "urn:axiom:event:3f8a0e12-1b2c-4d5e-9f7a-6d1e2c3b4a5f",
  "identifier": [
    {"@type": "PropertyValue", "propertyID": "jurisdiction-native", "value": "SF-BP-2026-01234"}
  ],
  "validFrom": "2026-03-14",
  "validThrough": "2027-03-14",
  "issuedBy": {
    "@type": "GovernmentOrganization",
    "name": "San Francisco Department of Building Inspection"
  },
  "validIn": {
    "@type": "Place",
    "address": {"streetAddress": "2200 N. Broad St", "addressLocality": "Philadelphia", "addressRegion": "PA"}
  },
  "permitType": "axiom:permit.newConstruction",
  "actionStatus": "axiom:permit.approved",
  "axiom:declaredValueUSD": 2400000,
  "axiom:parcelId": "philadelphia-pa:123-456-789",
  "axiom:h3Index": "88283082b9fffff",
  "axiom:llmClassified": true,
  "axiom:scopeExtract": {
    "floors_added": 3,
    "units_added": 18,
    "demolition_included": false
  }
}

3.1 Field-by-field mapping

Codex field schema.org Notes
event_id @id Links to Events Timeline
source_ref identifier[].value Jurisdiction-native permit number
permit_type permitType (axiom-namespaced value) Enum — see §4
event_type actionStatus e.g. permit.filedaxiom:permit.filed
occurred_at dateCreated or validFrom by stage Stage-dependent
effective_from validFrom
effective_to validThrough
issuing_agency issuedBy.GovernmentOrganization
jurisdiction_slug Embedded in issuedBy.name
address validIn.Place.address
parcel_id axiom:parcelId See JOIN_KEYS §4.6
h3_index axiom:h3Index
declared_value axiom:declaredValueUSD
scope_extract axiom:scopeExtract (LLM output) Structured JSON
applicant_entity_urn axiom:applicantEntityUrn AXC-22 entity resolution

4. permit_type enum (Codex-namespaced)

schema.org/ConstructionPermit doesn't define a permit-type taxonomy. Codex publishes one under axiom:permit.*:

  • axiom:permit.newConstruction
  • axiom:permit.addition
  • axiom:permit.alteration
  • axiom:permit.demolition
  • axiom:permit.changeOfUse
  • axiom:permit.zoning (variance, rezoning, special exception)
  • axiom:permit.signage
  • axiom:permit.mechanical (HVAC, plumbing, electrical)
  • axiom:permit.fire
  • axiom:permit.other

5. Lifecycle as PROV-DM

Each permit is a cascade in Events Timeline — permit.filedpermit.approvedpermit.completed (or the revoked/cancelled branches). The full chain is emitted as a PROV-DM prov:wasInformedBy graph; see events-timeline ontology crosswalk §5.

Typical stage-linked JSON-LD fragment:

{
  "@id": "urn:axiom:event:<completed-event-uuid>",
  "@type": "prov:Activity",
  "prov:type": "permit.completed",
  "prov:wasInformedBy": [
    {"@id": "urn:axiom:event:<approved-event-uuid>"},
    {"@id": "urn:axiom:event:<filed-event-uuid>"}
  ]
}

6. FAIR compliance

Principle Status
F ✅ (schema.org/ConstructionPermit indexed; DCAT-US)
A ✅ (Parquet + JSON-LD; OGC Features API)
I ✅ (schema.org + PROV-DM + DCAT-US aligned)
R ✅ (CC-BY-4.0 research tier, versioned schema)

7. Deviations

  • ConstructionPermit was added to schema.org in 2020 and is not universally indexed. For broader compatibility, Codex additionally emits a schema.org/GovernmentPermit view with identical fields.
  • Jurisdiction-native permit_type values vary wildly. Every jurisdiction has its own vocabulary. Codex normalizes to the 10-value axiom:permit.* enum (§4); the raw source value is preserved in axiom:sourcePermitType.
  • LLM scope_extract is confidence-rated. Not all permits have narrative scope text; when present, the LLM extraction carries a confidence field; consumers should filter on it for analytic use (< 0.7 suggests hand review needed).

8. Changelog

  • v1.0 (2026-04-16) — Initial crosswalk. Permit Signals is published as a view over Events Timeline (event_type LIKE 'permit.%') rather than a separate dataset.