# Field definitions and data dictionary

Publisher: DealerClaw. Schema.org v30.0. Published names-withheld edition.

The private analysis contains 486 included website records, 2,430 analytic pages, 27,093 field observations and 817 attempted websites. The public release contains summary tables and these definitions. Original source values and identifiers remain private. Blank numeric values mean unavailable, not zero.

## Dimensions and statuses

Presence is an observed declaration. Completeness is an explicit nonempty property on a bound relevant entity. Technical checks are a limited set of parse, vocabulary, reference and representation checks. Content agreement requires corresponding values for the same entity and role. These are separate measurements.

`match_candidate` and `mismatch_candidate` are automated classifications requiring audit; neither means manual verification. `ambiguous`, `missing_visible`, `missing_schema` and `not_comparable` are separate outcomes. A missing visible extraction is not proof the field is absent in all interactions. Final confirmed findings require the verification ledger.

A positive type can be reported from surviving good markup when another block fails, but a failed block/context prevents an unqualified absence assertion. Explicit type flags differ from inherited coverage: Car includes Vehicle/Product and AutoDealer includes LocalBusiness/Organization; BreadcrumbList inheritance does not establish a vehicle list.

## Fields

### business.name

Paths: `name | legalName`.

Compare the bound business name to rendered text. Legal/trading-name differences require review.

### business.address

Paths: `address`.

Text address can be compared as text. PostalAddress is assessed through street/locality/region/postal components.

### business.street_address

Paths: `address.streetAddress`.

Exact normalized text agreement is a candidate; abbreviation differences and multiple locations require review.

### business.locality

Paths: `address.addressLocality`.

Explicit locality value; do not infer municipality from a ZIP code.

### business.region

Paths: `address.addressRegion`.

Explicit state/region value; field absence and source-directory state are distinct.

### business.postal_code

Paths: `address.postalCode`.

Explicit postal-code value; retain ZIP+4 versus base ZIP differences for review.

### business.country

Paths: `address.addressCountry | address.addressCountry.name`.

Explicit country property; U.S. site eligibility is separately supported by source and visible location.

### business.phone

Paths: `telephone | contactPoint.telephone`.

At least one normalized schema number can match displayed text. Sales/service/call-tracking role equivalence is not automatic.

### business.hours

Paths: `openingHours | openingHoursSpecification`.

Measure explicit schedule markup. Department, holiday, overnight and appointment rules require manual semantic review.

### business.latitude

Paths: `geo.latitude | latitude`.

Numeric coordinates can be present without a visually comparable value. An address is not a visible latitude.

### business.longitude

Paths: `geo.longitude | longitude`.

Numeric coordinates can be present without a visually comparable value. An address is not a visible longitude.

### business.identity_links

Paths: `sameAs`.

sameAs URL presence and displayed-link equality are measured. Destination account ownership is not automatically verified.

### business.url

Paths: `url`.

Explicit URL or identity reference; preserve substantive query parameters and actual destination.

### vehicle.name

Paths: `name`.

Compare the bound business name to rendered text. Legal/trading-name differences require review.

### vehicle.vin

Paths: `vehicleIdentificationNumber`.

Dedicated vehicleIdentificationNumber, bound to the primary VDP vehicle. Generic productID/sku are retained separately and do not silently fill VIN.

### vehicle.model_year

Paths: `vehicleModelDate`.

Explicit vehicleModelDate; compare its year with a labeled year or primary vehicle heading. Do not infer a schema year from the name.

### vehicle.make_brand

Paths: `brand | manufacturer`.

Explicit brand, falling back to manufacturer. Exact recognized make/heading agreement is a candidate; corporate make aliases need review.

### vehicle.model

Paths: `model`.

Explicit model property; exact normalized primary heading/label agreement is a candidate.

### vehicle.trim_configuration

Paths: `vehicleConfiguration`.

Explicit vehicleConfiguration; headings do not silently fill a missing schema property. Broader body configuration versus trim needs review.

### vehicle.mileage

Paths: `mileageFromOdometer.value`.

Explicit mileageFromOdometer value with units; compare only when units on both sides are known. Convert mi/km with half-mile display rounding tolerance.

### vehicle.mileage_units

Paths: `mileageFromOdometer.unitCode | mileageFromOdometer.unitText`.

