technologies G. Cugola E. Della Valle A. - - PowerPoint PPT Presentation

technologies
SMART_READER_LITE
LIVE PREVIEW

technologies G. Cugola E. Della Valle A. - - PowerPoint PPT Presentation

Stream and Complex Event Processing A (brief) introduction to the semantic Web technologies G. Cugola E. Della Valle A. Margara Politecnico di Milano


slide-1
SLIDE 1

Stream and Complex Event Processing

A (brief) introduction to the semantic Web technologies

  • G. ¡Cugola ¡ ¡ ¡ ¡E. ¡Della ¡Valle ¡

¡ ¡ ¡A. ¡Margara ¡ ¡

¡ ¡ ¡ ¡ ¡ ¡Politecnico ¡di ¡Milano ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡Vrije ¡Universiteit ¡Amsterdam ¡

cugola@elet.polimi.it a.margara@vu.nl dellavalle@elet.polimi.it

slide-2
SLIDE 2

Course ¡outline ¡

  • History ¡and ¡principles ¡of ¡stream ¡

compu@ng ¡and ¡complex ¡event ¡processing ¡

  • Descrip@on ¡of ¡the ¡area ¡
  • Typical ¡applica@ons ¡
  • Challenges ¡
  • A ¡modeling ¡framework ¡for ¡IFP ¡systems ¡
  • Func@onal ¡model ¡ ¡
  • Processing ¡model ¡
  • Deployment ¡model ¡ ¡
  • Interac@on ¡model ¡
  • Data ¡model ¡
  • Time ¡model ¡ ¡
  • Rule ¡model ¡
  • Language ¡model ¡
  • The ¡realm ¡of ¡stream ¡reasoning ¡
  • A ¡brief ¡introduc5on ¡to ¡the ¡seman5c ¡Web ¡

technologies ¡

  • From ¡stream ¡processing ¡to ¡stream ¡

reasoning ¡

  • Distribu@ng ¡to ¡survive: ¡The ¡"operator ¡

placement" ¡problem ¡

  • Theory ¡
  • Algorithms ¡
  • On ¡managing ¡uncertainty ¡in ¡data ¡and ¡rules ¡
  • A ¡model ¡of ¡uncertainty ¡for ¡informa@on ¡

flow ¡processing ¡systems ¡

  • Discovering ¡exis@ng ¡systems ¡
  • Complex ¡event ¡processing ¡systems ¡in ¡

prac@ce ¡

  • Data ¡streaming ¡systems ¡in ¡prac@ce ¡
  • Stream ¡reasoning ¡systems ¡in ¡prac@ce ¡
  • On ¡benchmarking ¡Informa@on ¡Flow ¡

Processing ¡Systems ¡

  • The ¡problem ¡
  • Possible ¡solu@ons ¡
  • PuPng ¡it ¡all ¡together ¡
  • A ¡prac@cal ¡scenario ¡to ¡test ¡IFP ¡systems ¡
  • Experience ¡report ¡

2 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-3
SLIDE 3

Introduction

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

?

Search & Mash-up Engine

010 1 1 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 1

Millions of Applications

3 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-4
SLIDE 4

Introduction

Do We Really Know What “Understanding” Means?

