PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX geo:     <http://www.opengis.net/ont/geosparql#>
PREFIX prov:    <http://www.w3.org/ns/prov#>
PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>

<#roads.other>  a         rdfs:Class;
        rdfs:comment      "From OSM highway=* values no rule above names (e.g. highway=living_street, highway=services); the highway value in kind_detail, service=* kept";
        rdfs:isDefinedBy  <>;
        rdfs:label        "roads other";
        rdfs:subClassOf   <#roads> .

<#water.basin>  a         rdfs:Class;
        rdfs:comment      "From OSM landuse=basin";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water basin";
        rdfs:subClassOf   <#water> .

<#water.strait>  a        rdfs:Class;
        rdfs:comment      "From OSM natural=strait, as a label point";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water strait";
        rdfs:subClassOf   <#water> .

<#boundaries.unrecognized_country>
        a                 rdfs:Class;
        rdfs:comment      "From Natural Earth admin-0 lines (unrecognized); no OSM tag";
        rdfs:isDefinedBy  <>;
        rdfs:label        "boundaries unrecognized_country";
        rdfs:subClassOf   <#boundaries> .

<#landcover.farmland>
        a                 rdfs:Class;
        rdfs:comment      "From Daylight landcover class crop; no OSM tag";
        rdfs:isDefinedBy  <>;
        rdfs:label        "landcover farmland";
        rdfs:subClassOf   <#landcover> .

<#pois.aerodrome>  a      rdfs:Class;
        rdfs:comment      "From OSM aeroway=aerodrome; the aerodrome=* value in kind_detail";
        rdfs:isDefinedBy  <>;
        rdfs:label        "pois aerodrome";
        rdfs:subClassOf   <#pois> .

<#roads>  a               rdfs:Class;
        rdfs:comment      "Roads, railways, paths, ferries, runways and aerial ways, as lines";
        rdfs:isDefinedBy  <>;
        rdfs:label        "roads";
        rdfs:subClassOf   <#Feature> .

<#Selection>  a           rdfs:Class;
        rdfs:comment      "The features of a box (feature?bbox=): the features of the cells the box touches, cut to the box, each keeping its cell IRI";
        rdfs:isDefinedBy  <>;
        rdfs:label        "Selection" .

<#roads.aeroway>  a       rdfs:Class;
        rdfs:comment      "From OSM aeroway=runway, aeroway=taxiway; that value in kind_detail";
        rdfs:isDefinedBy  <>;
        rdfs:label        "roads aeroway";
        rdfs:subClassOf   <#roads> .

<#roads.rail>  a          rdfs:Class;
        rdfs:comment      "From OSM railway=*; its value in kind_detail";
        rdfs:isDefinedBy  <>;
        rdfs:label        "roads rail";
        rdfs:subClassOf   <#roads> .

<#landcover.grassland>
        a                 rdfs:Class;
        rdfs:comment      "From Daylight landcover class grass; no OSM tag";
        rdfs:isDefinedBy  <>;
        rdfs:label        "landcover grassland";
        rdfs:subClassOf   <#landcover> .

<#water.water>  a         rdfs:Class;
        rdfs:comment      "From OSM natural=water; the water=* value in kind_detail";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water water";
        rdfs:subClassOf   <#water> .

<#boundaries>  a          rdfs:Class;
        rdfs:comment      "Administrative boundaries: OSM relations with boundary=administrative (or boundary=disputed, boundary=claim) by admin_level; Natural Earth lines at low zooms";
        rdfs:isDefinedBy  <>;
        rdfs:label        "boundaries";
        rdfs:subClassOf   <#Feature> .

<#roads.highway>  a       rdfs:Class;
        rdfs:comment      "From OSM highway=motorway, highway=motorway_link";
        rdfs:isDefinedBy  <>;
        rdfs:label        "roads highway";
        rdfs:subClassOf   <#roads> .

<#transit>  a             rdfs:Class;
        rdfs:comment      "Passenger services (empty in basemap v4)";
        rdfs:isDefinedBy  <>;
        rdfs:label        "transit";
        rdfs:subClassOf   <#Feature> .

<#landcover.urban_area>
        a                 rdfs:Class;
        rdfs:comment      "From Daylight landcover class urban; no OSM tag";
        rdfs:isDefinedBy  <>;
        rdfs:label        "landcover urban_area";
        rdfs:subClassOf   <#landcover> .

