netconfcentral logo

ieee1906-dot1-components@2020-07-07



  module ieee1906-dot1-components {

    yang-version 1.1;

    namespace
      "urn:ieee:std:1906.1:yang:ieee1906-dot1-components";

    prefix ieee1906-components;

    import ietf-interfaces {
      prefix if;
    }
    import ieee1906-dot1-types {
      prefix ieee1906-dot1-types;
    }
    import ieee1906-dot1-metrics {
      prefix ieee1906-dot1-metrics;
    }
    import ieee1906-dot1-definitions {
      prefix ieee1906-dot1-definitions;
    }
    import ieee1906-dot1-properties {
      prefix properties;
    }

    organization
      "P1906.1.1/D1.0 Draft Standard Data Model for Nanoscale Communication Systems Working Group";

    contact
      "IEEE P1906.1.1 Working Group
Chair: Stephen F. Bush <bushsf@research.ge.com>
Secretary: Guillaume Mantelet <gmantelet@voltigeurnetworks.com>";

    description
      "This is the YANG model for the IEEE 1906.1-2015 - Recommended
Practice for Nanoscale and Molecular Communication Framework.
Clause 5 - Framework of a molecular and nanoscale communication
network

This YANG module is committed to providing a 'flat' description
of a nanoscale system. A nanoscale system is comprised of a set
(a list) of components.

Hierarchy of a nanoscale model or system is out of the scope of
1906.1.1. For example, declaring that a neuron has an axon, and
that an axon is comprised of multiple microtubules, is not
captured in this YANG model. Instead, this YANG module will
capture that the system has axons and microtubules.

However, to allow maximum flexibility to scientists, reference
to other components as siblings and children is offered to any
model. An adequate design will help rebuild the hierarchy from
the flat list of components in the model.

Consequently, a nanoscale device or model may or may not be an
IETF interface. Such an object may be a pure mathematical model
of a simulation providing a framework for reusability and cost
efficiency. If it is intended to be an 'IETF interface-like'
system, please use the nanoscale-interface convenience
container.

A component provides a mapping between any biological model and
the 1906.1-2015 standard. For example, a microtubule in an
experiment modelling a neuron can be linked to a 'Field'
component defined in 1906.1 to get access to the relevant
metrics. The neuron, albeit different from any other biological
object becomes somewhat correlated to any other biological
objects mapped to a 1906.1 'Field' component, thus sharing
similar metrics and exhibit similar behaviors.

+----------------------+---------------------------------------+
| Component name       | Description                           |
+----------------------+---------------------------------------+
| nanoscale-interface  | The system is an IETF interface       |
+----------------------+---------------------------------------+
| component            | A reusable list of 1906.1 components  |
|     name             | Optional biological name of the comp  |
|     description      | Optional biological description of th.|
|     identifier       | Unique identifier of the component    |
|     type-of-component| Identifier to the 1906.1 component    |
|     sub-components   | List of identifiers of child componen.|
|     next-components  | Identifiers of next component. in path|
|     message-metrics  | If type of component is message       |
|     motion-metrics   | If type of component is motion        |
|     field-metrics    | If type of component is field         |
|     specificity-metr.| If type of component is specificity   |
|     system-metrics   | If type of component is system        |
+----------------------+---------------------------------------+
";

    revision "2020-07-07" {
      description "Initial version.";
      reference
        "[1] 'IEEE Recommended Practice for Nanoscale and Molecular
             Communication Framework,' in IEEE Std 1906.1-2015, pp.1-64,
             Jan. 11 2016 doi: 10.1109/IEEESTD.2016.7378262
        
        	[2] S. F. Bush, 'Active network architecture' in Nanoscale
        	    Communication Networks, pp. 209-217, 2010, Artech House.
        
        	[3] S. F. Bush, J. L. Paluh, G. Piro, V. Rao, R. V. Prasad and
        	    A. Eckford, 'Defining Communication at the Bottom,' in IEEE
        	    Transactions on Molecular, Biological and Multi-Scale
        	    Communications, vol. 1, no. 1, pp. 90-96, March 2015.
        	    doi: 10.1109/TMBMC.2015.2465513";

    }


    grouping component {
      description
        "This is the main grouping for the IEEE 1906.1-2015 framework. This relates any
conceptual object to a 'component' and provides access to the corresponding metrics
and configuration data.";
      list component {
        key "identifier";
        description
          "A list of 1906.1 compatible objects in any nanoscale model.";
        leaf name {
          type string;
          description
            "An optional name to describe what is this component in the
non 1906.1 model.

For example, a neuron model reusing 1906.1 framework could
use 'axon' as a name for one of its components.";
        }

        leaf description {
          type string;
          description
            "An optional string to describe what does this component in
the non 1906.1 model.

For example, a neuron model reusing 1906.1 framework could
specify what this 'axon' is supposed to do in its
corresponding model.";
        }

        leaf identifier {
          type string;
          description
            "A unique identifier for this component to be associated to
the non 1906.1 model.

For example, a neuron axon can be comprised of multiple
sections. Each of the section should be uniquely identified
by the underlying model to store statistics or retrieve
configuration, simulate a fault etc.";
        }

        leaf human-designed {
          type boolean;
          default "false";
          description
            "'Human-designed' means a system that occurs as a result of 
conscious human intervention. For clarity, human-designed 
systems may include naturally occurring components in an 
arrangement or for a purpose that is not otherwise 
naturally occurring.";
        }

        container properties {
          description
            "This containers stores the list of optional properties that 
provide extra definition of the component, or make this 
component attribute supersedes corresponding system (or 
parent component) corresponding attribute.";
          uses properties:property;
        }  // container properties

        leaf type-of-component {
          type identityref {
            base ieee1906-dot1-types:component;
          }
          mandatory true;
          description
            "Identifies this component from the non 1906.1 model to a
1906.1 compatible component.

For example, a neurotransmitter can be considered a 'message-carrier'.
This leaf automatically selects the correct type of metric to display.

See the following list of 'uses'. The underlying Metrics define a 'when'
statement making them valid and usable if the type-of-components matches
them.";
        }

        leaf-list sub-definition {
          type instance-identifier;
          description
            "Identifies the list of child definitions that are part of
this definition. There can be 0 or more child definition
and child definition can be of any type.";
        }

        leaf-list next-definition {
          type instance-identifier;
          description
            "Identifies the list of sibling definitions attached to this
definition in a unidirectional way. There can be 0 or more
next definitions and next definition can be of any type.

This leaf-list helps identify the components along the
data path of a message, and can help build a tree or a
bus.";
        }

        leaf-list sub-component {
          type instance-identifier;
          description
            "Identifies the list of child components that are part of
this component. There can be 0 or more child components
and child components can be of any type.

For example, a nanoscale interface can be comprised of a
transmitter and a receiver sub-components, and a
transmitter can be comprised of a perturbation and a
field sub-components while the receiver is made of a
specificity sub-component.";
        }

        leaf-list next-component {
          type instance-identifier;
          description
            "Identifies the list of sibling components attached to this
component in a unidirectional way. There can be 0 or more
next components and next components can be of any type.

This leaf-list helps identify the components along the
data path of a message, and can help build a tree or a
bus.

For example, an axon is a set of microtubules. In its
simple form, this model can help identify that
microtubule identified MT_00 is connected to the soma
(a perturbation component) and MT_01 is connected to MT_00
helping the simulation or a remote tool to build the
hierarchy of the biological model from that YANG module.";
        }

        uses ieee1906-dot1-metrics:motion-metrics;

        uses ieee1906-dot1-metrics:field-metrics;

        uses ieee1906-dot1-metrics:specificity-metrics;
      }  // list component
    }  // grouping component

    augment /if:interfaces/if:interface {
      description
        "Augment IETF interface when the nanoscale system can coexist
within a classical network. Otherwise, the system can be a pure
scientific 'self-contained' 1906.1 nanoscale system which cannot
augment ietf-interface.";
      container nanoscale-interface {
        when
          "derived-from-or-self(/if:interfaces/if:interface/if:type, 'ieee1906-dot1-types:nanoscale-communication-interface')";
        if-feature ieee1906-dot1-types:nanoscale-interface;
        description
          "Addition of data nodes for the nanoscale communication interface to the
standard Interface data model, for interfaces of the type 'nanoscale-communication-interface'.";
        container definitions {
          description
            "This containers stores the list of definitions that are part
of the system.";
          uses ieee1906-dot1-definitions:definition;
        }  // container definitions

        container components {
          description
            "This container stores the list of components that are part
of the system.";
          uses component;
        }  // container components

        container properties {
          description
            "This containers stores the list of optional properties that 
provide extra definition of the system.";
          uses properties:property;
        }  // container properties

        uses ieee1906-dot1-metrics:system-metrics;
      }  // container nanoscale-interface
    }
  }  // module ieee1906-dot1-components