[ source http://www.thefarside.com/ ]

4 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-5
SLIDE 5

Introduction

The Problem: “Semantic Gap”

Sensor ¡Data ¡ Seman@c ¡Gap ¡ Symbolic ¡Descrip@on ¡

5 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-6
SLIDE 6

Introduction

“Understanding” Means Bridging the Gap

understanding ¡

Sensor ¡Data ¡ Symbolic ¡Descrip@on ¡

Missing building No existing streets

6 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-7
SLIDE 7

Introduction

Two ways for computer to “understand”

  • Smart Machine
  • Smart Data

7 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-8
SLIDE 8

Introduction

Smart Machines can bridge the gap

  • Working examples found on the Web
  • Image Processing
  • retrievr: find by sketching

http://labs.systemone.at/retrievr/

  • Audio Processing
  • midomi: find by singing

http://www.midomi.com/

  • […]
  • Natural Language Processing
  • semantic proxy:

http://semanticproxy.opencalais.com/ about.html

Sensor ¡Data ¡ Symbolic ¡Descrip@on ¡ Image Processing Audio ¡ Processing ¡ Natural Language Processing […]

8 ¡

slide-9
SLIDE 9

Introduction

… but do they talk each other?

Natural Language Processing (NLP) meets Image Processing (IP) NLP : What does your eye see? IP : I see a sea NLP : You see a “c”? IP : Yes, what else could it be?

[Source ¡NLP ¡Related ¡Entertainment ¡ h]p://www.cl.cam.ac.uk/Research/NL/amusement.html] ¡ ¡ ¡

Sensor ¡Data ¡ Symbolic ¡Descrip@on ¡ Image Processing Natural Language Processing sea “c” Seman@c ¡Gap ¡

9 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-10
SLIDE 10

Introduction

… smart data are need

Sensor ¡Data ¡ Symbolic ¡Descrip@on ¡ Image Processing Natural Language Processing sea “c” smart ¡data ¡

Natural Language Processing (NLP) meets Image Processing (IP) NLP : What does your eye see? IP : I see a wordnet:word-sea NLP : mmm, I see a wordnet:word-c IP : I believe we have different understanding of the world … NLP : So do I The Semantic Web offers a set

  • f standards that lowers the

barriers to employ smart data at large scale

10 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-11
SLIDE 11

Introduction

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

11 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-12
SLIDE 12

Introduction

The Semantic Web 2/4

  • “The Semantic Web is not a separate Web,

but an extension of the current one […] ”

Web 1.0 The Web Today

12 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-13
SLIDE 13

Introduction

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

13 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-14
SLIDE 14

Introduction

The Semantic Web 4/4

Semantic Web

M E T A M E T A M E T A M E T A M E T A M E T A M E T A M E T A M E T A M E T A

Fewer Integration

  • standard
  • multi-lateral

[…] ¡be:er ¡enabling ¡ computers ¡and ¡people ¡ to ¡work ¡in ¡coopera5on.

Even More Applications Easier to understand for people More “understandable” for computers Semantic Mash-ups & Search ¡

14 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-15
SLIDE 15

Introduction

The Semantic Web “in the wild” 1/5 ¡

slide-16
SLIDE 16

Introduction

The Semantic Web “in the wild” 2/5 ¡

Google ¡ Knowledge ¡ Graph ¡ Google ¡Rich ¡Snippet ¡

16 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-17
SLIDE 17

Introduction

The Semantic Web “in the wild” 3/5 ¡

17 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-18
SLIDE 18

Introduction

The Semantic Web “in the wild” 4/5 ¡

  • Schema.org
  • an initiative launched on 2 June 2011 by Bing,

Google and Yahoo!

  • to “create and support a common set of schemas

for structured data markup on web pages.”

  • A collection of vocabularies organized in a broad

type hierarchy

  • See http://schema.org/docs/full.html

¡

18 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-19
SLIDE 19

Introduction

The Semantic Web “in the wild” 5/5

META META META META META META META META META META

318,393 ¡sites! ¡

19 ¡

slide-20
SLIDE 20

Introduction

Semantic Web “layer cake”

Standardized Under Investigation Already Possible

[ source http://www.w3.org/2007/03/layerCake.png ]

slide-21
SLIDE 21

Introduction

Architectural view of the Semantic Web

[source ¡ ¡h]p://www.w3.org/DesignIssues/diagrams/sw-­‑double-­‑bus.png ¡] ¡

21 ¡

slide-22
SLIDE 22

Data Interchange: RDF

22 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-23
SLIDE 23

RDF in a nutshell

Looking for a flexible data model

  • Why
  • Application are always changing

(competitive environment)

  • People are always adding more features
  • Graceful evolution is important
  • Optimal: relational model
  • Relational model is remarkably flexible
  • Supports graceful evolution
  • Change => Add another table
  • Existing queries are unaffected
  • Easily accommodates new data
  • Without affecting existing queries
  • Allows data to be easily combined ("joined") in new

ways

  • 25+ years of relational database experience

23 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-24
SLIDE 24

RDF in a nutshell

Resource Description Framework

  • The adaptation of the relational model to the Web give rise

to RDF

  • From tuples to triples
  • Any relational data can be represented as triples
  • Row Key --> Subject
  • Column --> Property
  • Value --> Value

24 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-25
SLIDE 25

RDF in a nutshell

Other data structure in RDF

  • Trees can be represented in RDF
  • Anything can be represented in RDF

25 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-26
SLIDE 26

RDF in a nutshell

Representing relational data in RDF (almost)

  • E.g., city-related data
  • Represented in RDF (almost)

City ¡ Country ¡ Popula5on ¡ IT.2 ¡ Italy ¡ 1.298.972 ¡ City ¡ Name ¡ IT.2 ¡ Milano ¡ IT.2 ¡ Milan ¡ IT.2 ¡ Mailand ¡ IT.2 ¡ Italy ¡ 1.298.972 ¡ Milano ¡ Milan ¡ Mailand ¡ Country ¡ Popula@on ¡ Is ¡a ¡ City ¡

Legend resource literal

Name ¡

26 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-27
SLIDE 27

RDF in a nutshell

Representing relational data in RDF (almost)

  • Two important problems
  • Once out of the database internal ID (e.g., BB.2) becomes

useless

  • Once out of the database internal names of schema element

(e.g., Category) becomes useless as well

  • RDF solves it by using URI
  • Internal ID should be replaced by URI
  • Internal schema names should be replaced by URI
  • Values do (always) not need to be URI-fied

h]p://sws.geonames.org/3173435/ ¡ h]p://www.geonames.org/countries/#IT ¡ 1.298.972 ¡ Milano ¡ Milan ¡ Mailand ¡ h]p://www.geonames.org/ontology#inCountry ¡ h]p://www.geonames.org/ontology#popula@on ¡ h]p://www.w3.org/2000/01/rdf-­‑schema#label ¡ h]p://www.geonames.org/ontology#P ¡ h]p://www.w3.org/1999/02/22-­‑rdf-­‑syntax-­‑ns#type ¡ Legend resource literal 27 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-28
SLIDE 28
  • Data will merge automatically!

RDF in a nutshell

Why should I use URI? 1/2

h]p://sws.geonames.org/3173435/ ¡ h]p://www.geonames.org/countries/#IT ¡ h]p://www.geonames.org/ontology#inCountry ¡

