SlideShare a Scribd company logo
Realizing a Semantic Web Application ICWE 2010 Tutorial July 5 - 9, 2010 in Vienna, Austria Emanuele Della Valle [email_address]  -  http://emanueledellavalle.org
Share, Remix, Reuse — Legally This work is licensed under the Creative Commons Attribution 3.0 Unported License.  Your are free: to Share  — to copy, distribute and transmit the work to Remix  — to adapt the work Under the following conditions Attribution  — You must attribute the work by inserting “ © applied-semantic-web.org” at the end of each reused slide a credits slide stating “These slides are partially based on “Semantic Web An Introduction” by Emanuele Della Valle  http://applied-semantic-web.org/slides/2010/03/01_intro.ppt   To view a copy of this license, visit  http://creativecommons.org/licenses/by/3.0/
Acknowledgements The presentation of this tutorial is supported by the  Search Computing (SeCo) project, funded by  European Research Council,  under the IDEAS Advanced Grants program.  Search computing  focuses on building the answers to complex search queries like " Where can I attend an interesting conference in my field close to a sunny beach? "  by interacting with a constellation of cooperating search services,  using ranking and joining of results as the dominant factors for service composition.
Acknowledgements We are working on using Search Computing to support the development of Semantic Web applications like the one illustrated in this tutorial We believe that Search Computing methods and tools will  revolutionize  the development of mash-ups using (but not limiting to) Linked Data Learn more:  http://www.search-computing.it/   http://blog.search-computing.it/   Stay tuned:  http://twitter.com/searchcomputing   Get connect:  http://www.facebook.com/pages/Search-Computing/10150092533150370
Introduction Goal We will “develop” (no panic ;-), no hands on!) together an application of the Semantic Web we named  Music Event Explorer  or simply  meex We will challenge the Semantic Web technologies in realizing a new service for Web users Using Transforming and Combining existing data
Introduction Ingredients RDF  as unified data model OWL  as modelling language for the data sources GRDDL  as a standard approach to translate in RDF the data stored in XML data sources D2RQ  as tool to translate in RDF the data stored in relational data sources SPARQL  as standard query language to access RDF data Jena  as application framework to merge the various data in a single RDF model and manipulate it Joseky  as tool to expose SPARQL endpoint ARQ  as SPARQL client library A RDF storage to guarantee persistency A OWL reasoner to infer new knowledge Exhibit  as user interface
Introduction Approach In order to realize meex  We start from the user need  We derive user requirements We “develop” the ontologies and the software components While presenting we will explain the use of Semantic Web technologies and tools. (gray background slides) A demonstrative installation of the application, together with the source code, is available at http://swa.cefriel.it/meex
By the way what’s the Semantic Web Computer should understand more Large number of integrations -  ad hoc  -  pair-wise Too much information to browse, need for searching and mashing up automatically Each site is “understandable” for us Computers don’t “understand” much ? Millions of Applications Search &  Mash-up  Engine 010 0 1 1 0 0 1101 10100  10  0010 01  101  101  01 110  1 10  1 10  0 1  1 0 1 0  1  0 0  1  1 0  1  1 1  10  0 1  101 0 1
By the way what’s the Semantic Web  What does “understand” mean? What we say to Web agents &quot; For more information visit  <a href=“http://www.ex.org”> my company </a>  Web site. . .” What they “hear” &quot; blah blah blah blah blah  <a href=“http://www.ex.org”> blah blah blah </a>  blah blah. . .” Jet this is enought to train them to achive tasks for us [ source  http://www.thefarside.com/  ]
By the way what’s the Semantic Web  What does Google “understand”? Understanding that [page1] links [page2]    page2 is interesting Google is able to rank results! “ The heart of our software is PageRank™, a system for ranking web pages […] (that)  relies on the uniquely democratic nature of the web by using its vast link structure as an indicator of an individual page's value .”  http://www.google.com/technology/
By the way what’s the Semantic Web  Two ways for computer to  “understand” Smarter machines Such as Natural Langue processing (NLP) Audio Processing Image Processing (IP) Video Processing …  many many more They all work fine alone, the problem is combining them E.g., NLP meets IP NLP: What does your eye see? IP: I see a sea NLP: You see a “c”? IP: Yes, what else could it be? Not the Semantic Web approach Smarter Data Make data  easier  for machines to publish, share, find and understand E.g.  http://wordnet.rkbexplorer.com/description/word-sea   vs.   http://wordnet.rkbexplorer.com/description/word-c   The Semantic Web approach Some NLP Related Entertainment  http://www.cl.cam.ac.uk/Research/ NL/amusement.html
By the way what’s the Semantic Web  The Semantic Web  1/4 “ The Semantic Web is not a separate Web, but an extension of the current one, in which information is given well-defined meaning, better enabling computers and people to work in cooperation.”  “ The Semantic Web”, Scientific American Magazine, Maggio 2001  http://www.sciam.com/article.cfm?articleID=00048144-10D2-1C70-84A9809EC588EF21   Key concepts an extension  of the current Web in which  information is given well-defined meaning   better enabling  computers  and  people  to work in cooperation. Both for computers and people
By the way what’s the Semantic Web  The Semantic Web  3/4 “ The Semantic Web […] ,  in which information is given well-defined meaning  […]” Human   understandable   but  “only”  machine-readable Human and machine “ understandable ” Web 1.0 Semantic Web
By the way what’s the Semantic Web  The Semantic Web  4/4 Semantic Web Fewer Integration -  standard  -  multi-lateral […] better enabling computers and people to work in cooperation. Even More Applications Easier to understand for people More “understandable” for computers Semantic   Mash-ups & Search
User Need A user need for meex Imagine the users need to explore music events related to a given music style An event is a concert, a show or a workshop at which one or more artist participate.  An artist is either a single musician or a band.  For instance, if a user is interest in Folk music meex finds the artists that play Folk music  searches for events of those artists allows the users to explore the events related to each artist as a list, on a time line and on a map
User Need  A manual solution I open musicmoz [1] and I look up artists that play Folk music If the pages of the artists on musicmoz don’t satisfy me I navigate to musicbrainz [2]  I look up in EVDB [3] if some of those artists have organized an event close to my location in these days I take note of the possible alternatives and I check how to get there using google maps [4] [1]  http://www.musicmoz.org   [2]  http://www.musicbrainz.org   [3]  http://www.eventful.com   [4]  http://maps.google.com
User Need  A manual solution I look up artists that play Folk music
User Need  A manual solution I can learn more navigating to musicbrainz
User Need  A manual solution I look up in EVDB if some of those artists have organized an event close to my location in these days
User Need  A manual solution I take note of the possible alternatives and I check how to get there using google maps
User Need  Music Event Explorer Of course I can do it manually, but I need the time to do so. Can’t I write a mash-up?
The Problem Space What is needed? Ivan Herman in introducing the Semantic Web explains (Some) data should be available for machines for further  processing Data should be possibly combined, merged on a Web scale Sometimes, data may describe other data (like the library  example, using metadata)… …  but sometimes the data is to be exchanged by itself, like my calendar or my travel preferences Machines may also need to  reason  about that data
The Problem Space The rough structure of data integration Map the various data onto an abstract data representation make the data independent of its internal representation… Merge the resulting representations Start making queries on the whole! queries that could not have been done on the individual data sets
The Problem Space The rough structure of data integration
The Problem Space So where is the Semantic Web? The Semantic Web provides technologies to make such  integration possible! For example: an  abstract model  for the relational graphs:  RDF extract  RDF information from XML (eg, XHTML) pages:  GRDDL add  structured information to XHTML pages:  RDFa a  query  language adapted for the relational graphs:  SPARQL characterize  the relationships, categorize resources:  RDFS ,  OWL ,  SKOS ,  Rules applications may choose among the different technologies some of them may be relatively simple with simple tools (RDFS), whereas some require sophisticated systems (OWL, Rules) reuse  of existing “ontologies” that others have produced
The Problem Space So where is the Semantic Web?
The Problem Space “Global as a View” approach Content Ontology 1 Content Ontology 2 Content Ontology N Application Ontology Bridge Ontology Content Ontology 3 Bridge Ontology
Software Engineering for the Semantic Web A Semantic Web application is still an application! A Semantic Web application is still an application, thus we need to follow good practice from Software Engineering in developing it. We adopt a Spiral Model inspired by the famous Boehm spiral model We extend it with Knowledge Engineering practices
D.1  Model the application ontology D.2  Model the content ontology R.1  Users’ needs analysis R.3  Software requirements analysis R.4  Content requirements analysis D.3  Model sample contents Reuse Merge Extend I.1  Implement the initial Knowledge Base V.1   Validation I.3  Configure External Source Wrappers I.2  Implement the integrated model Reuse Merge Extend I.4  Implement the application R.2  Risk analysis D.4  Design Application T.1   Testing
D.1  Model the application ontology D.2  Model the content ontology R.1  Users’ needs analysis R.3  Software requirements analysis R.4  Content requirements analysis D.3  Model sample contents Reuse Merge Extend I.1  Implement the initial Knowledge Base V.1   Validation I.3  Configure External Source Wrappers I.2  Implement the integrated model Reuse Merge Extend I.4  Implement the application R.2  Risk analysis D.4  Design Application T.1   Testing
Requirements Analysis  Application requirements analysis (1) In this step (namely R.3) we should elicit functional requirements of the application as grouping and filtering data non-functional requirements of the application as performance and scalability w.r.t. number of users However this is just a tutorial, therefore we concentrate on functional requirements, leaving non-functional requirements underspecified
Requirements Analysis  Application requirements analysis (2) Meex must enable a user to explore data in the form of a list a chronological graphic a geographic map for each event must show name begin and end date place for each artist must show name nationality music styles he/she plays related artists must allow users to filter and rank results
D.1  Model the application ontology D.2  Model the content ontology R.1  Users’ needs analysis R.3  Software requirements analysis R.4  Content requirements analysis D.3  Model sample contents Reuse Merge Extend I.1  Implement the initial Knowledge Base V.1   Validation I.3  Configure External Source Wrappers I.2  Implement the integrated model Reuse Merge Extend I.4  Implement the application R.2  Risk analysis D.4  Design Application T.1   Testing
Requirements Analysis  Content requirements analysis Given we are developing a Semantic Web application is cruscial we reuse data already available on the Web EVDB - http://eventful.com  MusicBrainz - http://musicbrainz.org MusicMoz - http://musicmoz.org
Requirements Analysis  EVDB Content Source EVDB is a Web 2.0 website that makes available information about event all around the world For each event it knows The start data The end data The place in terms of address and geographic coordinates EVDB offers a Web API in the form of a REST service that sends back XML <entry> <id>http://eventful.com/events/E0-001-020438140-1</id> <title>U2</title> <gd:when startTime=&quot;2009-07-07&quot; endTime=&quot;2009-07-08&quot; /> <gd:where> <gd:contactSection label=&quot;San Siro&quot;> <gd:postalAddress>20151 Milan, Italy</gd:postalAddress> <gd:geoPt lat=&quot;45.4667&quot; lon=&quot;9.2&quot;/> </gd:contactSection> </gd:where </entry> see  http://api.evdb.com
Requirements Analysis  MusicBrainz Content Source MusicBrainz  is a Web 2.0 website that gathered a large amount of information about music offers information about artists and bands songs, albums and tracks relations among artists and bands The data of MusicBrainz are available as a PostgreSQL dump see  http://musicbrainz.org/doc/DatabaseDownload   It is exposed as a SPARQL endpoint by  see  http://ontotext.com/factforge/
Requirements Analysis  MusicMoz Content Source MusicMoz  is another Web 2.0 website dedicated to music offers information about artists and bands including their nationality music styles and their taxonomic relationships the styles each artist or band plays  reuses MusicBrainz identifier for artists and bands The data of MusicMoz are available as large XML files <category name=&quot;Bands_and_Artists/U/U2/&quot; type=&quot;band&quot;> <resource name=&quot;musicbrainz&quot;  link=&quot;http://musicbrainz.org/artist/b10bbbfc-cf9e-42e0-be17-e2c3e1d260d.html&quot; /> <from>Ireland</from> <style number=&quot;1&quot;>Rock</style> <style number=&quot;2&quot;>Pop</style> </category> see  http://musicmoz.org/xml/
Requirements Analysis  meex needs to merge this data meex in order to be able to manipulate all this data at the same time needs to merge the data of the three data sources. The artists and bands information from MusicBrainz should be linked to the music styles they play from MusicMoz the events related to them from EVDB
Requirements Analysis  Data Licence Issue The data of all three data sources are freely usable, we just need to make sure that the logos of the three applications appears on each page of meex EVDB requests also to include a link to the permalink of the event on EVDB website MusicBrainz request also that derived data are made available in Creative Commons. Read out more here EVDB -  http://api.eventful.com/terms   MusicMoz -  http://musicmoz.org/xml/license.html   MusicBrainz -  http://musicbrainz.org/doc/DatabaseDownload
D.1  Model the application ontology D.2  Model the content ontology R.1 Users’ needs analysis R.3 Software requirements analysis R.4 Content requirements analysis D.3 Model sample contents Reuse Merge Extend I.1 Implement the initial Knowledge Base V.1  Validation I.3 Configure External Source Wrappers I.2 Implement the integrated model Reuse Merge Extend I.4 Implement the application R.2 Risk analysis D.4 Design Application T.1  Testing
System Design  “Global as a View” approach instantiated Music Moz Ontology  EVDB Ontology meex Application Ontology Bridge Ontology Music Brainz Ontology Bridge Ontology MusicMoz MusicBrainz EVDB [File XML] [DB] [REST+XML] MUSIC EVENTS EXPLORER
System Design  The five ontologies that model meex Performer Style Event performsStyle performsEvent String When Where relatedPerformer Artist Style Event hasStyle relatedArtist fromCountry from hasWhere hasWhen hasWhere hasWhen rdfs mb evdb mm gd xsd meex subPropertyOf  subPropertyOf  subPropertyOf  subPropertyOf  subPropertyOf  subClassOf  subClassOf  subClassOf
System Design  The five ontologies form a network The properties  hasStyle   and  from   in MusicMoz ontology refer to the class Artist in MusicBrainz ontology Both the meex application ontology and the EVDB ontology refers to a shared ontology in which the class  when   and  where   are described The bridge ontology is a collection of  subClassOf   and  subPropertyOf   statements  Further explanations follow when discussing the step I.2 (Implement the integrated model)
D.1  Model the application ontology D.2  Model the content ontology R.1  Users’ needs analysis R.3  Software requirements analysis R.4  Content requirements analysis D.3  Model sample contents Reuse Merge Extend I.1  Implement the initial Knowledge Base V.1   Validation I.3  Configure External Source Wrappers I.2  Implement the integrated model Reuse Merge Extend I.4  Implement the application R.2  Risk analysis D.4  Design Application T.1  Testing
System Design  MusicBrainz Ontology Sample content mb:artist/b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d  a  mb:Artist ; rdfs:label  &quot;The Beatles&quot; ; mb:related_artist mb:artist/ebfc1398-8d96-47e3-82c3-f782abcdb13d , mb:artist/618b6900-0618-4f1e-b835-bccb17f84294 . mb:artist/ebfc1398-8d96-47e3-82c3-f782abcdb13d  a mb:Artist ; rdfs:label  &quot;The Beach Boys&quot; . mb:artist/618b6900-0618-4f1e-b835-bccb17f84294  a mb:Artist ; rdfs:label  &quot;Eric Clapton&quot; . String When Where Artist Style Event hasStyle relatedArtist from hasWhere hasWhen mb evdb mm SampleInstance-MusicBrainz.n3
System Design  MusicMoz Ontology Sample content mb:artist/b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d   mm:from &quot;England&quot; ;   mm:hasStyle mm:style/British-Invasion ,   mm:style/Rock ,   mm:style/Skiffle . mm:style/British-Invasion  a  mm:Style ;   rdfs:label  &quot;British Invasion&quot; . Note that we are reusing IRI from the MusicBrainz ontology String When Where Artist Style Event hasStyle relatedArtist from hasWhere hasWhen mb evdb mm
System Design  EVDB Ontology Sample content evdb:events/E0-001-008121669-0@2008022719  a  evdb:Event ;  gd:label  &quot;Tell Me Why: A Beatles Commentary&quot; .  evdb:hasWhen evdb:events/E0-001-008121669-0@2008022719_When;  evdb:hasWhere evdb:events/E0-001-008121669-0@2008022719_Where. evdb:events/E0-001-008121669-0@2008022719_When  gd:startTime &quot;2008-02-28&quot; ;  gd:endTime  &quot;2008-02-28&quot; . evdb:events/E0-001-008121669-0@2008022719_Where  gd:hasGeoPt evdb:events/E0-001-008121669-0@2008022719_GeoPt ;  gd:label  &quot;The Wilmington Memorial Library&quot; ;  gd:postalAddress  &quot;175 Middlesex Avenue, Wilmington, USA&quot; . evdb:events/E0-001-008121669-0@2008022719_GeoPt  gd:lat  &quot;42.556943&quot; ;  gd:lon  &quot;-71.165576&quot; . String When Where Artist Style Event hasStyle relatedArtist from hasWhere hasWhen mb evdb mm
D.1  Model the application ontology D.2  Model the content ontology R.1  Users’ needs analysis R.3  Software requirements analysis R.4  Content requirements analysis D.3  Model sample contents Reuse Merge Extend I.1  Implement the initial Knowledge Base V.1   Validation I.3  Configure External Source Wrappers I.2  Implement the integrated model Reuse Merge Extend I.4  Implement the application R.2  Risk analysis D.4  Design Application T.1  Testing
System Design  Wrap up of what we did so far We are done with the modeling of ontologies and sample contents We can now design meex (step D.4 of our approach) In order to design meex architecture We first design its interfaces in terms of both graphic user interface  and connection to the three data sources Secondly we design how it works inside in terms of  components and execution semantics
System Design  meex interfaces MusicBrainz database Adapter Database    RDF SPARQL Server EVDB REST service MusicMoz File XML meex XML Browser Web 3) HTML and RDF 2) RDF GRDDL processor EVDB     RDF MusicMoz    RDF XML 2) RDF 1 )  Music style User
System Design  How we access the data In order to get RDF data out from the three external data source we can use different techniques For  MusicBrainz  database we can use tools that enable to query non-RDF databases as virtual RDF graphs using a standard SPARQL endpoint  For  MusicMoz  XML files we can use a GRDDL processor using the XSLT  MusicMoz->RDF   For  EVDB  we can use a GRDDL processor applying the XSLT  EVDB->RDF  to the XML file obtained using the EVDB REST service
System Design  User Interface In order to collect users’ input and to present results back to the users, we can use Web 2.0 technologies and develop an AJAX interface Such AJAX interface must allow for Inserting the music style, the resulting events will refer to Exploring the events found by meex Filtering the events based on Artists Their nationality The music style they play
System Design  Designing how meex works inside Ajax Web Framework  GRDDL Processor For each Artist SPARQL Client MusicBrainz SPARQL Endpoint HTTP REST Client EVDB  HTTP REST service GRDDL Processor EVDB     RDF MusicMoz    RDF Linking Artists to Events RDF Merge Extraction and Transformation Ajax Web Framework  Music style Set of artist in RDF Artist SPARQL Query Events in XML Events in RDF Artists and events in RDF Artist data in RDF HTTP Query Dati RDF Artists and events in RDF
System Design  Execution Semantics (1) The user requests a music style meex access the local copy of MusicMoz and using the GRDDL processors obtains a set of artist that plays the given music style [more to follow]
System Design  Execution Semantics (2) [follows] For each artist meex : uses the SPARQL client to query the MusicBrainz SPARQL endpoint and it obtains the artist name and his/her relationships with other artist invokes the EVDB REST service, it obtains the events that refer to the artist in XML and uses the GRDDL processor to obtain this data in RDF links the data about each artist to the data about the events that refers to him/her [more to follow]
System Design  Execution Semantics (3) [follows] When all the peaces of information about artists and events are available in the RDF storage, meex extracts them and serializes them in the format of the Ajax Web framework The ajax Web framework allows the user for exploring the events found by meex When the user decides to start a new exploration, meex starts over from the beginning
System Design  Two important internal components The  RDF storage  must be initialized with both the application and the content ontology is filled in with the data meex loads from the three data source given the music style requested by the user The  reasoner allows all query in meex to be express in terms of the application ontology even if data are loaded from the data sources using the content ontology NOTE: the reasoner support the semantic integration of the data loaded from the external data sources. The meex’s programmer can ignore that multiple and heterogeneous data sources were used to load data
D.1  Model the application ontology D.2  Model the content ontology R.1  Users’ needs analysis R.3  Software requirements analysis R.4 Content requirements analysis D.3  Model sample contents Reuse Merge Extend I.1  Implement the initial Knowledge Base V.1   Validation I.3  Configure External Source Wrappers I.2  Implement the integrated model Reuse Merge Extend I.4  Implement the application R.2  Risk analysis D.4  Design Application T.1  Testing
Development  Implement the initial Knowledge Base  (1) We start implementing meex by setting up the initial knowledge base (step I.1) We need to select tools to read and write RDF in the RDF/XML and RDF/N3 syntax to manipulate programmatically RDF to store RDF  to reason on OWL to interpret SPARQL
Development  Implement the initial Knowledge Base  (2) We choose Jena because offers API  to read and write different RDF syntax provides a programmatic environment for RDF, RDFS and OWL, SPARQL a  guarantees RDF model persistence through several relational database adapters includes a rule-based inference engine which implement OWL semantics includes ARQ, a query engine that supports SPARQL  In order to use the RDF storage and the OWL reasoner from Jena we need to configure them as shown in the following slides
Development  Configuring the RDF storage Class.forName(&quot;org.apache.derby.jdbc.EmbeddedDriver&quot;); DBConnection con = new DBConnection(   &quot;jdbc:derby:C:/Meex/RDFStorage;create=true&quot;,   &quot;sa&quot;, &quot;&quot;, &quot;Derby&quot;); Model model =    ModelFactory.createModelRDBMaker(con).   createDefaultModel(); We choose to use Derby (from Apache) as relational database underneath the RDF storage.  With row 1 we tell Jena where to find the JDBC driver  With row 2 we define the JDBC connection With row 3 we instantiate the object  model  of Jena we will use to access and manipulate the RDF model in the storage
Development  Configuring the OWL reasoner Reasoner reasoner = ReasonerRegistry.getOWLMicroReasoner(); model = ModelFactory.createInfModel(reasoner, model); Jena offers numerous options to configure the internal  rule-based inference engine with different expressivity-performance  tradeoffs We need simple reasoning features (i.e., subClassOf and subPropertyOf transitive closure), the OWL Micro configuration is, therefore, the most appropriate one With row 1 we instantiate a OWL micro reasoner With row 2 we instantiate a model with inference support using the model previously created and the OWL micro reasoner
D.1  Model the application ontology D.2  Model the content ontology R.1  Users’ needs analysis R.3  Software requirements analysis R.4 Content requirements analysis D.3  Model sample contents Reuse Merge Extend I.1  Implement the initial Knowledge Base V.1   Validation I.3  Configure External Source Wrappers I.2  Implement the integrated model Reuse Merge Extend I.4  Implement the application R.2  Risk analysis D.4  Design Application T.1  Testing
Development  Implement the integrated model  (1) We move on with the implementation of meex realizing the integrated model (step I.2) In the integrated model we merge application and content ontology Our intent is to integrate semantically the heterogeneous data coming from the external data sources In order to realize the integrated model we need to define a  bridge ontology  using the properties rdfs:subclassOf rdfs:subpropertyOf to connect classes and properties in the application ontology to those in the content ontology
Development  Implement the integrated model  (2) mb:Artist rdfs:subClassOf meex:Performer . mb:related_artist rdfs:subPropertyOf meex:relatedPerformer. mm:Style rdfs:subClassOf meex:Style . mm:hasStyle rdfs:subPropertyOf meex:performsStyle . mm:from rdfs:subPropertyOf meex:fromCountry . evdb:Event rdfs:subClassOf meex:Event. evdb:hasWhen rdfs:subPropertyOf meex:hasWhen. evdb:hasWhere rdfs:subPropertyOf meex:hasWhere. In rows 1 and 2 we connect the ontology of MusicBrainz to the application ontology, i.e. the classes  mb:Artist  and  meex:Performer the properties  mb:related_artist  and  meex:relatedPerformer .  Likewise, in rows 3, 4 and 5, we connect the ontology of MusicMoz to the application ontology and in rows 6, 7 and 8 we connect the ontology of EVDB to the application ontology
Development  Back to the five ontologies that model meex Performer Style Event performsStyle performsEvent String When Where relatedPerformer Artist Style Event hasStyle relatedArtist fromCountry from hasWhere hasWhen hasWhere hasWhen mb evdb mm gd xsd meex subPropertyOf  subPropertyOf  subPropertyOf  subPropertyOf  subPropertyOf  subClassOf  subClassOf  subClassOf
Development  Implement the integrated model  (3) Thanks to this bridge ontology (and the reasoner), when a client application issues a SPARQL query using terms in the meex application ontology, it gets as results the information loaded from the external data sources meex GUI can, therefore, query the RDF storage homogeneously in the terms of application ontology without caring of the heterogeneous formats of the three data sources To give an idea of the differences, in the next slide we show the data loaded from MusicBrainz the SPARQL query that meex GUI issue in the application ontology to the RDF storage the answer it gets
Development  Implement the integrated model  (4) mb:artist/b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d  a   mb:Artist ; rdfs:label  &quot;The Beatles&quot; ; mb:related_artist mb:artist/ebfc1398-8d96-47e3-82c3-f782abcdb13d , mb:artist/618b6900-0618-4f1e-b835-bccb17f84294 . mb:artist/ebfc1398-8d96-47e3-82c3-f782abcdb13d  a  mb:Artist ; rdfs:label  &quot;The Beach Boys&quot; . mb:artist/618b6900-0618-4f1e-b835-bccb17f84294  a  mb:Artist ; rdfs:label  &quot;Eric Clapton&quot; . SampleInstance-MusicBrainz.n3 SELECT ?artistName ?relatedArtistName WHERE { ?x a  meex:Performer  . ?x rdfs:label ?artistName . ?x  meex:relatedPerformer  ?relatedArtist . ?relatedArtist rdfs:label ?relatedArtistName . ?artistName  ?relatedArtistName The Beatles The Beach Boys The Beatles Eric Clapton
D.1  Model the application ontology D.2  Model the content ontology R.1  Users’ needs analysis R.3  Software requirements analysis R.4 Content requirements analysis D.3  Model sample contents Reuse Merge Extend I.1  Implement the initial Knowledge Base V.1   Validation I.3  Configure External Source Wrappers I.2  Implement the integrated model Reuse Merge Extend I.4  Implement the application R.2  Risk analysis D.4  Design Application T.1  Testing
Development  Configure External Source Wrappers Following the proposed approach, next step (i.e. I.3) suggests to configure the external source wrappers In the following slide we show how to implement and configure all the component necessary to allow meex to load data from the external data sources
Development  meex interfaces (1) MusicBrainz database Adapter Database    RDF SPARQL Server EVDB REST service MusicMoz File XML meex XML Browser Web 3) HTML and RDF 2) RDF GRDDL processor EVDB     RDF MusicMoz    RDF XML 2) RDF 1 )  Music style User
By the way, is this practice “orthodox”? Semantic Web Double Bus  [source  http://www.w3.org/DesignIssues/diagrams/sw-double-bus.png  ]
Development  Importing data from MusicBrainz The data of MusicBrainz are stored as dump of PostgreSQL database So, first of all we install the relational database PostgreSQL necessary documentation is available on PostgreSQL and MusicBrainz official websites When the database is available we need to install and configure  a  translator from relational database to RDF a SPARQL endpoint We choose  D2RQ  as translator and  Joseki  as SPARQL server
Development  Configuring D2RQ for MusicBrainz  map:artist a  d2rq:ClassMap;   d2rq:dataStorage map:database;   d2rq:class mb:Artist;   d2rq:uriPattern  &quot; http://musicbrainz.org/artist/@@artist.gid@@ &quot;; map:artist_name a  d2rq:PropertyBridge;   d2rq:belongsToClassMap map:artist;   d2rq:property   rdfs:label ;   d2rq:column &quot;artist.name&quot;. map:artist_relation a  d2rq:PropertyBridge ;  d2rq:belongsToClassMap map:artist;  d2rq:property mb:artist_relation;   d2rq:join &quot;artist.id = artist_relation.artist“;  d2rq:join &quot;artist_relation.ref = artist2.id&quot;;  d2rq:alias &quot;artist AS artist2&quot;;   d2rq:uriPattern &quot;http://musicbrainz.org/artist/@@artist2.gid@@&quot;.  D2RQ-MusicBrainzDB.n3 artist artist_relation id gid artist ref
Development  Configuring Joseky for MusicBrainz []  rdf:type  joseki:Service ;   rdfs:label  &quot;SPARQL for MusicBrainzDB&quot; ;   joseki:serviceRef  &quot;MusicBrainz&quot; ;   joseki:dataset  _:MusicBrainzDS ;   joseki:processor  joseki:ProcessorSPARQL_FixedDS . _:MusicBrainzDS rdf:type ja:RDFDataset ;   ja:defaultGraph _:MusicBrainzModel ;   rdfs:label &quot;MusicBrainz Dataset&quot; . _:MusicBrainzModel rdf:type d2rq:D2RQModel ;   rdfs:label &quot;MusicBrainz D2RQ Model&quot; ;   d2rq:mappingFile <file:D2RQ-MusicBrainzDB.n3> ;   d2rq:resourceBaseURI <http://musicbrainz.org/> . joseki-config.ttl With row 1 we expose a SPARQL endpoint giving the name of the service  and the URL at which it will become accessible http://localhost:2020/MusicBrainz With row 2 and 3 we configure the SPARQL endpoint to expose MusicBrainz via D2RQ using the configuration file D2RQ-MusicBrainzDB.n3 (see previous slide)
Development  meex interfaces (2) MusicBrainz database Adapter Database    RDF SPARQL Server EVDB REST service MusicMoz File XML meex XML Browser Web 3) HTML and RDF 2) RDF GRDDL processor EVDB     RDF MusicMoz    RDF XML 2) RDF 1 )  Music style User
Development  Importing data from  MusicMoz and EVDB The MasicBrainz SPARQL endpoint is ready, let’s imporing data from MusicMoz and EVDB. They both exchange data in XML.  In the design steps we chose to use a GRDDL processor to convert from XML in RDF (in the RDF/XML syntax) The GRDDL recommendation requires the XML documents to directly refer to the XSLT that performs the translation.  Neither MusicMoz nor EVDB XML files originally include the reference request by GRDDL We can programmatically add it In the following slide we show an excerpt of the modified XML files for MusicMoz We can proceed likewise for EVDB
Development  Importing data from  MusicMoz (1) <musicmoz  xmlns:grddl='http://www.w3.org/2003/g/data-view#‘   grddl:transformation =&quot;file:///[...]/ musicmoz-to-rdf.xsl &quot;> <category name=&quot;Bands_and_Artists/B/Beatles,_The“   type=&quot;band&quot;> <resource name=&quot;musicbrainz&quot;    link=&quot;http://musicbrainz.org/artist/   b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d.html&quot;/> <from>England</from> <style number=&quot;1&quot;>British Invasion</style> <style number=&quot;2&quot;>Rock</style> <style number=&quot;3&quot;>Skiffle</style> </category> <style><name>British Invasion</name></style> <style><name>Rock</name></style> <style><name>Skiffle</name></style> </musicmoz> Excerpts from the files musicmoz.bandsandartists.xml and musicmoz.lists.styles.xml
Development  Importing data from  MusicMoz (2) <xsl:template match=&quot;musicmoz/category[(@type='band' or @type='artist‘) and resource/@name='musicbrainz']&quot;> <xsl:variable name=&quot;artist_uri“ select=&quot;resource[@name='musicbrainz']/@link&quot;/> <xsl:for-each select=&quot;style&quot;> <xsl:variable name=&quot;style_reformatted“ select=&quot;concat('http://musicmoz.org/style/',text())&quot;/> <rdf:Description rdf:about=&quot;{$artist_uri}&quot;> <mm:hasStyle rdf:resource=&quot;{$style_reformatted}&quot;/> </rdf:Description> </xsl:for-each> <rdf:Description rdf:about=&quot;{$artist_uri}&quot;> <mm:from><xsl:value-of select=&quot;from&quot;/></mm:from> </rdf:Description> </xsl:template> <xsl:template match=&quot;musicmoz/style&quot;> <xsl:variable name=&quot;style_reformatted&quot;  select=&quot;concat('http://musicmoz.org/style/', name)&quot;/> <mm:Style rdf:about=&quot;{$style_reformatted}&quot;> <rdfs:label><xsl:value-of select=&quot;name&quot;/></rdfs:label> </mm:Style> </xsl:template> Excerpts from the file musicmoz-to-rdf.xsl
Development  Importing annotations from  MusicMoz (3) As GRDDL processor we choose  GRDDL Reader , the GRDDL processor for Jena.  With row 1 we instantiate a Jena model that will momentarily contain the RDF data produce by the GRDDL processor With row 2 we instantiate a  RDFReader  that uses a GRDDL processor to load RDF data With row 3 and 4 we load in the RDF model instantiate in row 1 the data contained in the XML files of MusicMoz using the RDF reader configured for GRDDL With row 5 we merge the loaded RDF data with those already present in the RDF storage Model mmModel = ModelFactory.createDefaultModel(); RDFReader reader = mmModel.getReader(&quot;GRDDL&quot;); reader.read(mmModel, &quot;file:///.../musicmoz.bandsandartists.xml&quot;); reader.read(mmModel, &quot;file:///.../musicmoz.lists.styles.xml&quot;); model.add(mmModel);
Development  So far so good! (1) MusicBrainz database Adapter Database    RDF SPARQL Server EVDB REST service MusicMoz File XML meex XML Browser Web 3) HTML and RDF 2) RDF GRDDL processor EVDB     RDF MusicMoz    RDF XML 2) RDF 1 )  Music style User
Development  So far so good! (2) Ajax Web Framework  GRDDL Processor For each Artist SPARQL Client MusicBrainz SPARQL Endpoint HTTP REST Client EVDB  HTTP REST service GRDDL Processor EVDB     RDF MusicMoz    RDF Linking Artists to events RDF Merge Estrazione e trasformazione Ajax Web Framework  Music style Set of artist in RDF Artist SPARQL Query Events in XML Events in RDF Artists and events in RDF Artist data in RDF HTTP Query Dati RDF Artists and events in RDF
D.1  Model the application ontology D.2  Model the content ontology R.1  Users’ needs analysis R.3  Software requirements analysis R.4 Content requirements analysis D.3  Model sample contents Reuse Merge Extend I.1  Implement the initial Knowledge Base V.1   Validation I.3  Configure External Source Wrappers I.2  Implement the integrated model Reuse Merge Extend I.4  Implement the application R.2  Risk analysis D.4  Design Application T.1  Testing
Development  What’s left? All the business logic that coordinates the interaction among the internal component is still to be implemented NOTE: implementing the business logic requires  both writing many lines of pure Java code  and work with several Semantic Web technologies we will focus our attention to the Semantic Web technologies  The complete Java code is available on meex the website for downloading. See  http://swa.cefriel.it/meex
Development  What’s left? Ajax Web Framework  GRDDL Processor For each Artist SPARQL Client MusicBrainz SPARQL Endpoint HTTP REST Client EVDB  HTTP REST service GRDDL Processor EVDB     RDF MusicMoz    RDF Linking Artists to events RDF Merge Estrazione e trasformazione Ajax Web Framework  Music style Set of artist in RDF Artist SPARQL Query Events in XML Events in RDF Artists and events in RDF Artist data in RDF HTTP Query Dati RDF Artists and events in RDF
Development  MEMO:  Execution Semantics (1) The user requests a music style meex access the local copy of MusicMoz and using the GRDDL processors obtains a set of artist that plays the given music style [more to follow]
Development  Step 2 :  from the music style to the artists The step 2. of meex execution semantics requires to query MusicMoz for the artist that plays the music style requested by the users The following SPARQL query extracts information from MusicMoz in terms of the application ontology PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX meex: <http://swa.cefriel.it/meex#> SELECT DISTINCT ?performer  WHERE {  ?performer meex:performsStyle ?style. ?style rdfs:label &quot;British Invasion&quot; . }
Development  MEMO:  Execution Semantics (2) [follows] For each artist meex : uses the SPARQL client to query the MusicBrainz SPARQL endpoint and it obtains the artist name and his/her relationships with other artist invokes the EVDB REST service, it obtains the events that refer to the artist in XML and uses the GRDDL processor to obtain this data in RDF links the data about each artist to the data about the events that refers to him/her [more to follow]
Development  Step 3.a: querying MusicBrainz  The step 3.a of meex execution semantics requires to query MusicBrainz for the data that describe an artist including the related artists  PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX mb: <http://musicbrainz.org/> DESCRIBE < mb:artist/b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d >; Excerpts from the file MusicBrainz.java
Development  Step 3.b: querying EVDB The step 3.b of meex execution semantics requires to invoke the EVDB REST service, obtain the list of events in XML and use the GRDDL processor to obtain the RDF Excerpts from the file EVDB.java
Development  Step 3.c: linking artists to events (1) The step 3.c of meex execution semantics requires to link the artist information retrieved from MusicMoz and MusicBrainz to the event information retrieved from EVDB We can use the following SPARQL  CONSTRUCT   query on top of the RDF generated by EVDB wrapper to create the links PREFIX meex: <http://swa.cefriel.it/meex#> CONSTRUCT {?performer meex:performsEvent ?event.} WHERE { ?performer a meex:Performer . ?event a meex:Event . }
Development  Step 3.c: linking artists to events (2) Note that the links we create are not “semantically” checked, we only encode in RDF the results of a keyword matching performed by EVDB search engine E.g., if the event “Tell Me Why: A Beatles Commentary” is returned by EVDB when asking for Beatles, such an event will be linked to Beatles :-/ But , the available data can be used to create smart filter For example (very simple one, indeed) MusicBrainz contains information about death of artists or band broke up we can put a filter in front of the EVDB wrapper invoker to avoid looking for events of broken bands or dead artists
Development  MEMO:  Execution Semantics (3) [follows] When all the peaces of information about artists and events are available in the RDF storage, meex extracts them and serializes them in the format of the Ajax Web framework The ajax Web framework allows the user for exploring the events found by meex When the user decides to start a new exploration, meex starts over from the beginning
Development  Step 4: preparing the data for the GUI  We choose  Exhibit  as Ajax Web framework because allows facet browsing allows grouping and filtering events by artist name artist nationality the style the artist plays the related artists includes different views an ordered list a chronological graph a geographic map
Development  Step 4: configuring Exhibit  We can configure Exhibit by the means of two files:  an HTML page that controls the look and feel and a JSON file that contains the data to be explored by the user In this tutorial we focus on the preparation of the JSON file. We refer to Exhibit documentation and the website of our Semantic Web book for the preparation of the HTML page of Exhibit for meex A JSON file is a simple text file that contains data organized in set of recors. In the following slide we show the information of The Beatles expressed in JSON.
Development  Step 4: a sample JSON file type:  &quot;Event&quot;, label:  &quot;1964 The Tribute Tribute to Beatles&quot;, eventful_link:  &quot;http://eventful.com/events/   E0-001-006129372-5&quot;, when_startTime:  &quot;2008-01-25&quot;, when_endTime:  &quot;2008-01-26&quot;, where_label:  &quot;Paramount Theater&quot;, where_address:  &quot;17 South Street, New York 10940,    United States&quot;, where_latlng:  &quot;41.4544,-74.471&quot;, performer_label:  &quot;The Beatles&quot;, fromCountry:  &quot;England&quot;, styles:  [&quot;Skiffle&quot;, &quot;British Invasion&quot;, &quot;Rock&quot;], relatedPerformers:[&quot;The Beach Boys&quot;, &quot;Eric Clapton&quot;]
Development  Step 4: serializing RDF in JSON In order to serialize RDF in JSON we extract the information we loaded in the RDF storage using the SPARQL query shown in the following slide we serialize the result in JSON NOTE: as we’ve already said several time, the query can be expressed in terms of the application ontology even if the data were loaded in other heterogeneous formats
Development  Step 4: extracting the data  PREFIX rdfs:  <http://www.w3.org/2000/01/rdf-schema#> PREFIX meex:  <http://swa.cefriel.it/meex#> PREFIX gd:  <http://schemas.google.com/g/2005> SELECT DISTINCT ?event ?event_label ?when_startTime ?when_endTime ?where_label  ?where_address ?where_lat ?where_lon ?performer ?performer_label ?fromCountry WHERE { ?event rdfs:label ?event_label; meex:hasWhen ?when; meex:hasWhere ?where. ?when gd:startTime ?when_startTime; gd:endTime ?when_endTime. ?where gd:label ?where_label; gd:postalAddress ?where_address; gd:hasGeoPt ?geoPt. ?geoPt gd:lat ?where_lat; gd:lon ?where_lon. ?performer meex:performsEvent ?event; rdfs:label ?performer_label; meex:fromCountry ?fromCountry.}
Development  Step 5 and 6
Development  Step 5 and 6
Any (further) Question?
Where to find this presentation This presentation is available  for download and reuse  from the  Search Computing  blog Check it out! http://blog.search-computing.net/2010/07/rswa2010/
MAJOR CREDITS Dario Cerizza  [dario.cerizza@cefriel.it] who help in conceiving, designed and developed meex Irene Celino  [irene.celino@cefriel.it -  http://iricelino.org/ ] who help in conceiving meex and supported the design and development of meex These slides are an evolution of Emanuele Della Valle Dario Cerizza, Irene Celino.  Realizing a Semantic Web Application.   Tutorial   Presented at 7th Int. Semantic Web Conference  Karlsruhe, Germany, October 26, 2008
More credits The development of meex have been supported by CEFRIEL Semantic Web Activities To learn more visit  http://swa.cefriel.it   The gray slides of this tutorial are largely based on  Ivan Herman.  An Introduction to the Semantic Web (Through an Example…) . 2010-06-04. Available online at  http://www.w3.org/People/Ivan/CorePresentations/IntroThroughExample/
Tools employed (1) Jena Application Framework http://jena.sourceforge.net Derby Relational database for the RDF storage http://db.apache.org/derby PostgreSQL Relational database for MusicBrainz http://www.postgresql.org   D2RQ Translator from relational database to RDF http://sites.wiwiss.fu-berlin.de/suhl/bizer/d2rq
Tools employed (2) Joseki SPARQL Endpoint Server  http://www.joseki.org ARQ SPARQL query engine for Jena http://jena.sourceforge.net/ARQ GRDDL Reader GRDDL processor http://jena.sourceforge.net/grddl Exhibit Ajax Web Framework  http://static.simile.mit.edu/exhibit
Resources RDF RDF at the W3C - primer and specifications http://www.w3.org/RDF/   Semantic Web tools - community maintained list; includes triple store, programming environments, tool sets, and more http://esw.w3.org/topic/SemanticWebTools   302 Semantic Web Videos and Podcasts - includes a section specifically on RDF videos http://www.semanticfocus.com/blog/entry/title/302-semantic-web-videos-and-podcasts/
Resources SPARQL SPARQL Frequently Asked Questions http://thefigtrees.net/lee/sw/sparql-faq SPARQL implementations - community maintained list of open-source and commercial SPARQL engines http://esw.w3.org/topic/SparqlImplementations   Public SPARQL endpoints - community maintained list http://esw.w3.org/topic/SparqlEndpoints   SPARQL extensions - collection of SPARQL extensions implemented in various SPARQL engines http://esw.w3.org/topic/SPARQL/Extensions
Resources RDF -S/OWL OWL Frequently Asked Questions http://www.w3.org/2003/08/owlfaq.html   RDF-S/OWL implementations - community maintained list of open-source and commercial SPARQL engines http://esw.w3.org/topic/SemanticWebTools#head-d07454b4f0d51f5e9d878822d911d0bfea9dcdfd   RDF-S Specification http://www.w3.org/TR/rdf-schema/   OWL Working Group Wiki http://www.w3.org/2007/OWL/wiki
Advertisement: if you speak Italian …

More Related Content

ODP
Building a semantic website
PDF
Webinar: Semantic web for developers
PPT
Developing A Semantic Web Application - ISWC 2008 tutorial
PPTX
Introduction to the Semantic Web
PPTX
Open belgium 2015 - open tourism
PDF
RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)
DOCX
Semantic web Document
 