<#water.riverbank>  a     rdfs:Class;
        rdfs:comment      "From OSM waterway=riverbank";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water riverbank";
        rdfs:subClassOf   <#water> .

<#water.canal>  a         rdfs:Class;
        rdfs:comment      "From OSM waterway=canal";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water canal";
        rdfs:subClassOf   <#water> .

<#pois.military>  a       rdfs:Class;
        rdfs:comment      "From OSM landuse=military (military=naval_base or military=airfield keep that value)";
        rdfs:isDefinedBy  <>;
        rdfs:label        "pois military";
        rdfs:subClassOf   <#pois> .

<#buildings.address>  a   rdfs:Class;
        rdfs:comment      "From OSM addr:housenumber=*, as a point";
        rdfs:isDefinedBy  <>;
        rdfs:label        "buildings address";
        rdfs:subClassOf   <#buildings> .

<#places.country>  a      rdfs:Class;
        rdfs:comment      "From OSM place=country";
        rdfs:isDefinedBy  <>;
        rdfs:label        "places country";
        rdfs:subClassOf   <#places> .

<#earth.earth>  a         rdfs:Class;
        rdfs:comment      "Land polygons from OSMCoastline (derived from OSM natural=coastline); Natural Earth land at zooms 0 to 5";
        rdfs:isDefinedBy  <>;
        rdfs:label        "earth earth";
        rdfs:subClassOf   <#earth> .

<#water>  a               rdfs:Class;
        rdfs:comment      "Water areas, waterways and water labels";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water";
        rdfs:subClassOf   <#Feature> .

<#pois>  a                rdfs:Class;
        rdfs:comment      "Points of interest; a kind is the value of the element's OSM tag under the last of these keys it has: boundary, historic, tourism, shop, highway, railway, natural, leisure, landuse, aeroway, craft, attraction, amenity (shop=hairdresser gives hairdresser; amenity wins over shop); the key is dropped. The kinds below are renamed";
        rdfs:isDefinedBy  <>;
        rdfs:label        "pois";
        rdfs:subClassOf   <#Feature> .

<#buildings>  a           rdfs:Class;
        rdfs:comment      "Buildings, building parts and address points";
        rdfs:isDefinedBy  <>;
        rdfs:label        "buildings";
        rdfs:subClassOf   <#Feature> .

<#water.stream>  a        rdfs:Class;
        rdfs:comment      "From OSM waterway=stream";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water stream";
        rdfs:subClassOf   <#water> .

<#boundaries.country>
        a                 rdfs:Class;
        rdfs:comment      "From OSM boundary=administrative with admin_level=2; Natural Earth admin-0 lines at low zooms";
        rdfs:isDefinedBy  <>;
        rdfs:label        "boundaries country";
        rdfs:subClassOf   <#boundaries> .

<#roads.minor_road>  a    rdfs:Class;
        rdfs:comment      "From OSM highway=residential, highway=unclassified, highway=road, highway=raceway, highway=service (service in kind_detail)";
        rdfs:isDefinedBy  <>;
        rdfs:label        "roads minor_road";
        rdfs:subClassOf   <#roads> .

<#boundaries.macroregion>
        a                 rdfs:Class;
        rdfs:comment      "From Natural Earth admin-1 lines; no OSM tag";
        rdfs:isDefinedBy  <>;
        rdfs:label        "boundaries macroregion";
        rdfs:subClassOf   <#boundaries> .

<#water.lake>  a          rdfs:Class;
        rdfs:comment      "From OSM landuse=reservoir; Natural Earth lakes and reservoirs at low zooms";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water lake";
        rdfs:subClassOf   <#water> .

<#water.swimming_pool>
        a                 rdfs:Class;
        rdfs:comment      "From OSM amenity=swimming_pool, leisure=swimming_pool";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water swimming_pool";
        rdfs:subClassOf   <#water> .

<#water.ditch>  a         rdfs:Class;
        rdfs:comment      "From OSM waterway=ditch";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water ditch";
        rdfs:subClassOf   <#water> .

<#pois.park>  a           rdfs:Class;
        rdfs:comment      "From OSM boundary=national_park";
        rdfs:isDefinedBy  <>;
        rdfs:label        "pois park";
        rdfs:subClassOf   <#pois> .

