Frequently Asked Questions
on the Concept-Oriented File System (COFS)
Alexandr Savinov
http://conceptoriented.org/
First started: 24.01.2005
Last updated: 24.01.2005
1 File System Syntax and Semantics
1.1 What is the concept-oriented file system?
1.2 What are files, folders and concepts?
1.3 What is a file content?
1.4 How inclusion into folders is implemented?
1.5 Is it possible to include items from my own custom concept into
a folder?
1.6 How concept syntactic structure is represented?
1.7 Is it possible to combine inclusion into concepts and into folders?
1.8 What are names?
1.9 Is it necessary for files, folders and concepts to have names?
2 Related Technologies
2.1 What are main differences between MS WinFS and COM/COFS?
We will use the following example throughout this FAQ.

It is a possible (simplified) structure of a concept-oriented file system. It has two levels: file system level and database level. At the file system level it has several concepts such as Files or Concepts-Folders. At the database level it has user defined concepts like Mails. Inclusion of files, concepts and folders into other folders is implemented via special subconcepts.
It is a set of lower level system concepts intended to implement the traditional organization of information by using files and folders as well as the concept-oriented approach to information organization by using concepts and items. We say that it is of lower level because it is simpler and does not know about higher levels (the concept-oriented database). In concept graph it is positioned higher. In the example these two levels are divided by line.
File, folder and concept are items in the special COFS system concepts called Files, Folders, Concepts, respectively. These concepts have dimensions specific to these types of entities, e.g., date of creation/modification, size etc. File contents is formally considered its dimensions but normally its implementation is more complex.
Names are not dimensions because it is a part of the name system (it is a part of representation mechanism and is closer to references). Files, folders and concepts do not know anything about their names and moreover they do not need to have names at all. Item reference is an identifier that can be used within the scope of the COFS (including the database as a higher level). For example, we might store a file, folder or concept reference as our custom concept dimension value just like we do it for any other variables. For example, items from the concept Mails may reference a file with its attachment. Files, folders and concepts do not know anything about the structure of the file system. In particular, they do not know their parent folder or about other existing files, folders and concepts.
It can be viewed as a primitive type passed by value. It is just like number or other primitive type but having an arbitrary length. Thus file content is stored in a file item as one of dimension values.
In practice however it normally makes sense to implement file contents as a special domain with items passed by reference. These items then represent file content at physical level as an array of bytes or blocks while reference is this array identifies. This allows indirecting representation of such complex content and to have different options for its storage. It is a good idea to use a native file system file handles for such a purpose. Then native files in such an architecture play a role of physical storage while most parameters are stored at higher levels.
Just like for any relation, inclusion into folders is implemented via subconcepts Files-Folders, Folders-Folders and Concepts-Folders. These concepts have at least two dimensions pointing to the corresponding superconcepts.
Yes. To do this, declare a dimension with the domain in the Folders concept. For each new item specify an existing folder item as its parent. The life cycle management will guarantee the reference integrity and consistency of the semantics. In particular, if this folder is removed then all its internal items (files, folder, concepts and custom items) will be either removed or have null assigned (depending on options specified). Analogously, if a file item is deleted then all other items that reference it will be either deleted or nullified. For example, if an attachment is deleted (directly) the corresponding reference in the mail item should be probably nullified (without deletion of the mail).
The concept-oriented file system stores also the syntactic structure of the higher level database. A special concept Concepts-Concepts (not shown in the example diagram) stores the syntactic relationships among concept items. It has at least two dimensions both with the domain in the Concepts concept. For each existing concept item from Concepts there exist a number of parent concept items as its dimension domains. All these pairs are stored in the Concepts-Concepts concept as items.
In fact the concept Concepts-Concepts should have more dimensions in order to be practically useful. In particular, it may have a name of the dimension and dimension constraints. (Alternatively, dimension names might be a part of the common name system). Each item in this concept describes one dimension in the whole system with all its parameters.
Theoretically yes. We can include other types of items into concepts by creating the corresponding relation concepts. For example, we could create a concept Files-Concepts. The concepts then are used just like folders. Or, on the other hand, folders are able to include items. Notice that inclusion of files into folder is implemented explicitly via special concept while inclusion of items into a folder is implemented implicitly at the system level via 'instance of' relation.
Name is a part of the name system. Name system is a higher level identification mechanism over the reference system. In other words, names play the same role as items but they are adapted to the use by users while references are more convenient for the system. Name system is a convenience mechanism since names are assumed to be used by human users only. Thus if an item (including files and folders) is not going to be used by users directly then it should not have a name.
No. Names are a part of the name system, which is a higher level over the reference system. All items must have a reference but name system is a convenience mechanism intended to be used by human users. Normally names are assigned to items that have to be accessed directly by users. Fundamentally this means that names are passed and stored outside the system somewhere in physical or mental environment. For programs names are not convenient and should be avoided. For example, if an application stores its parameters in a file, which is not supposed to be edited or viewed by the user then this file does not need a name. Instead, the application can store this file item reference somewhere in parameters. Notice that files, folders and concepts without names will still be visible and accessible from the database. The only difference is that they do not have names.
http://www.c-sharpcorner.com/Longhorn/WinFS/WinFSDataModel.asp