Semantics (Keywords) for InVEST models and data

Context and Background

We have an effort underway to integrate the InVEST Workbench with the NatCap DataHub. The goal is to make it easy to browse and select InVEST model input files from datasets available on the DataHub, without leaving the Workbench.

A key part of this integration is an effort to annotate InVEST model inputs with keywords that describe what those inputs are. We already have lots of metadata about model inputs, such as names, descriptions and data types. Here’s an example of a Carbon model input specification:

spec.SingleBandRasterInput(
    id="lulc_bas_path",
    name=gettext("baseline LULC"),
    about=gettext(
        "A map of LULC for the baseline scenario, which must occur prior to the"
        " alternate scenario. All values in this raster must have corresponding"
        " entries in the Carbon Pools table."
    ),
    data_type=int,
    units=None,
    projected=True,
    projection_units=u.meter
),

Our Plan

We plan to add a list of keywords to these specifications so that other software can understand that this raster input needs to represent “Landuse / Landcover”, for example.

This annotation is a work in-progress. Since interoperability is the goal, we know it is important to use shared community standards and semantics as much as we can. So, we are referring to the NASA Global Change Master Directory vocabulary of keywords. The GCMD is great because it is open, searchable, and covers a lot of the scientific domains that are relevant to ecosystem services.

But there are cases where an InVEST dataset is not well described by anything in the GCMD. So far we are creating our own vocabulary of keywords for these cases to make sure we can link InVEST inputs to datasets on the DataHub. But inventing our own vocabulary is not ideal. As we progress, we can strive to replace uses of InvestKeywords with words from other shared vocabularies.

Current Progress

Here is a view of what we have so far: https://storage.googleapis.com/data.naturalcapitalproject.org/dave/invest-model-inputs-keywords.json
This is organized hierarchically by invest model, then by model input. Not all inputs have keywords yet, but many do.

Here is another view of the full list of words in use so far. invest/src/natcap/invest/keywords.py at feature/invest-keywords · davemfish/invest · GitHub
Most are from the GCMD, but many are not.

None of this has been released in InVEST yet and is definitely subject to change. We are starting with model inputs, but it makes sense to annotate outputs in the same way.

Discussion

Thanks to @kjbagstad for already sharing lots of valuable resources and guidance about how to approach this!

And @phawthorne , it would be great to hear about your use-cases and whether our effort might meet your needs.

We would also like to hear from anyone else working on similar problems, or hear ideas about how you might use this metadata once it is available in InVEST. Thanks!

3 Likes