Skip to content

NOTE: Link information for data models

Carsten Bormann edited this page Oct 17, 2022 · 26 revisions

Scratchpad for information and pointers for "link" information for data models, in particular for SDF

Types of links

Links are a general concept that can be useful in SDF specifications in many ways.

  1. Links can be used at the SDF specification level to make the model more concise or to provide additional information.

    • A unit specification is a rather specific kind of specification-level link.
  • sdfRef uses a link for referencing an existing SDF definition in another place, enabling re-use (with potential extension) of that definition
  1. Links can be data in the information model, used as input or output of specific interactions. We still need to find out what kind of type information we want to specify for these link data.

    • "link data type" (or property), currently not explicitly specified for SDF, can contain values that can be interpreted as a link to e.g., other SDF / ecosystem model definitions, other resources (i.e., any URL), named items (e.g., URNs), etc.
  • sdfRelation appears to define a link data type, but then also claims it adds "ability to describe additional information on how different definitions relate to each other." This needs to be clarified.

LwM2M models and link resources

There are two types of link data types in LwM2M: CoRE links (RFC6690) and Object Links. CoRE link “is used to refer to Resources on a LWM2M Client and their attributes” and Object Link “is used to refer to an Instance of a given Object” (essentially a pair of Object and Object Instance IDs).

Options for SDF "link data type"

The "link data type" links could be modeled in various different ways in SDF. More exploration is needed to determine best option.

Possibilities include:

  1. Adding to the json-schema.org inspired type system, e.g.:
  • New "sdfFormat" keyword with a value "link" (or more specific, like "coreLink" and "objLink") to indicate that a string value has certain format and semantics (similar to JSO "format" keyword but with SDF specific values). Open question: should we support formats from namespaces, like "oma:objLink", or should those all be registered instead?
{
 "sdfProperty": {
  "LinkToResource": {
   "type": "string",
   "sdfFormat": "coreLink"
  } 
 }
}
  • Adding new sdfType "link" (and/or "coreLink" and "objLink"). Same registry / namespace considerations apply as for sdfFormat.
{
 "sdfProperty": {
  "LinkToResource": {
   "type": "string",
   "sdfType": "link"
  } 
 }
}

These are essentially two syntactic ways to describe the same information. Whatever is chosen, sdfFormat and sdfType could include a registry for more detailed link types for ecosystems. For OMA models, we need a way to tell apart CoRE Links and Object Links for OMA models. The former may be a generic type but Object Link is likely an ecosystem specific representation (which should concern us at the information model level only in terms of limitations to what kinds of links can be represented).

  1. Extending sdfRelation to emulate "link data type"
{
 "sdfRelation": {
  "LinkToResource": {
   "somethingspecialhere" : true
  } 
 }
}

As sdfRelation is not fully defined at this point, this is harder to relate to the SDF type system.