+

h]p://sws.geonames.org/3173435/ ¡ 20100 ¡ h]p://dbpedia.org/resource/Postalcode ¡ h]p://sws.geonames.org/3173435/ ¡ h]p://www.geonames.org/countries/#IT ¡ ¡ h]p://www.geonames.org/ontology#inCountry ¡= 20100 ¡ h]p://dbpedia.org/resource/Postalcode ¡ 28 ¡

slide-29
SLIDE 29
  • What is a value? When shall we URI-fy a value?
  • Literals cannot be used to merge different data set
  • E.g., having chosen to represent postal codes as a

string, merging different data sets using postal codes is impossible

  • 20100 may refer to lots of different thing on the Web

e.g., try http://images.google.com/images?q=20100

  • URI-fy any value that can be eventually used to merge

different dataset and leave the other values as literals

20100 ¡ 20100 ¡

+ = ?

RDF in a nutshell

Why should I use URI? 2/2

29 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-30
SLIDE 30

RDF in a nutshell

Serializing RDF

  • Three alternatives to write triples, in
  • 1. RDF/XML: Standard serialization in XML

<Description about=”subject”> <property>value</property> </Description>

  • e.g., http://www.geonames.org/3173435/about.rdf
  • Check-out the triples using

http://www.w3.org/RDF/Validator/

  • 2. NTriples: Simple (verbose) reference serialization

(for specifications only)‏ <http://...subject> <http://...predicate> “value” .

  • 3. N3 and Turtle: Developer-friendly serializations

:subject :property “value” .

30 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-31
SLIDE 31

RDF in a nutshell

Serializing RDF in Turtle - namespaces

  • URI terms can be abbreviated using namespaces

@prefix geo: <http://www.geonames.org/ontology#> . @prefix rdf: <http://www.w3.org/1999/ 02/22-rdf-syntax-ns#> . <http://www.geonames.org/3173435/> rdf:type geo:P .

  • <http://www.w3.org/1999/ 02/22-rdf-syntax-ns#type> = 'a'

<http://www.geonames.org/3173435/> a geo:P .

31 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-32
SLIDE 32

RDF in a nutshell

Serializing RDF in Turtle - Literals

  • Literals: "Milano"
  • Typed literals: "3.14"^^xsd:float
  • Literals with language tags: "日本語"@ja

@prefix geo: <http://www.geonames.org/ontology#> . <http://www.geonames.org/3173435/> geo:population "1306661"^^xsd:int . <http://www.geonames.org/3173435/> geo:name "Milan" . <http://www.geonames.org/3173435/> geo:alternateName "Milano"@IT . <http://www.geonames.org/3173435/> geo:alternateName "Milan"@EN . <http://www.geonames.org/3173435/> geo:alternateName "Mailand"@DE .

32 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-33
SLIDE 33

Ontology: RDF-S and OWL

33 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-34
SLIDE 34

RDF-S/OWL in a nutshell

What is an Ontology?

  • A model of (some aspect of) the world
  • Introduces vocabulary

relevant to domain

  • e.g., anatomy
  • Specifies meaning

(semantics) of terms

  • Heart is a muscular
  • rgan that is part of

the circulatory system

  • Formalised using

suitable logic

  • ∀x.[ Heart(x)→

MuscolarOrgan(x)∧ ∃y.[isPartOf(x,y )∧ CirculatorySystem(y)]]

  • Shared among multiple people organizations

34 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-35
SLIDE 35

RDF-S/OWL in a nutshell

That ¡should ¡clear ¡up ¡ ¡a ¡few ¡things… ¡

35 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-36
SLIDE 36

RDF-S/OWL in a nutshell

A simple ontology

Artist Piece Painter Paint paints Sculptor Sculpt sculpts creates

36 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-37
SLIDE 37

RDF-S/OWL in a nutshell

Specifying classes, sub-classes and instances

  • Creating a class
  • RDFS: Artist rdf:type rdfs:Class .
  • FOL: ∃x Artist(x)
  • Creating a subclass
  • RDFS: Painter rdfs:subClassOf Artist .
  • RDFS: Sculptor rdfs:subClassOf Artist .
  • FOL: ∀x [Painter(x) ∨ Sculptor(x) → Artist(x)]
  • Creating an instance
  • RDFS: Rodin rdf:type Sculptor .
  • FOL: Sculptor(Rodin)

