381 lines
13 KiB
YAML
381 lines
13 KiB
YAML
# GoogleMapsEnrichment - Full Google Maps Places API enrichment data
|
|
# Extracted from custodian_source.yaml per Rule 38 (modular schema files)
|
|
# Extraction date: 2026-01-08
|
|
|
|
id: https://nde.nl/ontology/hc/classes/GoogleMapsEnrichment
|
|
name: GoogleMapsEnrichment
|
|
title: GoogleMapsEnrichment
|
|
|
|
prefixes:
|
|
linkml: https://w3id.org/linkml/
|
|
hc: https://nde.nl/ontology/hc/
|
|
schema: http://schema.org/
|
|
prov: http://www.w3.org/ns/prov#
|
|
xsd: http://www.w3.org/2001/XMLSchema#
|
|
|
|
imports:
|
|
- linkml:types
|
|
|
|
|
|
- ./AddressComponent
|
|
- ./AdmissionInfo
|
|
- ./Coordinates
|
|
- ./GooglePhoto
|
|
- ./GoogleReview
|
|
- ./LlmVerification
|
|
- ./OpeningHours
|
|
- ./PhotoMetadata
|
|
- ./PlaceFeature
|
|
- ./RejectedGoogleMapsData
|
|
- ./RelatedPlace
|
|
- ./ReviewBreakdown
|
|
- ./ReviewsSummary
|
|
default_range: string
|
|
|
|
classes:
|
|
GoogleMapsEnrichment:
|
|
class_uri: prov:Entity
|
|
description: >-
|
|
Full Google Maps Places API enrichment data for a heritage custodian location.
|
|
|
|
prov:Entity - "An entity is a physical, digital, conceptual, or other kind of thing
|
|
with some fixed aspects; entities may be real or imaginary."
|
|
|
|
This class represents ENRICHMENT DATA extracted from Google Maps API about a place,
|
|
not the place itself. It captures metadata like ratings, reviews, photos, opening hours,
|
|
and address components that describe a heritage institution's physical location.
|
|
|
|
Mapping rationale:
|
|
- Uses prov:Entity because this is data derived from an external source (Google Maps API)
|
|
- The enrichment has clear provenance (API call, timestamp, place_id)
|
|
- NOT schema:Place - that would represent the actual location, not metadata about it
|
|
- Related to schema:Place as the subject being described
|
|
close_mappings:
|
|
- schema:PropertyValue # Similar: structured metadata about something
|
|
related_mappings:
|
|
- schema:Place # The subject this enrichment describes
|
|
- schema:LocalBusiness # Related: Google Maps often returns business data
|
|
- prov:Generation # The activity that created this enrichment
|
|
attributes:
|
|
place_id:
|
|
range: string
|
|
description: Google Maps place ID
|
|
name:
|
|
range: string
|
|
description: Place name from Google
|
|
fetch_timestamp:
|
|
range: datetime
|
|
api_status:
|
|
range: string
|
|
coordinates:
|
|
range: Coordinates
|
|
formatted_address:
|
|
range: string
|
|
short_address:
|
|
range: string
|
|
address_components:
|
|
range: AddressComponent
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
phone_local:
|
|
range: string
|
|
phone_international:
|
|
range: string
|
|
website:
|
|
slot_uri: hc:hasWebsite
|
|
range: uri
|
|
description: Official website URL from Google Maps data
|
|
close_mappings:
|
|
- schema:url
|
|
google_place_types:
|
|
range: string
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
types:
|
|
range: string
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
description: Place types (alias for google_place_types, from older API versions)
|
|
primary_type:
|
|
range: string
|
|
business_status:
|
|
range: string
|
|
opening_hour:
|
|
range: OpeningHours
|
|
opening_hours:
|
|
range: Any
|
|
description: Opening hours information (flexible structure for various formats)
|
|
inlined: true
|
|
rating:
|
|
range: float
|
|
description: Average rating (0-5)
|
|
total_ratings:
|
|
range: integer
|
|
description: Number of ratings
|
|
reviews:
|
|
range: GoogleReview
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
photo_urls:
|
|
range: uri
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
photos_metadata:
|
|
range: PhotoMetadata
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
google_maps_url:
|
|
range: uri
|
|
street_view_url:
|
|
range: uri
|
|
icon_mask_uri:
|
|
range: uri
|
|
icon_background_color:
|
|
range: string
|
|
utc_offset_minutes:
|
|
range: integer
|
|
editorial_summary:
|
|
range: string
|
|
description: Editorial summary text from Google Maps
|
|
photo_count:
|
|
range: integer
|
|
description: Number of photos available
|
|
llm_verification:
|
|
range: LlmVerification
|
|
description: LLM verification results
|
|
user_rating_count:
|
|
range: integer
|
|
description: Alias for total_ratings
|
|
user_ratings_total:
|
|
range: integer
|
|
description: Total number of user ratings (Google Places API v2 field name)
|
|
latitude:
|
|
range: float
|
|
description: Latitude (flat structure alternative)
|
|
longitude:
|
|
range: float
|
|
description: Longitude (flat structure alternative)
|
|
source:
|
|
range: string
|
|
description: Data source identifier
|
|
enriched_at:
|
|
range: datetime
|
|
description: When enrichment was performed
|
|
search_query:
|
|
range: string
|
|
description: Search query used to find the place
|
|
photos:
|
|
range: GooglePhoto
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
description: Photo metadata from Google Places API
|
|
_match_error:
|
|
range: string
|
|
description: Error message if Google Maps match failed
|
|
google_maps_name:
|
|
range: string
|
|
description: Place name from Google Maps
|
|
name_note:
|
|
range: string
|
|
description: Note about the place name (e.g., explanation of name mapping)
|
|
also_known_as:
|
|
range: string
|
|
description: Alternative names for the place
|
|
address:
|
|
range: string
|
|
description: Full address from Google Maps
|
|
plus_code:
|
|
range: string
|
|
description: Google Plus Code
|
|
phone:
|
|
range: string
|
|
description: Phone number from Google Maps
|
|
business_type:
|
|
range: string
|
|
description: Business category/type
|
|
hours:
|
|
any_of:
|
|
- range: string
|
|
- range: HoursStatus
|
|
description: Opening hours information (string or status object)
|
|
admission:
|
|
any_of:
|
|
- range: string
|
|
- range: AdmissionInfo
|
|
description: Admission price information (string or structured object)
|
|
related_places:
|
|
any_of:
|
|
- range: string
|
|
multivalued: true
|
|
- range: RelatedPlace
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
description: Related places nearby (strings or structured objects)
|
|
review_topics:
|
|
range: string
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
description: Topics mentioned in reviews
|
|
reviews_summary:
|
|
any_of:
|
|
- range: string
|
|
- range: ReviewsSummary
|
|
description: Summary of reviews (string or structured breakdown)
|
|
sample_reviews:
|
|
any_of:
|
|
- range: string
|
|
multivalued: true
|
|
- range: GoogleReview
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
description: Sample review texts or review objects
|
|
total_reviews:
|
|
range: integer
|
|
description: Total number of reviews
|
|
enrichement_timestamp:
|
|
range: datetime
|
|
description: When Google Maps enrichment was performed
|
|
place_name:
|
|
range: string
|
|
description: Place name (alternative to name field)
|
|
place_type:
|
|
range: string
|
|
description: Place type classification
|
|
google_place_type:
|
|
range: string
|
|
description: Google place type (alternative name)
|
|
located_in:
|
|
range: string
|
|
description: Containing location or building
|
|
nearby_organizations:
|
|
any_of:
|
|
- range: string
|
|
multivalued: true
|
|
- range: NearbyOrganization
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
description: Nearby organizations (strings or structured objects)
|
|
features:
|
|
any_of:
|
|
- range: string
|
|
multivalued: true
|
|
- range: PlaceFeature
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
description: Features of the place (strings or key-value objects)
|
|
hours_status:
|
|
range: string
|
|
description: Current opening status (e.g., "Closed · Opens 2 pm Wed")
|
|
review_breakdown:
|
|
range: ReviewBreakdown
|
|
description: Breakdown of reviews by star rating
|
|
review_summary:
|
|
range: ReviewBreakdown
|
|
description: Summary of reviews by star rating (alias)
|
|
enrichment_timestamp:
|
|
range: datetime
|
|
description: When enrichment was performed (alternative spelling)
|
|
updated_timestamp:
|
|
range: datetime
|
|
description: When data was last updated
|
|
user_provided_link:
|
|
range: uri
|
|
description: User-provided Google Maps link
|
|
associated_organization:
|
|
range: string
|
|
description: Associated organization name
|
|
note:
|
|
range: string
|
|
description: Notes about the Google Maps entry
|
|
status:
|
|
range: string
|
|
description: Status of enrichment (REJECTED, VERIFIED, FALSE_MATCH, etc.)
|
|
rejection_reason:
|
|
range: string
|
|
description: Reason for rejection if status is REJECTED
|
|
correction_agent:
|
|
range: string
|
|
description: Agent that performed the correction (e.g., opencode-claude-sonnet-4)
|
|
correction_timestamp:
|
|
range: datetime
|
|
description: When the correction was made
|
|
correction_method:
|
|
range: string
|
|
description: Method used for correction (e.g., manual_name_mismatch_review, automated_rejection)
|
|
false_match_reason:
|
|
range: string
|
|
description: Explanation of why Google Maps returned an incorrect match (per Rule 40)
|
|
original_false_match:
|
|
range: Any
|
|
description: >-
|
|
Original data from the false Google Maps match, preserved for audit trail.
|
|
Contains place_id, name, address, coordinates, website, etc. from the incorrectly
|
|
matched place.
|
|
inlined: true
|
|
rejected_data:
|
|
range: RejectedGoogleMapsData
|
|
description: Original rejected Google Maps data
|
|
search_status:
|
|
range: string
|
|
description: Search status (found_via_user_link, etc.)
|
|
search_timestamp:
|
|
range: datetime
|
|
description: When search was performed
|
|
search_queries_tried:
|
|
range: string
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
description: List of search queries that were attempted
|
|
alternate_address:
|
|
range: string
|
|
description: Alternative address for the location
|
|
wheelchair_accessible:
|
|
range: boolean
|
|
description: Whether the location is wheelchair accessible
|
|
rejection_timestamp:
|
|
range: datetime
|
|
description: When the Google Maps data was rejected
|
|
business_status_note:
|
|
range: string
|
|
description: Note about business status
|
|
place_name_local:
|
|
range: string
|
|
description: Place name in local language
|
|
nearby_attractions:
|
|
range: string
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
description: Nearby tourist attractions
|
|
review_keywords:
|
|
range: string
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
description: Keywords extracted from reviews
|
|
match_notes:
|
|
range: string
|
|
description: Notes about how the Google Maps match was determined
|
|
price_level:
|
|
any_of:
|
|
- range: integer
|
|
- range: string
|
|
description: Google Maps price level (0-4 or string description)
|
|
match_warning:
|
|
range: string
|
|
description: Warning about potential issues with the match
|
|
location_note:
|
|
range: string
|
|
description: Note about the physical location of the place
|
|
search_attempted:
|
|
range: boolean
|
|
description: Whether a Google Maps search was attempted
|
|
result:
|
|
range: string
|
|
description: Result of search operation (found, not_found, found_via_user_link,
|
|
etc.)
|
|
_provenance:
|
|
range: Any
|
|
description: >-
|
|
Provenance metadata for the Google Maps enrichment section, including content hash,
|
|
PROV-O triples (wasGeneratedBy, wasDerivedFrom), and verification status.
|
|
Uses flexible Any type to accommodate varying provenance structures.
|
|
inlined: true
|