OpenStreetMap (OSM) is a map of the world that is free for everyone to both use and edit. The map is made up of different elements: nodes, ways (ordered lists of nodes), areas (closed ways) and relations (groups of elements), but they are meaningless without the tags that are added to them.
For instance, the buildings on the map picture above hold some address information. There is also a node on the left that is tagged as a recycling station. On the top, there are two nodes tagged as trees. And there is a node that is tagged as a bakery. The bakery’s tags include the following:
You can see that every tag consists of a key (e.g. shop) and a value (e.g. bakery). The meaning of tags is documented in the OpenStreetMap Wiki. For example, the page Key:shop holds information about what is considered a shop and what kinds of shops there are. And the page Tag:shop=bakery holds more detailed information on what is considered a bakery and how to tag it.
NLMaps Web aims to provide a way to query information in OpenStreetMap by using plain English. In order to do this, it converts your English (natural language or NL) query into a machine-readable language (MRL) query, which is used to retrieve the queried information from OpenStreetMap and to show it on a map. Here is an example of a simple NL query with its MRL equivalent.
Show me all the supermarkets in New York City!
query(area(keyval('name','New York City')),nwr(keyval('shop','supermarket')),qtype(latlong))
There is also another version of displaying the information contained in the MRL, which is a little more human-readable:
Question Class | Thing in Area |
Target Tags | shop=supermarket |
Area | New York City |
QType | latlong |
NLMaps Web learns to improve when you give it feedback on how it performed. So let’s do that as your first task:
How many bakeries are there in Hamburg?
❌ Not completed yet.