name-suggestion-index/schema/trees.json

67 lines
2 KiB
JSON

{
"title": "trees.json",
"description": "JSON Schema for config/trees.json",
"type": "object",
"additionalProperties": false,
"required": ["trees"],
"properties": {
"trees": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^\\S+$": {
"description": "(required) The name of the tree (e.g. 'brands')",
"type": "object",
"additionalProperties": false,
"required": ["emoji", "mainTag", "nameTags"],
"properties": {
"emoji": {
"description": "(required) An emoji used for logging and output (e.g. '🍔')",
"type": "string"
},
"mainTag": {
"description": "(required) An OSM tag that this tree uses as the main tag (e.g. 'brand:wikidata')",
"type": "string",
"pattern": "^\\S+$"
},
"sourceTags": {
"description": "(optional) Tags from OSM to collect namelike values",
"type": "array",
"uniqueItems": true,
"items": {
"type": "string",
"pattern": "^\\S+$"
}
},
"nameTags": {
"description": "(required) OSM tags that can contain namelike values to be indexed by the matcher",
"type": "object",
"additionalProperties": false,
"required": ["primary", "alternate"],
"properties": {
"primary": {
"description": "(required) Patterns for matching primary name tags (e.g. 'name')",
"type": "string",
"format": "regex"
},
"alternate": {
"description": "(required) Patterns for matching alternate name tags (e.g. 'short_name', 'alt_name')",
"type": "string",
"format": "regex"
}
}
}
}
}
}
}
}
}