Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Directories are treated as a "hasPart" relation to a new object.
    1. The name of the relation is the directory name
    2. The new object's label is the path of the directory.
  2. A data file is a file containing data. The actual data is stored outside DOMS.
  3. A metadata file is a file containing metadata. The file is stored inside DOMS.
  4. A grouping of files (files having a common prefix) is represented as a object with:
    1. Datastreams for each metadata file
    2. "hasFile" relations to data files

 

Pseudo code expressing the above rules

The following pseudo code is meant to express the above rules on a more formal basis.

Code Block
void handleDir(myDir, domsParentObject) {
  thisDirObject = new Object(label = myDir.getName());
  domsParentObject.addHasPart(object = thisDirObject, relationName = myDir.getPath());
  for(dir in myDir.getDirectories()) {
    handleDir(dir, thisDirObject);
  }
  
  handleFiles(myDir.getFiles(), thisDirObject);
}

void handleFiles(myFiles, dirParentObject) {
  for(group in myFiles.groupByPrefix) {
    if(hasDataFile(group)) {
      if(onlyDataFile(group)) {
        addHasFile(group, dirParentObject);
      } else {
        addHasPart(group, dirParentObject);
      }
    } else {
      addDataStream(group, dirParentObject);
    }
  }
}

void addHasPart(fileGroup, dirParentObject) {
  thisPartObject = new Object(label = fileGroup.getPrefix());
  dirParentObject.addHasPart(object = thisPartObject, relationName=fileGroup.getPrefix());
  
  for(file in fileGroup) {
    if(file.isDataFile) {
      addHasFile(file, thisPartObject);
    } else {
      addDataStream(file, thisPartObject);
    }
  }
}