unitCode/unitText, normalized only for known mi/km codes. Different valid units alone are not an error.

### vehicle.condition

Paths: `itemCondition | offers.itemCondition`.

Explicit itemCondition on vehicle/linked offer; normalize NewCondition and UsedCondition. CPO is grouped as used for selection, while original wording is retained.

### vehicle.price

Paths: `offers.price | offers.priceSpecification.price`.

Explicit related Offer.price or priceSpecification.price. Preserve amount, currency, offer identity, role and qualifiers. MSRP/selling/conditional/finance/lease remain distinct.

### vehicle.currency

Paths: `offers.priceCurrency | offers.priceSpecification.priceCurrency`.

Explicit priceCurrency. A dollar symbol alone does not establish USD in the visible-comparison denominator.

### vehicle.availability

Paths: `offers.availability`.

Explicit related offer availability. A listing, enquiry button or mere page existence is not proof of InStock.

### vehicle.images

Paths: `image`.

Explicit image values/linked image nodes. Identical loaded visible URL supports URL agreement only; photograph/vehicle correctness requires visual review.

### vehicle.seller

Paths: `offers.seller | seller | offers.offeredBy | inverse makesOffer`.

Explicit offer seller/offeredBy or inverse makesOffer link. Generic footer business markup does not silently become seller.

### vehicle.url

Paths: `url`.

Explicit URL or identity reference; preserve substantive query parameters and actual destination.

### vehicle.stock_identifier

Paths: `sku | productID | identifier`.

sku, productID or identifier recorded as declared; not assumed equivalent without identity evidence.

### offer.price

Paths: `price | priceSpecification.price`.

Explicit related Offer.price or priceSpecification.price. Preserve amount, currency, offer identity, role and qualifiers. MSRP/selling/conditional/finance/lease remain distinct.

### offer.currency

Paths: `priceCurrency | priceSpecification.priceCurrency`.

Explicit priceCurrency. A dollar symbol alone does not establish USD in the visible-comparison denominator.

### offer.availability

Paths: `availability`.

Explicit related offer availability. A listing, enquiry button or mere page existence is not proof of InStock.

### offer.condition

Paths: `itemCondition`.

Explicit itemCondition on vehicle/linked offer; normalize NewCondition and UsedCondition. CPO is grouped as used for selection, while original wording is retained.

### offer.seller

Paths: `seller`.

Explicit offer seller/offeredBy or inverse makesOffer link. Generic footer business markup does not silently become seller.

### offer.url

Paths: `url`.

Explicit URL or identity reference; preserve substantive query parameters and actual destination.

### offer.item_offered

Paths: `itemOffered`.

Explicit itemOffered binding; inverse offer links can enrich the bound vehicle.

### offer.price_specification

Paths: `priceSpecification`.

Explicit PriceSpecification node/reference; multiple components are not inherently conflicting.

### offer.price_valid_until

Paths: `priceValidUntil`.

Declared validity date retained; expiry interpretation requires observation time and timezone.

### inventory.displayed_vehicle_membership

Paths: `ItemList.itemListElement | Vehicle/Product.url | vehicleIdentificationNumber | supported linked nodes`.

Displayed identity represented in schema is a candidate. Unmatched entries may be paginated inventory; do not infer count mismatch.

## Operational fields

- `capture_status`: captured, loaded_after_navigation_timeout, blocked, http_error or unreadable.
- `analytic`: membership in the selected home/SRP/three-VDP set. Extra inventory pages are discovery only.
- `source_integrity_passed`: saved decoded HTML/text hashes and required evidence files checked.
- `analysis_complete`: both source states processed, potentially with disclosed limitations.
- `presence_eligible` / `absence_eligible`: page-level eligibility, never substitutes for final site admission.
- `admission_status`: automated_checks_passed, needs_review, incomplete or excluded. This is not blanket manual verification.
- `provider_evidence_status`: supported attribution or unknown. Source assets alone are not confirmed provider attribution.
- `schema_stable_between_snapshots`: early/final JSON-LD block strings unchanged; this does not claim all page content or all syntaxes were stable.
- `text_stable_between_snapshots`: rendered text strings unchanged between the two saved browser snapshots.

Original collection scripts and method amendments are retained privately. No composite score is calculated.
