25.10.2014 Views

Thesis full text (PDF) - Politecnico di Milano

Thesis full text (PDF) - Politecnico di Milano

Thesis full text (PDF) - Politecnico di Milano

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!