Artist Painter Sculptor Rodin

37 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-38
SLIDE 38
  • Creating a property
  • RDFS: creates rdf:type rdf:Property .
  • FOL: ∃x ∃y Creates(x,y)
  • Using a property
  • RDFS: Rodin creates TheKiss .
  • FOL: Creates(Rodin, TheKiss)
  • Creating subproperties
  • RDFS: paints rdfs:subPropertyOf creates .
  • FOL: ∀x ∀y [Paints(x,y) → Creates(x,y)]
  • RDFS: sculpts rdfs:subPropertyOf creates .
  • FOL: ∀x ∀y [Sculpts(x,y) → Creates(x,y)]

RDF-S/OWL in a nutshell

Specifying properties and sub-properties

creates paints

38 ¡

slide-39
SLIDE 39

RDF-S/OWL in a nutshell

Specifying domain/range constrains

  • Checking which classes and properties can be use

together

  • RDFS:

creates rdfs:domain Artist . creates rdfs:range Piece . paints rdfs:domain Painter . paints rdfs:range Paint . sculpts rdfs:domain Sculptor . sculpts rdfs:range Sculpt .

  • FOL:

∀x ∀y [Creates(x,y) → Artist(x) ∧ Piece(y)] ∀x ∀y [Paints(x,y) → Painter(x) ∧ Paint(y)] ∀x ∀y [Sculpts(x,y) → Sculptor(x) ∧ Sculpt(y)]

39 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-40
SLIDE 40

RDF-S/OWL in a nutshell

The ontology we specified

Artist Piece Painter Paint paints Sculptor Sculpt sculpts creates

40 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-41
SLIDE 41

RDF-S/OWL in a nutshell

RDF semantics (a part of it)

if then

x rdfs:subClassOf y . a rdf:type y . a rdf:type x . x rdfs:subClassOf y . x rdfs:subClassOf z . y rdfs:subClassOf z . x a y . x b y . a rdfs:subPropertyOf b . a rdfs:subPropertyOf b . a rdfs:subPropertyOf c . b rdfs:subPropertyOf c . x a y . x rdf:type z . a rdfs:domain z . x a u . u rdf:type z . a rdfs:range z .

Read ¡out ¡more ¡in ¡RDF ¡Seman@cs ¡h]p://www.w3.org/TR/rdf-­‑mt/ ¡

41 ¡

slide-42
SLIDE 42

RDF-S/OWL in a nutshell

RDF semantics at work

  • Shared the ontology ...

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix ex: <http://www.ex.org/schema#> . ex:Sculptor rdfs:subClassOf ex:Artist . ex:Painter rdfs:subClassOf ex:Artist . ex:Sculpt rdfs:subClassOf ex:Piece. ex:Painting rdfs:subClassOf ex:Piece . ex:creates rdfs:domain ex:Artist . ex:creates rdfs:range ex:Piece. ex:sculpts rdfs:subPropertyOf ex:creates . ex:sculpts rdfs:domain ex:Sculptor . ex:sculpts rdfs:range ex:Sculpt .

  • ... when transmitting the following triple …

ex:Rodin ex:sculpts ex:TheKiss .

42 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-43
SLIDE 43

RDF-S/OWL in a nutshell

Without Inference

§ A ¡recipient, ¡that ¡only ¡understands ¡XML ¡syntax, ¡ § receiving

<RDF> <Description about="Rodin"> <sculpts resource="TheKiss"/> </Description> </RDF>

§ can ¡answer ¡the ¡following ¡queries ¡

  • What ¡does ¡Rodin ¡sculpt? ¡

RDF/Description[@about='Rodin']/sculpts/@resource

  • Who ¡does ¡sculpt ¡TheKiss? ¡

RDF/Description[sculpts/@resource='TheKiss']/@about ¡

  • Try ¡out ¡your ¡self ¡at ¡h]p://www.mizar.dk/XPath/ ¡ ¡

§ but ¡it ¡cannot ¡answer ¡

  • Who ¡is ¡Rodin? ¡
  • What ¡is ¡TheKiss? ¡
  • Is ¡there ¡any ¡Sculptor/Scupts? ¡
  • Is ¡there ¡any ¡Ar@st/Piece? ¡

¡

43 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-44
SLIDE 44

RDF-S/OWL in a nutshell

Knowing the ontology and RDF semantics …

  • A recipient, that knows the ontology and

“understands” RDF semantics,

§ Receiving Rodin sculpts TheKiss .

Artist Piece Painter Paint paints Sculptor Sculpt sculpts creates Rodin TheKiss

44 ¡

slide-45
SLIDE 45

RDF-S/OWL in a nutshell

… a reasoner can answer

  • the previous queries
  • What does Rodin

sculpt?

ex:TheKiss

  • Who does sculpt

