Software taxonomy
Each catalog points at a software definition via software.id / software.name. Definitions live in data/software/ and export to data/datasets/software.jsonl.
Identity
| Field | Rule |
|---|---|
software.id | Lowercase, matches filename (ckan.yaml → ckan) |
software.name | Display name (CKAN) |
| Unknown / bespoke sites | id: custom (see data/software/custom.yaml) |
Canonical IDs: data/reference/software_ids.yaml.
Category and subtype
Software records declare:
category— domain family, aligned with catalog types for dissemination platforms;Statistical production softwareis explicitly not a catalog typesubtype— product form, for cross-category comparison
Typical subtypes:
subtype | Use for |
|---|---|
data_portal_platform | Self-hosted open-data CMS (CKAN, DKAN, EKAN, uData, PortalJS, Idra, OpenGDC, ResourceContracts, ODWeb, OpenSpending, Datasette, Datadex, IUDX Catalogue, Aid Management Platform) |
scientific_repository_platform | Dataverse, DSpace, Invenio, Figshare, HAL, OPUS, Omeka S, Fedora, Esploro, PHAIDRA, RADAR, Yoda, Converis, Archipelago, LabKey, DABAR, OpenScience.si, Synapse, XNAT, Shanoir, LORIS, OMERO, Kadi4Mat, e!DAL, META-SHARE, Gen3, TR32DB, DLCM, easydb, NMRShiftDB2, Chemotion Repository, Renku, mediaTUM, Index Data Keystone, SBS Digital Collection |
geospatial_catalog_platform | GeoNetwork, GeoNode, Geonodo, Palapa, ArcGIS Hub, ArcGIS Experience Builder, ArcGIS Web AppBuilder, ArcGIS Instant Apps, gvSIG Online, VertiGIS WebOffice, Geocortex Essentials, VertiGIS Studio Web, GeoMedia WebMap, disy Cadenza, Mapbender, mviewer, G3W-SUITE, Cadcorp SIS WebMap, Hexagon M.App Enterprise, Trimble Locus IMS, Spatial Suite, Spectrum Spatial Analyst, Exponare, Hajk, Origo, Tailormap, myCarta, AddSpatial, ScalarGIS, CartoMapas, MapFusion, GISMAT, GEUSMAP, GC2, ISY Map, Avinet Adaptive, MAP+, MapGuide, SIGimWeb, VKOMAP, HyG Mapgis, Dobles Visor de Mapas, WSP NetGIS Runtime, GEOVAP Marushka, VC Map, JMap, p.mapper, Weave, OVIE, SOFTPRO, MxSIG, KAZGISA RGIS, eKMap Cloud, GT Map, SHK Kent Bilgi Sistemi, Sputnik Web, Geocad GSEE, ZuluGIS Online, GeoNature, Geotrek, TerraVisu, vMap2, web-mapviewer, GAUSS WebCity, IP SYSCON MapSolution, kvwmap, LocalGIS, IGiS, WebGIS Cloud, rmDATA GeoWeb |
microdata_catalog_platform | NADA, NESSTAR, REDATAM, IPUMS |
indicators_data_platform | PxWeb, PxStat, OpenSDG, SDG Index, Knoema, DHIS2, Envista Web, FENIX, TabNet, Beyond 20/20, StatPlanet, IMF NSDP, Istat Data Browser, eDatos, DGBAS Web, WebMain, TerriSTORY, DUVA, Géoclip, InstantAtlas, MATS, iMonitoring, KS Open Budget, JAXI, Health Data Center, KOSIS, SOPORTAL, e-Stat, SIDRA, Fingertips, UNdata, UN Comtrade Plus, Our World in Data, Klimadashboard Münster, Fusion Data Browser |
metadata_registry_platform | FAIR Data Point, Aristotle MDR, Fusion Registry, Metadata Browser, DataHub, CEDAR Workbench, CBD Clearing-House, WMO OSCAR |
protocol_or_api_server | STAC, THREDDS, OPeNDAP, SPARQL endpoints, openEO, FROST-Server, 52°North SOS |
geospatial_service_middleware | GeoServer, MapServer, MapTiler Server, deegree, rasdaman, QGIS Server, SuperMap iServer, MapGIS IGServer, CubeWerx CubeSERV |
cms_or_app_framework | WordPress, Drupal, Liferay, ComunWeb, Gosweb used as a catalog |
managed_saas_service | Socrata, OpenDataSoft, Azure API Management, CONTENTdm, vendor-hosted Hub, Isogeo, OpenAIRE, Astun iShare, StatMap Earthlight, IntraMaps Public, LocalMaps, Sentinel Hub, Landfolio, GISApp, GisMaster, GeoPortale.cloud, GeneGIS PAGIS, LDP SIT, GFMaplet, SilverBrowser, SmartMap, SmartGIS, Geolonia 스마트맵, SonicWeb, GeDA-Public, ALANDIS+, EnviMAP, PISO, GDi Visios, SeaSketch, XY Maps, SparkMap, NieuwlandGeo Onemap, WebGIS Publisher, R3GIS, Lightship Works, KaartViewer, GeoApps, SITMUN, data.world, DataPortal.AI, Centurion, Gobierto Datos, LinkData, PA-Online Open Data, Mendeley Data, Guangxi, RDF Online Repository, Redivis, SEDOO Catalogue, hale»connect, Cancer-Rates.info, Conduent HCI, Virtual LMI, IHK-Fachkräftemonitor, ATM Maggioli, Visor Urbano, GeoNube, Geopixel Cidades, Geodados SaaS, MapMap, CTMGEO SigWEB, DRZ WebGIS, GAUSS WebGIS, dmCity, DMAPS, InfoGIS, Geo-IT GIS, Zeljko GIS, OpenGov, T-MAPY GISPLAN, T-MAPY mOBEC, CORA GEO CG WebGIS, Geodeticca WEB GIS, Geoportál GEPRO, TopGis GisOnline, MK Consult K5 MapServer, Georeal, Mapotip, ibb giscity, vianovis touvia.MAPS, INGRADA online, CAIGOS Globe, EOMAP KOVGIS EVALD, terGIS, Go GIS, TerraWeb, SOGEFI Mon Territoire Carto, Pozi, GIS Cloud, MRF Web Map, MuniSight, GIS Quadrat PublicMaps, SIT WebGis, CommunityView, MS-GIS, DIGITAL TWIN CLOUD, brain-GeoCMS, Geocentriq, GeoCentralis, SIGALE, Геопортал RuMap, Guadaltel G·GIS, Dielmo Maps, Viavansi Open Government, Orhitec ERP/GIS |
domain_data_infrastructure | Domain-specific stacks (GBIF IPT, SciCat, Breedbase, Tripal, VEuPathDB, MassBank, ioChem-BD, ESGF, ESIMO, Symbiota, Biodiv, BIMS, InterMine, GRIN-Global, PlutoF, SARV, JGI, cBioPortal, NOMAD, High-Throughput Toolkit, Pathogens Portal Node, ESA Science Archive, BirdMap Africa, CLLD, TalkBank, Pathway Tools, PANGAEA, USGS ScienceBase, DEIMS-SDR, METSIS, EPOS Data Portal, Fairdata, EPOS GLASS, IBDC, MINERVA, Nextstrain, Materials Cloud, OpenKIM, ChecklistBank, ProteoSAFe, CyVerse, Hugging Face, Kaggle, OpenAlex, Wikibase, DBpedia Databus, MGnify, MetaboLights, BioStudies, Reactome, WikiPathways, UCSC Genome Browser, FlyBase, WormBase, iDigBio, iNaturalist, CodaLab, Codabench, Grand Challenge, EvalAI, JACQ, Korp, DANDI Archive, CELLxGENE Discover, HydroShare, Brainlife, Open Context, BioDare2, TemplateFlow, GIGWA, PanelApp, Liverpool Drug Interactions, CAMD-Web, Protwis) |
general_software | Catch-all, including custom |
statistical_processing_system | Collection, editing and tabulation workflows (CSPro) |
confidential_analysis_system | Controlled federated analysis of sensitive data (DataSHIELD) |
Human-readable category notes: data/software/types.yaml. Allowed category / subtype lists: data/schemes/software.json. Per-id category and subtype live on each YAML record; MAP_SOFTWARE_OWNER_CATALOG_TYPE is loaded from those files (custom is excluded so catalogs can keep any catalog_type).
Layout
data/software/
├── opendata/ckan.yaml
├── opendata/idra.yaml
├── geo/geonetwork.yaml
├── geo/mapserver.yaml
├── scientific/dataverse.yaml
├── scientific/opus.yaml
├── indicators/opensdg.yaml
├── microdata/nada.yaml
├── metadata/fairdatapoint.yaml
├── statistical/cspro.yaml
├── statistical/datashield.yaml
└── custom.yaml
What a software record contains
Beyond id / name / category, records may include:
has_api,has_bulk,datatypesmetadata_support(CKAN API, DCAT, CSW, OAI-PMH, STAC, SDMX, …)pid_support(DOI)rights_managementrepository_url,documentation_url,website
Quality checks flag catalogs whose software implies endpoints that are missing (SOFTWARE_EXPECTED_ENDPOINTS_MISSING_*) on the enrichment track — they do not fail CI by themselves.
validate-software coverage gates for version and repository_url apply to installable OSS subtypes (data_portal_platform, scientific_repository_platform, geospatial_service_middleware, protocol_or_api_server, plus repo coverage for domain/indicator stacks). They do not require a public git tag on managed_saas_service or municipal GIS viewers.
Adding a software definition
- Confirm the product is shared (not a one-off site). One-off sites keep
software.id: custom. - Pick
id: lowercase letters/digits, matching the filename (data/software/{category}/{id}.yaml). - Set
type: Software,name,category(aligned with catalog types), andsubtypefrom the table above. - Fill
has_api,metadata_support,website, anddocumentation_urlwhen known. Seedata/software/opendata/ckan.yaml. - Run
python scripts/builder.py sync-software-mapssodata/reference/software_ids.yamllists the new id. - Run
python scripts/builder.py validate-softwareandpython scripts/builder.py build.
Do not create a new software id for an unnamed one-off .gov root. Add an id when several independent installations exist or a first-party product page / vendor deployment list establishes a reusable product (even with one or two registry rows) — then run the instance hunt in the same change. Custom-geoportal reviews on 7 September 2026 used that second path for CartoVista, IGO2, InfoMap, Flood Intelligence Portal, and similar branded viewers.
When the product is a discovery target (shared platform with live installations), add fingerprints and search queries to the matching guide: discovery-opendata.md, discovery-geoportals.md (SDI, viewers), discovery-scientific.md (domain), discovery-metadata.md, discovery-indicators.md, or discovery-other.md. Add a harvest recipe (keep vs drop, list URL, grain) on the matching harvest page in the same change. Both guides MUST include a unique ## Name (id) {#id} heading so software-index.md can link it. Regenerate the index with python scripts/docs_software_coverage.py. Do not document a software.id in harvest/discovery as if it were live until the YAML exists in data/software/ and software_ids.yaml. CI fails unless both guides have that unique {#id} heading (tests/test_docs_software_coverage.py).
Products under data/software/statistical/ are not catalog discovery targets. Do not add fictitious discovery or harvest recipes for them. Their software-index entry links to official product documentation instead.
Querying software usage
SELECT software.id AS sid, count(*) AS n
FROM catalogs
GROUP BY 1
ORDER BY n DESC
LIMIT 20;
Matching a live site to a software.id: discovery.md. Per-platform Google, Censys, and FOFA queries: discovery-opendata.md, discovery-geoportals.md, discovery-scientific.md, discovery-metadata.md, discovery-indicators.md, discovery-other.md. FOFA as a Censys alternative: discovery-search-tools.md. After YAML exists: apidetect.md.