perfSONAR JSON/BSON Schema

{
       # global (OOB) info
       'version' : [ major, minor, patchlvl ],

       # List of metadata blocks
       'meta' : [
           { '_id' : <id>,
             '_pid' : <parent-metadata-id>,
             'event-type' : <type of metaata>,
             'subject' : {
                # src/dst/host/etc.
                '<name>' : '<value>' ,
              },
             'params' : {
                # params for a time-series
                'ts' : <base timestamp;sec since 1/1/1970>,
                'dt' : <sample interval, sec>,
               # params for aggregation
                # aggregation function could be in event-type,
                # "urn:perfsonar:agg:mean" or whatever
                'n' : <number of things aggregated>,
                ..additional agg paarams, like trim% for mean..
              }
            },
            #...more metadata blocks..
           ]
       },

       # List of data blocks
       'data': [ 
            # one data block
            {
              '_id' : <identifier>,
              '_mid' : <metadata-id> # last in chain,
              'event-type' : <event namespace urn>,
              # set of named data vectors, what R calls
              # a "ragged array" because the vectors may be diff. len
              'values' : { 
                   # sample number is a singleton like this:
                   # 'sample' : 3,
                   # timestamps are a column like this:
                   # 'ts' : [ v1, v2, .. ]
                   '<column-name>' : [ values ],
                    ...
               }
            },
            #...more data blocks..
        ]
}
         
