syntax = "proto3"; package sarus_data_spec; message Dataset { // The dataset definition string uuid = 1; // e.g. RFC 4122 id used to refer to the dataset (content linked?) string name = 2; string doc = 3; Spec spec = 4; map properties = 5; // Other properties // Definitions message Spec {// How to obtain the dataset oneof spec { Transformed transformed = 1; File file = 2; Files files = 3; Archive archive = 4; Sql sql = 5; } } message Transformed { string transform = 1; // Transform id repeated string arguments = 2; // Dataset or other object ids map named_arguments = 3; } message File { string format = 1; string uri = 2; // File URI } message Files { string format = 1; string uri_pattern = 2; // Pattern of files } message Archive { string format = 1; string archive_format = 2; string uri = 3; // Archive URI } message Sql { string uri = 1; // As in https://docs.sqlalchemy.org/en/14/core/engines.html repeated Table tables = 2;// the sql schemas from which the data can be downloaded message Table { string schema=1; string table=2; } } }