Human thinking is unseparable mix of simplification of multiple details of reality and reverse detailing of created generalizations. Two simple quotations express complexity of this process very well: "All models are wrong, but some are useful" (George Box) and "Make everything as simple as possible, but not simpler" (Albert Einstein). The very essence of intellect is constant balancing between simplicity and precision.
Similar balance concerns any technology too: it can be either simple enough and ignore some details, or precise enough and be complex. Therefore, any technology could have shortcomings (restrictions), which make its evolution almost infinite (restricted only with aspiration and abilities of human beings). But progress cannot be constant: evolution (both in technology and Nature) is alternating short periods of changes and quite long periods of stability. Changes cost some resources, therefore they result in a sort of chaos (because system becomes open for changes for a while), but which sooner or later lead to balance and stability.
Nowadays, we live in a periof of technological stability which borders with expectations of changes. Such expectations invoked by several causes: some technologies do not work as we want, some technologies still cannot work, some shortcomings could be ignored at the moment but our needs are growing every day. But the main cause is existing computer technologies have several fundamental contradictions, which will be considered further.
* Computer search can find everything
This statement can be true, if we restrict "everything". Machine searching works quite well with simple queries (which can be expressed with a few words and which are recommended to be used by search help) or which uniquely identifies something. But a search has problems as soon as it concerns ambiguous or quite complex queries. It is no wonder, because contemporary search deals with text. Using natural language, we always generalize and use ambiguous words, because we have no enough time for detailing all facts. A search cannot restore all lost information, therefore in some case it just cannot succeed.
Generalizing creates many problems of searching, but can page ranking solve these problems? Page ranking is generalizing of page importance, according with some algorithm. Of course, it won't work in some cases: for example, "drink" query can return "Cola" and "Pepsi" only because these drinks are important for many users. Some researchers hope personalization will be able to help in importance calculation basing on personal preferences. But these preferences are generalizations too: you can like orange juice but want apple one at this moment.
Solution: Precise semantic search
Larry Page once described the "perfect search engine" as one, which "understands exactly what you mean and gives you back exactly what you want". Ironically, search engines make everything possible to not match this definition. They based on sophisticated mathematical methods, which generalize things (and generalization is opposed to precision) and which could give incorrect result (for example, in some cases, any algorithm cannot deduct what "it" means). Namely therefore, a search should be based on exact meaning, which precision can be made mostly only by humans.
* Semantics restricted with experts, machines, formats, technologies
Semantics is available for programming long ago: in the essence, objects and actions of any application is semantics of some domain. This semantics may be used by humans only with the help of user interface, which links objects and actions with images or words of natural language. Semantic Web made semantics even more available. Unfortunately, only for experts and machines. Its standards are too complex for ordinary users (and experts underlines that Semantic Web has no usable representation for users). Also, you may note that Semantic Web just continues what was started by binary formats and XML: it is just yet another data format, though universal for whom accepted it. But it concerns only ordered data. What we should do with unordered information?
Some technologies and formats try to represent semantics by own means, which restricts it even more. Thus, EXIF may contain additional "metadata" for a picture, but a set of them is always restricted. Ontology of Semantic Web can describe some domain, but we often violate borders of domain (for example, ontology of musical albums may imply artists, but who can guarantee we won't need a query of artists which lived in certain city, in given period of time?) Metaweb (which is already a part of Google) offers automatic detection of entities, which may have multiple spellings. However, their site declares that they operates with dozens millions of such entities. At the same time, there is several billions people (each is such "entity"), we use millions of geographical names, names of art pieces, etc, etc. Is this technology ready to deal with billions of entities? Is it ready to provide an algorithm, which would exactly recognize similar names automatically? And do we need such algorithm if humans can easily do it explicitly?
Solution: Affordable semantics
We need a form, which will make semantics affordable for ordinary users. This form should link semantics with representations, which can be understood by an user. Today, such links are established mainly by applications, but we cannot create a separate application for each our idea. Moreover, semantics should be not a set of restricted formats, but rather a set of atomic formats, which can be linked with each other. Similarly, each word of natural language is such atomic formats. Namely therefore, we can know what "hare" is without deep knowledge in zoology and physiology.
* Implicit conventions
Usually, file system is compared with documents or books in office (therefore we use such terms as a file/folder). However, this analogy corresponds to internal mechanism of document exchange, when you should know which folder has concerned information. But the situation is different if we outside of the system: then, you request information (book) and just receive it (similarly mind does not know which part of brain contains requested information). A search corresponds to this "external" mechanism, however, it is not perfect and quickly redirects us to the same "internal" mechanism by providing URI or file path. We use the same mechanism in Internet too: Web surfing is, in fact, a mere file copying.
But the situation is even worse because each file identifier is just text. Which means, we cannot use it meaningfully, therefore we create names with some implicit conventions like "Braveheart (1995).avi". The same story is with all identifiers which used in applications, which cannot be extended: usually, then we use some additional signs of meaning like prefixes or suffixes like "[Ru] Braveheart (1995)".
Solution: Explicit identification
File name and URI is needed to identify information. But because this identification aims to make information unique only inside certain computer entity (like folder or domain system), and because it has no semantic restrictions (you can copy an audio file in "Video" folder), it is meaningless. Instead, we need identification which will coincide with that we use in real life, but also, which will extend it (for example, in real life, we cannot identify episodes of a movie or a part of an application, which usually identified with several sentences). The main goal of identification: to answer to "What is it?" relating to any information (an entire file or just a part of a web page). And results of this identification should be copied together with information to be shared. Therefore, identification mechanism should be equivalent and available at any computer system.
* Interface, applications, documentation, communicating live in parallel worlds
Interface is a part of semantics, it abstracts meaning in the form, which is convenient for an user or a developer, etc. But today user interface is not a part of semantics but it is rather linked by code with application semantics. Additionally, it has own shortcomings. For example, graphical interface has no problems only when a quantity of visual elements is restricted (and when we can memorize them). As soon as their quantity grows we confronts with that: (a) it is impossible to express everything with pure graphics, therefore natural language is used, (b) it is impossible to work with huge quantity of visual elements, therefore nested elements used, but which hide some elements, and which makes it difficult to find some application features, (c) it is impossible to reuse graphical interface elements. Simplicity of graphical interface is usually achieved by (1) decreasing of application features, (2) automatic handling (some "optimal" algorithm restricts available features by generalizing).
Documentation is a part of semantics too, which sometimes is forgotten by application creators. Though, it is not their fault there is no way to use semantics by different parts of an application.
Social networks are one of main trends of Web 2.0. However, though they were created for collaboration, often they used only for communicating, whereas collaboration is ignored. If so, is this trend unique? And is there big difference between Web, email, instant messaging, and social networks? In all cases, we may see different ways of information exchange between a sender and a recipient. Web: a recipient (browser session) sends a request, a sender (computer) responds. Email: a sender (mail box) transmits message, whereas a recipient (mail box) checks for updates. Instant messaging: a sender (account) transfers a message to a recipient (account). Blog: a sender (account) publishes a message, a recipient (browser session) reads a message by a link. All these ways are just different transports for information, and their internal features should be our concern only because they deliver information differently (as with real life telegraph, phone, or regular mail).
Solution: Semantic-driven system
Semantics is the core of any information, but it is not enough without its representation and communication. The first aspect is usually called as an interface (which includes both natural languages, and binary formats, graphical user interface, Web pages, programming interface, etc). The second aspect is a transport (which includes hypertext protocol, email, social networks, etc). Semantics and its aspects will work together, for example, as follows: (1) you detect an error in an application, (2) you identify the error and the area of occurence (which means, further you work with precise identifiers), (3) the error description can be not precise enough, but precise identifiers allows other users correspond the error with other errors in concerned area of an application, or with documentation for this application area, (4) you can send the error description to other people and this description will be automatically merged with their personal space of facts (it could be possible because you can share the same identifiers with equivalent semantic links).
But semantics would not work by itself: it should be supported by interface. One of key interface features is meaning restriction (for example, a word restricts information context, a combobox restricts possible values), which implies the conception of context (a part of information which affects the current situation). Personalization, a search, and file folder are particular cases of context. And namely context usage can solve the problem of the breadth of numerous facts, which confronts everyone who works with semantics.
As you may see, the most of existing problems relate to semantics this way or another. But strangely enough, today there is no way of dealing with semantics, similarly as programming deals with information in computer-oriented form (data) and process it (code), or as design which deals with human-oriented form (interface). Moreover, namely programming and design can delegate a part of own functions, to establish the conception of semantic composing. Indeed, any information (for example, a web page) can be envisioned as a mini-application, which may responds to input (queries or questions) with output (responses), which is similar to simple application for accessing database. But an application usually requires more effort, whereas identifying and establishing semantic links inside a piece of information can be much quicker. The same web page can have gorgeous graphical design, but represents terrific semantic mess, which can be resolved with more strict semantic composing.
Eventually, semantic developing can influence information technologies even more. Today, we are in the very beginning of semantics usage: usually, different web pages rival over possibility to represent some general information. This is the result of the nature of modern search engines, which can search only general information. The real development of semantics will start only when they will be able to find unique information. And this can make semantic development even more serious, because it will force us to develop any piece of information more strictly. You can imagine it as the process of design, development, and testing of even quite simple Web page as a black box, which should give (unique) answers to some (unique) questions.
Problems described above are mutually affected:
- Semantic composing depends on exact search, which should be equivalent in different systems
- Exact search depends on identification, which allows exactly compare a request and a content
- Efficiency of identification depends on usage of contexts, which restricts interface
- Context depends on semantic relations
- Usage of semantic relations should be affordable for an ordinary user with semantic composing
Namely therefore, none separate solution which affects only one problem area (as an efficient search engine, an entity system, or Semantic Web) may solve all problems. The integral solution is needed, which affects all points described above. More specific description of the solution can be found in "How to solve problems of contemporary search?".