TheKiss?

ex:Rodin

  • and it can also answer
  • Who is Rodin?

ex:Artist, ex:Sculptor, rdfs:Resource

  • What is TheKiss?

ex:Sclupt, ex:Piece, rdfs:Resource

  • Is there any Sculptor?

ex:Rodin

  • Is the any Artist?

ex:Rodin

  • Is there any Sculpt?

ex:TheKiss

  • Is there any Piece?

ex:TheKiss

45 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-46
SLIDE 46

Query: SPARQL

46 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-47
SLIDE 47

SPARQL in a nutshell

What is SPARQL?

  • SPARQL
  • is the query language of the Semantic Web
  • stays for SPARQL Protocol and RDF Query

Language

  • A Query Language ...:

Find named places:

  • PREFIX sr: <http://www.streamreasoning.org/sr4ld2011/onto#>

SELECT ?poi WHERE { ?poi a sr:NamedPlace . }

  • ... and a Protocol.

http://lod.openlinksw.com/sparql?&query=PREFIX+sr%3A+%3Chttp%3A%2F %2Fwww.streamreasoning.org%2Fsr4ld2011%2Fonto%2F%3E%0D%0ASELECT+%3Fpoi +WHERE+{+%3Fpoi+a+sr%3ANamedPlace+.+}

47 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-48
SLIDE 48

SPARQL in a nutshell

Anatomy of a SPARQL SELECT query

PREFIX foo: <…> PREFIX bar: <…> … SELECT … FROM <…> FROM NAMED <…> WHERE { … } ORDER BY … LIMIT … OFFSET … Declare ¡prefix shortcuts ¡ (optional) Query ¡result ¡ clause Triple ¡patterns Query ¡ modifiers (optional) Define ¡the ¡ dataset ¡ (optional)

48 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-49
SLIDE 49

SPARQL in a nutshell

Triple Pattern Syntax

  • Turtle-like: URIs, QNames, literals, convenience

syntax.

  • Adds variables to get basic patterns
  • ?var
  • Variable names are a subset of NCNames (no "-" or ".")
  • E.g.,
  • simple
  • ?poi a sr:NamedPlace .
  • complex
  • ?poi a geo:NamedPlace .

?poi skos:subject ?category .

  • Adds
  • OPTIONAL to cope with semi-structured nature of RDF
  • FILTER to select solution according to some criteria
  • UNION operator to get complex patterns

49 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-50
SLIDE 50

Test ¡data: ¡Data ¡Model ¡

geo:Spa@alThing ¡

geo:lat ¡(xsd:float) geo:long(xsd:float) ¡

sioc:UserAccount ¡

sioc:id(xsd:string) ¡

sr:NamedPlace ¡ sr:Tweet ¡

sr:messageID(xsd:string) ¡ sr:messageTimeStamp(xsd:string) ¡ sioc:creator_of ¡ sr:talksAbout ¡ sr:reply ¡ sr:retweet ¡ sioc:has_creator ¡ sr:talksAboutNeutrally ¡ sr:talksAboutPosi@vely ¡ sr:follower ¡ sr:following ¡ twd:post ¡

sioc:Post ¡

sioc:content(xsd:string) ¡

sr:Twi]erUser ¡

sr:screenName(xsd:string) ¡ twd:discuss ¡ sr:talksAboutNega@vely ¡

50 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-51
SLIDE 51

SPARQL in a nutshell

Writing a Simple Query

  • Data

@prefix sr:<http://www.streamreasoning.org/sr4ld2011/

  • nto#>.

sr:LaScala a sr:NamedPlace .

sr:GalleriaVittorioEmanueleII a sr:NamedPlace .

sr:Duomo a sr:NamedPlace .

  • Query

PREFIX sr: <http://www.streamreasoning.org/sr4ld2011/

  • nto#>

SELECT ?poi WHERE { ?poi a sr:NamedPlace . }

§ Results

?poi h]p://www.streamreasoning.org/sr4ld2011/data#GalleriaVi]orioEmanueleII h]p://www.streamreasoning.org/sr4ld2011/data#LaScala h]p://www.streamreasoning.org/sr4ld2011/data#Duomo

51 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-52
SLIDE 52

SPARQL in a nutshell

Writing a bit more complex query

  • Query

PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

PREFIX sr: <http://www.streamreasoning.org/sr4ld2011/

  • nto#>

SELECT ?poi ?category WHERE { ?poi a geo:NamedPlace . ?poi skos:subject ?category . }

§ Results

?drug ?category

http://www.streamreasoning.org/sr4ld2011/ data#GalleriaVittorioEmanueleII http://dbpedia.org/resource/ Category:Pedestrian_streets_in_Italy http://www.streamreasoning.org/sr4ld2011/ data#GalleriaVittorioEmanueleII http://dbpedia.org/resource/ Category:Buildings_and_structures_in_Milan http://www.streamreasoning.org/sr4ld2011/ data#LaScala http://dbpedia.org/resource/ Category:Opera_houses_in_Italy http://www.streamreasoning.org/sr4ld2011/ data#Duomo http://dbpedia.org/class/yago/ ChurchesInMilan