PPTX
Usage of Linked Data: Introduction and Application Scenarios
Building a semantic website
Webinar: Semantic web for developers
Developing A Semantic Web Application - ISWC 2008 tutorial
Introduction to the Semantic Web
Open belgium 2015 - open tourism
RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)
Semantic web Document
 
Usage of Linked Data: Introduction and Application Scenarios

What's hot (20)

PPTX
Semantic web
PPTX
Introduction to Linked Data 1/5
PPT
Linked Data Tutorial
PDF
Semantic web
PDF
Paul houle resume
PPTX
Consuming Linked Data 4/5 Semtech2011
PDF
Chapter 1 semantic web
PPTX
Towards digitizing scholarly communication
KEY
Introduction to the Semantic Web
PPSX
An Introduction to Semantic Web Technology
PDF
Drupal and Apache Stanbol
PDF
ESWC SS 2012 - Wednesday Tutorial Barry Norton: Building (Production) Semanti...
PPT
Semantic Technologies: Representing Semantic Data
PPT
A Semantic Data Model for Web Applications
PDF
From the Semantic Web to the Web of Data: ten years of linking up
PDF
Linked data based semantic annotation using Drupal and Apache Stanbol
PDF
Metadata is back!
PDF
Drupal and Apache Stanbol. What if you could reliably do autotagging?
PPTX
Jarrar: The Next Generation of the Web 3.0: The Semantic Web
PPTX
Linked Open Data in Romania
Semantic web
Introduction to Linked Data 1/5
Linked Data Tutorial
Semantic web
Paul houle resume
Consuming Linked Data 4/5 Semtech2011
Chapter 1 semantic web
Towards digitizing scholarly communication
Introduction to the Semantic Web
An Introduction to Semantic Web Technology
Drupal and Apache Stanbol
ESWC SS 2012 - Wednesday Tutorial Barry Norton: Building (Production) Semanti...
Semantic Technologies: Representing Semantic Data
A Semantic Data Model for Web Applications
From the Semantic Web to the Web of Data: ten years of linking up
Linked data based semantic annotation using Drupal and Apache Stanbol
Metadata is back!
Drupal and Apache Stanbol. What if you could reliably do autotagging?
Jarrar: The Next Generation of the Web 3.0: The Semantic Web
Linked Open Data in Romania
Ad

