package Tabular {
    /* Basic metadata information describing provenance of type elements */
    private import ScalarValues::String;

    metadata def <tabular> {
        /* Indicates that the source of *instances* of this type
         * correpond to unique values of ``key`` found in the CSV identified
         * by the identifier ``uri``.
         * 
         * NOTE: For now keys are sets and must be identical in all sources (URIs).
         *       for production use these should be some more complex mappings.
         */

        attribute uri : String[0..1];
        attribute key : String[0..*] ordered;
        attribute unless : String[0..*] ordered;
        attribute name_hint : String[0..1];

        attribute provider : String;
        attribute fetched_from : String;
    }
}