… …

slide-53
SLIDE 53

SPARQL in a nutshell

RDF Term Constraints

  • SPARQL allows restricting solutions by applying the FILTER

clause.

  • An RDF term bound to a variable appears in the results if the

FILTER expression, applied to the term, evaluates to TRUE.

  • Query

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> PREFIX sr: <http://www.streamreasoning.org/sr4ld2011/onto#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT ?poi ?lat ?log WHERE { ?poi geo:lat ?lat . ?poi geo:long ?long . FILTER( ?lat>"45.46"^^xsd:float && ?lat<"45.47"^^xsd:float && ?long>"9.18"^^xsd:float && ?long<"9.20"^^xsd:float ) }

§ Results

?poi h]p://www.streamreasoning.org/sr4ld2011/data#GalleriaVi]orioEmanueleII h]p://www.streamreasoning.org/sr4ld2011/data#LaScala h]p://www.streamreasoning.org/sr4ld2011/data#Duomo

53 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-54
SLIDE 54

SPARQL in a nutshell

Value Tests

  • Notation for value comparison: <, >, =, <=, >=

and !=

  • Test functions
  • Check if a variable is bound: BOUND
  • Check the type of resource bound: isIRI, isBLANK,

isLITERAL

  • Accessing accessories: LANG, DATATYPE
  • Logic operators: || and &&
  • Comparing strings: REGEX, langMatches
  • Constructor functions: bool, dbl, flt, dec, int, dT,