<#landcover.barren>  a    rdfs:Class;
        rdfs:comment      "From Daylight landcover class barren; no OSM tag";
        rdfs:isDefinedBy  <>;
        rdfs:label        "landcover barren";
        rdfs:subClassOf   <#landcover> .

<#boundaries.locality>
        a                 rdfs:Class;
        rdfs:comment      "From OSM boundary=administrative with admin_level=7, 8 or above (any level not named above)";
        rdfs:isDefinedBy  <>;
        rdfs:label        "boundaries locality";
        rdfs:subClassOf   <#boundaries> .

<#landcover>  a           rdfs:Class;
        rdfs:comment      "Land cover at zooms 0 to 7, from Daylight landcover (ESA WorldCover classes), not from OSM tags";
        rdfs:isDefinedBy  <>;
        rdfs:label        "landcover";
        rdfs:subClassOf   <#Feature> .

<#places.locality>  a     rdfs:Class;
        rdfs:comment      "From OSM place=city, place=town, place=village (that value in kind_detail), place=locality, place=hamlet, place=isolated_dwelling, place=farm, place=allotments";
        rdfs:isDefinedBy  <>;
        rdfs:label        "places locality";
        rdfs:subClassOf   <#places> .

<#earth>  a               rdfs:Class;
        rdfs:comment      "Land";
        rdfs:isDefinedBy  <>;
        rdfs:label        "earth";
        rdfs:subClassOf   <#Feature> .

<#boundaries.lease_limit>
        a                 rdfs:Class;
        rdfs:comment      "From Natural Earth admin-0 lines (lease limit); no OSM tag";
        rdfs:isDefinedBy  <>;
        rdfs:label        "boundaries lease_limit";
        rdfs:subClassOf   <#boundaries> .

<#pois.forest>  a         rdfs:Class;
        rdfs:comment      "From OSM landuse=forest; or boundary=national_park or boundary=protected_area operated by the US Forest Service";
        rdfs:isDefinedBy  <>;
        rdfs:label        "pois forest";
        rdfs:subClassOf   <#pois> .

<#roads.aerialway>  a     rdfs:Class;
        rdfs:comment      "From OSM aerialway=cable_car";
        rdfs:isDefinedBy  <>;
        rdfs:label        "roads aerialway";
        rdfs:subClassOf   <#roads> .

<#boundaries.region>  a   rdfs:Class;
        rdfs:comment      "From OSM boundary=administrative with admin_level=3 or admin_level=4; Natural Earth admin-1 lines";
        rdfs:isDefinedBy  <>;
        rdfs:label        "boundaries region";
        rdfs:subClassOf   <#boundaries> .

<#water.ocean>  a         rdfs:Class;
        rdfs:comment      "Water polygons from OSMCoastline (derived from OSM natural=coastline); OSM place=ocean labels; Natural Earth oceans at low zooms";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water ocean";
        rdfs:subClassOf   <#water> .

<#water.dock>  a          rdfs:Class;
        rdfs:comment      "From OSM waterway=dock";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water dock";
        rdfs:subClassOf   <#water> .

<#boundaries.tz_boundary>
        a                 rdfs:Class;
        rdfs:comment      "From Natural Earth (time zone boundary); no OSM tag. None in build 20261102";
        rdfs:isDefinedBy  <>;
        rdfs:label        "boundaries tz_boundary";
        rdfs:subClassOf   <#boundaries> .

<#places.neighbourhood>
        a                 rdfs:Class;
        rdfs:comment      "From OSM place=neighbourhood, place=suburb (suburb in kind_detail)";
        rdfs:isDefinedBy  <>;
        rdfs:label        "places neighbourhood";
        rdfs:subClassOf   <#places> .

<#Feature>  a             rdfs:Class;
        rdfs:comment      "A feature of the Protomaps basemap, in one layer and of one kind";
        rdfs:isDefinedBy  <>;
        rdfs:label        "Feature";
        rdfs:subClassOf   geo:Feature .

<#Cell>  a                rdfs:Class;
        rdfs:comment      "A Web-Mercator tile z/x/y of one build, with its features";
        rdfs:isDefinedBy  <>;
        rdfs:label        "Cell" .

