Add a tags property to Records

As a client of the OSDU I would like to add in free form tags to a Record to allow me to annotate and group data in dimensions that I choose. This is also very useful in when QC'ing data for example with data scientists to understand how data has been classified and if it is useful for their purposes.

I should be able to search for any of the tags that I add into the Record.

tags is an optional field at the same level as data, metadata and legaltag. The format of this field is designed as

Record

{
    "id": "..."
    "meta": {},
    "data": {},
    "acl": {},
    ...
    "tags": {
        "title": "Tags",
        "description": "An array of AbstractTagItems (key value). The array is treated as a set; AbstractTagItem.tagKeyID have to be unique in the array. Changing the record’s tags does not create a new record version.",
        "type": "array",
        "items": {
            "$ref": "../abstract/AbstractTagItem.json"
        }
    }
}

Here "AbstractTagItem.json" is

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Tag Item",
    "description": "A tag key/value pair.",
    "type": "object",
    "properties": {
        "tagKeyID": {
            "title": "Tag Key",
            "description": "The reference to the TagKeyType catalog. The containing array is expected to be a set, i.e. tagKeyID must be unique in the et/array.",
            "type": "string",
            "pattern": "^srn:<namespace>:reference-data\\/TagKeyType:[^:]+:[0-9]*$"
        },
        "tagValue": {
            "title": "Tag Value",
            "description": "The value associated with the tag key.",
            "type": "string",
        }
    }
}

An example could be like

{
    "id": "..."
    "meta": {},
    "data": {},
    "acl": {},
    ...
    "tags": {
        "label1": "value1",
        "label2": "value2",
        ...
    }
}

The point here is that the tags are not predefined in schema. So it gives the flexibility for user to tag anything they want.

Edited Dec 10, 2020 by ethiraj krishnamanaidu
Assignee Loading
Time tracking Loading