str, IRI

  • Extensible Value Testing
  • E.g., FILTER ( aGeo:distance(?axLoc, ?ayLoc, ?bxLoc, ?byLoc) < 10 ) .
  • (see http://www.w3.org/TR/rdf-sparql-query/#extensionFunctions )

54 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-55
SLIDE 55

SPARQL in a nutshell

Value Tests - Extensible Value Testing

  • Find ¡all ¡schools ¡within ¡a ¡5km ¡radius ¡around ¡a ¡specific ¡

loca6on, ¡and ¡for ¡each ¡school ¡find ¡coffeeshops ¡that ¡ are ¡closer ¡than ¡1km. ¡

  • PREFIX lgdo: <http://linkedgeodata.org/ontology/>

SELECT ?schoolname ?schoolgeo ?coffeeshopname ?coffeeshopgeo WHERE { ?school a lgdo:School . ?school geo:geometry ?schoolgeo . ?school rdfs:label ?schoolname . ?coffeeshop a lgdo:CoffeeShop . ?coffeeshop geo:geometry ?coffeeshopgeo . ?coffeeshop rdfs:label ?coffeeshopname . FILTER( bif:st_intersects( ?schoolgeo,bif:st_point (4.892222, 52.373056), 5) && bif:st_intersects(?coffeeshopgeo, ?schoolgeo, 1) ) . }

  • Click ¡here ¡for ¡query ¡results ¡on ¡a ¡Virtuoso ¡endpoint ¡

used ¡by ¡LinkedGeoData ¡project. ¡

55 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-56
SLIDE 56

SPARQL in a nutshell

Optional Graph Patterns

§ OPTIONAL graph patterns accommodate the need to add information to a result but without the query failing just because some information is missing.

  • Query

PREFIX sr: <http://www.streamreasoning.org/sr4ld2011/onto#>

PREFIX srd: <http://www.streamreasoning.org/sr4ld2011/data#> SELECT ?t ?p ?poi WHERE { ?t a sr:Tweet . ?poi a sr:NamedPlace . OPTIONAL { ?t ?p ?poi } }

§ Results

?t ?p ?poi _:post1 sr:talksAbout srd:GalleriaVittorioEmanueleII _:post1 sr:talksAboutPositively srd:LaScala _:post1 null srd:Duomo

56 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-57
SLIDE 57

SPARQL in a nutshell

Matching alternatives with UNION

§ UNION graph patterns allows to match alternatives

  • Query

PREFIX sr: <http://www.streamreasoning.org/sr4ld2011/onto#>

PREFIX srd: <http://www.streamreasoning.org/sr4ld2011/data#> SELECT ?t ?poi WHERE { ?t a sr:Tweet . ?poi a sr:NamedPlace . { ?t sr:talksAbout ?poi } UNION { ?t sr:talksAboutPositively ?poi } }

§ Results

?t ?poi _:post1 srd:GalleriaVittorioEmanueleII _:post1 srd:LaScala

57 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-58
SLIDE 58

SPARQL in a nutshell

Result Forms

  • Besides selecting tables of values, SPARQL allows

three other types of queries:

  • ASK - returns a boolean answering, does the query have

any results?

  • CONSTRUCT - uses variable bindings to return new RDF

triples

  • DESCRIBE - returns server-determined RDF about the

queried resources

  • SELECT and ASK results can be returned as XML
  • r JSON.
  • CONSTRUCT and DESCRIBE results can be

returned via any RDF serialization (e.g. RDF/XML

  • r Turtle).

58 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-59
SLIDE 59

SPARQL in a nutshell

CONSTRUCT ¡Form ¡

  • Query

PREFIX sr: <http://www.streamreasoning.org/sr4ld2011/onto#>

CONSTRUCT { ?u sr:talksAboutPositively ?poi } WHERE { ?u a sr:TwitterUser . ?u sr:posts ?t . ?t sr:talksAboutPositively ?poi . ?poi a sr:NamedPlace . }

§ Meaning

  • it ¡requires ¡to ¡compute ¡a ¡property ¡chain ¡

§ Results

@prefix sr:<http://www.streamreasoning.org/sr4ld2011/onto#> . srd:Alice sr:talksAboutPositively srd:LaScala . srd:Alice ¡ srd:post1 ¡ srd:LaScala ¡ sr:posts ¡ sr:talksAboutPosi@vely ¡ sr:talksAboutPosi5vely ¡

59 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-60
SLIDE 60

SPARQL in a nutshell

Wrap up of SPARQL ¡

Source: ¡Pérez, ¡Arenas ¡and ¡Gu@errez, ¡Chapter ¡1: ¡On ¡the ¡Seman@cs ¡of ¡SPARQL, ¡Seman@c ¡Web ¡ Informa@on ¡Management: ¡A ¡Model ¡Based ¡Perspec@ve, ¡Springer ¡2010 ¡

60 ¡

slide-61
SLIDE 61
  • How ¡many ¡points ¡of ¡interest ¡are ¡in ¡the ¡dataset? ¡
  • Query

PREFIX sr: <http://www.streamreasoning.org/sr4ld2011/

  • nto#>

PREFIX skos: <http://www.w3.org/2004/02/skos/core#> SELECT (count(?poi) AS ?numberOfPOI) WHERE { ?poi a sr:NamedPlace .}

SPARQL in a nutshell

Aggregates ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡1/4 ¡

61 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-62
SLIDE 62
  • How ¡many ¡points ¡of ¡interest ¡are ¡in ¡each ¡category? ¡
  • Query

PREFIX sr: <http://www.streamreasoning.org/sr4ld2011/

  • nto#>

PREFIX skos: <http://www.w3.org/2004/02/skos/core#> SELECT ?category (count(?poi) AS ?numberOfPOI) WHERE { ?poi a sr:NamedPlace . ?poi skos:subject ?category . } GROUP BY ?category

  • NOTES ¡
  • The ¡available ¡built-­‑ins ¡are ¡SUM, ¡AVG, ¡COUNT, ¡MIN, ¡MAX ¡
  • A ¡DISTINCT ¡clause ¡can ¡be ¡use ¡to ¡avoid ¡processing ¡duplicates ¡

SPARQL in a nutshell

Aggregates ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡2/4 ¡

62 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-63
SLIDE 63
  • Which ¡are ¡the ¡categories ¡of ¡points ¡of ¡interest ¡in ¡

which ¡the ¡points ¡of ¡interest ¡are ¡posi@vely ¡discussed ¡ in ¡more ¡than ¡100 ¡tweets? ¡

  • Query

PREFIX sr: <http://www.streamreasoning.org/sr4ld2011/

  • nto#>

PREFIX skos: <http://www.w3.org/2004/02/skos/core#> SELECT ?category WHERE { ?poi a sr:NamedPlace . ?poi skos:subject ?category . ?tweet sr:talksAboutPositively ?poi . } GROUP BY ?category HAVING (count(?tweet) > 100)

SPARQL in a nutshell

Aggregates ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡3/4 ¡

63 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-64
SLIDE 64

SPARQL in a nutshell

Aggregates ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡4/4 ¡

  • Which ¡are ¡the ¡categories ¡of ¡points ¡of ¡interest ¡in ¡

which ¡the ¡points ¡of ¡interest ¡are ¡posi@vely ¡discussed ¡ in ¡more ¡than ¡100 ¡tweets? ¡How ¡many ¡points ¡of ¡ interest ¡does ¡each ¡category ¡contain? ¡

  • Query

PREFIX sr: <http://www.streamreasoning.org/sr4ld2011/

  • nto#>

PREFIX skos: <http://www.w3.org/2004/02/skos/core#> SELECT ?category (count(?poi) AS ?numberOfPOI) WHERE { ?poi a sr:NamedPlace . ?poi skos:subject ?category . ?tweet sr:talksAboutPositively ?poi . } GROUP BY ?category HAVING (count(?tweet) > 100)

64 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-65
SLIDE 65

SPARQL in a nutshell

Sub-­‑queries ¡

  • Any ¡group ¡pa]ern ¡can ¡be ¡a ¡sub-­‑query ¡
  • E.g., ¡which ¡are ¡the ¡categories ¡of ¡points ¡of ¡interest ¡in ¡

