=Paper=
{{Paper
|id=Vol-209/paper-2
|storemode=property
|title=Specifying the Collaborative Tagging System
|pdfUrl=https://ceur-ws.org/Vol-209/saaw06-full04-mesnage.pdf
|volume=Vol-209
|dblpUrl=https://dblp.org/rec/conf/semweb/MesnageJ06
}}
==Specifying the Collaborative Tagging System==
Specifying the Collaborative Tagging System ∗
Cédric Mesnage Mehdi Jazayeri
cedric.mesnage@lu.unisi.ch mehdi.jazayeri@lu.unisi.ch
Faculty of Informatics Faculty of Informatics
University of Lugano University of Lugano
Via G. Buffi 13 Via G. Buffi 13
6900 Lugano, Switzerland 6900 Lugano, Switzerland
The world is the totality of facts, not of things. is clearly not possible to formally specify the workings of the
(Ludwig Wittgenstein, [9], proposition 1.1) entire Internet. However, to be able to understand, explain,
and extend the behavior of aspects of any complex system,
we need a high-level precise description of those aspects. For
ABSTRACT a system as large and complex as the Internet, we should be
The collaborative tagging system is an interaction between able to build such a high-level description incrementally and
humans, terms and objects over time which results in a col- independently for different aspects. In this paper, we show
lectively organized knowledge. In this paper, based on the how this can be done for collaborative tagging, one of the
study of existing software systems, we present the specifica- emerging popular applications on the Internet.
tions of the collaborative tagging system written in TLA+.
Collaborative tagging [7] is an extension of the tagging ac-
tivity introduced in several popular websites such as Flickr
Keywords or del.icio.us. It has proven successful in these websites as
Collaborative Tagging, Specifications, TLA+, precise de- a way of sharing resources (i.e. photos, bookmarks).
scription
Collaborative tagging has also attracted the interest of re-
1. INTRODUCTION searchers [7] who are trying to understand the foundations of
To analyse emergent web applications scientifically, we need the activity, its current implementations, and possible role
precise abstract definitions of the fundamental elements in- in the collective intelligence idea. Collaborative tagging is
teracting in the systems in which these applications are suc- not merely a computer science problem in that it attempts
cessful. In this paper, we present the logic specifications to enable the collaboration of large numbers of humans in
of the abstractions interacting in the collaborative tagging collectively reviewing and structuring large amounts of infor-
system. mation with little restrictions imposed by the system. Many
contributions have been done lately[10, 6, 8, 1, 4]. We refer
Long-living software systems grow more complex over time. primarily to [1] and [4].
The behavior of such systems is not always well-understood
and is often a source of maintenance and extendibility prob- This paper has two primary goals: to show a precise de-
lems. The Internet, which started as a simple protocol (IP), scription (specification) of collaborative tagging, and to give
is now one of the more complex software systems ever as- an example of incremental derivation of specifications for
sembled, consisting of millions of components and applica- Internet-based services.
tions interacting with millions of users. New applications on
the Internet emerge regularly introducing new concepts and 1.1 Definitions
behaviors. These new concepts interact in sometimes unin- Since this paper is about precise descriptions, we start with
tended ways with other parts of the Internet making it ever a set of definitions in order to avoid misunderstanding on the
more difficult to understand the behavior of the Internet. It meaning of the main terms we use. Many of these definitions
∗This work is funded by the European Project can be found in the Oxford Dictionary. The glossary is given
“Nepomuk, the social semantic desktop”. in Figure 1.
http://www.semanticdesktop.org
To avoid ambiguity inherent in the use of the word “tag” as
both noun and verb, in this paper we use the word “tag” only
as a verb, that is, the actual act of tagging. For noun usage,
we use “term” to name the keyword used to tag. This avoids
confusion and enhances clearness of the specifications.
The collaborative tagging system is an interaction between
humans, terms and objects over time which results in a col-
lectively organized knowledge. In this paper we present and
explain specifications of this system. The next subsections of
this introduction describe briefly and informally this system
as seen in existing software and present the methodology we
choose to write the specifications. In order to facilitate the
Specification In [2] Michael Jackson claims that understanding of the specifications, we describe the abstrac-
tions involved in the collaborative tagging system specifica-
The terminology of software development is tion and first describe the collaborative tagging memory as
mostly in a chaos that correctly reflects the a module. We use model-checking to demonstrate the va-
chaotic state of the field. Usage of the word lidity of these specifications. Finally, we propose how our
specification is no exception. work can be extended in different directions.
(Michael Jackson, page 193)
But here we take as definition 1.2 The Collaborative Tagging System
The collaborative tagging system emerges from many new
A specification is a written description of software systems (i.e Del.icio.us, Flickr, Technorati, Con-
what a system is supposed to do. notea, CiteUlike, RawSugar...). It is a way of categorizing
(Leslie Lamport, [3], paragraph 4, page 1) knowledge by freely assigning sets of terms to objects (often
to web pages or bookmarks).
Collaborative produced or conducted by two or more par-
ties working together. A fundamentally new concept introduced by the new gener-
ation of Web applications such as collaborative tagging is to
Tagging attach a label to.
include and trust the user in further evolution of the system
System a set of connected things or parts forming a com- (and its associated information). In fact, anyone can create
plex whole. new terms in a simple way. The users feel that trust, and
we believe it explains the success of these software systems.
Engineering Engineering requires not just the ability to
use mathematics, but the ability to understand what, Another important aspect is collaboration. In traditional
if anything, the mathematics tells us about an actual software, an expert or a set of experts creates a thesaurus of
system. (Leslie Lamport, [3], page 21) categories and takes care of indexing documents themselves.
This avoids the insertion of erroneous data, but also the
Behavior The way in which a natural phenomenon or a
insertion of different aspects and viewpoints on the objects.
machine works or functions.
The collaborative tagging system allows anyone to index any
Abstraction The process of considering something inde- object without any restriction with meaningful terms. The
pendently of its associations, attributes, or concrete notion of meaningfulness is subjective, but the combination
accompaniments. of points of views from many people is more complete than
the one of only a chosen subset (experts). The resulting
Trust Firm belief in the reliability, truth, ability, or taxonomy is often called a folksonomy.
strength of someone or something.
Though simple in terms of software, this system exhibits
Term A word or phrase used to describe a thing or to ex- complex collective behaviors. As the number of people work-
press a concept, esp. in a particular kind of language ing collectively grows, the system of interaction between
or branch of study. them must be simplified. In a democratic political system,
Human A human being, esp. a person as distinguished the voting system is an example of a simple interaction to
from an animal or (in science fiction) an alien. decide collectively at a large scale. To organize knowledge
together, the interaction system between humans must be
Object A thing external to the thinking mind or subject. as simple as possible.
Phenomenon The object of a person’s perception; what Recent fundamental work as been done by analysing Del.icio.us[1]
the senses or the mind notice. and Flickr[4] tagging memory. In [1], Golder compares the
Observation The action or process of observing something tagging system to a typical filesystem organization
or someone carefully or in order to gain information.
Representation A mental state or concept regarded as In contrast to a hierarchical file system, a non-
corresponding to a thing perceived. exclusive, flat tagging system could, unlike the
system described above, identify such an article
Transcription A written or printed representation of as being about a great variety of things simulta-
something. neously...
Memory Something remembered from the past.
They describe how synonymous and polysemous aspects of
Figure 1: Fundamental glossary. terms can be solved in a collaborative tagging system and
define tagging as
Tagging is fundamentally about sensemaking.
They identified different ways people use terms to tag than implementation-oriented notations. Typically, a logi-
cal notation is most appropriate. For this purpose, we have
chosen to use TLA+ (Temporal Logic of Actions). We do
• Identifying what (or who) it is about. not discuss here the different values of such languages and
choose to use TLA+. Any number of equivalent notations
• Identifying what it is.
could be used for this purpose. One advantage of TLA is
• Identifying who owns it. that it comes with a model checker (TLC), which efficiently
validates the model and its properties.
• Refining categories.
Temporal Logic of Actions is a first order logic enriched
• Identifying qualities or characteristics.
with temporal operators. We describe in this section the key
• Self reference. aspects of such specifications and the language specifics. We
emphasize that the main purpose of writing specifications is
• Task organizing. to understand the system. According to Lamport:
in [4] Marlow gives a model of tagging which is represented The hardest part of writing a specification is
as a bipartite graph showing resources (what we call objects choosing the proper abstraction.
in this paper) on the left hand side and users on the right
The art of abstraction is learned only through
hand side. The edges between resources and users carry
experience.
some terms and represent an act of tagging (what we call
an observation in the following sections). He also identifies (Leslie Lamport, [3], page 24)
some aspects of tagging software systems :
Thus a large part of our effort has gone into deciding the ab-
• Tagging Rights. stractions to specify. We hope to give the reader the benefit
of our experience gained in formulating the specifications.
• Tagging Support. Note that such specifications may be defined for a system
that is yet to be built (forward engineering) in order to un-
• Aggregation.
derstand the requirements and help in evaluating the design
• Type of Object. alternatives, or for an existing system in order to understand
it better and help in enhancing it (reverse engineering).
• Source of Material.
In our case, the purpose of the specifications is to formally
• Resource Connectivity.
define possible behaviors of the studied system. A behavior
• Social Connectivity. is described by Leslie Lamport as
These empirical studies, together with our own understand- A behavior is an infinite sequence of states.
ing of existing software systems have been helpful in writing A behavior describes a potential history of the
the collaborative tagging specifications. In addition to these universe.
two works, there has been considerable research activity in
(Leslie Lamport, [3], paragraph 4, page 18)
this area recently [7].
1.3 Writing Specifications in TLA+ but for practical reasons, we consider only a subset of the
The role of specifications is both well-known and contro- abstractions which make sense to consider in the study of a
versial in the practice of software development. Here we particular system. In Figure 2, we present a behavior of the
are dealing with specifications of a system, as opposed to a HourClock example shown in [3]. In this representation only
specification of a design or architecture. We are using the two variables are considered, hr the current hour and tmp
term and the process in the sense of Lamport: the current temperature. Each state is represented by the
values of the variables. The process of writing specifications
is to first identify this kind of behavior and then formally
Specifying a system helps us to understand it. define the actions which describe a correct behavior.
(Leslie Lamport, [3], paragraph 4, page 1)
A specification in TLA+ (despite the declaration of vari-
ables and extensions needed) starts with a predicate which
The specification then can be used as a medium of commu- describes the potential initial state of a behavior. This is
nication among people about the system. The specification usually a conjunction of expressions describing the possible
may, for example, be used by software architects to design a values of the considered variables. The following predicate
particular implementation of the system. The specifications describes the initial state of the temperature hour clock ex-
∆
are thus a bridge between the requirements and the imple- ample. The = is read “is defined as equal to”.
mentation. They are also a means of defining the relation-
ship between the system and the real world. Thus, specifica- To describe the evolution from one state to another, one
tions must be specified at a much higher level of abstraction must define actions which are formulas containing variables
» – » –
hr = 11 hr = 12 phenomena are observable facts. Differing from typical se-
→ →
tmp = 23.5 tmp = 23.5 mantic systems, the facts are considered outside of the sys-
» – » –
hr = 12 hr = 12 tem. Only the human perceptions of the facts are considered
→ →
tmp = 23.4 tmp = 23.3 valuable. We do not have direct access to the facts, neither
» –
hr = 1 can we formulate them. We can feel an object, but we do
→ ··· not know what it really is.
tmp = 23.3
Through the senses, humans perceive the phenomena. The
Figure 2: An example behavior of the Hour Clock, resulting observations are the data of our system. Indeed
which also takes care of the temperature. the only thing that is known are the observations. Obser-
∆ vations are subjective, therefore different humans will have
HCTMPInit = different observations of the same phenomenon. Some per-
∧ hr ∈ {1, . . , 12} ceive the color, some others the shape or any other aspect.
∧ tmp ∈ Reals A fundamental premise of collaborative tagging is that the
combination of all these observations is the best picture we
enriched with a 0 which represent the value of the variable can get of the real phenomenon which occurred.
in the next state. The following predicate defines the hour
clock main action (which is to go from one hour to another When a human observes a phenomenon, he thinks a mental
and to pass to the value 1 after the 12), we don’t consider representation. This helps him to reason about the phe-
the temperature here: nomenon. Depending on the aspects he perceived in his ob-
servation, he mentally associates terms to the phenomenon.
∆
HCini = hr ∈ {1, . . , 12} These terms may be different for each human who observed
∆
HCnxt = hr 0 = (hr %12) + 1 the phenomenon so we need to consider them all.
A specification is a single formula which should satisfy both To be able to combine the mental representations of differ-
the initial predicate and the next-state actions for any step ent humans, we first need humans to express them. They
of the possible behaviors of the system. That is where we can not directly express their representations so they share
use the temporal operator 2 called “box” which expresses observations together with the terms they use in their men-
a formula which is “always true”. We can then write the tal scheme. This we call transcription. In the collaborative
specifications of the hour clock as follows tagging system, humans write their observations by tagging.
∆
HCSpec = HCini ∧ 2HCnxt When one assigns a tag to an object, the system stores the
observation in a memory. This memory is the set of all tran-
But as we have seen in Figure 2, some steps do not change scripted observations. A written observation is the associa-
the value of the variable hr especially if we consider a state tion of the human (the writer), the object of the observation,
being a state of the whole universe. Temporal logic of ac- the term of his representation and the date when he wrote
tions here introduce the concept of stuttering steps which it.
consider the possibility of having one or more variables left
unchanged from one state to another If we consider the vari- Other humans can then retrieve these observations from the
able hr as the stuttering variable, we write it as follows: collaborative tagging memory. When reading the observa-
∆ tions of other humans, the reader changes his representa-
HCSpec = HCini ∧ 2[HCnxt]hr
tions of the object as he now perceives the observations made
by different humans.
We now have the HCSpec formula which, if satisfied by a be-
havior, validates the behavior of the described system. This
Reading and writing are the two operations of the memory,
short description of the TLA+ language should be enough to
tagging and retrieving the two operations of the collabora-
enable the reader to understand the following system spec-
tive tagging system. We present in the next subsections the
ifications. The language is described fully in [3] which is
specification of the memory and of the whole system.
also available on the TLA Web page1 . The TLA system is
accompanied by a model checker, TLC, that may be used
The abstractions and the specifications presented here re-
to validate properties of well-defined specifications.
flect our understanding of many existing software systems
and of an ideal one. We try to be as generic and general as
2. THE COLLABORATIVE TAGGING SYS- possible to specify the collaborative tagging system and not
TEM SPECIFICATIONS a collaborative tagging software system.
To explain the specifications we first need to go back to the
abstractions of the collaborative tagging system. The col-
laborative tagging system is an interaction between humans,
terms and objects. In Figure 3 we give a graphic represen-
tation of this interaction which we explain in this section.
The environment of the collaborative tagging system is the
set of all phenomena emerging from the real world. The
1
http://research.microsoft.com/users/lamport/tla/tla.html
Figure 3: Diagram of the collaborative tagging system and its environment.
The phenomena are the environment of the system. Observations are the human perceptions of the phenomenon.
The representations are the mental association of terms to the observations. The transcription is the process of
writing the observations, what we call tag. The collaborative tagging memory stores observations.
2.1 The Collaborative Tagging Memory The next state actions of the memory are defined as Write(line
We define a module to specify the collaborative tagging 23), Read (line 27) and NextNow (line 31). A Write action
memory. The full specification of this module is presented occurs if there exists a human, an object and a term such
in Figure 5. The predicate on line 4 defines the initial state that the operation write for the time of now is true(line
of this system. We need to consider the time, represented 24-25). A write action leaves the variables buffer and now
by the variable now which is initially any value in the Time unchanged(line 26).
set(line 5). The Observations is the variable which stores
the data of our memory(line 6). In any initial state, the The Read action occurs if there exists a human, an object or
observations set may contain any observation that has been a term such that the operation read is true for the human as
done in the past. One particular observation is defined as the reader and the requests on the term and the object(line
a record which consists of values for a human, an object, 28-29). The read operation changes the buffer but leaves
a term and a date. Records allow us to write expressions the variables now and Observations unchanged(line 30).
like observation.human which represents the value of the
human in this particular observation. The set observation The NextNow action adds a second to the now variable if
in the initial state is a subset of the set of all records for any the resulting value is still in Time. It leaves the variables
human, object, term and date of the past(line 7-8). The buffer and Observations unchanged(line 32).
variable buffer is a function which for any human returns a
set of observations he requested. In the initial state this is We now define the next state action of the whole memory
set to the empty set for any human as no one has requested NextCollaborativeTaggingMemory as being the disjunction
anything yet(line 9). of the actions Write, Read and NextNow (line 33-34).
From the definition of the initial predicate, we can deter- The specification of the memory is defined by the predicate
mine the constants and variables we use. The constants CollaborativeTaggingMemorySpec which is the conjunction
can be seen as parameters of the system. When using the of the initial predicate and the temporal expression which re-
TLC model checker, the constants are set to particular val- flects that for all states, the next state action is true. There
ues. On line 3 we define the constants Humans(the set of all can be stuttering steps which leave the value of the variables
humans interacting with the memory), Terms(the set of all unchanged(line 37).
terms used in the memory), Objects(the set of all objects ob-
served), Time(the set of all values of time considered). This We now have the full specification of the collaborative tag-
is a tradeoff as new humans might enter the system during ging memory. In the following subsection we show how we
its lifetime, new terms could be created as new objects de- used the model checker to verify it.
fined, and the time passes without stopping. In a realistic
system, these constants would be variables. The reader can Model Checking The Collaborative Tagging Memory
understand constants as types.
Module
The variables defined on line 4 represent what change during The TLA+ language comes with a model checker, TLC. We
the life of the system. In this case the behavior is represented used it all along the writing process and it has been valuable
by the value of the Observations(the set of all observations in the refinement of the specifications. The model checker
written so far), now the time of now in number of seconds, takes a configuration file which give values to the constants
buffer (the state of the requests made by readers). and states the properties to be checked. Figure 4 shows the
configuration file we use to model check the collaborative
The type invariant property on line 16 defines that the be- tagging memory.
havior must respect the TypeInvariant for every state. The CONSTANTS
type invariant (line 10-15) is quite straightforward as the Humans = {"human:bob", "human:alice"}
variables now and Observations must be in any state allowed Objects = {"object:1","object:2"}
by the initial predicate. The function buffer must respect Terms = {"term:1","term:2"}
that for any reader, the set of observations requested is a Time = {1,2}
subset of the stored observations(line 15). SPECIFICATION CollaborativeTaggingMemorySpec
PROPERTY TypeInvariantProperty
This system being a memory storing the result of transcrip-
tions, its fundamental operations are defined as read (line
19) and write(line 17). The write operator defines the next Figure 4: The configuration file used to model check
state of the variable Observations as being the union of the the collaborative tagging memory specification.
current value of it and of the new observation that is written.
The model checker generated 66307 states and found 65792
The read operator is a bit more complex as it takes a reader distincts states without errors. The difference reflects the
and a set of requests. It defines the value of the next state number of ways which reach states with same values. It
of the function buffer and changes the value associated to means that the type invariant property is respected for any
the human reader . It sets this to the set of all observations state and that the specification permits to cover all these
which satisfy at least one request(line 20-22). Each request states.
is a record consisting of a type(either human, object, term
or date) and a value that is requested for that type. The
reader can then feel free to read the buffer prepared for him.
module CollaborativeTaggingMemory
1 extends Naturals, TLC
2 constants Humans, Terms, Objects, Time
3 variables Observations, now , buffer
∆
4 InitCollaborativeTaggingMemory =
5 ∧ now ∈ Time
6 ∧ Observations ∈
7 subset {[human 7→ human, object 7→ object, term 7→ term, date 7→ date] :
8 human ∈ Humans, object ∈ Objects, term ∈ Terms, date ∈ {t ∈ Time : t ≤ now }}
9 ∧ buffer = [human ∈ Humans 7→ {}]
∆
10 TypeInvariant =
11 ∧ now ∈ Time
12 ∧ Observations ∈
13 subset {[human 7→ human, object 7→ object, term 7→ term, date 7→ date] :
14 human ∈ Humans, object ∈ Objects, term ∈ Terms, date ∈ {t ∈ Time : t ≤ now }}
15 ∧ ∀ reader ∈ Humans : buffer [reader ] ∈ subset Observations
∆
16 TypeInvariantProperty = 2TypeInvariant
∆
17 write(writer , object, term, date) = Writing adds a new observation.
18 Observations 0 = Observations ∪ {[human 7→ writer , object 7→ object, term 7→ term, date 7→ date]}
∆
19 read (reader , requests) = Reading puts the requested observations in a buffer for the reader.
20 buffer 0 = [buffer except ![reader ] = {
21 observation ∈ Observations : ∃ request ∈ requests :
22 observation[request.type] = request.value}]
∆
23 Write =
24 ∃ human ∈ Humans : ∃ term ∈ Terms : ∃ object ∈ Objects :
25 ∧ write(human, object, term, now )
26 ∧ unchanged hnow , buffer i
∆
27 Read =
28 ∃ human ∈ Humans : ∃ term ∈ Terms : ∃ object ∈ Objects :
29 read (human, {[type 7→ “term”, value 7→ term], [type 7→ “object”, value 7→ object]})
30 ∧ unchanged hnow , Observationsi
∆
31 NextNow =
32 (now + 1) ∈ Time ∧ now 0 = now + 1 ∧ unchanged hObservations, buffer i
∆
33 NextCollaborativeTaggingMemory = A next state is defined by either reading, writing or passing the time.
34 Read ∨ Write ∨ NextNow
∆
35 CollaborativeTaggingMemorySpec =
36 ∧ InitCollaborativeTaggingMemory
37 ∧ 2[NextCollaborativeTaggingMemory]hnow , Observations, buffer i
Figure 5: The CollaborativeTaggingMemory specification
2.2 The Collaborative Tagging System CONSTANTS
Humans = {"human:bob", "human:alice"}
Figure 7 presents the full collaborative tagging system spec-
Objects = {"object:1","object:2"}
ifications. According to Figure 3, the collaborative tagging
Terms = {"term:1","term:2"}
system contains a collaborative tagging memory that we
Time = {1,2}
specified in the previous subsection. We instanciate the
memory module (line 4) and define as constants and vari-
SPECIFICATION CollaborativeTaggingSpec
ables the same one of this module. We introduce a new vari-
PROPERTIES ConsistencyProperty TypeInvariantProperty
able Representation which represents the state of the mind
of each human. The initialization predicate consists of the
initialization of the memory and the definition of the repre- Figure 6: The configuration file used to model check
sentations variable(line 11-12). A representation is a record the collaborative tagging system specification.
which consists of a human, an object and a term; initially,
the representations is any subset of all possible representa-
tions. We explain line 13 at the end of this subsection. we obtain the same results.
The two actions shown in Figure 3 are tag(line 21) and
retrieve(line 19). These are both interfaces to the collab- 3. FUTURE WORK
orative tagging memory.
3.1 Possible next steps
The next state actions are defined as Tag and Retrieve pred- Given a valid specification of collaborative tagging as pre-
icates on lines 30 and 23. The Retrieve action occurs if the sented here, there are several ways that it can be exploited.
reader has a representation which can help him to read ob- The most concrete step is to use it as a guide in design and
servations from the memory which change his representation architecture of an implementation. For example, the spec-
(lines 25-29). The Tag action occurs if the writer has a rep- ification can be used to guide the choice of data structures
resentation that he can write as an observation(lines 31-33). and representations for observations. We discuss this in the
next subsection.
The next state action Next is defined as the disjunction of
the NextNow action from the memory and for any human Another possibility is to explore enhancements to collabo-
either the Tag or the Retrieve action(line 34-36). rative tagging in a semantic way. For example, what is the
effect of associating several terms at the same time with an
The full specification predicate is shown on lines 37 and 38. object? Is that different from assigning each of the terms
It is the conjunction of the Init predicate and for all states separately?
of the Next action.
Third, we could define other Internet services such as col-
We introduce here a theorem that is implied by the specifi- laborative search and then explore the interaction of these
cation: “Humans know something about the world”. This services with collaborative tagging. This, indeed, can be the
is defined on lines 5 to 8 as being equals to: for all humans way to gain control over the ever-expanding set of services
there exists a representation owned by the human. Every- and understand their implications as they are introduced.
one knows at least something about the world, otherwise he
could not tag, neither retrieve anything and the property 3.2 Implementation proposals
Consistency would never occur. The consistency property
We are currently working on the implementation of these
is defined as eventually every human has the same represen-
specifications in the Gnowsis semantic desktop [5], defined
tation(line 14-18).
as:
“A Semantic Desktop is a device in which an individual
Model Checking The Collaborative Tagging Specifica- stores all her digital information like documents, multime-
tion dia and messages. These are interpreted as Semantic Web
To model check the theorem presented previously, we need resources, each is identified by a Uniform Resource Identi-
to check that the property ConsistencyProperty is respected. fier (URI) and all data is accessible and queryable as RDF
We introduce in the Init conjunction the predicate graph. Resources from the web can be stored and authored
HumansKnowSomethingAboutTheWorld . Otherwise the prop- content can be shared with others. Ontologies allow the user
erty never occurs. This is called an implied init. Figure 6 to express personal mental models and form the semantic
presents the configuration file used to model check the col- glue interconnecting information and systems. Applications
laborative tagging system. respect this and store, read and communicate via ontologies
and Semantic Web protocols. The Semantic Desktop is an
The data given as argument to the model checking is the enlarged supplement to the user memory.”
same we used to model check the collaborative tagging mem-
ory. TLC found 65792 distinct states and 329216 states were In the specifications, we did not care if the tagging memory
generated. The number of distincts states is the same as is distributed or centralized, for implementation purposes
with the collaborative tagging memory, which sounds natu- in the case of a desktop software system, we propose to
ral as we use the same data and that the tag and retrieve implement this memory as distributed amongst users and
actions are mappings to the read and write actions. This shared through the use of RSS (Really Simple Syndication)
gives us confidence in the validity of both specifications as using the XML format of Figure 8.
module CollaborativeTagging
1 extends Naturals, TLC
2 constants Humans, Terms, Objects, Time
3 variables Observations, Representations, buffer , now
4 instance CollaborativeTaggingMemory
∆
5 HumansKnowSomethingAboutTheWorld = Everyone has at least one representation of something.
6 ∀ human ∈ Humans :
7 ∃ representation ∈ Representations :
8 representation.human = human
∆
9 Init = The memory is initialized, every human has representations.
10 ∧ InitCollaborativeTaggingMemory
11 ∧ Representations ∈ subset {[human 7→ human, object 7→ object, term 7→ term] :
12 human ∈ Humans, object ∈ Objects, term ∈ Terms}
13 ∧ HumansKnowSomethingAboutTheWorld
∆
14 Consistency = Eventually everyone has the same representation of every object.
15 ∀ human ∈ Humans : ∀ other ∈ (Humans \ {human}) :
16 {hr .object, r .termi : r ∈ {r ∈ Representations : r .human = human}} =
17 {hr .object, r .termi : r ∈ {r ∈ Representations : r .human = other }}
∆
18 ConsistencyProperty = 3Consistency
∆
19 retrieve(reader , requests) = The retrieve action is defined as an interface to reading from the memory.
20 read (reader , requests)
∆
21 tag(writer , object, term, date) = The tag action is defined as an interface to writing to the memory.
22 write(writer , object, term, date)
∆
23 Retrieve(reader ) = When someone retrieves observations, it changes his representation.
24 unchanged hnow , buffer , Observations, Representationsi ∧
25 ∀ representation ∈ Representations :
26 ∧ representation.human = reader
27 ∧ retrieve(reader , {[type 7→ “object”, value 7→ representation.object], [type 7→ “term”, value 7→ representation.term]})
28 ∧ Representations 0 = Representations ∪
29 {[human 7→ reader , object 7→ observation.object, term 7→ observation.term] : observation ∈ buffer [reader ]}
∆
30 Tag(writer ) = When someone has representations, he can write them.
31 unchanged hRepresentations, buffer , now , Observationsi ∧
32 ∀ representation ∈ Representations :
33 representation.human = writer ∧ tag(writer , representation.object, representation.term, now )
∆
34 Next = The time passes or humans can either tag or retrieve.
35 ∨ (NextNow ∧ unchanged hRepresentations, buffer , Observationsi)
36 ∨ (∀ human ∈ Humans : Tag(human) ∨ Retrieve(human))
∆
37 CollaborativeTaggingSpec =
38 Init ∧ 2[Next]hnow , Observations, Representations, buffer i
39 theorem CollaborativeTaggingSpec ⇒ HumansKnowSomethingAboutTheWorld ∧ ConsistencyProperty
Figure 7: The CollaborativeTagging system specification
The specifications of the collaborative tagging system helped 5. REFERENCES
us to understand the least data needed in order for a soft- [1] Scott Golder and Bernardo A. Huberman. The
ware system to behave like the collaborative tagging system. structure of collaborative tagging systems. Journal of
In these specifications, an observation is a relation between Information Science, 32(2):198–208, April 2006.
a human, an object, a term and a date. If we consider the
human and the object being identified by URIs (Uniform [2] Michael Jackson. Software requirements &
Resource Identifier) as they are all considered as resources specifications: a lexicon of practice, principles and
in current systems, the term as a string, and the date as prejudices. ACM Press/Addison-Wesley Publishing
a date, we can determine the collaborative tagging XML Co., New York, NY, USA, 1995.
schema which defines CollaborativeTaggingMemory consist- [3] Leslie Lamport. Specifying Systems: The TLA+
ing of one or more observations as follows. (This schema Language and Tools for Hardware and Software
will be documented and available soon on the collaborative- Engineers. Addison-Wesley Longman Publishing Co.,
tagging.org website.) : Inc., Boston, MA, USA, 2002.
2006.
[5] Leo Sauermann, Ansgar Bernardi, and Andreas
Dengel. Overview and outlook on the semantic
desktop. In Proceedings of the 1st Workshop on The
Semantic Desktop at the ISWC 2005 Conference, 2005.
[6] Patrick Schmitz. Inducing ontology from flickr tags. In
Collaborative Web Tagging Workshop at WWW2006,
Edinburgh, Scotland, May 2006.
[7] Frank Smadja, Andrew Tomkins, and Scott Golder.
Collaborative web tagging workshop. In WWW2006,
Edinburgh, Scotland, 2006.
Figure 8: The XML Schema of the collaborative tag- [8] Jennifer Trant and Bruce Wyman. Investigating social
ging observations. tagging and folksonomy in art museums with
steve.museum. In Collaborative Web Tagging
Workshop at WWW2006, Edinburgh, Scotland, May
The specifications lead to an understanding of the services 2006.
provided by both the collaborative tagging system and the
collaborative tagging memory. This simplifies the writing [9] Ludwig Wittgenstein. Tractatus Logico-Philosophicus.
of WSDL(Web Services Description Language) documents Routledge, 1922.
describing these services. We plan to do it lately together
with the implementation of these services within Gnowsis. [10] Zhichen Xu, Yun Fu, Jianchang Mao, and Difu Su.
Towards the semantic web: Collaborative tag
suggestions. In Collaborative Web Tagging Workshop
4. CONCLUSION at WWW2006, Edinburgh, Scotland, May 2006.
This paper contributes to the emerging collaborative tagging
field with the formal specifications in TLA+ of both the
collaborative tagging memory and the collaborative tagging
system. We gave confidence in the validity of these by using
the TLC model checker. It results in a better understanding
of possible software systems respecting these specifications.
We enunciated a theorem resulting from this understanding.
We proposed an XML schema to uniformly represent the
collaborative tagging observations.
We hope that others will enhance and continue to validate
the properties of the collaborative tagging system specifi-
cation. Over time, modular and incremental specifications,
such as given here, are the only way to understand and ex-
plain how complex, interacting, evolving systems work. We
hope that a collection of such specifications about impor-
tant services on the Internet will enable us to reason about
the interactions of existing and emerging services and their
behaviors.