Similar to Realizing a Semantic Web Application - ICWE 2010 Tutorial (20)

PPT
Introduction to Semantic Web for GIS Practitioners
PPT
Semantic Web, an introduction for bioscientists
PPT
Semantic Web, an introduction
ODP
State of the Semantic Web
PDF
Semantic web
PPS
My lectures
PPT
Semantic Web 2.0
PPT
Web3.0- How brands can take advantage of the semantic shift - Brandsential
PPT
Ist16-03 An Introduction to the Semantic Web
PPTX
Semantic Web, e-commerce
PPT
Semantic.edu, an introduction
PPT
Web3uploaded
DOCX
ICS 2203-WEB APPLICATION DEVELOPMENT-EDUC Y2S1_MATHCOMP.docx
PPT
Tai web 3
PPTX
Jim Hendler's Presentation at SSSW 2011
PPT
Web2.0 : an introduction
PPT
Semantic Web 2.0: Creating Social Semantic Information Spaces
PPTX
Semantic Web
ODP
Riding the Semantic Web
PPT
The Semantic Web
Introduction to Semantic Web for GIS Practitioners
Semantic Web, an introduction for bioscientists
Semantic Web, an introduction
State of the Semantic Web
Semantic web
My lectures
Semantic Web 2.0
Web3.0- How brands can take advantage of the semantic shift - Brandsential
Ist16-03 An Introduction to the Semantic Web
Semantic Web, e-commerce
Semantic.edu, an introduction
Web3uploaded
ICS 2203-WEB APPLICATION DEVELOPMENT-EDUC Y2S1_MATHCOMP.docx
Tai web 3
Jim Hendler's Presentation at SSSW 2011
Web2.0 : an introduction
Semantic Web 2.0: Creating Social Semantic Information Spaces
Semantic Web
Riding the Semantic Web
The Semantic Web
Ad

