In my understanding, any tag that is not clarifying another tag is a top-level tag.
If a top-level tag is the only tag on the object, it makes some sense. If a non-top-level tag is the only tag on the object, it doesn’t really make sense.
So for example highway=service
is top-level, and service=driveway
is not top-level, and bridge=yes
is also not top-level. highway=service
can exist by itself. A way with service=driveway
as its only tag is incomplete. A way with bridge=yes
as only tag is also incomplete (but note that man_made=bridge
as the only tag of a way would be fine, hence man_made=bridge
is a top-level tag).
railway=rail
is top-level, but embankment=yes
is not top-level. A way with embankment=yes
as its only tag wouldn’t make sense.
shop=beauty
is top-level, beauty=nails
is not top-level.
amenity=place_of_worship
is top-level, and so is building=church
, but religion=christian
is not top-level.