Wikidata + Google KG MCP

Closed identity reason codes#

The high-level operations reuse the existing resolver vocabulary. They do not introduce synonyms such as EXACT_CANONICAL_NAME alongside NAME_EXACT, or COORDINATE_MATCH alongside GEO_MATCH. The complete closed vocabulary is the union below. Codes can describe evidence or uncertainty; only verdict decides the outcome. Codes are case-sensitive and contain no numeric probability.

Concept Existing code Semantics
Exact canonical name NAME_EXACT Normalized exact label comparison
Alias ALIAS_MATCH A supplied/observed alias matched
Expected kind KIND_COMPATIBLE / KIND_CONFLICT Observed classes match/contradict requested grain
Official URL OFFICIAL_HOST_EXACT / OFFICIAL_HOST_PARTIAL / OFFICIAL_HOST_CONFLICT Dedicated URL comparison, partial shared site, or observed different sites
Coordinates GEO_MATCH / GEO_NEAR / GEO_CONFLICT Precision-aware distance; not an identity probability
Street address ADDRESS_MATCH / ADDRESS_CONFLICT Structured address corroboration or incompatible house numbers on the same street
City CITY_MATCH / CITY_CONFLICT Administrative context, with structured ancestry for contradictions
Country COUNTRY_MATCH / COUNTRY_CONFLICT Supplied ISO/country compared with observed country
Role/context ROLE_MATCH, AFFILIATION_MATCH, CREATOR_MATCH, VENUE_MATCH, ORGANIZER_MATCH Known relation compared with structured Wikidata facts
Role mismatch ROLE_CONFLICT Reserved for actual exclusive role contradictions; nonmatching/incomplete occupations do not emit this code
Multiple namesakes MULTIPLE_VIABLE_IDENTITIES, MULTIPLE_ANCHORED_CANDIDATES Several plausible or anchored identities remain
Namesake risk KIND_UNVERIFIED, GENERIC_NAME_GEO_ONLY, NO_LOCAL_ANCHOR Grain or corroboration insufficient; candidate counts/omission warnings also show bounded search limits
Contradicted existing QID KNOWN_ID_CONTRADICTED Actual contradiction of the supplied identifier; absence or stronger alternative alone is insufficient
Exact provider join EXTERNAL_ID_EXACT Observed Google ID equals Wikidata P646/P2671; concordance only
Conflicting provider join PROVIDER_JOIN_CONFLICT Exact join paths disagree; never auto-confirm

Comparison thresholds#

Coordinates match within max(0.3 km, the source coordinate precision), capped at 2 km. Strong place geography contradictions use a distance over 5 km; nearby values remain supporting or uncertain rather than wrong identity. Coordinates alone cannot confirm a generic-name place. URL path equality matters for multi-tenant hosts and person/organization pages. A shared root cannot substitute for a branch's own path. Address matches need street and house evidence in the strict identity policy; shared city/postcode alone is insufficient.

An observed country/type/host/geographic contradiction can make an existing ID wrong. A missing fact cannot. Occupations are not necessarily exhaustive or exclusive, so a missing role is insufficient evidence, not automatically a contradiction. Provider join conflicts are ambiguity, not proof that a local supplied QID is wrong. See Identity guide.

Provider concordance#

External sources agree with each other. This never independently anchors a local entity.

EXTERNAL_ID_EXACT, PROVIDER_HOST_AGREEMENT, PROVIDER_NAME_AGREEMENT, PROVIDER_TYPE_COMPATIBLE, WIKIPEDIA_EXACT.

Local corroboration#

Positive comparisons between caller evidence and provider facts.

ADDRESS_MATCH, AFFILIATION_MATCH, CITY_MATCH, COUNTRY_MATCH, CREATOR_MATCH, EVENT_DATE_MATCH, GEO_MATCH, GEO_NEAR, OFFICIAL_HOST_EXACT, OFFICIAL_HOST_PARTIAL, ORGANIZER_MATCH, ROLE_MATCH, VENUE_MATCH, YEAR_MATCH.

Identity evidence#

Names, types and supplied identifiers; these are not opaque confidence scores.

ALIAS_MATCH, KIND_COMPATIBLE, KNOWN_GOOGLE_ID_MATCH, KNOWN_QID_MATCH, NAME_EXACT, NAME_PARTIAL, NAME_VARIANT.

Contradictions#

Negative comparisons. Soft legacy conflicts remain visible; the strict audit separately tests actual contradiction.

ADDRESS_CONFLICT, CITY_CONFLICT, COUNTRY_CONFLICT, CREATOR_CONFLICT, EVENT_DATE_CONFLICT, EVENT_GRAIN_CONFLICT, GEO_CONFLICT, KIND_CONFLICT, KNOWN_ID_CONFLICT, OFFICIAL_HOST_CONFLICT, ORGANIZER_CONFLICT, PROVIDER_JOIN_CONFLICT, ROLE_CONFLICT, VENUE_CONFLICT, YEAR_CONFLICT.

Decision reasons#

Why selection, ambiguity, hold or rejection occurred. Legacy arbitration reasons remain for backward compatibility.

ALL_CANDIDATES_REJECTED, ANCHORED_CANDIDATE_CONFLICTED, ARBITRATION_BUDGET, ARBITRATION_DISABLED, ARBITRATION_FAILED, AUTO_KIND_RULE_PASSED, AUTO_TRUSTED_KNOWN_ID, BUDGET_EXHAUSTED, EVENT_OCCURRENCE_EVIDENCE_MISSING, GENERIC_NAME_GEO_ONLY, INVALID_INPUT, KIND_POLICY_FAIL_CLOSED, KIND_UNVERIFIED, KNOWN_IDS_DISAGREE, KNOWN_ID_CONTRADICTED, KNOWN_ID_UNVERIFIED, MODEL_DECLINED, MODEL_SELECTED, MULTIPLE_ANCHORED_CANDIDATES, MULTIPLE_VIABLE_IDENTITIES, NAME_PARTIAL_ONLY, NO_LOCAL_ANCHOR, NO_NAME_MATCH, NO_PROVIDER_RESULT, PERSON_REQUIRES_REVIEWED_ANCHOR, PROVIDER_ERROR, SOFT_CONFLICT_PRESENT, WORK_CREATOR_REQUIRED.

A policy change increments RESOLVER_POLICY_VERSION; unexpired provider observations can then be re-evaluated. A decision record carries its input and policy fingerprint.

Documentation for version 0.3.0 · Changelog · Issues