which ¡each ¡point ¡of ¡interest ¡is ¡posi5vely ¡discussed ¡in ¡ more ¡than ¡10 ¡tweets? ¡How ¡many ¡points ¡of ¡interest ¡ does ¡each ¡category ¡contain? ¡

  • PREFIX sr: <http://www.streamreasoning.org/sr4ld2011/onto#> PREFIX

skos: <http://www.w3.org/2004/02/skos/core#> SELECT ?category (count(?poi) AS ?numberOfPOI) WHERE { ?poi a sr:NamedPlace . ?poi skos:subject ?category . { SELECT ?poi WHERE { ?poi a sr:NamedPlace . ?tweet sr:talksAboutPositively ?poi . } GROUP BY ?poi HAVING (count(?tweet) > 10) } } GROUP BY ?category

65 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-66
SLIDE 66

SPARQL in a nutshell

CONSTRUCT, ¡Aggregates ¡and ¡Sub-­‑queries ¡

  • When ¡you ¡need ¡to ¡output ¡an ¡RDF ¡graph ¡that ¡

contains ¡the ¡results ¡of ¡a ¡query ¡that ¡uses ¡aggregates, ¡ you ¡need ¡to ¡use ¡sub-­‑queries. ¡

  • Output ¡the ¡points ¡of ¡interest ¡in ¡each ¡category ¡as ¡an ¡ ¡

RDF ¡graph ¡

  • PREFIX sr: <http://www.streamreasoning.org/sr4ld2011/onto#>

PREFIX skos: <http://www.w3.org/2004/02/skos/core#> CONSTRUCT { ?category sr:countedPOIs ?numberOfPOIs } WHERE { { SELECT ?category (count(?poi) AS ?numberOfPOIs) WHERE { ?poi a sr:NamedPlace . ?poi skos:subject ?category . } GROUP BY ?category } }

66 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-67
SLIDE 67

SPARQL in a nutshell

Reasoning and Query Answering

  • SPARQL alone cannot answer queries that require

reasoning

  • but a reasoner can be exposed as a SPARQL service.
  • Or a query can be rewritten in order to incorporate the
  • ntology

data ¡ SPARQL ¡ service ¡ Reasoner ¡ data ¡ SPARQL ¡ service ¡ Inferred ¡ data ¡

  • ntology ¡

data ¡ SPARQL ¡ service ¡

  • ntology ¡

Rewri]en ¡ query ¡ Reasoner ¡

67 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-68
SLIDE 68
  • Given ontology O and query Q, use O to rewrite Q as Q’

so that, for any set of ground facts A contained in multiple databases:

  • answer(Q,O,A) = answer(Q’,,A)
  • The answer of the query Q using the ontology O for any set of

ground facts A is equal to answer of a query Q’ without considering the ontology O

  • Use (Global As View) mapping M to map Q’ to multiple

SQL queries to the various databases

RDF-S/OWL in a nutshell

Reasoning and Information Integration

Rewrite O Q Q’ Map SQL M answer

A

68 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-69
SLIDE 69

RDF-S/OWL in a nutshell

Query Rewriting Technique (basics)

  • Example:
  • Ontology
  • Doctors treats patients

∀x ∀y [treats(x,y) ∧ Patient(y) → Doctor(x)]

  • Consultants are doctors

∀x [Consultant(x)→ Doctor(x)]

  • Query
  • Give me those that treats some patient

Q(x) ß ß treats(x,y) ∧ Patient(y)

  • For a profile of OWL named QL, the rewriting results in a

union of conjunctive queries

Q(x) ß ß (treats(x,y) ∧ Patient(y)) ∨ Doctor(x) ∨ Consultant(x)

69 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-70
SLIDE 70

RDF-S/OWL in a nutshell

Query Rewriting Technique (basics)

  • Relationship between ontology and databases

defined by mappings, e.g.:

Doctor à à SELECT Name FROM Doctor Patient à à SELECT Name FROM Patient treats à à SELECT Dname, Pname FROM Treats

  • Note: the mapping can be partial, i.e., Consultant is non

mapped

  • Using the mapping the query resulting from the

mapping can be translated in SQL

Q(x) ß ß (treats(x,y) ∧ Patient(y)) ∨ Doctor(x)∨ Consultant(x)

SELECT Name FROM Doctor UNION SELECT Dname FROM Treats, Patient WHERE Pname= Name

70 ¡ Stream ¡& ¡Complex ¡Event ¡Processing ¡-­‑ ¡Seman@c ¡Web ¡Intro ¡

slide-71
SLIDE 71

Introduction

Architectural view of the Semantic Web

[source ¡ ¡h]p://www.w3.org/DesignIssues/diagrams/sw-­‑double-­‑bus.png ¡] ¡

Does ¡it ¡make ¡ more ¡sense? ¡