/**
 * Discussion Points: Is catalog universal, vs parochial?
 * Is this a query only interface, or does it allow to manipulate
 *   the catalog/metadata?
 */
interface IDataCatalog
{
   void cd(String path="~");
   List<IDataSetHandle> ls(String path=".", String recursive=false);
   IDataSetHandle dataSet(String path);
   /**
    *  searchExpression = e.g. "reconVersion == 3 & size < 20GB"
    *  searchExpression = e.g. "alreadyCachedAtMySite" (?)
    */
   List<IDataSetHandle> query(String searchExpression);
}
interface IDataSetHandle
{
   String getName();
   long getSize();
   /**
    * "Attribute = MetaData + Intrinsic properties of dataset"
    * MetaData is NOT (necessarily) stored in the DataSet itself
    * Different users may see different metadata?
    * Some METADATA may be required, some may be used defined?
    */
   String getMetaData(String name);
   List<LogicalFileName> getLogicalFileNames();
}

