Thesis full text (PDF) - Politecnico di Milano
Thesis full text (PDF) - Politecnico di Milano
Thesis full text (PDF) - Politecnico di Milano
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
POLITECNICO DI MILANO<br />
V Facoltà <strong>di</strong> Ingegneria<br />
Corso <strong>di</strong> Laurea Specialistica in Ingegneria Informatica<br />
Dipartimento <strong>di</strong> Elettronica e Informazione<br />
Applying Ontology and Reasoning to the Semantic Web for<br />
Recommendation<br />
Supervisor: Prof. Marco Brambilla<br />
Master’s <strong>Thesis</strong> of<br />
Junayeed, Mohammad Abdullah<br />
Matr: 722892<br />
Anno Accademico 2009/2010
Abstract<br />
The thesis aims at implementing a web based social networking application using an existing<br />
model-driven knowledge-intensive web application framework. The application is mainly based<br />
on ontology and semantic web application with recommendation features. The increasing needs<br />
for information integration and exploitation expect an approach which solves impuissance that<br />
the tra<strong>di</strong>tional web applications are suffering. The architecture of the framework is based on<br />
model driven approach which also use reasoning technique to deduct some new information and<br />
relation which allows us to explore recommendation. In the framework we have extended some<br />
components and patterns which is also important to verify the consistency and incompleteness of<br />
the design of the application. We also have implemented a real world application. Lastly we have<br />
made a comparative analysis on the <strong>di</strong>fferent techniques.<br />
2
Table of Contents<br />
Abstract .......................................................................................................................................... 2<br />
1. Introduction .............................................................................................................................. 5<br />
1.1 Motivation ........................................................................................................................... 5<br />
1.2 Overview of the Approach ................................................................................................ 6<br />
2. Background ............................................................................................................................. 10<br />
2.1 Model Driven Architecture (MDA) ................................................................................ 10<br />
2.1.1 Review of MDA .......................................................................................................... 10<br />
2.1.2 Basic concepts ............................................................................................................. 10<br />
2.1.3 MDA in our Approach .............................................................................................. 12<br />
2.2 Web Modeling Language (WebML) .............................................................................. 13<br />
2.3 WebRatio ............................................................................................................................ 15<br />
2.4 Semantic Web .................................................................................................................... 17<br />
2.4.1 A First Look at the Semantic Web ........................................................................... 17<br />
2.4.2 RDF ............................................................................................................................... 19<br />
2.4.3 OWL ............................................................................................................................. 20<br />
2.5 Ontology ............................................................................................................................ 20<br />
2.6 Approaches to Knowledge Representation .................................................................. 22<br />
2.7 Usage of UML ................................................................................................................... 22<br />
2.8 UML Primitives for Data Semantics Representation ................................................... 23<br />
2.9 Reasoning Capabilities for UML Models ...................................................................... 24<br />
2.9.1 Representation Formalisms ...................................................................................... 24<br />
2.9.2 Reasoning Engines ..................................................................................................... 24<br />
3. Semantics Web based Recommendation System .............................................................. 27<br />
3.1 Components for Knowledge Representation ............................................................... 27<br />
3.1.1 Class Component ....................................................................................................... 27<br />
3.1.2 Datatype Component ................................................................................................. 30<br />
3.1.3 Property Component ................................................................................................. 30<br />
3.1.4 Hierarchy Components ............................................................................................. 31<br />
3.1.5 Instance Component .................................................................................................. 32<br />
3.1.6 Property Value Component ...................................................................................... 33<br />
3.1.7 Explanation Component ........................................................................................... 34<br />
3.1.8 Add Components ....................................................................................................... 35<br />
3.1.9 Add Class Component .............................................................................................. 36<br />
3.1.10 Add Datatype component ....................................................................................... 37<br />
3.1.11 Add Property component ....................................................................................... 38<br />
3.1.12 Add Property Value component ............................................................................ 39<br />
3.1.13 Add Instance component ........................................................................................ 39<br />
3
3.1.14 Remove Components ............................................................................................... 40<br />
3.1.15 Remove Class component ....................................................................................... 42<br />
3.1.16 Remove Datatype component ................................................................................ 42<br />
3.1.17 Remove Property component ................................................................................. 43<br />
3.1.18 Remove Property Value component ..................................................................... 44<br />
3.1.19 Remove Instance component .................................................................................. 45<br />
3.2 Knowledge‐base Management Components ................................................................ 45<br />
3.2.1 Create‐KB component ................................................................................................ 45<br />
3.2.2 Release‐KB component .............................................................................................. 46<br />
3.2.3 Import‐XMI‐to‐KB component ................................................................................. 46<br />
3.2.4 Export‐XMI‐from‐KB component ............................................................................ 47<br />
3.3 Patterns for Knowledge Exploration and Management ............................................. 47<br />
3.3.1 Knowledge Exploration ............................................................................................. 47<br />
3.3.2 Knowledge Management .......................................................................................... 53<br />
3.4 Social Network Application ............................................................................................ 55<br />
3.4.1 Use Cases of the Application .................................................................................... 55<br />
3.4.2 Application Specification .......................................................................................... 57<br />
3.4.3 Application Design .................................................................................................... 61<br />
3.4.4 Uses of Components and Patterns in the Recommendation Application .......... 63<br />
4. Implementation Experience .................................................................................................. 66<br />
4.1 WebML and WebRatio background .............................................................................. 66<br />
4.2 Runtime Architecture of the Framework ...................................................................... 69<br />
4.3 Implementation of Components..................................................................................... 70<br />
4.3.1 Content publishing units ........................................................................................... 70<br />
4.3.2 Content management operations ............................................................................. 71<br />
4.3.3 Implementation .......................................................................................................... 73<br />
4.4 Implementation of Patterns ............................................................................................. 74<br />
4.5 Application Implementation ........................................................................................... 76<br />
5. Related Work .......................................................................................................................... 86<br />
6. Comparison ............................................................................................................................. 88<br />
7. Conclusion .............................................................................................................................. 92<br />
References ................................................................................................................................... 94<br />
4
1. Introduction<br />
At present the Web applications involve more in terms of explicitly declared semantics of<br />
published and managed data, because of increasing demands for information integration and<br />
exploitation. Typically, the con<strong>text</strong>, and the content of the Web applications assembled from<br />
several heterogeneous sources, on which no assumption of common terminology can be done.<br />
Recent evolutions of Web applications involve abstruse demands in the explicitly declared<br />
meaning of managed data in terms of real-world entities. Data and its non-ambiguous<br />
interpretation must be shared between involved parties. In this setting, applications do need to<br />
know the meaning of the shared data that we reference in the rest of the article as data semantics.<br />
Once such knowledge is formalized and explicitly integrated into the system, it may be<br />
interpreted and managed with application-dependent means for delivering the system services<br />
and products.<br />
The aforementioned limitations can be overcome by representing Web data semantics using the<br />
UML class <strong>di</strong>agrams. We are using an existing framework [1] to serve this purpose which can<br />
check the consistency of a knowledge base represented by a UML class <strong>di</strong>agram, and can make<br />
inferences upon the UML objects derive new associations between Web data. We have<br />
developed a model-driven knowledge-intensive web application with recommendation feature.<br />
1.1 Motivation<br />
Tra<strong>di</strong>tional Web applications aim at offering information to users in terms of contents that can be<br />
browsed, searched, and mo<strong>di</strong>fied through navigational links. But unfortunately, the<br />
implementation techniques that are currently used for Web applications suffer of several<br />
impuissances:<br />
• Semantics of data and navigation is conveyed only within design documents that are not<br />
usually available along with the Web data at runtime, thus making it impossible to grasp<br />
the meaning of the implemented data structures.<br />
• Tra<strong>di</strong>tional Web applications are not rich enough to cover commonly required aspects of<br />
data semantics representation, like generalization hierarchies with overlapping<br />
5
classifications, recommendation, transitivity of relations, and static and multi-valued<br />
attributes.<br />
• The available data retrieval mechanisms usually require design-time specification of the<br />
content structure, thus failing to deliver objects when the relations among them are not<br />
known a priori.<br />
These drawbacks become more and more critical in several Web information systems that<br />
require awareness of both system data and its semantics specially in the social network web<br />
applications where reasoning on the user profile as well as other information which could help to<br />
identify common interests among users.<br />
In summary, the application must be integrated with the data semantics and inference mechanism<br />
by which can deduct some interesting information in applications that involve content<br />
personalization, adaptively, recommendation and machine-to-machine sharing. All these<br />
information systems need to make decisions upon knowledge that is derived mainly from their<br />
data and its semantics.<br />
To fulfill such requirements, tra<strong>di</strong>tional modeling approaches for Web applications must be<br />
extended from a purely database oriented or object oriented perspective, to a <strong>full</strong>-fledged<br />
semantics based and ontology based perspective. This involves dramatic changes from static and<br />
syntax-based models to dynamic and semantics-based knowledge.<br />
1.2 Overview of the Approach<br />
To overcome the impuissance of Web applications, new effective and efficient tools are needed<br />
so that application designers move to knowledge-intensive application development, without<br />
losing development productivity and results quality.<br />
We are using a framework [1] for designing and implementing a Web application with<br />
recommendation lineament that leverage data semantics for achieving the abovementioned<br />
results. More precisely, we address three main objectives:<br />
6
• Definition of the formal representation of Web data semantics. We offer a representation<br />
method (based on the UML notation) of the knowledge we want to get from Web data,<br />
considering the usability, expressivity, inference and derivation of new information<br />
possibilities.<br />
• Specification of a set of components for managing Web data semantics and producing<br />
knowledge. We define a framework of reusable programming primitives that interact<br />
with the reasoning engines and apply queries for delivering contents to the user.<br />
• Specification of a set of patterns that exploit the abovementioned components and to<br />
develop the recommendation applications.<br />
The framework explores the UML as knowledge representation language. The main motivation<br />
of this choice was the wide adoption and acceptance of the UML notation in software<br />
engineering and its imme<strong>di</strong>ate applicability to design and development of desktop and web<br />
applications. In the framework, Pellet [53] has been used as the reasoning engine enabling<br />
inferences upon UML models. Given the UML representation of knowledge is fit in Pellet [53],<br />
an inference engine that exposes its capabilities by means of Java interfaces. The main reason of<br />
using a reasoner is to deduct some information from the knowledge base based on the user<br />
profile and to use these information recommendation purposes.<br />
UML class <strong>di</strong>agrams are already proved and widely used to be a valid representation language<br />
for data semantics. We represent Web data semantics with UML class <strong>di</strong>agrams and we are using<br />
a framework for data querying and reasoning able to: (i) check the consistency of a knowledge<br />
base represented as a UML class <strong>di</strong>agram; (ii) make inferences upon the UML objects deriving<br />
new data associations; and (iii) deliver and update knowledge.<br />
Figure:1.1 depicts the phase by phase development process of a knowledge-intensive Web<br />
recommendation application and the initialization of its knowledge repository, accor<strong>di</strong>ng to the<br />
proposed method. As a first step, the data semantics is modeled in UML using a CASE tool of<br />
choice.<br />
7
Upon the previous UML model, the designer visually specifies the design of both the Web<br />
application functionalities, and the knowledge repository (hol<strong>di</strong>ng the semantics during the<br />
application execution) using the framework components.<br />
Once the application model has been created, the CASE tool supporting the framework provides<br />
automatic generation of the application code (on the J2EE platform). At runtime the knowledge<br />
developer inserts the knowledge (specified as XMI representation of the UML models) in the<br />
repository, and eventually the final user will be able to browse the application hyper<strong>text</strong>s.<br />
Modeling Actions<br />
Runtime Actions<br />
Manual<br />
Manual<br />
Automatic<br />
Automatic<br />
UML<br />
modeling<br />
AND<br />
Visual design:<br />
ontology<br />
query &<br />
management<br />
XMI<br />
representation<br />
XMI<br />
translation<br />
to<br />
ontology<br />
Manual<br />
Automatic<br />
Automatic<br />
Visual design:<br />
knowledge<br />
repository<br />
management<br />
AND<br />
Generation<br />
of<br />
running<br />
application<br />
Interaction with<br />
knowledgeintensive<br />
application<br />
CASE tool<br />
i.e IBM<br />
Rational<br />
Framework<br />
tool<br />
user<br />
interfaces tool<br />
i.e Browser<br />
Figure 1.1: Development phases of knowledge-intensive Web applications<br />
This framework [1] is implemented within WebML [3], a DSL for Web applications design that<br />
features visual modeling, CASE tool support, and automatic code generation. The<br />
implementation experience comprises:<br />
• the specification and implementation of the WebML primitives correspon<strong>di</strong>ng to the<br />
framework components<br />
• the specification of the patterns in WebML<br />
• the code generation with the WebRatio CASE tool [55] integrated with the Pellet<br />
reasoner.<br />
8
This approach overcomes the developers’ resistance to the new knowledge-oriented and<br />
semantics-oriented para<strong>di</strong>gm thanks to the adoption of the widely accepted UML notation and to<br />
its imme<strong>di</strong>ate applicability to design and development of applications. Using this framework, we<br />
have developed a web application.<br />
9
2. Background<br />
2.1 Model Driven Architecture (MDA)<br />
2.1.1 Review of MDA<br />
The MDA defines an approach to IT system specification that separates the specification of<br />
system functionality from the specification of the implementation of that functionality on a<br />
specific technology platform. To this end, the MDA defines an architecture for models that<br />
provides a set of guidelines for structuring specifications expressed as models.<br />
The MDA is a new way of writing specifications, based on a platform-independent model. A<br />
complete MDA specification consists of a definitive platform-independent base UML model,<br />
plus one or more platform-specific models and interface definition sets, each describing how the<br />
base model is implemented on a <strong>di</strong>fferent middleware platform.<br />
The MDA approach and the standards that support it allow the same model specifying system<br />
functionality to be realized on multiple platforms through auxiliary mapping standards, or<br />
through point mappings to specific platforms, and allow <strong>di</strong>fferent applications to be integrated by<br />
explicitly relating their models, enabling integration and interoperability and supporting system<br />
evolution as platform technologies come and go.<br />
2.1.2 Basic concepts<br />
Systems notions<br />
Two <strong>di</strong>fferent system notions exist: the teleological and the ontological system notion [4]. The<br />
teleological system notion is about the function and the (external) behavior of a system. This<br />
notion can be visualized with a black-box model. The teleological system notion is adequate for<br />
the purpose of using or controlling a system. The ontological system notion, on the other side,<br />
can be used for buil<strong>di</strong>ng or changing a system. It is about the construction and operation of a<br />
system and can be modeled with a white-box model.<br />
10
Both the teleological and the ontological system notion are relevant for designing a system [4].<br />
In other words: both the functional and the constructional perspective of a system are relevant. In<br />
software, the terms functional design and technical design are often used to refer to these<br />
perspectives.<br />
Model<br />
A model of a system is a description or specification of that system and its environment for some<br />
certain purpose. A model is often presented as a combination of drawings and <strong>text</strong>. The <strong>text</strong> may<br />
be in a modeling language or in a natural language [5].<br />
Viewpoint<br />
A viewpoint on a system is a technique for abstraction using a selected set of architectural<br />
concepts and structuring rules, in order to focus on particular concerns within that system. Here<br />
‘abstraction' is used to mean the process of suppressing selected detail to establish a simplified<br />
model [5].<br />
Platform<br />
A platform is a set of subsystems and technologies that provide a coherent set of functionality<br />
through interfaces and specified usage patterns, which any application supported by that platform<br />
can use without concern for the details of how the functionality provided by the platform is<br />
implemented [5]. In principle a platform is a place to launch software on. Examples of platforms<br />
are operation systems, the Java Virtual Machine, runtime libraries of programming languages,<br />
etc.<br />
Platform Independence<br />
Platform independence is a quality, which a model may exhibit. This is the quality that the model<br />
is independent of the features of a platform of any particular type. Like most qualities, platform<br />
independence is a matter of degree. So, one model might only assume availability of features of a<br />
very general type of platform, such as remote invocation, while another model might assume the<br />
availability a particular set of tools for the CORBA platform. Likewise, one model might assume<br />
11
the availability of one feature of a particular type of platform, while another model might be<br />
<strong>full</strong>y committed to that type of platform [5].<br />
Pervasive Services<br />
Pervasive services are services available in a wide range of platforms [5]. In the MDA pervasive<br />
services are modeled as platform independent. Examples are Directory services, Event handling,<br />
Persistence, Transactions, and Security [6].<br />
Application<br />
The term application is used to refer to computer software delivering certain functionality.<br />
Implementation<br />
An implementation is a specification, which provides all the information needed to construct a<br />
system and to put it into operation [5].<br />
Model Transformation<br />
Model transformation is the process of converting one model to another model of the same<br />
system [5].<br />
2.1.3 MDA in our Approach<br />
The development of Web sites with a model-driven approach has been specifically addressed by<br />
two important research projects, namely Araneus [7] and Strudel [8]. The first generation of<br />
conceptual models for the Web [9][10][11][12][13][14][15] essentially considered Web<br />
applications as a variant of tra<strong>di</strong>tional hyperme<strong>di</strong>a applications, with the particularity that the<br />
published contents are extracted from a database, and user interaction with the application takes<br />
place via the me<strong>di</strong>um of the Internet. Therefore, these modeling approaches have focused on<br />
capturing the structure of the application contents, e.g., as a set of object classes or entities<br />
connected by associations or relationships, and the navigation primitives, represented by such<br />
concepts as pages, content nodes, and links. One such model is WebML, described in [15].<br />
WebML allows specifying a Web site on top of existing data sources. A conceptual model<br />
12
consists of a data schema, describing application data, and of one or more hyper<strong>text</strong>s (called site<br />
views), expressing the Web interface used to publish and manipulate such data.<br />
The specification of a WebML application consists of a set of models: the application data model<br />
(an extended Entity-Relationship or UML Class Diagram), one or more hyper<strong>text</strong> models (i.e.,<br />
<strong>di</strong>fferent site views for <strong>di</strong>fferent types of users), describing the Web application structure; the<br />
presentation model, describing the visual aspects. The hyper<strong>text</strong> main concept is the site view,<br />
which is a graph of pages; pages are composed by units, representing publishing of atomic pieces<br />
of information, and operations for mo<strong>di</strong>fying data or performing arbitrary business actions. Units<br />
are connected by links, to allow navigation, parameter passing, and computation of the hyper<strong>text</strong>.<br />
We do not exploit MDA entirely but we inspired and do some transformation from WebML<br />
where WebML assures MDA.<br />
2.2 Web Modeling Language (WebML)<br />
Web Modeling Language (WebML) is a methodology for specifying complex web application<br />
design at the conceptual level. WebML guarantees a model driven architecture (MDA) approach<br />
for developing web application. This is a key factor for defining a novel generation of CASE tool<br />
for the construction of complex sites and for supporting advanced features like personalization,<br />
evolution and multi device access. It enables the high level description of a web application<br />
under <strong>di</strong>stinct orthogonal <strong>di</strong>mensions – structural model (the data content), composition model<br />
(the pages that compose it), navigation model (links between the model), presentation model (the<br />
layout and graphic requirements for page rendering), and personalization model (customized<br />
features of the contents). WebML consists a set of visual graphic notation to represent all the<br />
components for defining the conceptual schemas and to represent the hyper<strong>text</strong> interface. The<br />
WebML primitives are also provided with an XML-based (XMI format) <strong>text</strong>ual representation<br />
for specifying the data underlying the application. WebML exploits the ER (Entity Relationship)<br />
model which consists of entities defined as containers of data elements and relationships defined<br />
as semantic connections between entities.<br />
The specification of a site in WebML consists mainly four orthogonal perspectives:<br />
13
• Structural Model: The structural model expresses the data content of the site. The content<br />
is expressed in terms of relevant entities and relationships (Figure 2.1.a). WebML is<br />
compatible with classical notations like Entity Relationship (E-R) model [16], the ODMG<br />
object-oriented model [17] and UML class <strong>di</strong>agram [18].<br />
• Hyper<strong>text</strong> Model: The hyper<strong>text</strong> model can be published in the site. Different hyper<strong>text</strong><br />
defines <strong>di</strong>fferent site view (Figure 2.1.b). The site view consist two sub models:<br />
o Composition Model: It specifies which page composes the hyper<strong>text</strong> and which<br />
content units make up a page. There are six <strong>di</strong>fferent types of units available to<br />
build up a page. The units are following: data, multi-data, index, filter, scroller<br />
and <strong>di</strong>rect units. Composition units are defined on the top of the structure schema<br />
of the site. The developer/designer in<strong>di</strong>cates the underlying entity or relationship<br />
on which the content of each unit is based. For example in figure 2.1.b, the “Book<br />
Data”, “Author Data” data unit are showing the information of a book, refer the<br />
“Book” and “Author” entity is specified in the schema of figure 2.1.a.<br />
o Navigation Model: Navigation model describes how the pages and the content of<br />
the units are connected or linked to form the hyper<strong>text</strong>. There are two kinds of<br />
links – non-con<strong>text</strong>ual and con<strong>text</strong>ual. Non-con<strong>text</strong>ual links are used when they<br />
connect semantically independent pages. For example, the page of a book to the<br />
home page of the site. On the other hand, the con<strong>text</strong>ual links are used when the<br />
content of the destination unit of the link depends on the content unit of the source<br />
unit. For instance, the page showing a book’s data in linked by a con<strong>text</strong>ual link<br />
of the page showing the index of e<strong>di</strong>tion of books of that book. Con<strong>text</strong>ual links<br />
are based on the structure schema because they connect content units whose<br />
underlying entities are associated by the relationships in the schema.<br />
• Presentation Model: Presentation model expresses the layout of the pages and graphic<br />
content of each page. Presentation specifications are either page-specific or generic.<br />
• Personalization Model: Users and user groups are explicitly modeled in the structure<br />
schema in the form of predefined entities namely – User and Group. The features of these<br />
entities can be used for storing group-based or in<strong>di</strong>vidual content like shopping<br />
suggestion, list of favorites etc. This personalized information can be used both in the<br />
composition of units or in the definition of presentation specifications. On the other hand,<br />
14
high-level business rules, written using simple SML syntax can be defined for reacting to<br />
site-related events like hit counter, content update etc.<br />
Figure 2.1: (a) Example of structural schema (b) correspondent site view<br />
2.3 WebRatio<br />
WebRatio supports the WebML design process. With respect to the WebML development<br />
workflow, WebRatio covers the phases of data design and hyper<strong>text</strong> design, and supports<br />
implementation by automating the production of the relational database and of the application<br />
page templates. More precisely, WebRatio focuses on five main aspects:<br />
• Data design: supports the design of Entity-Relationship data schemas, with a graphical<br />
user interface for drawing and specifying the properties of entities, relationships,<br />
attributes, and generalization hierarchies.<br />
• Hyper<strong>text</strong> design: assists the design of site views, provi<strong>di</strong>ng functions for drawing and<br />
specifying the properties of areas, pages, units, and links.<br />
• Data Mapping: permits declaring the set of data sources to which the conceptual data<br />
schema has to be mapped, and automatically translates Entity-Relationship <strong>di</strong>agrams and<br />
OCL expressions into relational databases and views.<br />
15
• Presentation design: offers functionality for defining the presentation style of the<br />
application, allowing the designer to create XSL style sheets and associate them with<br />
pages, and organize page layout, by arranging the relative position of content units in the<br />
page.<br />
• Code generation: automatically translates site views into running Web applications built<br />
on top of the Java2EE, Struts, and .NET platforms.<br />
The <strong>di</strong>agram of figure: 2.2 summarize the design flow of WebRatio, highlighting the design<br />
phases, together with their inputs and outputs. The <strong>di</strong>fferent design steps will be described in<br />
more detail in the next sections.<br />
Figure 2.2: Design flow <strong>di</strong>agram of WebRatio<br />
16
Thanks to the automatic generation of code, the tool can be used for fast prototyping, thus<br />
shortening the requirements validation cycle. Unlike tra<strong>di</strong>tional prototyping tools, which<br />
generate application mock-ups, the WebRatio code generator produces application modules<br />
running on state-of-the-art architectures, and can be used for implementation, maintenance, and<br />
evolution. Code generation starts from the outputs of conceptual design and therefore<br />
implementation and maintenance benefit from the presence of a conceptual specification of the<br />
application.<br />
The internal software architecture of the applications created by WebRatio exploits the design<br />
principles and techniques. In particular, applications are built using the Model-View-Controller<br />
pattern, generic components in the business tier, and CSS and XSL presentation rules for<br />
factoring out the look and feel from the page templates.<br />
WebRatio internally uses XML and XSL as the formats for enco<strong>di</strong>ng both the specifications and<br />
the code generators: XML is used for describing data and hyper<strong>text</strong> schemas, whereas XSL is<br />
used for generating the graphic properties and layout of the page templates, for vali<strong>di</strong>ty checking,<br />
and for automatic project documentation. The extensive use of XML and XSL facilitates custom<br />
extensions, which apply both to the WebML language, which can be extended with user-defined<br />
units and operations, and to the tool functions, which can be enriched with custom consistency<br />
checkers, documentation and code generators, and presentation rules.<br />
2.4 Semantic Web<br />
2.4.1 A First Look at the Semantic Web<br />
The Semantic Web is an extension of the current Web. It is constructed by linking current Web<br />
pages to a structured data set that in<strong>di</strong>cates the semantics of this linked page. A smart agent, who<br />
is able to understand this structure data set, will then be able to conduct intelligent actions and<br />
make educated decisions on a global scale.<br />
“The Semantic Web is an extension of the current Web in which information is given welldefined<br />
meaning, better enabling computers and people to work in cooperation. A web of data<br />
17
that can be processed <strong>di</strong>rectly and in<strong>di</strong>rectly by machines.” — Tim Berners-Lee, James Hendler,<br />
Ora Lassila [19].<br />
Summarization of the Semantic Web is:<br />
• The current Web is made up of many Web documents (pages).<br />
• Any given Web document, in its current form (HTML tags and natural <strong>text</strong>), only gives<br />
the machine instructions about how to present information in a browser for human eyes.<br />
• Therefore, machines have no idea about the meaning of the document they are<br />
presenting; in fact, every single document on the Web looks exactly the same to<br />
machines.<br />
• Machines have no way to understand the documents and cannot make any intelligent<br />
decisions about these documents.<br />
• Developers cannot process the documents on a global scale (and search engines will<br />
never deliver satisfactory performance).<br />
• One possible solution is to mo<strong>di</strong>fy the Web documents, and one such mo<strong>di</strong>fication is to<br />
add some extra data to these documents; the purpose of this extra information is to enable<br />
the computers to understand the meaning of these documents.<br />
• Assuming that this mo<strong>di</strong>fication is feasible, we can then construct tools and an agent<br />
running on this new Web to process the document on a global scale; and this new Web is<br />
now called the Semantic Web.<br />
Figure 2.3: A Web page in the Semantic Web Environment<br />
18
2.4.2 RDF<br />
Resource Description Framework is the basic buil<strong>di</strong>ng block for supporting the Semantic Web.<br />
RDF is to the Semantic Web what HTML has been to the Web. RDF is an XML-based language<br />
for describing information contained in a Web resource. A Web resource can be a Web page, an<br />
entire Web site, or any item on the Web that contains information in some form.<br />
RDF is a language recommended by W3C [20], and it is all about metadata. It is capable of<br />
describing any fact (resource) independent of any domain. It provides a basis for co<strong>di</strong>ng,<br />
exchanging, and reusing structured metadata. RDF is structured; i.e., it is machineunderstandable.<br />
Machines can do useful operations with the knowledge expressed in RDF. RDF<br />
allows interoperability among applications exchanging machine understandable information on<br />
the Web.<br />
RDF can be used to describe resources in a structured way that machines can process; it can also<br />
be used to assert relations between these resources so that machines can be empowered with<br />
some basic reasoning capabilities. However, it does not define the vocabulary used; that is, RDF<br />
does not say anything about the classes, subclasses and the relations that may exist between these<br />
classes<br />
RDFS stands for RDF Schema. RDFS is used to create such a vocabulary. It can be viewed as an<br />
RDF vocabulary description language. RDFS in conjunction with RDF statements will push the<br />
Internet one step further toward machine-readability, and this ad<strong>di</strong>tional step cannot be<br />
accomplished by RDF alone. RDFS is a language one can use to create a vocabulary for<br />
describing classes, subclasses, and properties of RDF resources; it is a recommendation from<br />
W3C [18]. The RDFS language also associates the properties with the classes it defines. RDFS<br />
can add semantics to RDF pre<strong>di</strong>cates and resources: it defines the meaning of a given term by<br />
specifying its properties and what kinds of objects can be the values of these properties.<br />
19
2.4.3 OWL<br />
OWL (Web Ontology Language) is the latest recommendation of W3C [21], and is probably the<br />
most popular language for creating ontologies today. It is also the last technical component. The<br />
good news is that it is built on RDF schema; as you have already established a solid<br />
understan<strong>di</strong>ng of RDF schema, much of the material here is going to look familiar to you.<br />
OWL = RDF schema + new constructs for expressiveness<br />
Therefore, all the classes and properties provided by RDF schema can be used when creating an<br />
OWL document. OWL and RDF schema have the same purpose: to define classes, properties,<br />
and their relationships. However, compared to RDF schema, OWL gives us the capability to<br />
express much more complex and richer relationships. The final result is that can construct agents<br />
or tools with greatly enhanced reasoning ability. Therefore, OWL often used for the purpose of<br />
ontology development.<br />
RDF schema is still a valid choice, but it’s obvious limitations compared to OWL will always<br />
make it a second choice. Compared to RDFS, OWL has much more powerful expressiveness.<br />
2.5 Ontology<br />
There are several aspects of this definition that need to be clarified. First, this definition states<br />
that ontology is used to describe and represent an area of knowledge. In other words, ontology is<br />
domain specific; it is not there to represent all knowledge, but an area of knowledge. A domain is<br />
simply a specific subject area or sphere of knowledge, such as photography, me<strong>di</strong>cine, real<br />
estate, education, etc.<br />
Second, ontology contains terms and the relationships among these terms. Terms are often called<br />
classes, or concepts; these words are interchangeable. The relationships between these classes<br />
can be expressed by using a hierarchical structure: super classes represent higher-level concepts<br />
and subclasses represent finer concepts, and the finer concepts have all the attributes and features<br />
that the higher concepts have.<br />
20
Third, besides the aforementioned relationships among the classes, there is another level of<br />
relationship expressed by using a special group of terms: properties. These property terms<br />
describe various features and attributes of the concepts, and they can also be used to associate<br />
<strong>di</strong>fferent classes together. Therefore, the relationships among classes are not only super class or<br />
subclass relationships, but also relationships expressed in terms of properties. To summarize,<br />
ontology has the following properties:<br />
• It is domain specific.<br />
• It defines a group of terms in the given domain and the relationships among them.<br />
By clearly defining terms and the relationships among them, ontology encodes the knowledge of<br />
the domain in such a way that it can be understood by a computer. This is the basic purpose of<br />
ontology.<br />
We can summarize the benefits of ontology as follows (and you should be able to come up with<br />
most of these benefits yourself):<br />
• It provides a common and shared understan<strong>di</strong>ng/definition about certain key concepts in<br />
the domain.<br />
• It provides a way to reuse domain knowledge.<br />
• It makes the domain assumptions explicit.<br />
• Together with ontology description languages (such as RDF schema), it provides a way<br />
to encode knowledge and semantics such that machines can understand.<br />
• It makes automatic large-scale machine processing possible.<br />
Among all these benefits, we in fact pay more attention to the fourth one in the prece<strong>di</strong>ng list.<br />
21
2.6 Approaches to Knowledge Representation<br />
Some approaches use UML class and object <strong>di</strong>agrams [22] for knowledge modeling. Their main<br />
motivation stands on the expan<strong>di</strong>ng community of UML users and on the variety of associated<br />
CASE tools. Indeed, designers do not need to learn a new formalism; they can take advantage of<br />
a well established notation in software engineering of a plethora of documentation and user<br />
experiences. Classification of these approaches accor<strong>di</strong>ng to the role UML semantics plays in the<br />
modeled knowledge:<br />
• UML is the knowledge representation language and its models are mapped to formal<br />
logical structures [23] [24] [25] [26].<br />
• Knowledge is represented with a markup, <strong>text</strong>-based syntax language and UML is only<br />
the visual syntax of this language [27] [28] [29] [30] [31].<br />
2.7 Usage of UML<br />
Data semantics representation combines UML class <strong>di</strong>agrams, DL for formalizing UML models,<br />
and the Pellet reasoner [32] for generating conclusions upon the models. This combination <strong>full</strong>y<br />
satisfies the requirements for a representation language for data semantics:<br />
• It has a formal semantics, with unambiguous interpretations from <strong>di</strong>fferent applications.<br />
• It has the necessary modeling constructs for expressing the data semantics required by<br />
Web applications, enabling analysis, exploration, and inference of patterns.<br />
• These constructs are easily recognizable by applications, thus enabling efficient<br />
incorporation of data semantics into the application logic.<br />
• It allows the application to carry out inferences upon its models, through sound and<br />
complete deduction mechanisms. If the computational cost is too high, it is possible to<br />
reduce the expressiveness of the language in order to increase efficiency.<br />
• It allows the application to carry out incremental updates upon its models, thus granting<br />
continuous evolution of data semantics.<br />
• It allows a standard serialization of its models, thus facilitating the semantics exchange<br />
among applications.<br />
22
The XMI serialization of UML [33] enables the models to be exchanged on the Web. Mapping<br />
mechanisms have already been stu<strong>di</strong>ed for transforming UML models to application objects,<br />
enabling the easy integration of UML elements into application code. Further, the UML<br />
graphical notation facilitates the task of modeling with a plethora of open source graphical tools<br />
that minimize the modeling time, effort, and cost.<br />
Alternative approaches defined upon markup languages [34] [35] [36] [37] [38] can cope only<br />
partially with the listed requirements. They explore the semantics of applications data in the<br />
effort of addressing Tim Berners-Lee’s vision [39] of shared knowledge among business<br />
partners: (i) their linear syntax makes them appropriate for sharing knowledge on the Web; (ii) a<br />
variety of graphical e<strong>di</strong>tors have been implemented to support them; (iii) the formal meaning and<br />
the optimized inference methods allow machines to efficiently interpret knowledge. Their main<br />
drawback is the <strong>di</strong>fficulty of inserting the represented knowledge within real developed<br />
applications, since ad<strong>di</strong>tional efforts are required for integrating knowledge specified as markup<br />
within the application code.<br />
2.8 UML Primitives for Data Semantics Representation<br />
Initially, UML <strong>di</strong>d not support automatic implementation of systems, since it was meant for<br />
documenting and communicating the system’s development phases, and its constructs are only<br />
explained in natural language. Transformations (e.g., encompassing reification for n-ary<br />
associations and association classes) must be applied to the initial model to get a normalized<br />
representation, and still not all the UML constructs are significant for deducting knowledge. The<br />
main UML primitives for interpreting knowledge are:<br />
• Package: It is the container for other UML components provi<strong>di</strong>ng name-based access<br />
mechanism to elements. Similar is the Ontology in DAML+OIL and OWL.<br />
• Class: It describes domain objects with common structural features.<br />
• Datatype: It describes (possibly structured) objects identifiable only by their value.<br />
• Property: It can be either an attribute or an association role. Roles can be inverse,<br />
aggregations, or compositions (the latter two are transitive). The concept of property has<br />
<strong>di</strong>fferent semantics in logic markup languages: it expresses first-class citizens; it does not<br />
need to have defined endpoints. In DAML+OIL and OWL, the DatatypeProperty models<br />
23
elements that correspond to UML attributes of datatypes. The rest of the UML properties<br />
are defined with property restrictions added apart allowing for the same property to have<br />
multiple domains and ranges.<br />
• Generalizations: They organize classes and associations hierarchically with ad<strong>di</strong>tional<br />
restrictions of <strong>di</strong>sjointness and completeness. The subClassOf and subPropertyOf<br />
constructs in DAML+OIL and OWL have similar meaning.<br />
• Instances: Instances appear in class <strong>di</strong>agrams as values for enumeration types and static<br />
attributes. Similar is the use of hasValue and oneOf in OWL for in<strong>di</strong>viduals.<br />
2.9 Reasoning Capabilities for UML Models<br />
2.9.1 Representation Formalisms<br />
Although the formalization of UML class <strong>di</strong>agrams has been already addressed in First Order<br />
Logic [40] [41] [42], theorem proves do not guarantee complete automatic reasoning because of<br />
the FOL undecidability.<br />
DL languages have been widely used to formalize UML components [43], because their<br />
computational complexity and decidability are well stu<strong>di</strong>ed. Interpretations have been given with<br />
DLRifd [44], ALCQI [45], and sROIQ [46]. We adopt sROIQ because it overcomes the<br />
limitations of ALCQI by supporting nominal’s, role inclusion axioms and transitivity, and<br />
inference systems are highly optimized.<br />
2.9.2 Reasoning Engines<br />
For reasoning upon the description logic languages used to formalize UML class and object<br />
<strong>di</strong>agrams, three widely used tableau-based provers: Pellet, Fact++, and RacerPro. All of them<br />
provide sound and complete reasoning based upon the tableau method. The features they<br />
support, and evaluate:<br />
• their expressivity in terms of the inferences they provide upon Tboxes and Aboxes,<br />
• the advanced features they support for ontologies development,<br />
• their access mechanisms for clients.<br />
24
2.9.2.1 Pellet<br />
Pellet 1 [47] is an open-source, description logic reasoning engine for sROIQ(D) models. sROIQ<br />
supports qualifying number restrictions, role hierarchies, <strong>di</strong>sjoint, inverse, reflexive and<br />
irreflexive roles, and nominals. sROIQ(D) provides restrictions on integer and string datatypes,<br />
and supports user-defined datatypes. The worst case complexity of the KB satisfiability<br />
reasoning task in sROIQ has been proven to be NExpTime-hard [48].<br />
All the reasoning services offered by Pellet are reduced to consistency checking which is<br />
determined with tableau algorithms. The standard reasoning tasks are:<br />
• Concept Satisfiability: it determines if a concept may be instantiated. Unsatisfiable<br />
concepts result from modeling errors at the knowledge base, and therefore, detecting<br />
them is the first step for the correction of these errors.<br />
• Consistency Checking: it determines if the knowledge base contains any contra<strong>di</strong>ctory<br />
definitions. Contra<strong>di</strong>ctions may occur because (i) an unsatisfiable concept has been<br />
instantiated, (ii) an in<strong>di</strong>vidual does not respect the number restrictions defined upon its<br />
participating roles, or (iii) there are contra<strong>di</strong>ctions in the definition of concepts resulting<br />
from the presence of nominal’s. Detecting the consistency of the knowledge base may<br />
reveal modeling errors and illegal role assertions for in<strong>di</strong>viduals.<br />
• Classification: it creates the hierarchy of concepts. The hierarchy is further used in other<br />
retrieval mechanisms, like in getting all the concepts of an in<strong>di</strong>vidual.<br />
• Realization: it retrieves the <strong>di</strong>rect concepts instantiated by an in<strong>di</strong>vidual. It also supports<br />
retrieval of in<strong>di</strong>viduals that satisfy certain criteria like participation in certain roles and<br />
instantiation of in<strong>di</strong>rect concepts.<br />
Besides the above standard reasoning tasks, Pellet offers features that are not found often in other<br />
reasoning engines. It allows the incremental update of the instances base (Abox). It keeps tracks<br />
of the changes by in<strong>di</strong>cating the dependencies between in<strong>di</strong>viduals and by updating them during<br />
1<br />
http://pellet.owldl.com<br />
25
ad<strong>di</strong>tions and deletions. Its technique presented in [49] is implemented upon the tableau decision<br />
procedure for consistency checking in DL languages. It offers debugging of a knowledge base<br />
provi<strong>di</strong>ng explanations for the cause of unsatisfiable concepts [50]. It has new optimization<br />
techniques for DL reasoning in presence of nominals [51], and supports reasoning both with<br />
XML Schema data types and user defined ones.<br />
It is implemented in Java and it provides a variety of communication interfaces: command-line<br />
access, implementation of DIG 1.1 interface, bin<strong>di</strong>ngs for OWL API and Jena interfaces, its own<br />
Java API, and a Web-based access. Examples of its usage in tools for ontology e<strong>di</strong>ting and<br />
querying are found in Protegè 4.0 and SWOOP.<br />
Besides the above standard reasoning tasks, Pellet offers (i) incremental update of the instance<br />
base [52], (ii) debugging through assertions [53], (iii) optimization reasoning techniques in<br />
presence of nominal [54], and (iv) reasoning both with XML Schema and user defined data<br />
types. Test cases in [55] show that RacerPro generally performs better. However, frequent<br />
updates in the assertions increase the Pellet overall performance with respect to the RacerPro<br />
system, since RacerPro builds the concepts hierarchy from scratch.<br />
26
3. Semantics Web based Recommendation System<br />
Semantic web based recommendation system in our work is the automatic processing of the<br />
inference procedures provided by Pellet upon the formal representation of Web data semantics<br />
with sROIQ(D) formulas, and the ease integration of such processing into the Web applications<br />
execution without ad<strong>di</strong>ng significant complexity in the designer’s tasks. For addressing the<br />
usability requirement, we specify a set of components that are configurable upon the visual<br />
specification of Web data semantics provided as UML class <strong>di</strong>agrams.<br />
Accor<strong>di</strong>ng to software engineering best practices, to simplify the design task of applications we<br />
propose a set of reusable patterns for knowledge exploration and management that can be very<br />
much useful for the recommendation. These patterns properly combine the components with the<br />
aim of <strong>di</strong>rectly addressing the demands of real applications.<br />
For the component and pattern we have got the core idea from the paper [1].<br />
3.1 Components for Knowledge Representation<br />
A component is a reusable software artifact that deals with one knowledge concept and allows us<br />
to easily access and manipulate it. The knowledge concepts refer to a meta-conceptualization as<br />
defined by the UML metamodel. Every component is defined upon one of the UML primitives of<br />
Class, Datatype, Property, Generalization and Instance. Therefore, the configuration for a<br />
component corresponds to a pattern upon a UML structure and its execution results to the<br />
extraction or mo<strong>di</strong>fication of the knowledge concept from the knowledge base in terms of UML<br />
elements depicted in the UML model representing the Web data semantics. In case of a complex<br />
pattern that manipulates UML elements described with <strong>di</strong>fferent UML primitives, we combine<br />
the correspon<strong>di</strong>ng components to properly propagate their values.<br />
3.1.1 Class Component<br />
The Class Component defines a set of extraction rules for retrieving UML classes. Concretely, it<br />
explores the axioms in the knowledge base and deducts classes with selection con<strong>di</strong>tions based<br />
27
upon these axioms. If no selection con<strong>di</strong>tion is applied, it extracts all the classes in the<br />
knowledge base.<br />
ClassWithNominal<br />
- PValue [1..*]: String<br />
- BooleanOperator : String<br />
create(): void<br />
destroy(): void<br />
set(s:String[], b: String): void<br />
getClasses(): String []<br />
ClassIsUnsatisfiable<br />
- IsUnsatisfiable : Boolean<br />
create(): void<br />
destroy(): void<br />
set(s:String): void<br />
getClasses(): String []<br />
0..1<br />
0..1<br />
1<br />
1<br />
Class Component<br />
- Description [0..*] : String<br />
- conjunction(s: String [][]) : String []<br />
+ query(s: String[][]) : String []<br />
1 1<br />
1<br />
1<br />
1<br />
1<br />
0..1<br />
0..1<br />
ClassDomainOfProperty<br />
- Property [1..*] : String<br />
- BooleanOperator : String<br />
create(): void<br />
destroy(): void<br />
set(s:String[], b: String): void<br />
getClasses(): String []<br />
ClassTypeOfProperty<br />
- Property [1..*] : String<br />
- BooleanOperator : String<br />
create(): void<br />
destroy(): void<br />
set(s:String[], b: String): void<br />
getClasses(): String []<br />
ClassOfName<br />
- Name [1..*] : String<br />
0..1<br />
create(): void<br />
destroy(): void<br />
set(s:String []): void<br />
getClasses(): String []<br />
ClassDisjointOfClass<br />
- Class [1..*] : String<br />
- BooleanOperator : String<br />
create(): void<br />
destroy(): void<br />
set(s:String[], b: String): void<br />
getClasses(): String []<br />
0..1 0..1 0..1<br />
ClassOfInstance<br />
- Instance [1..*] : String<br />
- BooleanOperator : String<br />
create(): void<br />
destroy(): void<br />
set(s:String[], b: String): void<br />
getClasses(): String []<br />
ClassOfDirectInstance<br />
- Instance [1..*] : String<br />
- BooleanOperator : String<br />
create(): void<br />
destroy(): void<br />
set(s:String[], b: String): void<br />
getClasses(): String []<br />
Figure 3.1: Class Component<br />
The Class Component is depicted in figure 3.1 as a UML class <strong>di</strong>agram. Each composition<br />
in<strong>di</strong>cates a selection con<strong>di</strong>tion to be applied for the extraction of classes: ClassOfName extracts<br />
classes by name, ClassDisjointOfClass extract the classes being <strong>di</strong>sjoint to some values,<br />
ClassDomainOfProperty and ClassTypeOfProperty extract the definition for the given<br />
properties, ClassOfInstance and ClassOfDirectInstance retrieve the classes being instantiated<br />
(in<strong>di</strong>rectly or <strong>di</strong>rectly) by these values, ClassWithNominal extracts the classes containing the<br />
given nominals, and ClassIsUnsatisfiable retrieves the classes that cannot be instantiated.<br />
The invocation of the component is made with the query method defined in the Class Component<br />
class receiving the selection values if any. The Class Component object is responsible to create<br />
the objects of the necessary selection con<strong>di</strong>tions, initiate their value, get the classes, and destroy<br />
28
them by invoking respectively the create, set, getClasses, and destroy methods. In case a<br />
selection con<strong>di</strong>tion is multi-valued, another parameter value in<strong>di</strong>cates if the con<strong>di</strong>tion for a<br />
retrieved element should be satisfied for every input value or for at least one. Both conjunctive<br />
and <strong>di</strong>sjunctive expressions are allowed.<br />
u:User<br />
><br />
c:ClassComponent<br />
query([["Jackie Brown"], ["Horror Parody"])<br />
set("Jackie Brown")<br />
:ClassOfInstance<br />
c1 = getClasses()<br />
destroy()<br />
set("Horror Parody")<br />
:ClassDisjointOfClass<br />
c2 = getClasses()<br />
destroy()<br />
classes<br />
classes = conjunction(c1, c2)<br />
Figure 3.2: Invocation of the Class Component<br />
To exemplify the behavior of the component, figure 3.2 shows the UML sequence <strong>di</strong>agram<br />
describing the extraction of classes both defining the Jackie Brown object and being <strong>di</strong>sjoint to<br />
the Horror Parody class. The user inserts the values as parameters to the query method through<br />
the user interface. The Class Component object creates a new ClassOfInstance object and<br />
initializes the con<strong>di</strong>tion value invoking the set method with Jackie Brown as parameter value.<br />
Then, it calls the getClasses method to get the classes defining Jackie Brown, and it destroys the<br />
selection con<strong>di</strong>tion object. The Class Component object creates the ClassDisjointOfClass object,<br />
sets the con<strong>di</strong>tion value to Horror Parody, and gets the classes being <strong>di</strong>sjoint to it. Finally, the<br />
object component returns to the user the conjunction of the two result sets.<br />
29
3.1.2 Datatype Component<br />
Similarly to the Class Component, the Datatype Component explores the axioms in the<br />
knowledge base and deducts UML datatypes either by name, by being <strong>di</strong>sjoint to other datatypes,<br />
by their defined properties, or by being instantiated by the con<strong>di</strong>tion values.<br />
Figure 3.3: Datatype Component<br />
A combination of the previous con<strong>di</strong>tions extracts the correspon<strong>di</strong>ng data types satisfying all the<br />
con<strong>di</strong>tions. The Datatype Component is depicted in figure 3.3 as a UML class <strong>di</strong>agram.<br />
3.1.3 Property Component<br />
The Property Component defines a set of extraction rules for retrieving UML properties<br />
(attributes and roles) from the knowledge base. The selection con<strong>di</strong>tions to be applied are:<br />
PropertyOfName extracts properties by name, PropertyDisjointOfProperty extracts the<br />
properties being <strong>di</strong>sjoint to some values, PropertyInverseOfProperty extracts the properties<br />
being inverse to some values, PropertyWithDomain and PropertyWithType extract properties by<br />
their defining classes/datatypes, PropertyWithPropertyValue retrieves the properties by their<br />
values, PropertyIsTransitive retrieves the properties being transitive, PropertyWithCar<strong>di</strong>nality<br />
30
etrieves the properties by their car<strong>di</strong>nality values, PropertyIsDatatypeProperty retrieves the<br />
properties of data values, and PropertyIsObjectProperty retrieves the properties of objects.<br />
Figure 3.4: Property Component<br />
3.1.4 Hierarchy Components<br />
The Hierarchy components explore the inclusion axioms in the knowledge base regar<strong>di</strong>ng<br />
hierarchies of UML classes or properties, and to deduct the taxonomy defined upon them. If no<br />
selection con<strong>di</strong>tion is specified, they extract the complete taxonomy. Otherwise, they retrieve the<br />
elements in the knowledge base (classes or properties) satisfying the correspon<strong>di</strong>ng inclusion<br />
assertions.<br />
The selection con<strong>di</strong>tions for the Classes Hierarchy Component are the following: the<br />
DirectSuperClass and SuperClass for extraction of the <strong>di</strong>rect superclass (father) or all the<br />
superclasses (ancestors) of the given classes; the DirectSubClass and SubClass for extraction of<br />
the <strong>di</strong>rect subclass (child) or all subclasses (descendants) of the given classes; the<br />
MostGenericClass and MostSpecificClass for retrieving the most generic or the most specific<br />
classes in the hierarchy. A combination of the previous con<strong>di</strong>tions extracts the hierarchy<br />
31
Figure 3.5: Hierarchy Component<br />
fragment satisfying all the defined con<strong>di</strong>tions. Analogous is the definition of the UML classes<br />
representing selection con<strong>di</strong>tions for the extraction of the property taxonomies.<br />
3.1.5 Instance Component<br />
The Instance component explores the axioms in the knowledge base regar<strong>di</strong>ng both UML data<br />
values and object instances. The selection con<strong>di</strong>tions to be applied are: InstanceOfName extracts<br />
instances and values by name, InstancesOfClass and InstancesOfDirectClass extract the<br />
instances/values by their defining classes/datatypes, InstanceWithPropertyValue extracts the<br />
instances by the values they assume possibly on some properties, and InstanceOfPropertyValue<br />
extracts the object of the in<strong>di</strong>cated property values.<br />
32
Figure 3.6: Instance Component<br />
3.1.6 Property Value Component<br />
The Property Value component explores the axioms in the knowledge base regar<strong>di</strong>ng both UML<br />
data values and object instances filling the values for properties on instances or in class<br />
Figure 3.7: Prperty Value Component<br />
33
definitions. The selection con<strong>di</strong>tions to be applied are: PropertyValueOfName extracts instances<br />
and data values correspon<strong>di</strong>ng to the in<strong>di</strong>cated value, PropertyValueOfProperty extract the<br />
values being assigned to the given property, PropertyValueOnInstance extracts the values being<br />
assumed on the given instance, and PropertyValueIsNominal extracts nominals, that is the values<br />
contained in class definitions.<br />
3.1.7 Explanation Component<br />
The Explanation component explores the axioms in the knowledge base regar<strong>di</strong>ng either the<br />
consistency of the knowledge base or the satisfiability for a given class, and gives explanations<br />
in terms of assertions in case these entailments do not hold. Alternatively, it may be used for<br />
giving explanations of axioms. If the axioms are asserted, no further explanations are provided.<br />
Otherwise, if the axioms are inferred, the component invocation returns the asserted axioms<br />
being responsible for the inferred ones.<br />
3.8: Explanation Component<br />
34
3.1.8 Add Components<br />
The Add components create new axioms in the knowledge base regar<strong>di</strong>ng UML elements. Every<br />
component is defined upon one of the UML primitives of Class, Datatype, Property,<br />
Generalization, Slot, and Instance, and it is invoked for exactly one UML element instantiating<br />
the UML primitive upon which the component is defined. It updates the knowledge base either<br />
by inserting the UML element as new in case it does not already exist, by correlating the UML<br />
element with other existing elements, or by a combination of both.<br />
Figure 3.9: Add Component<br />
The generic graphical depiction of an Add component is shown in figure 3.9. The component is<br />
defined by the central Add Name Component UML class (main class), representing the main<br />
UML primitive upon which the component is defined, and by a set of UML compositions<br />
representing the relations of the main UML primitive with other UML primitives that may be<br />
explored for the insertion of knowledge. There is one mandatory UML composition modeling the<br />
(main) element instantiating the main UML primitive. In some cases, elements of the main UML<br />
primitive are not first-class citizens in UML but are identified within the element that contains<br />
them. In these cases, we have more than one parameter for the con<strong>di</strong>tion in the mandatory UML<br />
35
composition. We depict the rest of UML compositions modeling the relations of the main<br />
element with other UML elements.<br />
Whenever an Add component is used, it is properly configured: the mandatory UML<br />
composition is always present, only the optional compositions necessary for the use of the<br />
component in the specific con<strong>text</strong> are being added. We call these configured compositions<br />
necessary parts for the specific component.<br />
Whenever a configured Add component is invoked, a new object of the Add Name Component<br />
UML class is created. The invocation of the component functionalities for the created object is<br />
made with the execute(s: String[][]) method defined in the main class. Upon the method’s<br />
invocation, the object communicates with the defined parts in order to update the knowledge<br />
base. In particular, the object of the Add Name Component UML class is responsible for the<br />
objects of the necessary parts: (i) their creation, (ii) the initialization of their con<strong>di</strong>tion values,<br />
(iii) the creation of their axioms in the knowledge base, and (iv) their destruction, by invoking<br />
respectively the create, set, execute, and destroy methods defined in the UML classes defining<br />
the parts.<br />
In the rest of this section, we graphically depict the add components only with the UML<br />
compositions modeling insertion con<strong>di</strong>tions. For having more readable figures, the operations are<br />
not shown since they are the ones shown in figure 3.9.<br />
3.1.9 Add Class Component<br />
The Add Class Component creates new axioms in the knowledge base regar<strong>di</strong>ng UML classes. If<br />
the insertion is about a new class, only its name is in<strong>di</strong>cated as value to the component.<br />
Otherwise, insertion con<strong>di</strong>tions are also applied to the component to identify the elements in the<br />
knowledge base upon which new axioms will be created.<br />
The Add Class Component is depicted in figure 3.10 containing: the Add Class Component<br />
UML class, a mandatory composing class modeling the name of the class for the component<br />
(ClassOfName), and further optional composing classes modeling the insertion con<strong>di</strong>tions. In<br />
36
Add Class Component<br />
ClassDisjointOfClass<br />
1<br />
0..1<br />
- DisjointClass [1..*] : String<br />
- Class : String<br />
+ execute(s: String[]) : Boolean<br />
1<br />
1<br />
1<br />
0..1<br />
create(): void<br />
destroy(): void<br />
set(s:String, c:String[]): void<br />
execute(): Boolean<br />
ClassOfName<br />
- Name : String<br />
1 0..1<br />
create(): void<br />
destroy(): void<br />
set(s:String): void<br />
execute(): Boolean<br />
ClassSubOfClass<br />
- SuperClass [1..*] : String<br />
- Class : String<br />
create(): void<br />
destroy(): void<br />
set(s:String, c:String[]): void<br />
execute(): Boolean<br />
ClassSuperOfClass<br />
- SubClass [1..*] : String<br />
- Class : String<br />
create(): void<br />
destroy(): void<br />
set(s:String, c:String[]): void<br />
execute(): Boolean<br />
Figure: 3.10: Add Class Component<br />
terms of UML classes, these are: ClassOfName (specifying the mandatory name of the<br />
component class that should be inserted in the knowledge base), the ClassDisjointOfClass (for<br />
inserting the class of the component as <strong>di</strong>sjoint to the given values), ClassSubOfClass (for<br />
inserting the class of the component as specific of the given values), and ClassSuperOfClass (for<br />
inserting the class of the component as generic of the given values). A combination of the<br />
previous con<strong>di</strong>tions inserts all the correspon<strong>di</strong>ng axioms among the class of the component and<br />
the elements identified by their values. The Add Class Component object is responsible for the<br />
objects of the necessary parts, by invoking the create, set, execute, and destroy methods defined<br />
in the UML classes.<br />
3.1.10 Add Datatype component<br />
Similarly to the Add Class Component, the Add Datatype Component inserts new axioms in the<br />
knowledge base regar<strong>di</strong>ng UML datatypes. The insertion con<strong>di</strong>tions are: DatatypeOfName<br />
(specifying the mandatory name of the datatype that should be inserted in the knowledge base),<br />
and DatatypeDisjointOfDatatype (for inserting the datatype of the component as <strong>di</strong>sjoint to the<br />
given values).<br />
37
Figure 3.11: Add Datatype Compoment<br />
3.1.11 Add Property component<br />
The Add Property Component creates new axioms in the knowledge base regar<strong>di</strong>ng UML<br />
properties (attributes and roles). UML properties are not first-class citizens but exist within the<br />
defining object, therefore both the property and its defining class are parameter values for the<br />
mandatory element for the component. The insertion con<strong>di</strong>tions are: PropertyOfName<br />
(specifying the mandatory name of the property that should be inserted in the knowledge base,<br />
and the mandatory name of the class or datatype defining the property of the component),<br />
Figure 3.12: Add Property Component<br />
38
PropertyDisjointOfProperty (for inserting the property of the component as <strong>di</strong>sjoint to the given<br />
values), PropertyInverseOfProperty (for inserting the property of the component as inverse to<br />
the given values).<br />
3.1.12 Add Property Value component<br />
The Add Property Value Component creates new axioms in the knowledge base regar<strong>di</strong>ng UML<br />
slot values (both class objects and data values). UML slot values are not first-class citizens but<br />
are defined for a given property, therefore the slot value, the class defining the property<br />
assuming the value, and the property assuming the value are parameter values for the mandatory<br />
element for the component. The insertion con<strong>di</strong>tions are: PropertyValueOfValue (specifying: the<br />
mandatory value of the property value, the mandatory name of the property that assumes the<br />
property value, and the mandatory name of the class defining the previous property), and<br />
PropertyValueOnInstance (for in<strong>di</strong>cating the instance to be assigned with the property value of<br />
the component). If a property value is added in the knowledge base without in<strong>di</strong>cating the<br />
instance to assume it, the value results to a nominal in a class definition.<br />
Figure 3.13: Add Property Value Component<br />
3.1.13 Add Instance component<br />
The Add Instance Component creates new axioms in the knowledge base regar<strong>di</strong>ng UML<br />
instances (class objects). The insertion con<strong>di</strong>tions: InstanceOfName (specifying the mandatory<br />
name of the instance that should be inserted in the knowledge base), and InstanceOfClass<br />
(specifying the name of the classes instantiated by the instance of the component).<br />
39
Figure 3.14: Add Instance Component<br />
Similarly to the Add Class Component, the Add Datatype Component, Add Property Component,<br />
Add Property Value Component, and Add Instance Component insert new axioms in the<br />
knowledge base respectively regar<strong>di</strong>ng UML datatypes, properties, property values, and<br />
instances. A mandatory insertion con<strong>di</strong>tion in<strong>di</strong>cates the name of the datatype/ property/<br />
propertyvalue/ instance to be inserted in the knowledge base. Further con<strong>di</strong>tions may be applied<br />
to specify related axioms that need to be inserted as well.<br />
3.1.14 Remove Components<br />
The Remove components remove existing axioms in the knowledge base regar<strong>di</strong>ng UML<br />
elements. Similar to Add components, every component is defined upon one of the UML<br />
primitives of Class, Datatype, Property, Generalization, Slot, and Instance, and it is invoked for<br />
exactly one UML element instantiating the UML primitive upon which the component is<br />
defined. It updates the knowledge base either by deleting the UML element and every axiom<br />
defined upon it, or by <strong>di</strong>sassociating the UML element from other existing elements.<br />
The generic graphical depiction of a Remove component is shown in figure 3.15 and is<br />
analogous to the one for Add components. The component is defined by the central Remove<br />
Name Component UML class (main class), representing the main UML primitive upon which<br />
the component is defined, and by a set of UML compositions representing the relations of the<br />
main UML primitive with other UML primitives that may be explored for the insertion of<br />
knowledge. There is one mandatory UML composition modeling the (main) element<br />
instantiating the main UML primitive. In case the elements of the main UML primitive are not<br />
40
first-class citizens, we have more than one parameter values for the con<strong>di</strong>tion in the mandatory<br />
UML composition in order to identify the main element. We depict the rest of UML<br />
compositions modeling the relations of the main element with other UML elements.<br />
Figure 3.15: Remove Component<br />
Whenever a Remove component is used, it is properly configured: the mandatory UML<br />
composition is always present, only the optional compositions necessary for the use of the<br />
component in the specific con<strong>text</strong> are being added. We call these configured compositions<br />
necessary parts for the specific component.<br />
Whenever a configured Remove component is invoked, a new object of the Remove Name<br />
Component UML class is created. The invocation of the component functionalities for the<br />
created object is made with the execute(s: String[][]) method defined in the main class. Upon the<br />
method’s invocation, the object communicates with the defined parts in order to update the<br />
knowledge base. In particular, the object of the Remove Name Component UML class is<br />
responsible for the objects of the necessary parts: (i) their creation, (ii) the initialization of their<br />
con<strong>di</strong>tion values, (iii) the creation of their axioms in the knowledge base, and (iv) their<br />
41
destruction, by invoking respectively the create, set, execute, and destroy methods defined in the<br />
UML classes defining the parts.<br />
Also in this case, we graphically depict the remove components only with the UML<br />
compositions modeling deletion con<strong>di</strong>tions.<br />
3.1.15 Remove Class component<br />
The Remove Class Component deletes axioms in the knowledge base regar<strong>di</strong>ng UML classes.<br />
The deletion con<strong>di</strong>tions: ClassOfName (specifying the mandatory name of the class of the class<br />
that should be deleted in the knowledge base), ClassDisjointOfClass (for deleting the class of the<br />
component as being <strong>di</strong>sjoint to the given values), ClassSubOfClass (for deleting the class of the<br />
component as specific of the given values), and ClassSuperOfClass (for deleting the class of the<br />
component as generic of the given values).<br />
Remove Class Component<br />
+ execute(s: String[]) : Boolean<br />
1<br />
1<br />
ClassOfName<br />
- Name : String<br />
create(): void<br />
destroy(): void<br />
set(s:String): void<br />
execute(): Boolean<br />
1<br />
1<br />
1<br />
0..1<br />
ClassSubOfClass<br />
- SuperClass [1..*] : String<br />
- Class : String<br />
create(): void<br />
destroy(): void<br />
set(s:String, c:String[]): void<br />
execute(): Boolean<br />
0..1<br />
0..1<br />
ClassDisjointOfClass<br />
- DisjointClass [1..*] : String<br />
- Class : String<br />
create(): void<br />
destroy(): void<br />
set(s:String, c:String[]): void<br />
execute(): Boolean<br />
ClassSuperOfClass<br />
- SubClass [1..*] : String<br />
- Class : String<br />
create(): void<br />
destroy(): void<br />
set(s:String, c:String[]): void<br />
execute(): Boolean<br />
Figure 3.16: Remove Class Component<br />
3.1.16 Remove Datatype component<br />
The Remove Datatype Component deletes axioms in the knowledge base regar<strong>di</strong>ng UML<br />
datatypes.<br />
42
Figure 3.17: Remove Datatype Component<br />
The deletion con<strong>di</strong>tions: DatatypeOfName (specifying the mandatory name of the datatype that<br />
should be deleted from the knowledge base), and DatatypeDisjointOfDatatype (for deleting the<br />
datatype of the component as being <strong>di</strong>sjoint to the given values).<br />
3.1.17 Remove Property component<br />
The Remove Property Component deletes axioms in the knowledge base regar<strong>di</strong>ng UML<br />
properties (roles and attributes).<br />
Figure 3.18: Remove Property Value Component<br />
43
The deletion con<strong>di</strong>tions are: PropertyOfName (specifying the mandatory name of the property,<br />
and the mandatory name of the class or datatype defining the property of the component),<br />
PropertyDisjointOfProperty (for deleting the property of the component as <strong>di</strong>sjoint to the given<br />
values), PropertyInverseOfProperty (for deleting the property of the component as inverse to the<br />
given values), PropertyOfType (for deleting the property of the component as having type the<br />
given values), PropertySubOfProperty (for deleting the property of the component as specific of<br />
the given values), PropertySuperOfProperty (for deleting the property of the component as<br />
generic of the given values), PropertyWithCar<strong>di</strong>nality (for deleting the property of the<br />
component with minimum and maximum car<strong>di</strong>nality the given values), and PropertyIsTransitive<br />
(for deleting the property of the component as being transitive).<br />
3.1.18 Remove Property Value component<br />
The Remove Property value Component deletes axioms in the knowledge base regar<strong>di</strong>ng UML<br />
property values. The deletion con<strong>di</strong>tions: PropertyValueOfValue (specifying the mandatory The<br />
Remove Property value Component deletes axioms in the knowledge base regar<strong>di</strong>ng UML<br />
property values. The deletion con<strong>di</strong>tions: PropertyValueOfValue (specifying the mandatory<br />
name of the property value, the mandatory name of the property assuming the property value of<br />
the component, and the mandatory name of the class defining the previous property),<br />
PropertyValueOnInstance (for deleting the given instances as having value the property value of<br />
the component).<br />
Figure: 3.19: Remove Property Value Component<br />
44
3.1.19 Remove Instance component<br />
The Remove Instance Component deletes axioms in the knowledge base regar<strong>di</strong>ng UML<br />
instances (class objects). The deletion con<strong>di</strong>tions are: InstanceOfName (specifying the<br />
mandatory name of the instance), and InstanceOfClass (for deleting the given classes as being<br />
instantiated by the instance of the component).<br />
Figure 3.20: Remove Instance Component<br />
3.2 Knowledge-base Management Components<br />
3.2.1 Create-KB component<br />
Further components are defined for managing the knowledge base contents as a whole. The<br />
Create-KB Component creates a new empty knowledge base instance that will be the container<br />
for the data semantics. Yet, no schema is defined for the knowledge base. This component does<br />
not accept any parameters. Upon successful invocation, the component returns the identifier of<br />
the newly created knowledge base.<br />
Figure 3.21: Create-KB Component<br />
45
3.2.2 Release-KB component<br />
The Release-KB Component releases an instantiated knowledge base, referred through its<br />
identifier. Upon successful invocation, the component returns the identifier of the deleted<br />
knowledge base. Subsequent attempts of interaction with the knowledge base will raise an<br />
exceptional situation.<br />
Figure 3.22: Release-KB Component<br />
3.2.3 Import-XMI-to-KB component<br />
The Import-XMI-to-KB Component creates both schema and instances for an existing knowledge<br />
base in the Pellet repository. Schema and instances are extracted from an XMI file serializing a<br />
UML model (class and object <strong>di</strong>agram). The component in<strong>di</strong>rectly translates UML elements to<br />
Description Logic formalisms. This operation works only if the mandatory parameters KB and<br />
XMI are correctly set. Upon successful invocation, the component returns the identifiers of the<br />
inserted objects in the knowledge base.<br />
Figure 3.23: Import XMI to KB Component<br />
46
3.2.4 Export-XMI-from-KB component<br />
The Export-XMI-from-KB Component exports the knowledge base schema and instances to an<br />
XMI file serializing a UML model. The KB and XMI parameters are mandatory in<strong>di</strong>cating the<br />
identifier of the knowledge base to be exported and the destination XMI file.<br />
Figure 3.24: Export Xmi to KB Component<br />
3.3 Patterns for Knowledge Exploration and Management<br />
3.3.1 Knowledge Exploration<br />
The patterns for knowledge exploration are built on top of the exploration components and<br />
express simple but useful queries often found in the field of knowledge deduction.<br />
• Class and its classification;<br />
• Properties of a class;<br />
• Instantiated classes;<br />
• Instances of a class assuming known values on known properties;<br />
• Instances of a class assuming any value on a known property;<br />
• Instances of a class assuming known values on any property;<br />
• Instances of a class assuming any value on any property;<br />
• Instances of a class assuming values of known type on any property;<br />
47
These patterns do not have side effects on the knowledge base. Whenever it is necessary, we<br />
exploit the UML utility class Complex Query to transfer values from one component to another.<br />
The role of this class is to orchestrate the invocation of the methods in the pattern. Its<br />
configuration determines the methods invocation order (possibly inclu<strong>di</strong>ng looping and<br />
con<strong>di</strong>tional execution), thus eliminating the burden of controlling the flow of components<br />
execution.<br />
3.3.1.1 Class and its classification pattern<br />
This pattern checks the existence of a class in the knowledge base and deducts the hierarchy of<br />
generalizing classes. It encompasses two exploration components (figure 3.25): (i) the Class<br />
Component configured with a ClassOfName selection con<strong>di</strong>tion to retrieve the class<br />
correspon<strong>di</strong>ng to the input, and (ii) the Classes Hierarchy Component configured with a<br />
ClassOfSubClass con<strong>di</strong>tion to deduct the hierarchy above the previous class. The input received<br />
by the user invoking the execute method is transferred to the Class Component; the deducted<br />
class becomes the input for the Class Hierarchy Component, while both the class and the<br />
retrieved hierarchy are returned to the user. The pattern is defined as the one extracting the<br />
specializing class hierarchy for a given input.<br />
This pattern may be used whenever the user needs to analyze a specific class and its generalized<br />
classes.<br />
Figure 3.25: Class and its classification<br />
48
3.3.1.2 Properties of a class pattern<br />
In this pattern, the user requests the properties defined in a given class and the respective type<br />
restrictions. It encompasses (figure 3.26): (i) the Property Component configured with a<br />
PropertyWithDomain selection con<strong>di</strong>tion for retrieving the properties of the class specified by<br />
the user, and (ii) the Class Component configured with a ClassTypeOfProperty selection<br />
con<strong>di</strong>tion to deduct the class type restrictions of one property. The Complex Query is configured<br />
to repeatedly invoke the query method of the second component: the Class Component is<br />
invoked once for each property found in the input class. Finally, the result set returned to the user<br />
by the Complex Query contains for each property the retrieved typed classes.<br />
Figure 3.26: Properties of a class pattern<br />
3.3.1.3 Instantiated classes Pattern<br />
This pattern checks the existence of classes in the knowledge base and deducts those that have at<br />
least one instance. It encompasses two exploration components: (i) the Instance Component<br />
configured with no selection con<strong>di</strong>tions to retrieve all the instances in the knowledge base, and<br />
(ii) the Class Component configured with a ClassOfInstance selection con<strong>di</strong>tion and the<br />
BooleanOperator OR to retrieve the classes being instantiated by at least one of the previous<br />
instances. The Complex Query class invokes the query component methods controlling the flow<br />
of information: no input is transferred to the Instance Component, the deducted instances become<br />
the input for the Class Component and the BooleanOperator is set to OR, and finally, the<br />
deducted classes are returned to the user.<br />
49
Figure 3.27: Instantiated classes Pattern<br />
3.3.1.4 Instances of a class assuming known values on known properties Pattern<br />
This pattern checks the existence of property values in the knowledge base, deducts those that<br />
have known property values being assumed to known properties, and then extracts the instances<br />
being assigned with these properties values. It encompasses two exploration components: (i) the<br />
Property Value Component configured with a PropertyValueOfName and a<br />
PropertyValueOfProperty selection con<strong>di</strong>tions with BooleanOperators OR to retrieve the<br />
property values of interest in the knowledge base, and (ii) the Instance Component configured<br />
with a InstanceOfClass and a InstanceWithPropertyValue selection con<strong>di</strong>tions and the<br />
BooleanOperator OR to retrieve the instances having at least one of the previous property<br />
values. The Complex Query class invokes the query component methods: the property and the<br />
given value input is transferred to the Property Value Component, the class input and the<br />
deducted property values become the input for the Instance Component, and finally, the deducted<br />
instances are returned to the user.<br />
Figure 3.28: Instances of a class assuming known values on known properties Pattern<br />
50
3.3.1.5 Instances of a class assuming any value on a known property Pattern<br />
This pattern checks the existence of property values in the knowledge base, deducts those that<br />
have being assumed to known properties, and then extracts the instances being assigned with<br />
these properties values. It encompasses two exploration components: (i) the Property Value<br />
Component configured with a PropertyValueOfProperty selection con<strong>di</strong>tion with<br />
BooleanOperator OR to retrieve the property values of specific properties in the knowledge base,<br />
and (ii) the Instance Component configured with a InstanceOfClass and a<br />
InstanceWithPropertyValue selection con<strong>di</strong>tions and the BooleanOperator OR to retrieve the<br />
instances having at least one of the previous property values. The Complex Query class invokes<br />
the query component methods: the property input is transferred to the Property Value<br />
Component, the class input and the deducted property values become the input for the Instance<br />
Component, and finally, the deducted instances are returned to the user.<br />
Figure 3.29: Instances of a class assuming any value on a known property Pattern<br />
3.3.1.6 Instances of a class assuming known values on any property Pattern<br />
This pattern checks the existence of property values in the knowledge base, deducts those with<br />
known values not being restricted by the properties on which they are assigned, and then extracts<br />
the instances being assigned with these properties values. It encompasses two exploration<br />
components: (i) the Property Value Component configured with a PropertyValueOfName<br />
selection con<strong>di</strong>tion (implicit BooleanOperator OR) to retrieve the property values of specific<br />
value in the knowledge base, and (ii) the Instance Component configured with a InstanceOfClass<br />
and a InstanceWithPropertyValue selection con<strong>di</strong>tions and the BooleanOperator OR to retrieve<br />
the instances having at least one of the previous property values. The Complex Query class<br />
51
invokes the query component methods: the value input is transferred to the Property Value<br />
Component, the class input and the deducted property values become the input for the Instance<br />
Component, and finally, the deducted instances are returned to the user.<br />
Figure 3.30: Instances of a class assuming known values on any property Pattern<br />
3.3.1.7 Instances of a class assuming any value on any property Pattern<br />
This pattern checks the existence of property values in the knowledge base and deducts the<br />
instances to which they are being assigned. It encompasses two exploration components: (i) the<br />
Property Value Component configured with no selection con<strong>di</strong>tion to retrieve all the property<br />
values in the knowledge base, and (ii) the Instance Component configured with a<br />
InstanceOfClass and a InstanceWithPropertyValue selection con<strong>di</strong>tions and the<br />
BooleanOperator OR to retrieve the instances having at least one of the previous property<br />
values. The Complex Query class invokes the query component methods: no input is transferred<br />
to the Property Value Component, the class input and the deducted property values become the<br />
input for the Instance Component, and finally, the deducted instances are returned to the user.<br />
Figure 3.31: Instances of a class assuming any value on any property Pattern<br />
52
3.3.1.8 Instances of a class assuming values of known type on any property Pattern<br />
This pattern checks the existence of property values in the knowledge base assumed by<br />
properties of a known type. Then it deducts the instances to which they are being assigned. It<br />
encompasses three exploration components: (i) the Property Component configured with a<br />
PropertyWithType selection con<strong>di</strong>tion to retrieve the property with the given type in the<br />
knowledge base, (ii) the Property Value Component configured with a PropertyValueOfProperty<br />
selection con<strong>di</strong>tion to retrieve the property values being assumed by the previous properties, and<br />
(iii) the Instance Component configured with a InstanceOfClass and a<br />
InstanceWithPropertyValue selection con<strong>di</strong>tions and the BooleanOperator OR to retrieve the<br />
instances having at least one of the previous property values. The Complex Query class invokes<br />
the query component methods: the type input is transferred to the Property Component, the<br />
deducted properties are transferred to the Property Value Component, the class input and the<br />
deducted property values become the input for the Instance Component, and finally, the deducted<br />
instances are returned to the user.<br />
Figure 3.32: Instances of a class assuming values of known type on any property Pattern<br />
3.3.2 Knowledge Management<br />
The patterns for knowledge management are built on top of the management components for<br />
creating new UML elements or for removing existing ones under certain con<strong>di</strong>tions. The<br />
execution of these patterns has side effects on the knowledge base. Like in the case of<br />
exploration patterns, values are transferred from one component to the other either with user<br />
intervention or automatically. In the latter case, the methods invocation is done by the UML<br />
53
class called Complex Operation. Its configuration may include programming language constructs<br />
like loop and con<strong>di</strong>tional execution for controlling the flow of components execution.<br />
Typically, the invocation of a management pattern usually follows the execution of an<br />
exploration pattern, because the user has to evaluate the status of the knowledge base before<br />
wanting to apply changes.<br />
3.3.2.1 Add a new instance as property value for another instance pattern<br />
This pattern is used to insert a new instance in the knowledge base and to in<strong>di</strong>cate it as the<br />
property value for another instance. It may be used when it is necessary to make explicit the<br />
correlation of two instances whenever such correlation does not derive from their definitions.<br />
The pattern encompasses: (i) the Add Instance Component configured with a InstanceOfName<br />
con<strong>di</strong>tion (to insert the first user input in the knowledge base as a new instance) and with a<br />
InstanceOfClass con<strong>di</strong>tion (to define the class instantiated by the instance), and (ii) a second Add<br />
Property Value Component configured with a PropertyValueOnInstance con<strong>di</strong>tion and with a<br />
PropertyValueOfValue con<strong>di</strong>tion (to in<strong>di</strong>cate that the previous instance is a value for the second<br />
user input). In this case, a Complex Operation controls the flow of information: part of the input<br />
sent by the user is transferred to the Add Instance Component; the created instance and the<br />
remaining user input become the input for the Add Property Value Component. Finally, the<br />
Complex Operation returns the outcome of the whole pattern.<br />
Figure 3.33: Add a new instance as property value for another instance pattern<br />
54
3.3.2.2 Remove property value for an instance<br />
This pattern removes from the knowledge base the property value assigned to a class object. It<br />
encompasses only the Remove Property Value management component, and therefore, there is<br />
no need to involve the Complex Operation class since no automatic components interaction takes<br />
place. The user submits the property value and the instance containing it and the component is<br />
configured with: (i) a PropertyValueOfValue insertion con<strong>di</strong>tion to in<strong>di</strong>cate the property value<br />
specified by the first user input; and (ii) a PropertyValueOfInstance insertion con<strong>di</strong>tion to<br />
remove the axiom in<strong>di</strong>cating the previous property value assigned to the second user input.<br />
3.4 Social Network Application<br />
In our application we have proposed a social network application with recommendation feature<br />
and also other features. In this application we have developed an automatic recommendation<br />
system. This will recommend to the User about <strong>di</strong>fferent interesting topics. If a User is a Group<br />
Member he can get some recommendation from the system based on the other Group Members<br />
interests. When a User browses interesting topics, he will get a recommendation about topics<br />
based on his previous interests. We will see the details specification in the next section.<br />
3.4.1 Use Cases of the Application<br />
In this section, we have described the UML Use Case <strong>di</strong>agram for the social network application.<br />
Here, a User or a Group Member is an Actor. Sometimes the system works as an Actor. A User<br />
may be a Group member. But it is not necessary that every User has to be Group member.<br />
55
Figure 3.34: Use Case <strong>di</strong>agram of the application<br />
56
3.4.2 Application Specification<br />
In this section we will specify each scenario accor<strong>di</strong>ng to the use case <strong>di</strong>agram of the application.<br />
We <strong>di</strong>vide the total use case into two main site views. User site view and Group site view. We<br />
have shown each site view in several small scenarios such as View Personal Information, Send<br />
Friend Invitation and so on. Here, ‘Object’ defines the classes and ‘Action’ defines the<br />
functionalities.<br />
3.4.2.1 User Site View<br />
View Personal Information<br />
Actor: User<br />
Object: User/Friend/GroupMember, Interest, Recommendation<br />
Action<br />
• View: User can view his/her own personal information.<br />
• Mo<strong>di</strong>fy: User can mo<strong>di</strong>fy his/her own personal information.<br />
• Add New: User can add new personal interest in his/her profiles. Ex. add new movie,<br />
novel etc.<br />
• Delete: User can delete any information or interest from his/her profile.<br />
Send Friend Invitation<br />
Actor: User<br />
Object: User, Invitation<br />
Action<br />
• Send Invitation: User can send Friend Invitation to other User. The invited User can<br />
review this Invitation and can accept or deny the Invitation.<br />
Review Friend Invitation<br />
Actor: User<br />
Object: User, Friend<br />
57
Action<br />
• Review: User will review the Invitations received from other Users. An User can accept<br />
or deny the Friend Invitation. If the invited User accepts the Invitation they become<br />
Friends.<br />
Review Group Invitation<br />
Actor: User<br />
Object: User, Group, GroupMember<br />
Action<br />
• Review: User will review the Group Invitation send by the Group Member. User can<br />
accept or ignore the Invitation. After accepting the Invitation the User will become the<br />
Group Member of that Group.<br />
Create Group<br />
Actor: User<br />
Object: User, Group, GroupMember<br />
Action<br />
• Create: User creates a new Group and the User becomes the Group Member of the<br />
Group.<br />
Create Interest<br />
Actor: User<br />
Object: User, Interest, InterestTopic<br />
Action<br />
• Create: User creates a new Interest in his/her profile.<br />
View Notification<br />
Actor: User<br />
Object: GroupMember, Group, Notification<br />
58
Action<br />
• View Notification: Group Member will view the notification of the Group. The Members<br />
will be notified when an Article is posted, when a new event is created or any message is<br />
send to the Group Members (group message) by a Group Member.<br />
Friend Recommendation<br />
Actor: System<br />
Object: Recommendation, RecommendedFriend, User<br />
Action<br />
• Recommended Friend: The system will recommend a user to another user based on<br />
profile matching or interest matching between them. Ex. Live in same place, love same<br />
types of music etc. For example, suppose there are two users in the system U1 and U2<br />
and both of them have interest in same type of music. In this case the system will<br />
recommend U1 to become friend of U2 and vice versa.<br />
Group Recommendation<br />
Actor: User<br />
Object: Recommendation, Group Recommendation, User<br />
Action<br />
• Recommended Group: The system will recommend a Group to a User based on Interest<br />
of the User which is similar to the activities (event, article etc) of a Group. For example,<br />
there is a group called G1 which has several group members. Also there is a user called<br />
U1 who is not a member of G1. U1 have Interest in “Rock” music. And G1 is a Group of<br />
music lovers. In G1, there are some articles/events about “Rock” music. The system will<br />
recommend the U1 to become a Group Member of G1.<br />
Topic Recommendation<br />
Actor: User<br />
Object: Recommendation, Topic, User<br />
59
Action<br />
• Recommended Topic: The system will recommend a topic (an event or an article) to a<br />
user based on interest of the user which is similar to the activities (event, article etc) of a<br />
Group. For example, we have a group G1 and a user U1. U1 is not a member of G1. In<br />
G1 there is an article/event published that there will be a “Jazz” concert in Milan. And<br />
U1 lives in Milan. So, the system will Recommend the U1 for the concert as the U1 also<br />
have Interest on “jazz” music.<br />
3.4.2.2 Group Site View<br />
Create New Event<br />
Actor: Group Member<br />
Object: GroupMember, Group, Event<br />
Action<br />
• Create New Event: Group Member will create a new event in the Group. All the other<br />
Group Members will be notified about the new event.<br />
Post New Article<br />
Actor: Group Member<br />
Object: GroupMember, Group, Article<br />
Action<br />
• Create New Article: Group member will post a new article in the group. And all the<br />
group members will be notified about the new article.<br />
Send Group Message<br />
Actor: Group Member<br />
Object: GroupMember, Group, GroupMessage<br />
Action<br />
• Send Group Message: Group Member will send message to all the Members of the<br />
Group.<br />
60
Send Group Invitation<br />
Actor: Group Member<br />
Object: GroupMember, Group, User, Invitation<br />
Action<br />
• Send Group Invitation: Group Member will send Group Invitation to a User. If the User<br />
accepts the Invitation the User will become the Group Member of that Group.<br />
3.4.3 Application Design<br />
A User can create a Group. He can invite other Users to become Group Members. He may have<br />
<strong>di</strong>fferent activities in the Group. A User can have several interests which can be the<br />
Recommended Topic for the other User of the same Group. A Group Member can Post a Group<br />
Message or can create an Article or an Event. Other Group Member will get the notification<br />
message. Interesting Article can be shown as a Topic Recommendation to the other user. Figure<br />
3.35 is the details <strong>di</strong>agram of the network.<br />
Using patterns and components we can build <strong>di</strong>fferent types of recommendation. In this<br />
application a User play the main role. A user may have several friends through the Friend class.<br />
An User may have several friends. A user can become friends by accepting the Friend Invitation<br />
which sent by the other User.<br />
A User can create a Group. And he can invite other Users to become Group members. He may<br />
have <strong>di</strong>fferent activities in the Group. A User can have several interests which can be the<br />
Recommended Topic for the other User of the same Group. A Group Member can Post a Group<br />
Message or can create an Article or an Event. Other Group Member will get the notification<br />
message. Interesting Article can be show as a Topic Recommendation to the other user.<br />
61
Figure 3.35: Social Network Application<br />
62
A user can recommend friend as Friend Recommendation to the other User. Comparing with the<br />
common interest a Group can be recommended as a Group Recommendation. When a user will<br />
browse interesting movie the system will recommend him certain genre of movie accor<strong>di</strong>ng to<br />
his previous interest.<br />
3.4.4 Uses of Components and Patterns in the Recommendation Application<br />
An User can add a new interest. Using the “Instances of a class assuming any value on a known<br />
property” we can identify his membership for a particular Group. Then we can recommend all<br />
other members of the group about first user’s interest.<br />
Figure 3.36: WebML hyper<strong>text</strong> for Recommendation<br />
63
When a user browse movies, using the “Instances of a class assuming any value on a known<br />
property” we can identify what kinds of movie he likes before, by checking his interest on<br />
movie. And then Using the “Class and its classification” pattern we can recommend him some<br />
movies which is the same genre of his previous interest.<br />
In figure 3.36 shows the WebML hyper<strong>text</strong> view of the recommendation. Using the “Class and<br />
its classification” pattern we are showing list of movies by genre and also novel by types. We are<br />
using Class Hierarchy Unit and Class unit to build the pattern. If we click “Add as Interest” link<br />
then the interest will be added in the User profile. From the ‘Get unit’ we will get the current<br />
User instance. Using the “Instances of a class assuming any value on a known property” we<br />
identify what kinds of movie he likes before, by checking his interest on movie and also about<br />
the novel. Then the system will recommend him about the same genre movie or same types of<br />
novel.<br />
Figure 3.37: Movie and Novel Recommendation<br />
64
In the figure 3.37, a User browsing interests to add his interest list. The system is recommen<strong>di</strong>ng<br />
him movies and novels accor<strong>di</strong>ng to his previously added interest. His interest list has a movie<br />
called ‘La vita e bella’ which is an Italian movie. So after checking the genre the system<br />
recommends him another Italian movie called ‘Malena’. In the same way the system recommend<br />
him the novel called ‘The old man and the sea’ which belongs to the same writer of ‘For Whom<br />
the Bell Tolls’ he already added in his interest list.<br />
In the next section we will see the complete development of the application.<br />
65
4. Implementation Experience<br />
The concepts presented so far have been implemented in the con<strong>text</strong> of the WebML 2 design<br />
approach [3]. While other implementation approaches could have been followed, the one based<br />
on WebML seemed to be the more convenient and productive. Indeed, other existing UML<br />
C.A.S.E. tools would have been less effective, since they could have helped in producing the<br />
Java code of the components by provi<strong>di</strong>ng only a set of interfaces and / or stub classes, while all<br />
the co<strong>di</strong>ng of the business logics and of the front end Web application would have been manual.<br />
Vice versa, thanks to the WebML model and associated design tools, the components can be<br />
quickly designed and integrated in the visual design of the Web application, whose code can then<br />
be automatically generated. The conceptual components specified in Section 3 have been<br />
implemented once and for all as WebML primitives, which can be reused in the design. A set of<br />
WebML modeling and code generation facilities take care of the Web page implementation of<br />
the method invocations, and of the parameters between components.<br />
4.1 WebML and WebRatio background<br />
This Subsection summarizes the basic concepts of WebML and WebRatio that are needed for<br />
understan<strong>di</strong>ng the extensions that have been devised in this work. WebML is a Domain Specific<br />
Model for Web application design and development. It allows specifying the conceptual<br />
modeling of Web application hyper<strong>text</strong>s (site views) built on top of a content model of the<br />
application data. A site view is a graph of pages. Pages consist of connected units, representing<br />
at a conceptual level the publishing primitives that extract content from the database: a unit<br />
<strong>di</strong>splays instances of an entity, possibly restricted by a selector. Units are related to each other<br />
through hyper<strong>text</strong>ual links, representing navigational paths and carrying data from a unit to<br />
another. WebML allows specifying also operations updating the underlying data or performing<br />
other actions.<br />
2 http://www.webml.com<br />
66
Through the entry unit in figure 4.1 we can create new user on the social network. When the user<br />
presses the submit button, chain of operations is triggered: a new user instance is created and add<br />
a property value to the instance called ID.<br />
Figure 4.1: Example of WebML hyper<strong>text</strong> specification<br />
The example in figure 4.2 shows the WebML model of a page called Create New Group,<br />
allowing the user to create a new group. Through the entry unit the user can create a group in the<br />
social network. The get unit retrieves the data of the current user from the session. When the user<br />
submits, a chain of operations is triggered: a new Group instance is created and also add its<br />
property and is associated to the current user (relationship creator, member) and to the current<br />
Group (relationship membership, creation).<br />
The WebML language is extensible, allowing for the definition of customized operations and<br />
units. The WebML models are provided with primitives for representing Web Services<br />
interactions [56][57], workflows constraints [58], con<strong>text</strong>-aware behavior [59], and Semantic<br />
Web Services [60]. WebML has been implemented in the tool WebRatio 3 [61], a C.A.S.E.<br />
3 http://www.webratio.com<br />
67
environment for the visual design of Web applications and the automatic generation of code for<br />
the J2EE platform.<br />
Figure 4.2: Example of WebML hyper<strong>text</strong> specification<br />
The tool supports the development phases:<br />
• Data Design (E-R or UML models);<br />
• Hyper<strong>text</strong> Design (WebML models);<br />
• Presentation Design of the hyper<strong>text</strong> look-and-feel;<br />
• Mapping of the data model to a relational database;<br />
• Automatic Hyper<strong>text</strong>s Implementation and Documentation (queries, update statements,<br />
Web Service calls, page templates).<br />
The architecture of WebRatio features: the integrated development environment for the<br />
application models design; the code generator for the translation of the models to application<br />
code by means of XSL and Groovy transformations; and the runtime package encompassing the<br />
application code and external libraries for the deployment of the Web application upon J2EE<br />
platforms, accor<strong>di</strong>ng to the MVC 2 pattern. It also allows new components to be plugged in as<br />
WebML custom units [62].<br />
The following Subsections present the extensions of the runtime architecture and the new<br />
WebML components that have been devised for implementing the framework.<br />
68
Figure 4.2: Example of WebML hyper<strong>text</strong> specification<br />
4.2 Runtime Architecture of the Framework<br />
We have implemented the execution of the existing framework in the con<strong>text</strong> of the WebRatio<br />
runtime architecture, extended to include interactions with the knowledge base. Figure 4.3<br />
depicts the new architecture, where white boxes show the WebRatio existing components, blue<br />
components are provided by the reasoner, and the yellow ones represent the runtime elements of<br />
the framework.<br />
The resulting architecture still follows the MVC2 architectural pattern, and comprises: (i) the<br />
Web-based interfaces delivering the knowledge exploration and management functionalities, (ii)<br />
the framework logic implementing these functionalities, (iii) the user interactions with the<br />
framework, and (iv) the business logic provi<strong>di</strong>ng access to the knowledge base and the XMI files<br />
of UML models. This <strong>di</strong>fferentiates from the tra<strong>di</strong>tional MVC2 architecture because of (i) the<br />
knowledge layer incorporating the knowledge base managed by the Pellet reasoning engine; and<br />
(ii) the data layer containing only XMI files serializing the UML data models used by the<br />
framework.<br />
Notice that the framework logic is decoupled from the knowledge access and the data access by<br />
introducing business logic services that are responsible to interact with Pellet and with the UML<br />
69
serializations. Such separation grants the independence from the specific reasoning engine and<br />
from the UML serialization format.<br />
Controller<br />
(Servlet)<br />
Actions<br />
(Java classes)<br />
Page Services<br />
(Java classes)<br />
Knowledge Base Interface<br />
(Java)<br />
Web<br />
browser<br />
WEB<br />
Web<br />
server<br />
View<br />
(JSP)<br />
State Objects<br />
(Java)<br />
Knowledge<br />
Exploration<br />
Unit Services<br />
(Java classes)<br />
Tableau<br />
Reasoner<br />
Internalization<br />
TBox<br />
Absorption<br />
Symbols<br />
Components Interaction<br />
HTTP/SOAP messages<br />
Component<br />
Servlet Container<br />
Knowledge<br />
Management<br />
Operation Services<br />
(Java classes)<br />
Business Logic<br />
Service<br />
Species Validation &<br />
Ontology Repair<br />
Knowledge Layer - Pellet<br />
XMI<br />
Subcomponent<br />
Application Server<br />
Data Layer<br />
Figure 4.3: Runtime architecture for the framework<br />
4.3 Implementation of Components<br />
As we have mentioned earlier, the framework components are specified as new WebML<br />
primitives. For their implementation we exploit the WebRatio plug-in mechanism, which allows<br />
to define new units and to seamlessly integrate them in the design and execution of the<br />
applications. In the following we describe the list of new WebML units that have been defined as<br />
implementations of the components <strong>di</strong>scussed in Section 3.<br />
4.3.1 Content publishing units<br />
The Hierarchy, Class, Datatype, Property, Property Value, Instance, and Explanation<br />
components are implemented as content units. The UML classes acting as selection con<strong>di</strong>tions<br />
for the correspon<strong>di</strong>ng UML component are defined for the respective content unit, with values<br />
being parametric on the user choices. The units produce in output the names of the deducted<br />
elements. Table 4.1 summarizes the Hierarchy components together with their symbol, the<br />
expected inputs and delivered outputs. The remaining exploration components are summarized in<br />
table 4.2.<br />
70
Description<br />
Classes<br />
Hierarchy Unit<br />
Properties<br />
Hierarchy Unit<br />
Input: optional class names to be used at the selection con<strong>di</strong>tions<br />
Output: structured set of class names<br />
Input: optional property names to be used at the selection con<strong>di</strong>tions<br />
Output: structured set of property names<br />
Table 4.1: WebML hierarchy components<br />
Description<br />
Class Unit<br />
Datatype Unit<br />
Property Unit<br />
Instance Unit<br />
Explanation<br />
Unit<br />
Property Value<br />
Unit<br />
Input: optional names for (<strong>di</strong>sjoint) classes, typed instances, defined<br />
properties<br />
Output: set of class names<br />
Input: optional names for datatypes, defined properties, and values<br />
Output: set of datatype names<br />
Input: optional names for (<strong>di</strong>sjoint, inverse) properties, assigned instances,<br />
defining classes and datatypes<br />
Output: set of property names<br />
Input: optional names for (assigned) instances, defining classes<br />
Output: set of instance names<br />
Input: optional names for classes, properties, instances<br />
Output: set of assertions retrieved<br />
Input: optionnal parameter for the evaluation of datatypes, defined<br />
properties, values<br />
Output: set of property values deducted<br />
Table 4.2: WebML exploration components<br />
4.3.2 Content management operations<br />
The content management components are implemented as WebML operation units. The<br />
implementation consists of pieces of code analogous to the publishing content units. A first set of<br />
71
components (Table 4.3) is implemented for managing the whole knowledge base content<br />
(Create-KB, Release-KB, Import-XMI-to-KB, Export-XMI-from-KB). Those for<br />
ad<strong>di</strong>ng/removing in<strong>di</strong>vidual knowledge are implemented are summarized respectively in table<br />
4.4 and table 4.5.<br />
Create KB Unit<br />
Output: OK-link transfers the identifier of the created knowledge<br />
base instance. KO-link transfers the error code.<br />
Release KB Unit Input: mandatory identifier of the knowledge base instance to be<br />
deleted.<br />
Output: OK-link: identifier of the deleted knowledge base instance.<br />
KO-link: error code.<br />
Import XMI to KB Unit Input: mandatory identifiers of the knowledge base instance and of<br />
the XMI file to be imported.<br />
Output: OK-link: set of imported axioms. KO-link: error code<br />
Export KB to XMI Unit Input: mandatory identifier of the knowledge base instance to be<br />
exported and mandatory XMI file.<br />
Output: OK-link: set of exported axioms. KO-link: error code<br />
Table 4.3: WebML manage knowledge base components<br />
Description<br />
Output: OK-link: set of added axioms. KO-link: error code<br />
Add ClassAxiom<br />
Add DatatypeAxiom<br />
Add PropertyAxiom<br />
Add InstanceAxiom<br />
Input: mandatory name for class, optional names for <strong>di</strong>sjoint classes,<br />
defined instances and properties.<br />
Input: mandatory name for datatype, optional names for defined<br />
properties and values.<br />
Input: mandatory name for property, optional names for <strong>di</strong>sjoint and<br />
inverse properties, assigned instances, defining classes and datatypes.<br />
Input: mandatory name for instance, optional names for assigned<br />
instances and defining classes.<br />
72
Add<br />
PropertyValueAxiom<br />
Input: mandatory name for property value parameter, optional<br />
parameters for the insertion of assuming instances, defined properties<br />
Table 4.4: WebML add axiom components<br />
Description<br />
Output: OK-link: set of removed axioms. KO-link: error code<br />
Remove ClassAxiom Input: mandatory name for class, optional names for <strong>di</strong>sjoint classes,<br />
defined instances and properties<br />
Remove Input: mandatory name for datatype, optional names for defined<br />
DatatypeAxiom properties and values<br />
Remove Input: mandatory name for property, optional names for <strong>di</strong>sjoint and<br />
PropertyAxiom inverse properties, assigned instances, defining classes and datatypes<br />
Remove Input: mandatory name for instance, optional names for assigned<br />
InstanceAxiom instances, defining classes<br />
Remove Input: mandatory name for property value parameter, optional<br />
PropertyValueAxiom parameters for the deletion of assuming instances, defined properties<br />
Table 4.5: WebML remove axiom components<br />
4.3.3 Implementation<br />
For each of the above units, the implementation within the WebRatio environment comprises the<br />
development of the following elements:<br />
• The design-time XML descriptor, defining the unit name, the selection con<strong>di</strong>tions that<br />
may be attached, and the acceptable links.<br />
• The Groovy transformations for automatically generating the unit runtime XML<br />
descriptor, which specifies the knowledge objects to be queried/updated.<br />
• The XSL transformations for automatically generating the unit custom tags for formatting<br />
the unit content in the JSP templates that contain it.<br />
• The Java class implementing the functionality delivered by the operation. Its code calls<br />
the appropriate Pellet API methods for knowledge inference and manipulation.<br />
73
4.4 Implementation of Patterns<br />
The WebRatio tool simplifies the implementation of the framework patterns. The designer can<br />
combine the designed WebML components accor<strong>di</strong>ng to the pattern specification.<br />
Figure 4.4: WebML class and its classification hyper<strong>text</strong><br />
Figure 4.4 depicts a WebML site view that implements the WebML mo<strong>di</strong>fied of the<br />
“Instantiated classes” pattern described in Section 3. The User Profile page <strong>di</strong>splays the lists of<br />
Friends and Interests of the WebML model, lists of Groups and Recommendation. By selecting<br />
an Accept Recommendation from the Recommendation unit, the user can add Recommended<br />
topics to his Interests page. By selecting a View Group Activities, the user navigates to the<br />
Group page, where the Group Activities shown.<br />
The whole application code is automatically generated (page templates and XML descriptors)<br />
from the WebML model. Figure 4.5 depicts the implemented Recommendation page of figure<br />
74
4.4. The top segment of the page is showing current user’s personal information, his/her interest<br />
and recommendation based on user’s group activities. Below it is showing user’s friends list and<br />
list of groups the user is member of.<br />
Figure 4.5: User Profile Page with Recommendation<br />
The knowledge management hyper<strong>text</strong> that enables the creation of the knowledge schema from a<br />
UML class <strong>di</strong>agram and of knowledge instances from object instances is shown in figure 4.6.<br />
Set KB<br />
Home Page<br />
Knowledge Base<br />
Page<br />
Load XMI<br />
xmi<br />
Create KB<br />
kb, xmi<br />
OK<br />
OK<br />
ImportXMI2KB<br />
XMI<br />
KB<br />
KO<br />
Error Page<br />
KO<br />
[KB=kb]<br />
[XMI=xmi]<br />
Figure 4.6: WebML hyper<strong>text</strong> for creating the KB<br />
75
In the Knowledge Base page the user uploads the XMI description of the domain model through<br />
a form. Upon submission, the Create-KB operation creates the knowledge base and the Import-<br />
XMI2KB inserts the XMI specification of the UML model into the knowledge base. Its contents<br />
are inserted as description logic axioms. Finally, the Set-KB unit stores the newly created<br />
knowledge base identifier in the HTTP session.<br />
4.5 Application Implementation<br />
Accor<strong>di</strong>ng to the specification and design we have implemented the application in WebRatio.<br />
Knowledge schema creation in the WebRatio environment is shown in figure 4.7. Here the red<br />
line in<strong>di</strong>cates KO link, it will fire if any error occurs. The green line in<strong>di</strong>cates OK link. In the<br />
Entry page there is a KB Entry Unit, which will take the XMI description of the domain model.<br />
And it will work in the same way that we have described in the previous section.<br />
Figure 4.7: WebML hyper<strong>text</strong> for creating the KB in WebRatio<br />
In figure 4.8 shows in the browser, the “Entry Page” for KB creation. In the <strong>text</strong> box (named<br />
KB), we will insert the XMI description of the model and then press the ‘Create’ button and it<br />
will create the Knowledge Schema. If the procedure work success<strong>full</strong>y then it will go to the next<br />
76
page otherwise it will go to the error page. And when we press ‘SaveXMI’ button it will export<br />
the XMI specification of the UML model into the knowledge base.<br />
Figure 4.8: HTML view for creating the KB<br />
After click on the link “View User” from the home page we can view the total list of available<br />
User’s in the application. Figure 4.9 is showing the WebML view of such instance and figure<br />
4.10 is showing the HTML view. We have used Instantiated class pattern here.<br />
Figure 4.9: WebML in WebRatio for View User<br />
77
Figure 4.10: HTML view for View User<br />
After click in the link ‘User Profile’, in the figure 4.10, we can view <strong>full</strong> information of an User.<br />
Figure 4.11 shows the WebML view and figure 4.12 shows the HTML view of the User<br />
Information. We are performing some filtration to show specific information as a output.<br />
Figure 4.11: WebML view for User Information<br />
78
We are showing current user’s information as we stored the current user using the “Set Unit”.<br />
We are using this information to load the instances of current user. We are using several property<br />
value units to show Group membership, Address, Email, Friend list, Interest list and also the<br />
Recommendation. When the User instance will load, in the same time all the property values will<br />
be loaded. The property values will get instance by the transition link.<br />
Figure 4.12 is showing user’s (in this case the user is ‘Roni’) personal information such as id,<br />
email, address, city, country as well as the list of his interest that the user has added. Also the<br />
user can view his available friends list and the list of the groups that he is member of. To view<br />
the details activities of a specific group the user has to click on the ‘View Group Activities’ link<br />
beside the group name.<br />
Figure 4.12: HTML view for User Information<br />
79
The user can add a new interest in his interest list by clicking on the “Add Interest” link on the<br />
top right corner of the page. Also he can review the invitations sent from any group or sent by<br />
another user by clicking on “View Invitation” link.<br />
The user can also view the recommended information from the group. This information will be<br />
available on the current user’s profile page when the current user is a member of a group and<br />
another member from the same group added any interest to his profile. The system will<br />
automatically recommend this information to the current user as “Recommendation from<br />
Group”. The current user can accept this as his personal interest also by clicking on the “Accept”<br />
link.<br />
Figure 4.13 is showing the step by step procedure of sen<strong>di</strong>ng a friend invitation to another user<br />
in WebML perspective. After inserting the information correspon<strong>di</strong>ng to the entry form we will<br />
create a new instance (in this case “CreateFriendInvitationIns” ) by the “Add Instance” unit and<br />
then using the “Add Property Value” unit we will add the property value of the newly created<br />
instance. Here, the “From User” field of the entry unit is preloaded with the current user value. If<br />
we can create the instance and add the property value success<strong>full</strong>y we will return to “Invitation”<br />
page otherwise if any error occurs we will go to the “Invitation Error Page”.<br />
Figure 4.13: WebML view for an Invitation<br />
Figure 4.14 is showing the “Invitation” page in the browser perspective i.e. it is the equivalent<br />
representation of what we have implemented in the figure 4.13 using the components. Here, the<br />
80
current user is sen<strong>di</strong>ng a friend invitation to another user. In this case the current user is “Munir”<br />
and he is sen<strong>di</strong>ng invitation to another user named “Roni”. As we have stated earlier “Munir”<br />
was preloaded in the “From User” field, as he is the current user. After filling up the required<br />
information the user can send the invitation by clicking on the “Invite” button.<br />
Figure 4.14: HTML view for an Invitation<br />
Figure 4.16 is sowing the implementation of “Class and its Classification” pattern using the<br />
knowledge base units in WebML. Using this pattern we can examine all the classes, all the<br />
instances of those classes and all the property values of the instances.<br />
The equivalent HTML representation of “Class and its Classification” pattern is shown in figure<br />
4.16 that we have implemented in the figure 4.15. Here we can see all the available classes of the<br />
schema and all the instances and the property values.<br />
81
Figure 4.15: WebML view for showing all Instances<br />
Figure 4.16: HTML view for showing all Instances<br />
82
The information of a particular group is implemented in WebML in the figure 4.17. When the<br />
instance of a group is loaded all the other property value of that instance is also loaded using the<br />
transition link. For a group, we are showing the available group member of the group as well as<br />
available articles, events and messages using the “Property Value Unit”.<br />
Figure 4.17: WebML view for Showing Group information<br />
The HTML representation of group information page is shown in the figure 4.18. Here the group<br />
member can view the name of the group, the create date of the group. Also the group member<br />
can view the other available members and available articles, events and messages of the group.<br />
Figure 4.18: HTML view for Showing Group information<br />
83
The group member can also post a new article, send group message and create a new event by<br />
clicking on the “Post New Article”, “Send Group Message” and “Create New Event”,<br />
respectively.<br />
Figure 4.19 describes the step by step procedure of creating a new article for a group by the<br />
group member. Here, also the name of the group is preloaded in the entry form. After that we are<br />
creating a new instance using the name of the article. Then we add the property values of the<br />
instance using the “Property Value Unit”. If all the steps are success<strong>full</strong>y done then we will<br />
return to the group information page. Otherwise if any error occurs at any point of the procedure<br />
then it will take to the error page called “Article Create Error Page”.<br />
Figure 4.19: WebML view to Post a New Article<br />
Figure 4.20 shows the HTML representation of Post New Article. Here we are creating a new<br />
article called “Good Movie” with the subject “The movie was very good”. As we stated before<br />
the “To Group” field is preloaded with the current group name. After inserting all the required<br />
information the group member can post the article in the group by clicking the “Post” button. If<br />
the article is posted success<strong>full</strong>y we will return to the group information page otherwise it will go<br />
to the error page.<br />
84
Figure 4.20: HTML view to Post New Article<br />
85
5. Related Work<br />
This section reviews existing design frameworks for ontology based semantic Web applications.<br />
Hera [63] is a modeling language for enriching the contents of Web Information Systems with<br />
knowledge resulting from <strong>di</strong>fferent sources. Its design approach encloses the steps for modeling<br />
the domain knowledge and the hyperme<strong>di</strong>a structure and features, producing respectively the<br />
Conceptual (CM), and the Application (AM) and Presentation Model. The representation syntax<br />
of the application domain is RDF(S). The mapping between each data source schema and the<br />
CM is also defined in RDF. The AM models the contents and navigational links of the<br />
application interfaces in terms of classes and properties in the CM. The Hera approach defines<br />
RQL data extraction mechanisms upon the structure of knowledge contained in the CM. It does<br />
not provide any means for extracting the knowledge structure or for making inferences on it to<br />
derive new relations.<br />
Hera-S [64] covers some of the limitations of Hera, by enabling knowledge update through<br />
hyper<strong>text</strong> interfaces. The domain is modeled with OWL, and the query language interpreted by<br />
Sesame is SeRQL. Queries are not generated automatically by the system. The developer<br />
expresses the appropriate SeRQL queries and parameters within the body of extraction<br />
components.<br />
These two approaches suffer of some common limitations:<br />
• no automatic means are provided for manipulating the knowledge structure;<br />
• the developer must be aware knowledgeable of OWL, RDF(S), and SeRQL, because no<br />
abstraction on the implementation details of the queries is provided;<br />
• the built architecture is rather monolithic and not open to extensibility.<br />
The Semantic Hyperme<strong>di</strong>a Design Method (SHDM) [65] is an extension of the OOHDM<br />
approach for modeling semantic Web applications. It incorporates the conceptual modeling of<br />
86
the application domain as extended UML class <strong>di</strong>agrams translated to OWL syntax. The<br />
development process produces also the navigational class and con<strong>text</strong> models, defining<br />
respectively the objects that may be reached by the user and their access mechanisms, both of<br />
them mapped to the ontology in the conceptual model with the use of RQL queries. The<br />
knowledge structure is mapped to navigable application objects, which can be manipulated by<br />
the application accor<strong>di</strong>ng to the OOHDM methodology. The main limitation is that the use of<br />
RQL queries requires the developer to explicitly implement them at design time.<br />
OntoWebber [66] is another model-driven ontology-based language for Web applications. It<br />
generates sites from ontological descriptions of various aspects of the sites structure. Like in<br />
Hera, the design process in OntoWebber concentrates on the integration of existing<br />
heterogeneous data sources in a single RDF(S) domain ontology stored in a data repository<br />
together with the site’s ontological models, which express predefined aspects like content,<br />
navigation, presentation, personalization, maintenance, and integrity constraints requirements.<br />
These aspects are translated to the domain ontology through TRIPLE queries.<br />
With respect to the <strong>di</strong>scussed approaches, our proposal presents several advantages: it allows the<br />
designer to work at a graphical conceptual level for the application design; it exploits standard<br />
UML representation of components; it provides a set of patterns that simplify the design task; it<br />
benefits from an implementation experience that exploits the well known WebML DSL and<br />
industrial CASE tool and code generation features.<br />
87
6. Comparison<br />
In this section, we make a comparison of the proposed framework and the development tools<br />
implementing the existing design methodologies: Hera-S, SHDM, and OntoWebber. Table 6.1<br />
summarizes the characteristics of the KB framework along with those for HPG [67],<br />
SHDM2OWL [65] and Presentation Builder [68], and OntoWebber IDE [69]. The compared<br />
characteristics are <strong>di</strong>vided into: knowledge layer features, knowledge services supported by the<br />
modeling approach, and software architecture properties.<br />
Hera-S SHDM OntoWebber KB Framework<br />
KNOWLEDGE LAYER<br />
KR Language OWL UML-Style OWL RDF(S) UML Class and<br />
object <strong>di</strong>agrams<br />
Underlying KR formalism RDF(S) RDF(S) RDF(S) RDF(S)<br />
Knowledge Sources Multiple Single Multiple Single<br />
Interoperability<br />
OWL/RDF(S)<br />
models<br />
OWL/RDF(S) models RDF(S) models XMI-based UML<br />
models<br />
Import Support<br />
Non-automatic<br />
Automatic<br />
Non-automatic<br />
Automatic<br />
Integration<br />
Integration<br />
Export Support Automatic Automatic Automatic Automatic<br />
Inference Engine<br />
Sesame RFD(S)<br />
Sesame<br />
RFD(S)<br />
TRIPLE<br />
Pellet<br />
reasoning<br />
reasoning<br />
Consistency Checking No No No Yes<br />
Automatic Classification No No No Yes<br />
Query Language SeRQL RQL TRIPLE Pellet API<br />
Knowledge Storage<br />
Memory/DBMS<br />
Memory/DBMS/<br />
Memory<br />
Memory<br />
/Files<br />
Files<br />
KNOWLEDGE-INTENSIVE WEB APPLICATION MODELING<br />
Query Formulation Text-Based Text-Based RQL TRIPLE Syntax<br />
Graphical<br />
SeRQL syntax<br />
Syntax<br />
Components on<br />
UML elements<br />
Knowledge Schema<br />
No No No Yes<br />
Extraction<br />
88
Knowledge Instances Yes Yes Yes Yes<br />
Extraction<br />
Knowledge-Based<br />
Yes Yes Yes Yes<br />
Navigation<br />
Knowledge Update Partial Partial Partial Yes<br />
SOFTWARE ARCHITECTURE<br />
Extensibility No No No Plug-ins<br />
Programming Language JAVA/XSLT JAVA JAVA JAVA<br />
Methodological Support Yes Yes Yes Yes<br />
Table 6.1: Comparison of knowledge-intensive Web applications modeling tools<br />
Obviously, reasoning capabilities are closely related to the supported knowledge representation<br />
language and inference engine. Hera-S, SHDM, and OntoWebber formalize the domain<br />
knowledge with RDF schema statements. Hence, their inferences derive from RDF(S) reasoning<br />
capabilities and include mainly type and subsumption queries upon RDF(S) ontologies. Since<br />
Pellet is a description logic reasoner, it supports features like classification of concepts and<br />
consistency checking that are particularly useful in execution platforms like the Web that often<br />
require dynamic update of both data and its schema. Hera-S and SHDM store their knowledge in<br />
the Sesame repository, a highly efficient system for ontologies storage and querying upon<br />
DBMS, native files, and memory. Instead TRIPLE and Pellet API apply their inferences upon<br />
data that resides in main memory, thus limiting the manageable knowledge size. The drawback<br />
of integration of knowledge approach of Hera-S and OntoWebber is the high expertise needed<br />
for mapping the various schemas to the domain knowledge schema. Instead, SHDM and the KB<br />
framework automatically translate a data source into the knowledge layer.<br />
The second table category summarizes the knowledge-based capabilities of built hyper<strong>text</strong>s. All<br />
the approaches incorporate the deduction of instances and the user navigation upon them.<br />
However, supported query notations influence the usability of the tools. Only the KB framework<br />
uses graphical components defined upon the UML-based representation of knowledge, and<br />
creates parameterized queries that are mapped to Pellet API methods in a transparent way for the<br />
designer. The rest of the tools only recognize queries written <strong>di</strong>rectly in the supported query<br />
language having a <strong>text</strong>-based syntax. Thus, the designer needs to be aware of logical formalisms,<br />
89
the development complexity is increased, and the usability of the tools is reduced. Finally, only<br />
the KB framework supports deduction and update of the knowledge with de<strong>di</strong>cated components<br />
and design patterns.<br />
The last table category summarizes the architectural aspects of the tools. All the tools have<br />
methodological support, but except the KB framework, they are <strong>di</strong>fficult to extend mainly<br />
because they base on two-tier architecture. The KB framework is open to extensibility by means<br />
of custom units. Extensions may occur either at the framework logic level provi<strong>di</strong>ng a new<br />
functionality upon the existing inference system, at the business logic level giving access to the<br />
knowledge base, or at both.<br />
In Table 6.2 a second comparison is made upon the expressive power of knowledge<br />
representation languages (OWL and the language underlying the KB Framework). Both<br />
languages are mapped to formalisms from the Description Logics family. Such comparison<br />
focuses on the main features of each language in knowledge modeling in order to highlight their<br />
<strong>di</strong>fferences and their limitations. All of them support the notion of class and class hierarchy;<br />
although the KB Framework Language does not support exhaustive decomposition and<br />
partitioning, due to implementation problems encountered using Pellet. In fact, UML considers<br />
completeness upon generalization sets; therefore, we plan to resolve this limitation in future<br />
releases. Similar is the support of property hierarchies in the languages. Derived support<br />
in<strong>di</strong>cates that the language does not provide a construct for the feature in question, but it supports<br />
it through a combination of other constructs. Attributes that characterize the class are covered<br />
through workarounds: both in OWL and in the KB Framework Language, class attributes are<br />
defined once in the class definition for all the instances of the class. Finally, enumeration of<br />
classes is not yet supported in KB Framework Language, although it is provided in UML. We<br />
plan to extend the implementation to cover this aspect too.<br />
90
OWL<br />
DL<br />
KB Framework<br />
CLASS HIERARCHIES<br />
subclass Yes Yes Yes<br />
<strong>di</strong>sjointness Yes Yes Yes<br />
completeness Yes Yes No<br />
partition Yes Yes No<br />
PROPERTY HIERARCHIES<br />
subproperty Yes Yes Yes<br />
<strong>di</strong>sjointness Yes Yes Yes<br />
completeness Yes Yes No<br />
partition Derived Yes No<br />
OTHER FEATURES<br />
instance attributes<br />
class attributes<br />
car<strong>di</strong>nality constraints<br />
instance<br />
enumeration of classes<br />
Yes Yes Yes<br />
Workaround Yes Workaround<br />
Yes Yes Yes<br />
Yes Yes Yes<br />
Yes Yes No<br />
Table 6.2: Comparison of knowledge-representation languages expressive power<br />
91
7. Conclusion<br />
In this work, we have implemented a social network web application with recommendation<br />
features using the framework based on UML for designing knowledge intensive web application.<br />
We have used a set of specific components and patterns for exploiting reasoning mechanisms to<br />
be used for validating and exploring UML models of knowledge.<br />
The framework bridges the gap between semi-formal modeling languages and semantic formal<br />
representation languages, thus enabling the possibility of property verification and inference by<br />
means of reasoning upon the model’s formalized representation.<br />
The UML conceptual representation (or other equivalent design conceptual model, like WebML)<br />
facilitates the adoption of semantic-based techniques by designers and developers, by hi<strong>di</strong>ng the<br />
implementation details of the query evaluation. Indeed, the developer is not aware of the logical<br />
formalisms supported by Pellet and of the mapping between UML and Pellet programmatic<br />
elements, thus overcoming possible designer resistance to the new knowledge- and semanticsoriented<br />
para<strong>di</strong>gm. The implementation with the WebML language (and associated tool<br />
WebRatio) allows achieving good recommendation productivity in development.<br />
The interaction with the underlying logical representation and the interaction with the reasoner<br />
interface are completely hidden to the designer. Indeed, the specification and design activities<br />
rely on high-level design primitives. The UML components used for the specification of the<br />
knowledge base have been chosen care<strong>full</strong>y with respect to their expressive power and the<br />
associated computational overhead for the reasoner, to avoid excessive computation loads.<br />
We have designed and implemented a social network sharing information among its members<br />
using the framework. Registered users are allowed to insert Create New Groups, post Article in<br />
the Group, and invite another user to become Friends, add Interests, and send Group Invitation<br />
and so on. The system automatically recommend to the group member about a particular interest<br />
92
of a specific group members of the same group. When a user browses to select an interest, the<br />
system recommends new interests accor<strong>di</strong>ng to his last selection.<br />
Future works will include further implementation of real-world applications using the proposed<br />
design para<strong>di</strong>gm. We aim at exten<strong>di</strong>ng the implementation of the industrial application, and more<br />
real world application by developing new functionalities that cannot be delivered in a dataintensive<br />
application because of the limitations of query languages defined upon the relational<br />
domain models. In the frame of such requirement, we expect to explore and provide new patterns<br />
combining and configuring the framework components.<br />
We also aim at (i) extend the components implementation in order to complete the missing<br />
functionalities, and (ii) provide an extension of the WebML methodology towards the design of<br />
knowledge-intensive Web applications.<br />
93
References<br />
[1] Marco Brambilla, Christina Tziviskou, A Framework for Model-driven Design and Development of Knowledge-intensive<br />
Web Applications.<br />
[2] SIRIN, E., PARSIA, B., GRAU, B. C., KALYANPUR, A., AND KATZ, Y. 2007. Pellet: A practical OWL-DL reasoner.<br />
Journal of Web Semantics 5(2), 51-53.<br />
[3] CERI, S., FRATERNALI, P., BONGIO, A., BRAMBILLA, M., COMAI, S., AND MATERA, M. 2002. Designing Data-<br />
Intensive Web Applications. Morgan Kauffmann, San Francisco, CA.<br />
[4] Dietz, J. L., & Hoogervorst, J. A. (2007). Enterprise Ontology and Enterprise Architecture - how to let them evolve into<br />
effective complementary notions. GEAO Journal of Enterprise Architecture , Vol. 2 (Nr. 1).<br />
[5] OMG. (2003, 06 12). MDA Guide Version 1.0.1. Retrieved from Object Management Group: http://www.omg.org/mda.<br />
[6] Soley, R. (2000, 11 27). Model Driven Architecture. Retrieved from Object Management Group: http://www.omg.org/mda.<br />
[7] P. Atzeni, G. Mecca, P. Merialdo. Design and Maintenance of Data-Intensive Web Sites. EDBT 1998, pp. 436–450.<br />
[8] M.F. Fernandez, D. Florescu, J. Kang, A.Y. Levy, D. Suciu. Overview of Strudel—A Web-Site Management System.<br />
Networking and Information Systems, 1(1), 1998, pp. 115–140.<br />
[9] SCHWABE, D. AND ROSSI, G. 1998. An object oriented approach to Web-based applications design, TAPOS 4, 4.<br />
[10] FERNANDEZ, M. F., FLORESCU, D., KANG, J., LEVY, A. Y., AND SUCIU, D. 1998. Catching the Boat withStrudel:<br />
Experiences with a Web-Site Management System. In SIGMOD Conference. Seattle,414–425.<br />
[11] MECCA, G., MERIALDO, P., ATZENI, P., AND CRESCENZI, V. 1999. The (Short) Araneus Guide to Web-Site<br />
Development. In WebDB (Informal Procee<strong>di</strong>ngs). 13–18.<br />
[12] CERI, S., FRATERNALI, P., AND PARABOSCHI, S. 1999. Data-driven, one-to-one Web site generation for data-intensive<br />
applications. In Very Large Databases Conference, M. P. Atkinson,M. E. Orlowska,P. Valduriez, S. B. Zdonik, and M. L. Bro<strong>di</strong>e,<br />
Eds. Morgan Kaufmann, E<strong>di</strong>nburgh, UK, 615–626.<br />
[13] CERI, S., FRATERNALI, P., AND BONGIO, A. 2000. Web modeling language (WebML): A modeling language for<br />
designing Web sites. Computer Networks 33, 1–6, 137–157.<br />
[14] CERI, S., FRATERNALI, P., BONGIO, A., BRAMBILLA, M., COMAI, S., AND MATERA, M. 2002. Designing Data-<br />
Intensive Web Applications. Morgan-Kaufmann.<br />
[15] G´OMEZ, J., CACHERO, C., AND PASTOR, O. 2001. Conceptual modeling of device-independent Web applications.<br />
IEEE MultiMe<strong>di</strong>a 8, 2, 26–39.<br />
[16] P. P. Chen, The Entity-Relationship Model, Towards a Unified View of Data, ACM-Transactions on Database Systems, 1:1,<br />
1976, pp. 9-36.<br />
[17] R. G. G. Cattell, Douglas K. Barry, and Dirk Bartels (Eds.), The Object Database Standard : ODMG 2.0, Morgan-Kaufmann<br />
Series in Data Management Systems, 1997.<br />
[18] G. Booch, I. Jacobson, and J. Rumbaugh, The Unified Modeling Language User Guide, The Ad<strong>di</strong>son-Wesley Object<br />
Technology Series, 1998.<br />
[19] Berners-Lee, T., Hendler, J., and Lassila, O., 2001, The Semantic Web, Scientific American , 284: 34–43.<br />
[20] W3C: Sparql query language for rdf (2007) http://www.w3.org/TR/rdf-sparql-query.<br />
[21] Dean, M. and Schreiber, G., 2004, OWL Web Ontology Language Reference, W3C Recommendation,<br />
http://www.w3.org/TR/2004/REC-owl-ref-20040210/.<br />
94
[22] OMG UML (2007), Unified Modeling Language: Superstructure version 2.1.1. ptc/2007-02-03. OMG document<br />
http://www.omg.org/cgi-bin/doc?formal/07-02-03<br />
[23] CRANEFIELD, S., AND PURVIS, M. 1999. UML as an Ontology Modeling Language. In Procee<strong>di</strong>ngs of the Workshop on<br />
Intelligent Information Integration in conjunction with the 16th International Joint Conference on Artificial Intelligence,<br />
Stockholm, Sweden, July 1999.<br />
[24] CRANEFIELD, S. 2001. UML and the Semantic Web. In Procee<strong>di</strong>ngs of the 1st International Semantic Web Working<br />
Symposium, Stanford University, California, USA, July 2001, IOS Press.<br />
[25] FALKOVYCH, K. 2002. Ontology Extraction from UML Diagrams. Master's thesis, Vrije Universiteit Amsterdam, 2002.<br />
[26] FALKOVYCH, K., SABOU, M., AND STUCKENSCHMIDT, H. 2003. UML for the Semantic Web: Transformation-<br />
Based Approaches. In the Knowledge Transformation for the Semantic Web, B. OMELAYENKO AND M. KLEIN, IOS Press,<br />
92-106.<br />
[27] BAC LAWSKI, K., KOKAR, M. K., KOGUT, P. A., HART, L., SMITH, J., HOLMES, W. S., LETKOWSKI, J., AND<br />
ARONSON, M. L. 2001. Exten<strong>di</strong>ng UML to Support Ontology Engineering for the Semantic Web. In Procee<strong>di</strong>ngs of the 4th<br />
International Conference on UML, Toronto, Canada, October 2001, Springer, 342-360.<br />
[28] BACLAWSKI, K., KOKAR, M. K., SMITH, J. E., WALLACE, E., LETKOWSKI, J., KOETHE, M. R., AND KOGUT, P.<br />
2002. UOL: Unified Ontology Language. Assorted papers <strong>di</strong>scussed at the DC Ontology SIG meeting, http://www.omg.org/cgibin/doc?ontology/2002-11-02,<br />
2002.<br />
[29] OMG ODM RFP (2006), Ontology Definition Metamodel Request for Proposal. OMG document http://www.omg.org/cgibin/doc?ad/06-05-01.pdf<br />
[30] BROCKMANS, S., VOLZ, R., EBERHART, A., AND LOFFLER, P. 2004. Visual Modeling of OWL DL Ontologies Using<br />
UML. In Procee<strong>di</strong>ngs of the 3rd International Semantic Web Conference, Hiroshima, Japan, November 2004, Springer, 198-213.<br />
[31] BROCKMANS, S., HAASE P., HITZLER, P., AND STUDER, R. 2006. A Metamodel and UML Profile for Rule-extended<br />
OWL DL Ontologies. In the Procee<strong>di</strong>ngs of the 3rd European Semantic Web Conference, Budva, Montenegro, June 2006,<br />
Springer, 303-316.<br />
[32] SIRIN, E., PARSIA, B., GRAU, B. C., KALYANPUR, A., AND KATZ, Y. 2007. Pellet: A practical OWL-DL reasoner.<br />
Journal of Web Semantics 5(2), 51-53.<br />
[33] OMG Meta Object Facility (MOF) (2005) 2.0 XMI Mapping Specification, v 2.1. OMG document http://www.omg.org/cgibin/apps/doc?formal/05-09-01.pdf<br />
[34] BECHHOFER, S., VAN HARMELEN, F., HENDLER, J., HORROCKS, I., MCGUINNESS, D.L., PATEL-SCHNEIDER,<br />
P.F., AND STEIN, L.A 2004. OWL Web Ontology Language Reference. Available at http://www.w3.org/TR/2004/REC-owlref-20040210/<br />
[35] VAN HARMELEN, F., PATER-SCHNEIDER, P.F., AND HORROCKS, I. 2001. Reference description of the DAML+OIL<br />
ontology markup language. Available at http://www.daml.org/2001/03/reference<br />
[36] BRICKLEY, D., AND GUHA, R.V. 2000. RDF Vocabulary Description Language 1.0: RDF Schema. Available at<br />
http://www.w3.org/TR/rdf-schema/<br />
[37] KLYNE, G., CAROLL, J.J. 2004. Resource Description Framework (RDF): Concepts and Abstract Syntax. Available at<br />
http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/<br />
[38] HAYES, P. 2004. RDF Semantics. Available at http://www.w3.org/TR/2004/REC-rdf-mt-20040210/<br />
[39] BERNERS-LEE, T., AND FISCHETTI, M. 1999. Weaving the Web-Chapter 12. Harper San Francisco, 1999.<br />
95
[40] CLARK, T., EVANS, A., AND KENT, S. 2001. The Meta-Modeling Language Calculus: Foundation Semantics for UML.<br />
In Procee<strong>di</strong>ngs of the 4th International Conference on Fundamental Approaches on Software Engineering (FASE), Genova, Italy,<br />
April 2001, Springer, 17-31.<br />
[41] EGEA, M. 2005. ITP/OCL: a Theorem Prover-Based Tool for UML+OCL Class Diagrams. Master’s thesis, Facultad de<br />
Inform´atica, Universidad Complutense de Madrid, 2005.<br />
[42] SHROFF, M., AND FRANCE, R. B. 1997. Towards a Formalization of UML Class Structures in Z. In Procee<strong>di</strong>ngs of 21st<br />
International Computer Software and Applications Conference, Washington, DC, USA, August 1997, IEEE Computer Society,<br />
646-651.<br />
[43] BERARDI, D., CALVANESE, D., AND DE GIACOMO, G. 2005. Reasoning on UML class <strong>di</strong>agrams. Artificial<br />
Intelligence, 168(1-2), 70-118.<br />
[44] CALVANESE, D., GIACOMO, G., AND LENZERINI, M. 2001. Identification Constraints and Functional Dependencies in<br />
Description Logics. In Procee<strong>di</strong>ngs of the 17th International Joint Conference on Artificial Intelligence, Seattle, Washington,<br />
USA, August 2001, Morgan Kaufman, 155-160.<br />
[45] BAADER, F., CALVANESE, D., MCGUINESS, D.L., NARDI, D., AND PATEL-SCHNEIDER, P.F. 2007. The<br />
Description Logic Handbook: Theory, Implementation, and Applications. Cambridge University Press.<br />
[46] HORROCKS, I., KUTZ, O., AND SATTLER, U. 2006. The Even More Irresistible SROIQ. In Procee<strong>di</strong>ngs of the 10th<br />
International Conference on Principles of Knowledge Representation and Reasoning, Lake District, United Kingdom, June 2006,<br />
AAAI Press, 57-67.<br />
[47] Sirin, E., Parsia, B., Grau, B. C., Kalyanpur, A., and Katz, Y.: Pellet: A practical OWL-DL reasoner. Journal of Web<br />
Semantics, 5(2): 51-53, 2007.<br />
[48] Tobies, S.: Complexity results and practical algorithms for logics in Knowledge Representation. PhD <strong>Thesis</strong>, LuFG<br />
Theoretical Computer Science, RWTH-Aachen, Germany, 2001.<br />
[49] Halaschek-Wiener, C., Parsia, B., and Sirin, E.: Description Logic Reasoning with Syntactic Updates. In Procee<strong>di</strong>ngs of the<br />
5th International Conference on Ontologies, Databases, and Applications of Semantics: 722–737, 2006.<br />
[50] Parsia, B., Sirin, E., Kalyanpur, A.: Debugging OWL Ontologies. In the Procee<strong>di</strong>ngs of the 14th international conference on<br />
World Wide Web (WWW-2005): 633-640, 2005.<br />
[51] Sirin, E., Grau, B. C., and Parsia, B.: From Wine to Water: Optimizing Description Logic Reasoning for Nominals. In the<br />
Procee<strong>di</strong>ngs of the International Conference on the Principles of Knowledge Representation and Reasoning (KR-2006): 90-99,<br />
2006.<br />
[52] HALASCHEK-WIENER, C., PARSIA, B., AND SIRIN, E. 2006. Description Logic Reasoning with Syntactic Updates. In<br />
Procee<strong>di</strong>ngs of the 5th International Conference on Ontologies, Databases, and Applications of Semantics, Montpellier, France,<br />
October 2006, Springer, 722–737.<br />
[53] PARSIA, B., SIRIN, E., KALYANPUR, A. 2005. Debugging OWL Ontologies. In Procee<strong>di</strong>ngs of the 14th International<br />
Conference on World Wide Web, Chiba, Japan, May 2005, ACM, 633-640.<br />
[54] SIRIN, E., GRAU, B. C., AND PARSIA, B. 2006. From Wine to Water: Optimizing Description Logic Reasoning for<br />
Nominals. In Procee<strong>di</strong>ngs of the 10th International Conference on the Principles of Knowledge Representation and Reasoning,<br />
Lake District, United Kingdom, June 2006, AAAI Press, 90-99.<br />
[55] LIEBIG, T. 2006. Reasoning with OWL - System Support and Insights. Technical report, number TR-2006-04, Ulm<br />
University, Germany, 2006. Available at http://www.informatik.uni-ulm.de/ki/Liebig/papers/TR-U-Ulm-2006-04.pdf<br />
96
[56] BRAMBILLA, M., CERI, S., FRATERNALI, P., ACERBIS, R., AND BONGIO, A. 2005. Model-driven Design of Serviceenabled<br />
Web Applications. In Procee<strong>di</strong>ngs of the ACM SIGMOD International Conference on Management of Data, Baltimore,<br />
Maryland, USA, June 2005, ACM, 851-856.<br />
[57] MANOLESCU, I., BRAMBILLA, M., CERI, S., COMAI, S., AND FRATERNALI, P. 2005. Model-Driven Design and<br />
Deployment of Service-Enabled Web Applications. ACM Transactions on Internet Technology (ACM TOIT) 5(3), 439-479.<br />
[58] BRAMBILLA, M., CERI, S., FRATERNALI, P., AND MANOLESCU, I. 2006. Process Modeling in Web Applications.<br />
ACM Transactions on Software Engineering and Methodology (TOSEM) 15(4), 360-409.<br />
[59] CERI, S., DANIEL, F., MATERA, M., AND FACCA, F. 2007. Model-driven Development of Con<strong>text</strong>-Aware Web<br />
Applications. ACM Transactions on Internet Technology (ACM TOIT) 7(1).<br />
[60] BRAMBILLA, M., CERI, S., FACCA, F., CELINO, I., CERIZZA, D., AND DELLA VALLE, E. 2007. Model-Driven<br />
Design and Development of Semantic Web Service Applications. ACM Transactions on Internet Technologies (TOIT) 8(1), 3:1-<br />
3:31.<br />
[61] ACERBIS, R., BONGIO, A., BRAMBILLA, M., BUTTI, S., CERI, S., AND FRATERNALI, P. 2008. Web applications<br />
design and development with WebML and WebRatio 5.0. In Procee<strong>di</strong>ngs of the 46th International Conference on Objects,<br />
Components, Models and Patterns, TOOLS EUROPE, Zurich, Switzerland, July 2008, Springer, 392-411.<br />
[62] WEBRATIO. WebRatio User Guide: Technical Report of Web Models s.r.l., 2007.<br />
[63] VDOVJAK, R., FRASINCAR, F., HOUBEN, G. J., AND BARNA, P. 2003. Engineering semantic web information systems<br />
in Hera. Journal of Web Engineering 2(1&2), 3-26.<br />
[64] VAN DER SLUIJS, K., HOUBEN, G., BROEKSTRA, J., AND CASTELEYN, S. 2006. Hera-S: web design using sesame.<br />
In Procee<strong>di</strong>ngs of the 6th International Conference on Web Engineering, Palo Alto, California, USA, 2006, ACM, 337-344.<br />
[65] LIMA, F., AND SCHWABE, D. 2003. Application modeling for the Semantic Web. In Procee<strong>di</strong>ngs of the 1st Latin<br />
American Web Congress, Washington, DC, USA, 2003, IEEE Computer Society, 93-102.<br />
[66] JIN, Y., DECKER, S., AND WIEDERHOLD, G. 2001. OntoWebber: Model-Driven Ontology-Based Web Site<br />
Management. In Procee<strong>di</strong>ngs of the 1st International Semantic Web Working Symposium, Stanford University, California, USA,<br />
July 2001, 529-547.<br />
[67] FRANSICAR, F., HOUBEN, G., AND BARNA, P. 2005. Hera presentation generator. In Special interest tracks and posters<br />
of the 14th international conference on World Wide Web, New York, USA, 2005, ACM Press, 952-953.<br />
[68] SCHWABE, D., SZUNDY, G., SILVA DE MOURA, S., AND LIMA., F. 2004. Design and Implementation of Semantic<br />
Web Applications. WWW Workshop on Application Design, Development and Implementation Issues in the Semantic Web.<br />
New York, USA, May 2004, CEUR-US.org.<br />
[69] JIN, Y., XU, S., DECKER, S., AND WIEDERHOLD, G. 2002. Managing Web Sites with OntoWebber. In Procee<strong>di</strong>ngs of<br />
the 8th International Conference on Exten<strong>di</strong>ng Database Technology, Prague, Czech Republic, March 2002, Springer, 766-768.<br />
97