More from Emanuele Della Valle (20)

PDF
Taming velocity - a tale of four streams
PDF
Stream reasoning
PPTX
Work in progress on Inductive Stream Reasoning
PPTX
Big Data and Data Science W's
PPT
Knowledge graphs in search engines
PPTX
La città dei balocchi 2017 in numeri - Fluxedo
PPTX
Stream Reasoning: a summary of ten years of research and a vision for the nex...
PPTX
ACQUA: Approximate Continuous Query Answering over Streams and Dynamic Linked...
PDF
Stream reasoning: an approach to tame the velocity and variety dimensions of ...
PDF
Big Data: how to use it to create value
PPTX
Listening to the pulse of our cities with Stream Reasoning (and few more tech...
PPT
Ist16-04 An introduction to RDF
PPT
Ist16-02 HL7 from v2 (syntax) to v3 (semantics)
PPT
IST16-01 - Introduction to Interoperability and Semantic Technologies
PDF
Stream reasoning: mastering the velocity and the variety dimensions of Big Da...
PPTX
On Stream Reasoning
PPTX
Listening to the pulse of our cities fusing Social Media Streams and Call Dat...
PPTX
Social listener-brera-design-district-2015-03
PDF
City Data Fusion for Event Management (in Italiano)
PDF
Semantic technologies and Interoperability
Taming velocity - a tale of four streams
Stream reasoning
Work in progress on Inductive Stream Reasoning
Big Data and Data Science W's
Knowledge graphs in search engines
La città dei balocchi 2017 in numeri - Fluxedo
Stream Reasoning: a summary of ten years of research and a vision for the nex...
ACQUA: Approximate Continuous Query Answering over Streams and Dynamic Linked...
Stream reasoning: an approach to tame the velocity and variety dimensions of ...
Big Data: how to use it to create value
Listening to the pulse of our cities with Stream Reasoning (and few more tech...
Ist16-04 An introduction to RDF
Ist16-02 HL7 from v2 (syntax) to v3 (semantics)
IST16-01 - Introduction to Interoperability and Semantic Technologies
Stream reasoning: mastering the velocity and the variety dimensions of Big Da...
On Stream Reasoning
Listening to the pulse of our cities fusing Social Media Streams and Call Dat...
Social listener-brera-design-district-2015-03
City Data Fusion for Event Management (in Italiano)
Semantic technologies and Interoperability

Recently uploaded (20)

PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
KodekX | Application Modernization Development
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Empathic Computing: Creating Shared Understanding
PDF
Machine learning based COVID-19 study performance prediction
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
cuic standard and advanced reporting.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Approach and Philosophy of On baking technology
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Spectral efficient network and resource selection model in 5G networks
KodekX | Application Modernization Development
Building Integrated photovoltaic BIPV_UPV.pdf
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Empathic Computing: Creating Shared Understanding
Machine learning based COVID-19 study performance prediction
The AUB Centre for AI in Media Proposal.docx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Dropbox Q2 2025 Financial Results & Investor Presentation
Understanding_Digital_Forensics_Presentation.pptx
cuic standard and advanced reporting.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
NewMind AI Weekly Chronicles - August'25 Week I
CIFDAQ's Market Insight: SEC Turns Pro Crypto
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
NewMind AI Monthly Chronicles - July 2025
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Approach and Philosophy of On baking technology

Realizing a Semantic Web Application - ICWE 2010 Tutorial

  • 1. Realizing a Semantic Web Application ICWE 2010 Tutorial July 5 - 9, 2010 in Vienna, Austria Emanuele Della Valle [email_address] - http://emanueledellavalle.org
  • 2. Share, Remix, Reuse — Legally This work is licensed under the Creative Commons Attribution 3.0 Unported License. Your are free: to Share — to copy, distribute and transmit the work to Remix — to adapt the work Under the following conditions Attribution — You must attribute the work by inserting “ © applied-semantic-web.org” at the end of each reused slide a credits slide stating “These slides are partially based on “Semantic Web An Introduction” by Emanuele Della Valle http://applied-semantic-web.org/slides/2010/03/01_intro.ppt To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/
  • 3. Acknowledgements The presentation of this tutorial is supported by the Search Computing (SeCo) project, funded by European Research Council, under the IDEAS Advanced Grants program. Search computing focuses on building the answers to complex search queries like &quot; Where can I attend an interesting conference in my field close to a sunny beach? &quot; by interacting with a constellation of cooperating search services, using ranking and joining of results as the dominant factors for service composition.
  • 4. Acknowledgements We are working on using Search Computing to support the development of Semantic Web applications like the one illustrated in this tutorial We believe that Search Computing methods and tools will revolutionize the development of mash-ups using (but not limiting to) Linked Data Learn more: http://www.search-computing.it/ http://blog.search-computing.it/ Stay tuned: http://twitter.com/searchcomputing Get connect: http://www.facebook.com/pages/Search-Computing/10150092533150370
  • 5. Introduction Goal We will “develop” (no panic ;-), no hands on!) together an application of the Semantic Web we named Music Event Explorer or simply meex We will challenge the Semantic Web technologies in realizing a new service for Web users Using Transforming and Combining existing data
  • 6. Introduction Ingredients RDF as unified data model OWL as modelling language for the data sources GRDDL as a standard approach to translate in RDF the data stored in XML data sources D2RQ as tool to translate in RDF the data stored in relational data sources SPARQL as standard query language to access RDF data Jena as application framework to merge the various data in a single RDF model and manipulate it Joseky as tool to expose SPARQL endpoint ARQ as SPARQL client library A RDF storage to guarantee persistency A OWL reasoner to infer new knowledge Exhibit as user interface
  • 7. Introduction Approach In order to realize meex We start from the user need We derive user requirements We “develop” the ontologies and the software components While presenting we will explain the use of Semantic Web technologies and tools. (gray background slides) A demonstrative installation of the application, together with the source code, is available at http://swa.cefriel.it/meex
  • 8. By the way what’s the Semantic Web Computer should understand more Large number of integrations - ad hoc - pair-wise Too much information to browse, need for searching and mashing up automatically Each site is “understandable” for us Computers don’t “understand” much ? Millions of Applications Search & Mash-up Engine 010 0 1 1 0 0 1101 10100 10 0010 01 101 101 01 110 1 10 1 10 0 1 1 0 1 0 1 0 0 1 1 0 1 1 1 10 0 1 101 0 1
  • 9. By the way what’s the Semantic Web What does “understand” mean? What we say to Web agents &quot; For more information visit <a href=“http://www.ex.org”> my company </a> Web site. . .” What they “hear” &quot; blah blah blah blah blah <a href=“http://www.ex.org”> blah blah blah </a> blah blah. . .” Jet this is enought to train them to achive tasks for us [ source http://www.thefarside.com/ ]
  • 10. By the way what’s the Semantic Web What does Google “understand”? Understanding that [page1] links [page2]  page2 is interesting Google is able to rank results! “ The heart of our software is PageRank™, a system for ranking web pages […] (that) relies on the uniquely democratic nature of the web by using its vast link structure as an indicator of an individual page's value .” http://www.google.com/technology/
  • 11. By the way what’s the Semantic Web Two ways for computer to “understand” Smarter machines Such as Natural Langue processing (NLP) Audio Processing Image Processing (IP) Video Processing … many many more They all work fine alone, the problem is combining them E.g., NLP meets IP NLP: What does your eye see? IP: I see a sea NLP: You see a “c”? IP: Yes, what else could it be? Not the Semantic Web approach Smarter Data Make data easier for machines to publish, share, find and understand E.g. http://wordnet.rkbexplorer.com/description/word-sea vs. http://wordnet.rkbexplorer.com/description/word-c The Semantic Web approach Some NLP Related Entertainment http://www.cl.cam.ac.uk/Research/ NL/amusement.html
  • 12. By the way what’s the Semantic Web The Semantic Web 1/4 “ The Semantic Web is not a separate Web, but an extension of the current one, in which information is given well-defined meaning, better enabling computers and people to work in cooperation.” “ The Semantic Web”, Scientific American Magazine, Maggio 2001 http://www.sciam.com/article.cfm?articleID=00048144-10D2-1C70-84A9809EC588EF21 Key concepts an extension of the current Web in which information is given well-defined meaning better enabling computers and people to work in cooperation. Both for computers and people
  • 13. By the way what’s the Semantic Web The Semantic Web 3/4 “ The Semantic Web […] , in which information is given well-defined meaning […]” Human understandable but “only” machine-readable Human and machine “ understandable ” Web 1.0 Semantic Web
  • 14. By the way what’s the Semantic Web The Semantic Web 4/4 Semantic Web Fewer Integration - standard - multi-lateral […] better enabling computers and people to work in cooperation. Even More Applications Easier to understand for people More “understandable” for computers Semantic Mash-ups & Search
  • 15. User Need A user need for meex Imagine the users need to explore music events related to a given music style An event is a concert, a show or a workshop at which one or more artist participate. An artist is either a single musician or a band. For instance, if a user is interest in Folk music meex finds the artists that play Folk music searches for events of those artists allows the users to explore the events related to each artist as a list, on a time line and on a map
  • 16. User Need A manual solution I open musicmoz [1] and I look up artists that play Folk music If the pages of the artists on musicmoz don’t satisfy me I navigate to musicbrainz [2] I look up in EVDB [3] if some of those artists have organized an event close to my location in these days I take note of the possible alternatives and I check how to get there using google maps [4] [1] http://www.musicmoz.org [2] http://www.musicbrainz.org [3] http://www.eventful.com [4] http://maps.google.com
  • 17. User Need A manual solution I look up artists that play Folk music
  • 18. User Need A manual solution I can learn more navigating to musicbrainz
  • 19. User Need A manual solution I look up in EVDB if some of those artists have organized an event close to my location in these days
  • 20. User Need A manual solution I take note of the possible alternatives and I check how to get there using google maps
  • 21. User Need Music Event Explorer Of course I can do it manually, but I need the time to do so. Can’t I write a mash-up?
  • 22. The Problem Space What is needed? Ivan Herman in introducing the Semantic Web explains (Some) data should be available for machines for further processing Data should be possibly combined, merged on a Web scale Sometimes, data may describe other data (like the library example, using metadata)… … but sometimes the data is to be exchanged by itself, like my calendar or my travel preferences Machines may also need to reason about that data
  • 23. The Problem Space The rough structure of data integration Map the various data onto an abstract data representation make the data independent of its internal representation… Merge the resulting representations Start making queries on the whole! queries that could not have been done on the individual data sets
  • 24. The Problem Space The rough structure of data integration
  • 25. The Problem Space So where is the Semantic Web? The Semantic Web provides technologies to make such integration possible! For example: an abstract model for the relational graphs: RDF extract RDF information from XML (eg, XHTML) pages: GRDDL add structured information to XHTML pages: RDFa a query language adapted for the relational graphs: SPARQL characterize the relationships, categorize resources: RDFS , OWL , SKOS , Rules applications may choose among the different technologies some of them may be relatively simple with simple tools (RDFS), whereas some require sophisticated systems (OWL, Rules) reuse of existing “ontologies” that others have produced
  • 26. The Problem Space So where is the Semantic Web?
  • 27. The Problem Space “Global as a View” approach Content Ontology 1 Content Ontology 2 Content Ontology N Application Ontology Bridge Ontology Content Ontology 3 Bridge Ontology
  • 28. Software Engineering for the Semantic Web A Semantic Web application is still an application! A Semantic Web application is still an application, thus we need to follow good practice from Software Engineering in developing it. We adopt a Spiral Model inspired by the famous Boehm spiral model We extend it with Knowledge Engineering practices
  • 29. D.1 Model the application ontology D.2 Model the content ontology R.1 Users’ needs analysis R.3 Software requirements analysis R.4 Content requirements analysis D.3 Model sample contents Reuse Merge Extend I.1 Implement the initial Knowledge Base V.1 Validation I.3 Configure External Source Wrappers I.2 Implement the integrated model Reuse Merge Extend I.4 Implement the application R.2 Risk analysis D.4 Design Application T.1 Testing
  • 30. D.1 Model the application ontology D.2 Model the content ontology R.1 Users’ needs analysis R.3 Software requirements analysis R.4 Content requirements analysis D.3 Model sample contents Reuse Merge Extend I.1 Implement the initial Knowledge Base V.1 Validation I.3 Configure External Source Wrappers I.2 Implement the integrated model Reuse Merge Extend I.4 Implement the application R.2 Risk analysis D.4 Design Application T.1 Testing
  • 31. Requirements Analysis Application requirements analysis (1) In this step (namely R.3) we should elicit functional requirements of the application as grouping and filtering data non-functional requirements of the application as performance and scalability w.r.t. number of users However this is just a tutorial, therefore we concentrate on functional requirements, leaving non-functional requirements underspecified
  • 32. Requirements Analysis Application requirements analysis (2) Meex must enable a user to explore data in the form of a list a chronological graphic a geographic map for each event must show name begin and end date place for each artist must show name nationality music styles he/she plays related artists must allow users to filter and rank results
  • 33. D.1 Model the application ontology D.2 Model the content ontology R.1 Users’ needs analysis R.3 Software requirements analysis R.4 Content requirements analysis D.3 Model sample contents Reuse Merge Extend I.1 Implement the initial Knowledge Base V.1 Validation I.3 Configure External Source Wrappers I.2 Implement the integrated model Reuse Merge Extend I.4 Implement the application R.2 Risk analysis D.4 Design Application T.1 Testing
  • 34. Requirements Analysis Content requirements analysis Given we are developing a Semantic Web application is cruscial we reuse data already available on the Web EVDB - http://eventful.com MusicBrainz - http://musicbrainz.org MusicMoz - http://musicmoz.org
  • 35. Requirements Analysis EVDB Content Source EVDB is a Web 2.0 website that makes available information about event all around the world For each event it knows The start data The end data The place in terms of address and geographic coordinates EVDB offers a Web API in the form of a REST service that sends back XML <entry> <id>http://eventful.com/events/E0-001-020438140-1</id> <title>U2</title> <gd:when startTime=&quot;2009-07-07&quot; endTime=&quot;2009-07-08&quot; /> <gd:where> <gd:contactSection label=&quot;San Siro&quot;> <gd:postalAddress>20151 Milan, Italy</gd:postalAddress> <gd:geoPt lat=&quot;45.4667&quot; lon=&quot;9.2&quot;/> </gd:contactSection> </gd:where </entry> see http://api.evdb.com
  • 36. Requirements Analysis MusicBrainz Content Source MusicBrainz is a Web 2.0 website that gathered a large amount of information about music offers information about artists and bands songs, albums and tracks relations among artists and bands The data of MusicBrainz are available as a PostgreSQL dump see http://musicbrainz.org/doc/DatabaseDownload It is exposed as a SPARQL endpoint by see http://ontotext.com/factforge/
  • 37. Requirements Analysis MusicMoz Content Source MusicMoz is another Web 2.0 website dedicated to music offers information about artists and bands including their nationality music styles and their taxonomic relationships the styles each artist or band plays reuses MusicBrainz identifier for artists and bands The data of MusicMoz are available as large XML files <category name=&quot;Bands_and_Artists/U/U2/&quot; type=&quot;band&quot;> <resource name=&quot;musicbrainz&quot; link=&quot;http://musicbrainz.org/artist/b10bbbfc-cf9e-42e0-be17-e2c3e1d260d.html&quot; /> <from>Ireland</from> <style number=&quot;1&quot;>Rock</style> <style number=&quot;2&quot;>Pop</style> </category> see http://musicmoz.org/xml/
  • 38. Requirements Analysis meex needs to merge this data meex in order to be able to manipulate all this data at the same time needs to merge the data of the three data sources. The artists and bands information from MusicBrainz should be linked to the music styles they play from MusicMoz the events related to them from EVDB
  • 39. Requirements Analysis Data Licence Issue The data of all three data sources are freely usable, we just need to make sure that the logos of the three applications appears on each page of meex EVDB requests also to include a link to the permalink of the event on EVDB website MusicBrainz request also that derived data are made available in Creative Commons. Read out more here EVDB - http://api.eventful.com/terms MusicMoz - http://musicmoz.org/xml/license.html MusicBrainz - http://musicbrainz.org/doc/DatabaseDownload
  • 40. D.1 Model the application ontology D.2 Model the content ontology R.1 Users’ needs analysis R.3 Software requirements analysis R.4 Content requirements analysis D.3 Model sample contents Reuse Merge Extend I.1 Implement the initial Knowledge Base V.1 Validation I.3 Configure External Source Wrappers I.2 Implement the integrated model Reuse Merge Extend I.4 Implement the application R.2 Risk analysis D.4 Design Application T.1 Testing
  • 41. System Design “Global as a View” approach instantiated Music Moz Ontology EVDB Ontology meex Application Ontology Bridge Ontology Music Brainz Ontology Bridge Ontology MusicMoz MusicBrainz EVDB [File XML] [DB] [REST+XML] MUSIC EVENTS EXPLORER
  • 42. System Design The five ontologies that model meex Performer Style Event performsStyle performsEvent String When Where relatedPerformer Artist Style Event hasStyle relatedArtist fromCountry from hasWhere hasWhen hasWhere hasWhen rdfs mb evdb mm gd xsd meex subPropertyOf subPropertyOf subPropertyOf subPropertyOf subPropertyOf subClassOf subClassOf subClassOf
  • 43. System Design The five ontologies form a network The properties hasStyle and from in MusicMoz ontology refer to the class Artist in MusicBrainz ontology Both the meex application ontology and the EVDB ontology refers to a shared ontology in which the class when and where are described The bridge ontology is a collection of subClassOf and subPropertyOf statements Further explanations follow when discussing the step I.2 (Implement the integrated model)
  • 44. D.1 Model the application ontology D.2 Model the content ontology R.1 Users’ needs analysis R.3 Software requirements analysis R.4 Content requirements analysis D.3 Model sample contents Reuse Merge Extend I.1 Implement the initial Knowledge Base V.1 Validation I.3 Configure External Source Wrappers I.2 Implement the integrated model Reuse Merge Extend I.4 Implement the application R.2 Risk analysis D.4 Design Application T.1 Testing
  • 45. System Design MusicBrainz Ontology Sample content mb:artist/b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d a mb:Artist ; rdfs:label &quot;The Beatles&quot; ; mb:related_artist mb:artist/ebfc1398-8d96-47e3-82c3-f782abcdb13d , mb:artist/618b6900-0618-4f1e-b835-bccb17f84294 . mb:artist/ebfc1398-8d96-47e3-82c3-f782abcdb13d a mb:Artist ; rdfs:label &quot;The Beach Boys&quot; . mb:artist/618b6900-0618-4f1e-b835-bccb17f84294 a mb:Artist ; rdfs:label &quot;Eric Clapton&quot; . String When Where Artist Style Event hasStyle relatedArtist from hasWhere hasWhen mb evdb mm SampleInstance-MusicBrainz.n3
  • 46. System Design MusicMoz Ontology Sample content mb:artist/b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d mm:from &quot;England&quot; ; mm:hasStyle mm:style/British-Invasion , mm:style/Rock , mm:style/Skiffle . mm:style/British-Invasion a mm:Style ; rdfs:label &quot;British Invasion&quot; . Note that we are reusing IRI from the MusicBrainz ontology String When Where Artist Style Event hasStyle relatedArtist from hasWhere hasWhen mb evdb mm
  • 47. System Design EVDB Ontology Sample content evdb:events/E0-001-008121669-0@2008022719 a evdb:Event ; gd:label &quot;Tell Me Why: A Beatles Commentary&quot; . evdb:hasWhen evdb:events/E0-001-008121669-0@2008022719_When; evdb:hasWhere evdb:events/E0-001-008121669-0@2008022719_Where. evdb:events/E0-001-008121669-0@2008022719_When gd:startTime &quot;2008-02-28&quot; ; gd:endTime &quot;2008-02-28&quot; . evdb:events/E0-001-008121669-0@2008022719_Where gd:hasGeoPt evdb:events/E0-001-008121669-0@2008022719_GeoPt ; gd:label &quot;The Wilmington Memorial Library&quot; ; gd:postalAddress &quot;175 Middlesex Avenue, Wilmington, USA&quot; . evdb:events/E0-001-008121669-0@2008022719_GeoPt gd:lat &quot;42.556943&quot; ; gd:lon &quot;-71.165576&quot; . String When Where Artist Style Event hasStyle relatedArtist from hasWhere hasWhen mb evdb mm
  • 48. D.1 Model the application ontology D.2 Model the content ontology R.1 Users’ needs analysis R.3 Software requirements analysis R.4 Content requirements analysis D.3 Model sample contents Reuse Merge Extend I.1 Implement the initial Knowledge Base V.1 Validation I.3 Configure External Source Wrappers I.2 Implement the integrated model Reuse Merge Extend I.4 Implement the application R.2 Risk analysis D.4 Design Application T.1 Testing
  • 49. System Design Wrap up of what we did so far We are done with the modeling of ontologies and sample contents We can now design meex (step D.4 of our approach) In order to design meex architecture We first design its interfaces in terms of both graphic user interface and connection to the three data sources Secondly we design how it works inside in terms of components and execution semantics
  • 50. System Design meex interfaces MusicBrainz database Adapter Database  RDF SPARQL Server EVDB REST service MusicMoz File XML meex XML Browser Web 3) HTML and RDF 2) RDF GRDDL processor EVDB  RDF MusicMoz  RDF XML 2) RDF 1 ) Music style User
  • 51. System Design How we access the data In order to get RDF data out from the three external data source we can use different techniques For MusicBrainz database we can use tools that enable to query non-RDF databases as virtual RDF graphs using a standard SPARQL endpoint For MusicMoz XML files we can use a GRDDL processor using the XSLT MusicMoz->RDF For EVDB we can use a GRDDL processor applying the XSLT EVDB->RDF to the XML file obtained using the EVDB REST service
  • 52. System Design User Interface In order to collect users’ input and to present results back to the users, we can use Web 2.0 technologies and develop an AJAX interface Such AJAX interface must allow for Inserting the music style, the resulting events will refer to Exploring the events found by meex Filtering the events based on Artists Their nationality The music style they play
  • 53. System Design Designing how meex works inside Ajax Web Framework GRDDL Processor For each Artist SPARQL Client MusicBrainz SPARQL Endpoint HTTP REST Client EVDB HTTP REST service GRDDL Processor EVDB  RDF MusicMoz  RDF Linking Artists to Events RDF Merge Extraction and Transformation Ajax Web Framework Music style Set of artist in RDF Artist SPARQL Query Events in XML Events in RDF Artists and events in RDF Artist data in RDF HTTP Query Dati RDF Artists and events in RDF
  • 54. System Design Execution Semantics (1) The user requests a music style meex access the local copy of MusicMoz and using the GRDDL processors obtains a set of artist that plays the given music style [more to follow]
  • 55. System Design Execution Semantics (2) [follows] For each artist meex : uses the SPARQL client to query the MusicBrainz SPARQL endpoint and it obtains the artist name and his/her relationships with other artist invokes the EVDB REST service, it obtains the events that refer to the artist in XML and uses the GRDDL processor to obtain this data in RDF links the data about each artist to the data about the events that refers to him/her [more to follow]
  • 56. System Design Execution Semantics (3) [follows] When all the peaces of information about artists and events are available in the RDF storage, meex extracts them and serializes them in the format of the Ajax Web framework The ajax Web framework allows the user for exploring the events found by meex When the user decides to start a new exploration, meex starts over from the beginning
  • 57. System Design Two important internal components The RDF storage must be initialized with both the application and the content ontology is filled in with the data meex loads from the three data source given the music style requested by the user The reasoner allows all query in meex to be express in terms of the application ontology even if data are loaded from the data sources using the content ontology NOTE: the reasoner support the semantic integration of the data loaded from the external data sources. The meex’s programmer can ignore that multiple and heterogeneous data sources were used to load data
  • 58. D.1 Model the application ontology D.2 Model the content ontology R.1 Users’ needs analysis R.3 Software requirements analysis R.4 Content requirements analysis D.3 Model sample contents Reuse Merge Extend I.1 Implement the initial Knowledge Base V.1 Validation I.3 Configure External Source Wrappers I.2 Implement the integrated model Reuse Merge Extend I.4 Implement the application R.2 Risk analysis D.4 Design Application T.1 Testing
  • 59. Development Implement the initial Knowledge Base (1) We start implementing meex by setting up the initial knowledge base (step I.1) We need to select tools to read and write RDF in the RDF/XML and RDF/N3 syntax to manipulate programmatically RDF to store RDF to reason on OWL to interpret SPARQL
  • 60. Development Implement the initial Knowledge Base (2) We choose Jena because offers API to read and write different RDF syntax provides a programmatic environment for RDF, RDFS and OWL, SPARQL a guarantees RDF model persistence through several relational database adapters includes a rule-based inference engine which implement OWL semantics includes ARQ, a query engine that supports SPARQL In order to use the RDF storage and the OWL reasoner from Jena we need to configure them as shown in the following slides
  • 61. Development Configuring the RDF storage Class.forName(&quot;org.apache.derby.jdbc.EmbeddedDriver&quot;); DBConnection con = new DBConnection( &quot;jdbc:derby:C:/Meex/RDFStorage;create=true&quot;, &quot;sa&quot;, &quot;&quot;, &quot;Derby&quot;); Model model = ModelFactory.createModelRDBMaker(con). createDefaultModel(); We choose to use Derby (from Apache) as relational database underneath the RDF storage. With row 1 we tell Jena where to find the JDBC driver With row 2 we define the JDBC connection With row 3 we instantiate the object model of Jena we will use to access and manipulate the RDF model in the storage
  • 62. Development Configuring the OWL reasoner Reasoner reasoner = ReasonerRegistry.getOWLMicroReasoner(); model = ModelFactory.createInfModel(reasoner, model); Jena offers numerous options to configure the internal rule-based inference engine with different expressivity-performance tradeoffs We need simple reasoning features (i.e., subClassOf and subPropertyOf transitive closure), the OWL Micro configuration is, therefore, the most appropriate one With row 1 we instantiate a OWL micro reasoner With row 2 we instantiate a model with inference support using the model previously created and the OWL micro reasoner
  • 63. D.1 Model the application ontology D.2 Model the content ontology R.1 Users’ needs analysis R.3 Software requirements analysis R.4 Content requirements analysis D.3 Model sample contents Reuse Merge Extend I.1 Implement the initial Knowledge Base V.1 Validation I.3 Configure External Source Wrappers I.2 Implement the integrated model Reuse Merge Extend I.4 Implement the application R.2 Risk analysis D.4 Design Application T.1 Testing
  • 64. Development Implement the integrated model (1) We move on with the implementation of meex realizing the integrated model (step I.2) In the integrated model we merge application and content ontology Our intent is to integrate semantically the heterogeneous data coming from the external data sources In order to realize the integrated model we need to define a bridge ontology using the properties rdfs:subclassOf rdfs:subpropertyOf to connect classes and properties in the application ontology to those in the content ontology
  • 65. Development Implement the integrated model (2) mb:Artist rdfs:subClassOf meex:Performer . mb:related_artist rdfs:subPropertyOf meex:relatedPerformer. mm:Style rdfs:subClassOf meex:Style . mm:hasStyle rdfs:subPropertyOf meex:performsStyle . mm:from rdfs:subPropertyOf meex:fromCountry . evdb:Event rdfs:subClassOf meex:Event. evdb:hasWhen rdfs:subPropertyOf meex:hasWhen. evdb:hasWhere rdfs:subPropertyOf meex:hasWhere. In rows 1 and 2 we connect the ontology of MusicBrainz to the application ontology, i.e. the classes mb:Artist and meex:Performer the properties mb:related_artist and meex:relatedPerformer . Likewise, in rows 3, 4 and 5, we connect the ontology of MusicMoz to the application ontology and in rows 6, 7 and 8 we connect the ontology of EVDB to the application ontology
  • 66. Development Back to the five ontologies that model meex Performer Style Event performsStyle performsEvent String When Where relatedPerformer Artist Style Event hasStyle relatedArtist fromCountry from hasWhere hasWhen hasWhere hasWhen mb evdb mm gd xsd meex subPropertyOf subPropertyOf subPropertyOf subPropertyOf subPropertyOf subClassOf subClassOf subClassOf
  • 67. Development Implement the integrated model (3) Thanks to this bridge ontology (and the reasoner), when a client application issues a SPARQL query using terms in the meex application ontology, it gets as results the information loaded from the external data sources meex GUI can, therefore, query the RDF storage homogeneously in the terms of application ontology without caring of the heterogeneous formats of the three data sources To give an idea of the differences, in the next slide we show the data loaded from MusicBrainz the SPARQL query that meex GUI issue in the application ontology to the RDF storage the answer it gets
  • 68. Development Implement the integrated model (4) mb:artist/b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d a mb:Artist ; rdfs:label &quot;The Beatles&quot; ; mb:related_artist mb:artist/ebfc1398-8d96-47e3-82c3-f782abcdb13d , mb:artist/618b6900-0618-4f1e-b835-bccb17f84294 . mb:artist/ebfc1398-8d96-47e3-82c3-f782abcdb13d a mb:Artist ; rdfs:label &quot;The Beach Boys&quot; . mb:artist/618b6900-0618-4f1e-b835-bccb17f84294 a mb:Artist ; rdfs:label &quot;Eric Clapton&quot; . SampleInstance-MusicBrainz.n3 SELECT ?artistName ?relatedArtistName WHERE { ?x a meex:Performer . ?x rdfs:label ?artistName . ?x meex:relatedPerformer ?relatedArtist . ?relatedArtist rdfs:label ?relatedArtistName . ?artistName ?relatedArtistName The Beatles The Beach Boys The Beatles Eric Clapton
  • 69. D.1 Model the application ontology D.2 Model the content ontology R.1 Users’ needs analysis R.3 Software requirements analysis R.4 Content requirements analysis D.3 Model sample contents Reuse Merge Extend I.1 Implement the initial Knowledge Base V.1 Validation I.3 Configure External Source Wrappers I.2 Implement the integrated model Reuse Merge Extend I.4 Implement the application R.2 Risk analysis D.4 Design Application T.1 Testing
  • 70. Development Configure External Source Wrappers Following the proposed approach, next step (i.e. I.3) suggests to configure the external source wrappers In the following slide we show how to implement and configure all the component necessary to allow meex to load data from the external data sources
  • 71. Development meex interfaces (1) MusicBrainz database Adapter Database  RDF SPARQL Server EVDB REST service MusicMoz File XML meex XML Browser Web 3) HTML and RDF 2) RDF GRDDL processor EVDB  RDF MusicMoz  RDF XML 2) RDF 1 ) Music style User
  • 72. By the way, is this practice “orthodox”? Semantic Web Double Bus [source http://www.w3.org/DesignIssues/diagrams/sw-double-bus.png ]
  • 73. Development Importing data from MusicBrainz The data of MusicBrainz are stored as dump of PostgreSQL database So, first of all we install the relational database PostgreSQL necessary documentation is available on PostgreSQL and MusicBrainz official websites When the database is available we need to install and configure a translator from relational database to RDF a SPARQL endpoint We choose D2RQ as translator and Joseki as SPARQL server
  • 74. Development Configuring D2RQ for MusicBrainz map:artist a d2rq:ClassMap; d2rq:dataStorage map:database; d2rq:class mb:Artist; d2rq:uriPattern &quot; http://musicbrainz.org/artist/@@artist.gid@@ &quot;; map:artist_name a d2rq:PropertyBridge; d2rq:belongsToClassMap map:artist; d2rq:property rdfs:label ; d2rq:column &quot;artist.name&quot;. map:artist_relation a d2rq:PropertyBridge ; d2rq:belongsToClassMap map:artist; d2rq:property mb:artist_relation; d2rq:join &quot;artist.id = artist_relation.artist“; d2rq:join &quot;artist_relation.ref = artist2.id&quot;; d2rq:alias &quot;artist AS artist2&quot;; d2rq:uriPattern &quot;http://musicbrainz.org/artist/@@artist2.gid@@&quot;. D2RQ-MusicBrainzDB.n3 artist artist_relation id gid artist ref
  • 75. Development Configuring Joseky for MusicBrainz [] rdf:type joseki:Service ; rdfs:label &quot;SPARQL for MusicBrainzDB&quot; ; joseki:serviceRef &quot;MusicBrainz&quot; ; joseki:dataset _:MusicBrainzDS ; joseki:processor joseki:ProcessorSPARQL_FixedDS . _:MusicBrainzDS rdf:type ja:RDFDataset ; ja:defaultGraph _:MusicBrainzModel ; rdfs:label &quot;MusicBrainz Dataset&quot; . _:MusicBrainzModel rdf:type d2rq:D2RQModel ; rdfs:label &quot;MusicBrainz D2RQ Model&quot; ; d2rq:mappingFile <file:D2RQ-MusicBrainzDB.n3> ; d2rq:resourceBaseURI <http://musicbrainz.org/> . joseki-config.ttl With row 1 we expose a SPARQL endpoint giving the name of the service and the URL at which it will become accessible http://localhost:2020/MusicBrainz With row 2 and 3 we configure the SPARQL endpoint to expose MusicBrainz via D2RQ using the configuration file D2RQ-MusicBrainzDB.n3 (see previous slide)
  • 76. Development meex interfaces (2) MusicBrainz database Adapter Database  RDF SPARQL Server EVDB REST service MusicMoz File XML meex XML Browser Web 3) HTML and RDF 2) RDF GRDDL processor EVDB  RDF MusicMoz  RDF XML 2) RDF 1 ) Music style User
  • 77. Development Importing data from MusicMoz and EVDB The MasicBrainz SPARQL endpoint is ready, let’s imporing data from MusicMoz and EVDB. They both exchange data in XML. In the design steps we chose to use a GRDDL processor to convert from XML in RDF (in the RDF/XML syntax) The GRDDL recommendation requires the XML documents to directly refer to the XSLT that performs the translation. Neither MusicMoz nor EVDB XML files originally include the reference request by GRDDL We can programmatically add it In the following slide we show an excerpt of the modified XML files for MusicMoz We can proceed likewise for EVDB
  • 78. Development Importing data from MusicMoz (1) <musicmoz xmlns:grddl='http://www.w3.org/2003/g/data-view#‘ grddl:transformation =&quot;file:///[...]/ musicmoz-to-rdf.xsl &quot;> <category name=&quot;Bands_and_Artists/B/Beatles,_The“ type=&quot;band&quot;> <resource name=&quot;musicbrainz&quot; link=&quot;http://musicbrainz.org/artist/ b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d.html&quot;/> <from>England</from> <style number=&quot;1&quot;>British Invasion</style> <style number=&quot;2&quot;>Rock</style> <style number=&quot;3&quot;>Skiffle</style> </category> <style><name>British Invasion</name></style> <style><name>Rock</name></style> <style><name>Skiffle</name></style> </musicmoz> Excerpts from the files musicmoz.bandsandartists.xml and musicmoz.lists.styles.xml
  • 79. Development Importing data from MusicMoz (2) <xsl:template match=&quot;musicmoz/category[(@type='band' or @type='artist‘) and resource/@name='musicbrainz']&quot;> <xsl:variable name=&quot;artist_uri“ select=&quot;resource[@name='musicbrainz']/@link&quot;/> <xsl:for-each select=&quot;style&quot;> <xsl:variable name=&quot;style_reformatted“ select=&quot;concat('http://musicmoz.org/style/',text())&quot;/> <rdf:Description rdf:about=&quot;{$artist_uri}&quot;> <mm:hasStyle rdf:resource=&quot;{$style_reformatted}&quot;/> </rdf:Description> </xsl:for-each> <rdf:Description rdf:about=&quot;{$artist_uri}&quot;> <mm:from><xsl:value-of select=&quot;from&quot;/></mm:from> </rdf:Description> </xsl:template> <xsl:template match=&quot;musicmoz/style&quot;> <xsl:variable name=&quot;style_reformatted&quot; select=&quot;concat('http://musicmoz.org/style/', name)&quot;/> <mm:Style rdf:about=&quot;{$style_reformatted}&quot;> <rdfs:label><xsl:value-of select=&quot;name&quot;/></rdfs:label> </mm:Style> </xsl:template> Excerpts from the file musicmoz-to-rdf.xsl
  • 80. Development Importing annotations from MusicMoz (3) As GRDDL processor we choose GRDDL Reader , the GRDDL processor for Jena. With row 1 we instantiate a Jena model that will momentarily contain the RDF data produce by the GRDDL processor With row 2 we instantiate a RDFReader that uses a GRDDL processor to load RDF data With row 3 and 4 we load in the RDF model instantiate in row 1 the data contained in the XML files of MusicMoz using the RDF reader configured for GRDDL With row 5 we merge the loaded RDF data with those already present in the RDF storage Model mmModel = ModelFactory.createDefaultModel(); RDFReader reader = mmModel.getReader(&quot;GRDDL&quot;); reader.read(mmModel, &quot;file:///.../musicmoz.bandsandartists.xml&quot;); reader.read(mmModel, &quot;file:///.../musicmoz.lists.styles.xml&quot;); model.add(mmModel);
  • 81. Development So far so good! (1) MusicBrainz database Adapter Database  RDF SPARQL Server EVDB REST service MusicMoz File XML meex XML Browser Web 3) HTML and RDF 2) RDF GRDDL processor EVDB  RDF MusicMoz  RDF XML 2) RDF 1 ) Music style User
  • 82. Development So far so good! (2) Ajax Web Framework GRDDL Processor For each Artist SPARQL Client MusicBrainz SPARQL Endpoint HTTP REST Client EVDB HTTP REST service GRDDL Processor EVDB  RDF MusicMoz  RDF Linking Artists to events RDF Merge Estrazione e trasformazione Ajax Web Framework Music style Set of artist in RDF Artist SPARQL Query Events in XML Events in RDF Artists and events in RDF Artist data in RDF HTTP Query Dati RDF Artists and events in RDF
  • 83. D.1 Model the application ontology D.2 Model the content ontology R.1 Users’ needs analysis R.3 Software requirements analysis R.4 Content requirements analysis D.3 Model sample contents Reuse Merge Extend I.1 Implement the initial Knowledge Base V.1 Validation I.3 Configure External Source Wrappers I.2 Implement the integrated model Reuse Merge Extend I.4 Implement the application R.2 Risk analysis D.4 Design Application T.1 Testing
  • 84. Development What’s left? All the business logic that coordinates the interaction among the internal component is still to be implemented NOTE: implementing the business logic requires both writing many lines of pure Java code and work with several Semantic Web technologies we will focus our attention to the Semantic Web technologies The complete Java code is available on meex the website for downloading. See http://swa.cefriel.it/meex
  • 85. Development What’s left? Ajax Web Framework GRDDL Processor For each Artist SPARQL Client MusicBrainz SPARQL Endpoint HTTP REST Client EVDB HTTP REST service GRDDL Processor EVDB  RDF MusicMoz  RDF Linking Artists to events RDF Merge Estrazione e trasformazione Ajax Web Framework Music style Set of artist in RDF Artist SPARQL Query Events in XML Events in RDF Artists and events in RDF Artist data in RDF HTTP Query Dati RDF Artists and events in RDF
  • 86. Development MEMO: Execution Semantics (1) The user requests a music style meex access the local copy of MusicMoz and using the GRDDL processors obtains a set of artist that plays the given music style [more to follow]
  • 87. Development Step 2 : from the music style to the artists The step 2. of meex execution semantics requires to query MusicMoz for the artist that plays the music style requested by the users The following SPARQL query extracts information from MusicMoz in terms of the application ontology PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX meex: <http://swa.cefriel.it/meex#> SELECT DISTINCT ?performer WHERE { ?performer meex:performsStyle ?style. ?style rdfs:label &quot;British Invasion&quot; . }
  • 88. Development MEMO: Execution Semantics (2) [follows] For each artist meex : uses the SPARQL client to query the MusicBrainz SPARQL endpoint and it obtains the artist name and his/her relationships with other artist invokes the EVDB REST service, it obtains the events that refer to the artist in XML and uses the GRDDL processor to obtain this data in RDF links the data about each artist to the data about the events that refers to him/her [more to follow]
  • 89. Development Step 3.a: querying MusicBrainz The step 3.a of meex execution semantics requires to query MusicBrainz for the data that describe an artist including the related artists PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX mb: <http://musicbrainz.org/> DESCRIBE < mb:artist/b10bbbfc-cf9e-42e0-be17-e2c3e1d2600d >; Excerpts from the file MusicBrainz.java
  • 90. Development Step 3.b: querying EVDB The step 3.b of meex execution semantics requires to invoke the EVDB REST service, obtain the list of events in XML and use the GRDDL processor to obtain the RDF Excerpts from the file EVDB.java
  • 91. Development Step 3.c: linking artists to events (1) The step 3.c of meex execution semantics requires to link the artist information retrieved from MusicMoz and MusicBrainz to the event information retrieved from EVDB We can use the following SPARQL CONSTRUCT query on top of the RDF generated by EVDB wrapper to create the links PREFIX meex: <http://swa.cefriel.it/meex#> CONSTRUCT {?performer meex:performsEvent ?event.} WHERE { ?performer a meex:Performer . ?event a meex:Event . }
  • 92. Development Step 3.c: linking artists to events (2) Note that the links we create are not “semantically” checked, we only encode in RDF the results of a keyword matching performed by EVDB search engine E.g., if the event “Tell Me Why: A Beatles Commentary” is returned by EVDB when asking for Beatles, such an event will be linked to Beatles :-/ But , the available data can be used to create smart filter For example (very simple one, indeed) MusicBrainz contains information about death of artists or band broke up we can put a filter in front of the EVDB wrapper invoker to avoid looking for events of broken bands or dead artists
  • 93. Development MEMO: Execution Semantics (3) [follows] When all the peaces of information about artists and events are available in the RDF storage, meex extracts them and serializes them in the format of the Ajax Web framework The ajax Web framework allows the user for exploring the events found by meex When the user decides to start a new exploration, meex starts over from the beginning
  • 94. Development Step 4: preparing the data for the GUI We choose Exhibit as Ajax Web framework because allows facet browsing allows grouping and filtering events by artist name artist nationality the style the artist plays the related artists includes different views an ordered list a chronological graph a geographic map
  • 95. Development Step 4: configuring Exhibit We can configure Exhibit by the means of two files: an HTML page that controls the look and feel and a JSON file that contains the data to be explored by the user In this tutorial we focus on the preparation of the JSON file. We refer to Exhibit documentation and the website of our Semantic Web book for the preparation of the HTML page of Exhibit for meex A JSON file is a simple text file that contains data organized in set of recors. In the following slide we show the information of The Beatles expressed in JSON.
  • 96. Development Step 4: a sample JSON file type: &quot;Event&quot;, label: &quot;1964 The Tribute Tribute to Beatles&quot;, eventful_link: &quot;http://eventful.com/events/ E0-001-006129372-5&quot;, when_startTime: &quot;2008-01-25&quot;, when_endTime: &quot;2008-01-26&quot;, where_label: &quot;Paramount Theater&quot;, where_address: &quot;17 South Street, New York 10940, United States&quot;, where_latlng: &quot;41.4544,-74.471&quot;, performer_label: &quot;The Beatles&quot;, fromCountry: &quot;England&quot;, styles: [&quot;Skiffle&quot;, &quot;British Invasion&quot;, &quot;Rock&quot;], relatedPerformers:[&quot;The Beach Boys&quot;, &quot;Eric Clapton&quot;]
  • 97. Development Step 4: serializing RDF in JSON In order to serialize RDF in JSON we extract the information we loaded in the RDF storage using the SPARQL query shown in the following slide we serialize the result in JSON NOTE: as we’ve already said several time, the query can be expressed in terms of the application ontology even if the data were loaded in other heterogeneous formats
  • 98. Development Step 4: extracting the data PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX meex: <http://swa.cefriel.it/meex#> PREFIX gd: <http://schemas.google.com/g/2005> SELECT DISTINCT ?event ?event_label ?when_startTime ?when_endTime ?where_label ?where_address ?where_lat ?where_lon ?performer ?performer_label ?fromCountry WHERE { ?event rdfs:label ?event_label; meex:hasWhen ?when; meex:hasWhere ?where. ?when gd:startTime ?when_startTime; gd:endTime ?when_endTime. ?where gd:label ?where_label; gd:postalAddress ?where_address; gd:hasGeoPt ?geoPt. ?geoPt gd:lat ?where_lat; gd:lon ?where_lon. ?performer meex:performsEvent ?event; rdfs:label ?performer_label; meex:fromCountry ?fromCountry.}
  • 99. Development Step 5 and 6
  • 100. Development Step 5 and 6
  • 102. Where to find this presentation This presentation is available for download and reuse from the Search Computing blog Check it out! http://blog.search-computing.net/2010/07/rswa2010/
  • 103. MAJOR CREDITS Dario Cerizza [dario.cerizza@cefriel.it] who help in conceiving, designed and developed meex Irene Celino [irene.celino@cefriel.it - http://iricelino.org/ ] who help in conceiving meex and supported the design and development of meex These slides are an evolution of Emanuele Della Valle Dario Cerizza, Irene Celino. Realizing a Semantic Web Application. Tutorial Presented at 7th Int. Semantic Web Conference Karlsruhe, Germany, October 26, 2008
  • 104. More credits The development of meex have been supported by CEFRIEL Semantic Web Activities To learn more visit http://swa.cefriel.it The gray slides of this tutorial are largely based on Ivan Herman. An Introduction to the Semantic Web (Through an Example…) . 2010-06-04. Available online at http://www.w3.org/People/Ivan/CorePresentations/IntroThroughExample/
  • 105. Tools employed (1) Jena Application Framework http://jena.sourceforge.net Derby Relational database for the RDF storage http://db.apache.org/derby PostgreSQL Relational database for MusicBrainz http://www.postgresql.org D2RQ Translator from relational database to RDF http://sites.wiwiss.fu-berlin.de/suhl/bizer/d2rq
  • 106. Tools employed (2) Joseki SPARQL Endpoint Server http://www.joseki.org ARQ SPARQL query engine for Jena http://jena.sourceforge.net/ARQ GRDDL Reader GRDDL processor http://jena.sourceforge.net/grddl Exhibit Ajax Web Framework http://static.simile.mit.edu/exhibit
  • 107. Resources RDF RDF at the W3C - primer and specifications http://www.w3.org/RDF/ Semantic Web tools - community maintained list; includes triple store, programming environments, tool sets, and more http://esw.w3.org/topic/SemanticWebTools 302 Semantic Web Videos and Podcasts - includes a section specifically on RDF videos http://www.semanticfocus.com/blog/entry/title/302-semantic-web-videos-and-podcasts/
  • 108. Resources SPARQL SPARQL Frequently Asked Questions http://thefigtrees.net/lee/sw/sparql-faq SPARQL implementations - community maintained list of open-source and commercial SPARQL engines http://esw.w3.org/topic/SparqlImplementations Public SPARQL endpoints - community maintained list http://esw.w3.org/topic/SparqlEndpoints SPARQL extensions - collection of SPARQL extensions implemented in various SPARQL engines http://esw.w3.org/topic/SPARQL/Extensions
  • 109. Resources RDF -S/OWL OWL Frequently Asked Questions http://www.w3.org/2003/08/owlfaq.html RDF-S/OWL implementations - community maintained list of open-source and commercial SPARQL engines http://esw.w3.org/topic/SemanticWebTools#head-d07454b4f0d51f5e9d878822d911d0bfea9dcdfd RDF-S Specification http://www.w3.org/TR/rdf-schema/ OWL Working Group Wiki http://www.w3.org/2007/OWL/wiki
  • 110. Advertisement: if you speak Italian …