<#places.region>  a       rdfs:Class;
        rdfs:comment      "From OSM place=state or place=province, in the US, CA, BR, IN, CN and AU only";
        rdfs:isDefinedBy  <>;
        rdfs:label        "places region";
        rdfs:subClassOf   <#places> .

<#landcover.scrub>  a     rdfs:Class;
        rdfs:comment      "From Daylight landcover class shrub; no OSM tag";
        rdfs:isDefinedBy  <>;
        rdfs:label        "landcover scrub";
        rdfs:subClassOf   <#landcover> .

<#water.bay>  a           rdfs:Class;
        rdfs:comment      "From OSM natural=bay, as a label point";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water bay";
        rdfs:subClassOf   <#water> .

<#boundaries.county>  a   rdfs:Class;
        rdfs:comment      "From OSM boundary=administrative with admin_level=5 or admin_level=6";
        rdfs:isDefinedBy  <>;
        rdfs:label        "boundaries county";
        rdfs:subClassOf   <#boundaries> .

<#landuse>  a             rdfs:Class;
        rdfs:comment      "Land use areas: parks, cemeteries, residential, hospitals, …; a kind is the value of the area's OSM tag (landuse=, leisure=, natural=, amenity=, …), the key dropped";
        rdfs:isDefinedBy  <>;
        rdfs:label        "landuse";
        rdfs:subClassOf   <#Feature> .

<#roads.ferry>  a         rdfs:Class;
        rdfs:comment      "From OSM route=ferry";
        rdfs:isDefinedBy  <>;
        rdfs:label        "roads ferry";
        rdfs:subClassOf   <#roads> .

<#boundaries.map_unit>
        a                 rdfs:Class;
        rdfs:comment      "From Natural Earth admin-0 map unit lines; no OSM tag";
        rdfs:isDefinedBy  <>;
        rdfs:label        "boundaries map_unit";
        rdfs:subClassOf   <#boundaries> .

<#roads.path>  a          rdfs:Class;
        rdfs:comment      "From OSM highway=path, highway=footway, highway=cycleway, highway=bridleway, highway=steps, highway=pedestrian, highway=track, highway=corridor; man_made=pier (pier in kind_detail); footway=sidewalk and footway=crossing in kind_detail";
        rdfs:isDefinedBy  <>;
        rdfs:label        "roads path";
        rdfs:subClassOf   <#roads> .

<#buildings.building>
        a                 rdfs:Class;
        rdfs:comment      "From OSM building=* (not building=no), as an area";
        rdfs:isDefinedBy  <>;
        rdfs:label        "buildings building";
        rdfs:subClassOf   <#buildings> .

<#water.fjord>  a         rdfs:Class;
        rdfs:comment      "From OSM natural=fjord, as a label point. None in build 20261102";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water fjord";
        rdfs:subClassOf   <#water> .

<#water.drain>  a         rdfs:Class;
        rdfs:comment      "From OSM waterway=drain";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water drain";
        rdfs:subClassOf   <#water> .

<#boundaries.unrecognized_macroregion>
        a                 rdfs:Class;
        rdfs:comment      "From Natural Earth admin-1 lines (unrecognized); no OSM tag. None in build 20261102";
        rdfs:isDefinedBy  <>;
        rdfs:label        "boundaries unrecognized_macroregion";
        rdfs:subClassOf   <#boundaries> .

<#landcover.glacier>  a   rdfs:Class;
        rdfs:comment      "From Daylight landcover class snow, and Natural Earth glaciated areas; no OSM tag";
        rdfs:isDefinedBy  <>;
        rdfs:label        "landcover glacier";
        rdfs:subClassOf   <#landcover> .

<#roads.major_road>  a    rdfs:Class;
        rdfs:comment      "From OSM highway=trunk, highway=primary, highway=secondary, highway=tertiary, and their _link variants (highway=trunk_link, …)";
        rdfs:isDefinedBy  <>;
        rdfs:label        "roads major_road";
        rdfs:subClassOf   <#roads> .

<#water.playa>  a         rdfs:Class;
        rdfs:comment      "From Natural Earth playas; no OSM tag. None in build 20261102";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water playa";
        rdfs:subClassOf   <#water> .

<#landcover.forest>  a    rdfs:Class;
        rdfs:comment      "From Daylight landcover class trees; no OSM tag";
        rdfs:isDefinedBy  <>;
        rdfs:label        "landcover forest";
        rdfs:subClassOf   <#landcover> .

