We present a formal specification of the Semantic Web, as an extension of the World Wide Web using the well known algebraic specification language CafeOBJ. Our approach allows the description of the key elements of the Semantic Web technologies, in order to give a better understanding of the system, without getting involved with their implementation details that might not yet be standardized. This specification is part of our work in progress concerning the modeling the Social Semantic Web.
As the Internet and the Web technologies are evolving, the need for specifying and formally describing them becomes more vital. In [9] Paine presents an algebraic specification of one particular kind of structured website, a slideshow, where each page is linked to its successor and predecessor. It uses CafeOBJ's module system to break this down into modules. This specification can be divided in two main parts. The first part, is a specification of the World Wide Web and the second defines this special site. In this paper we will make use of the first part only.
As it is known, the Semantic Web does not replace the current Web, they coexist. More precisely, the first supplements the second by adding semantics, meaning and new operations. For this reason, we have used the specification of the Web from [9] and by specifying the additional semantic technologies we obtained a specification of the Semantic Web.
We believe that by using formal methods to model the Semantic Web, we gain at least a better understanding of the underlying system. We also focus on how different parts work together, prove desired properties and study them within a general framework.
The rest of this paper is organized as follows: section 2 presents the specification of the Semantic Web as well as a brief introduction to CafeOBJ. In section 3 we analyze some future goals and thoughts and we conclude our paper.
We have extended the specification of [9] by adding various modules, in order to describe the fundamental components of the Semantic Web and some of their basic interactions. This was achieved with the use of CafeOBJ and thus before continuing we will give a short overview of the language.
CafeOBJ is a language for writing formal specifications of models and verifying properties of them [1,2]. It can be used to specify abstract data types as well as abstract state machines. A CafeOBJ specification consists of modules. In the body of the module we can declare the following: sorts, operators, variables and equations. A sort is a CafeOBJ term that describes abstract data types with multiple inheritance and operational semantics based on term rewriting [6,7]. Declarations of operators start with op or ops if there are many. Operators are defined using equations; such a declaration starts with the keyword eq and the declaration of conditional equations with ceq. Also, the keyword used to denote a variable is var. The CafeOBJ system rewrites equations by regarding them as left-to-right rewrite rules.
One of the most important elements of CafeOBJ system is the module, as we said before. Thus, in figure 1 we show some of the modules we used as well as their connection. Two modules are connected when one imports another. We have used arrows that point to the module that is imported, to denote this relationship. As can be seen in figure 1, the module SEMANTICPAGE is linked to all the main modules of the specification (the grey-colored) and through this all the others are combined as well. Also, it is worth to mention that the module PAGES basically merges Paine’s Specification with ours and thus we get a specification of the Semantic Web.
Below we also analyze two of the modules used in our specification so that it can be better understood how we can specify and express a concept of interest in CafeOBJ. These modules correspond to two building blocks of the RDF language, one of the main components of the Semantic Web. The first module corresponds to an RDF triple and the second to an RDF graph. But before explaining the modules we shall give a short description to these Semantic Web components. The first line simply denotes that this is a module with tight semantics named TRIPLE, while the fifth line states that the name of the sort that this module defines will be triple (note that it is not necessary to use the same name for the module and its sort). Lines 2, 3 and 4 import some modules, by protecting them, which are predefined and needed for the declaration of the operators that will construct the sentences of the module. Finally, in the last line we define an operator, the constructor of the sort triple, rdftriple that takes as arguments the sorts subject, predicate and object (as declared in the imported modules) and returns the sort triple. Let us see a second module that is a little more complex.
This module is interesting because it is a view of a parameterized module. Here, we firstly import the parameterized module SET. This describes an arbitrary set whose elements are called Elt, a sort denoting an arbitrary element. We also ask from CafeOBJ to create a module with the name RDFGRAPH. This will also define a set but instead of arbitrary elements it will have triple as elements. Finally, the sort of this module will be rdfgraph and the constant that describes an empty graph will be Predicate Subject Object called empttr. This specification captures the essence of an rdf graph as defined above.
Applying the same methodolog
This content is AI-processed based on open access ArXiv data.