Building a brand-new Digital Work Environment is not a simple thing.
Rethinking the environment within which Knowledge Workers are living everyday requires a lot of learning about their behaviors and work habits, a thought leadership and ability to push ideas to live.
Today I’m proud to share good news about the progress I’m doing on the Universe project. For a long time being a dream and focus for my research activities, the Integrated Storage system, called Context Storage, now becomes a reality within the Universe project!
Context Storage is my implementation of the Integrated Storage concept combined with my ideas on Context-aware Computing that I’ve been evangelizing for a long time. You can read an in-depth introduction into the Integrated Storage ideas in my blog post here.
To make the story short, the problem the Context Storage aims to solve is the following:
Solve the challenge of having information naturally represented as objects yet making it interconnected by powering it with all the relational algebra concepts.
Why it is the problem? There are lots of approaches to represent and store information about things* in the world, so let’s take a brief look on the existing situation in order to better understand the unique benefits of the Context Storage.
* Also there are lots of approaches, I classify them into three main categories:
- relational entities
- Semantic Web triples
Information as Objects
In the real world people use the concept of objects because it is easier to set boundaries between different things happening around them. These boundaries help us to distinguish things between each other, but our minds are flexible enough to change our understanding about particular things.
In the file system files are all about objects, but these objects have a state (schema) that is predefined by file format creators. Users are able to create new files, change their contents, but:
- users can’t change the schema of files => users can’t reflect changing of their understanding about particular things from the real world
- introduce new file concepts => users can’t introduce new things to the system
In the Relational Databases approach the schema of any particular entity is more customizable though making big changes to schema will lead to significant data loss and break work of information processing applications.
In the Semantic Web concept, the smallest piece of information (entity) is represented by an abstract Uri (like http://contextprocessorservice.contextplatform.neocytelabs.com/entities/project_universe/); you can describe this piece of information with triple (like “subject <Project Universe>” “predicate <is developed at>” “object<Neocyte Labs>”) that gives you a chance to say anything about any entity in the world. Like you can do that today in Wikipedia.
In the real world people intuitively understand that different things are interconnected between each other. Kids now that first people they see during first years of their lives are interconnected to them being named as parents. We know that apples are interconnected with the apple trees, etc.
In the file system files can be sitting together in the same directory or can be sitting in different directories. Users are able to build complicated hierarchies of directories to represent their perspective on different things and even save links to different files in other directories to reflect their understanding of interconnections between different things. Unfortunately,
- links in the file system are not really links – if you move file, link will stop working;
- complex hierarchies of directories are hard to maintain;
- it’s requiring too much attention for users to set all the links manually as well as organize their information into various hierarchies of directories as well as maintain these information organizations over the time.
In the Relational Databases approach it is possible to link different entities (stored in tables) between each other using the power of the relational algebra. This enables Relational Database Management Systems (RDMS) to make sophisticated queries on the data stored in these databases and give users the tools to construct and execute such queries. The problem of such an approach is that building a query tool as simple as putting few words with hope for the system to figure out things on its own based on RDMS is a complex problem.
In Semantic Web approach it is possible to reference any entities in the world using the Uris in the triples. It is possible to realize the idea of “Anyone can say Anything about Any topic” (the so-called AAA slogan) because the only reference being actually made between triples is reference to Uris. It is possible to make sophisticated queries across the information stored in the form of triples, though it still requires significant education to construct such queries.
The dream of the Context Storage is simple:
enable users to naturally work with information as they think about it, change it, build information structures as they need them over the course of their activities.
How to enable this dream?
Answer is old and simple: take the best from different approaches and build the combined platform capable to address the outlined needs.
Currently, Context Storage is capable of:
- publishing information in form of entities (Uri & Display Name)
- publishing facts about every entity in the world (AAA slogan implementation)
- remembering files provided by user (they are turned into entities as well)
- making full-text search across its information
- finding similar things inside its storage
There will be more features coming to the Context Storage in the future, but they will be disclosed as they will be released.
History of this project started back in 2003 when I’ve first time ever heard about the beautiful WinFS concept. The Integrated Storage idea itself is a dream of Bill Gates, and I was inspired by the challenge back in that time.
Since that time I’ve built a lot of various prototypes (first based on Microsoft Access, then MSDE, then I worked with WinFS in Windows Longhorn builds, then tried to re-build its concept at my own using SQL Server Express, then worked with WinFS Beta 1, then again tried to re-implement the Integrated Storage using SQL Server Express, SQL Server Compact Edition, SQLite and, more recently, with Triple Stores using DotNetRdf and building own graph-based triple stores based on WinRT Database for Windows 8).
Current Implementation Details
The current one is built on top of these Microsoft technologies:
- SQL Server 2012 (Stored Procedures | File Tables | Full-Text Search | Semantic Search)
- .NET 4 Web Services
- LINQ to SQL
Being a part of the Context Platform
Context Storage is built as part of the larger Context Platform system envisioned by me and my friends and colleagues back in 2007 in order to serve the Digital Work Environment “Universe” I’m developing now at Neocyte Labs.
Context Storage will replace the current Universe storage subsystem in order to enable Universe users to store, find, update & represent information of any kinds inside the Universe.
As the Context Storage is finally built and available for the Universe project, it’s time now to migrate all the existing UX work to use benefits of the Context Storage inside the system.