<#places>  a              rdfs:Class;
        rdfs:comment      "Named places, as points";
        rdfs:isDefinedBy  <>;
        rdfs:label        "places";
        rdfs:subClassOf   <#Feature> .

<#earth.cliff>  a         rdfs:Class;
        rdfs:comment      "From OSM natural=cliff, as a line";
        rdfs:isDefinedBy  <>;
        rdfs:label        "earth cliff";
        rdfs:subClassOf   <#earth> .

<#boundaries.overlay_limit>
        a                 rdfs:Class;
        rdfs:comment      "From Natural Earth admin-0 lines (overlay limit); no OSM tag";
        rdfs:isDefinedBy  <>;
        rdfs:label        "boundaries overlay_limit";
        rdfs:subClassOf   <#boundaries> .

<#buildings.building_part>
        a                 rdfs:Class;
        rdfs:comment      "From OSM building:part=* (not building:part=no), as an area; its value in kind_detail";
        rdfs:isDefinedBy  <>;
        rdfs:label        "buildings building_part";
        rdfs:subClassOf   <#buildings> .

<>      rdfs:comment           "Classes for the features of the Protomaps basemap: a feature belongs to a layer and, within it, to a kind. Layer classes are #{layer}, kind classes #{layer}.{kind}.";
        rdfs:label             "Protomaps basemap features";
        dcterms:license        <https://opensource.org/license/bsd-3-clause>;
        prov:generatedAtTime   "2026-11-12T08:33:15Z"^^<http://www.w3.org/2001/XMLSchema#dateTime>;
        prov:hadPrimarySource  <https://github.com/protomaps/basemaps/tree/42ffaaa4a85a41bfcb23e43cc0f5b492a5eca123/tiles/src/main/java/com/protomaps/basemap/layers>;
        prov:wasAttributedTo   <index#protomapswrap>;
        prov:wasDerivedFrom    <20261102> .

<#water.river>  a         rdfs:Class;
        rdfs:comment      "From OSM waterway=river";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water river";
        rdfs:subClassOf   <#water> .

<#pois.national_park>
        a                 rdfs:Class;
        rdfs:comment      "From OSM boundary=national_park with protect_class=2 or 3, designation=national_park, protection_title=National Park or a national park service as operator";
        rdfs:isDefinedBy  <>;
        rdfs:label        "pois national_park";
        rdfs:subClassOf   <#pois> .

<#boundaries.unrecognized_region>
        a                 rdfs:Class;
        rdfs:comment      "From Natural Earth admin-1 lines (unrecognized); no OSM tag. None in build 20261102";
        rdfs:isDefinedBy  <>;
        rdfs:label        "boundaries unrecognized_region";
        rdfs:subClassOf   <#boundaries> .

<#water.fountain>  a      rdfs:Class;
        rdfs:comment      "From OSM amenity=fountain";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water fountain";
        rdfs:subClassOf   <#water> .

<#pois.other>  a          rdfs:Class;
        rdfs:comment      "From OSM tags Protomaps keeps as POIs without a more specific kind";
        rdfs:isDefinedBy  <>;
        rdfs:label        "pois other";
        rdfs:subClassOf   <#pois> .

<#places.macrohood>  a    rdfs:Class;
        rdfs:comment      "From OSM place=quarter";
        rdfs:isDefinedBy  <>;
        rdfs:label        "places macrohood";
        rdfs:subClassOf   <#places> .

<#water.reef>  a          rdfs:Class;
        rdfs:comment      "From OSM natural=reef";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water reef";
        rdfs:subClassOf   <#water> .

<#earth.island>  a        rdfs:Class;
        rdfs:comment      "From OSM place=island, as an area";
        rdfs:isDefinedBy  <>;
        rdfs:label        "earth island";
        rdfs:subClassOf   <#earth> .

<#water.sea>  a           rdfs:Class;
        rdfs:comment      "From OSM place=sea, as a label point";
        rdfs:isDefinedBy  <>;
        rdfs:label        "water sea";
        rdfs:subClassOf   <#water> .

<#Build>  a               rdfs:Class;
        rdfs:comment      "A dated Protomaps basemap build, one PMTiles archive";
        rdfs:isDefinedBy  <>;
        rdfs:label        "Build" .
