...
- Directories are treated as a "hasPart" relation to a new object.
- The name of the relation is the directory name
- The new object's label is the path of the directory.
- A data file is a file containing data. The actual data is stored outside DOMS.
- A metadata file is a file containing metadata. The file is stored inside DOMS.
- A grouping of files (files having a common prefix) is represented as a object with:
- Datastreams for each metadata file
- "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);
}
}
} |