ESWC SS 2012 - Monday Tutorial 1 Aidan Hogan: Semantic Web Languages and Standards (Primer)
Upcoming SlideShare
Loading in...5
×
 

ESWC SS 2012 - Monday Tutorial 1 Aidan Hogan: Semantic Web Languages and Standards (Primer)

on

  • 238 views

 

Statistics

Views

Total Views
238
Slideshare-icon Views on SlideShare
238
Embed Views
0

Actions

Likes
0
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    ESWC SS 2012 - Monday Tutorial 1 Aidan Hogan: Semantic Web Languages and Standards (Primer) ESWC SS 2012 - Monday Tutorial 1 Aidan Hogan: Semantic Web Languages and Standards (Primer) Presentation Transcript

    • Semantic Web Languages and Standards (Primer) Aidan Hogan — DERI Galway Session 1; Day 1; 10:30
    • 2 24.05.2012
    • WHAT IS THE SEMANTIC WEB? 3 24.05.2012
    • The Semantic Web is Tim (et al.)’s Vision ? 4 24.05.2012
    • The Semantic Web is intelligent machines helping us make sense of the Web ? 5 24.05.2012
    • The Semantic Web is naming everything ? 6 24.05.2012
    • The Semantic Web is linking Web data ? Image by Cyganiak & Jentzsch ; http://lod-cloud.net 7 24.05.2012
    • The Semantic Web is breaking down the data silos / walls ? Image from http://www.digitaltimes.ie 8 24.05.2012
    • The Semantic Web is Web 3.0 ? Image by Radar Networks; Nova Spivak; http://memebox.com/futureblogger/show/824 9 24.05.2012
    • The Semantic Web is a stack of technologies for interoperability? Images by Hendler, Brickley Novack; http://www.bnode.org/blog/tag/layer%20cake 10 24.05.2012
    • The Semantic Web is a bunch of standards for interoperability? 11 24.05.2012
    • The Semantic Web is something very very bad and it must die (apparently) ? 12 24.05.2012
    • The Semantic Web is a buzzword ? … 13 24.05.2012
    • The Semantic Web is… … …cf. “What is the Web?” 14 24.05.2012
    • …WHAT IS THE SEMANTIC WEB FOR? 15 24.05.2012
    • Web = Flood of information = 5.9 TB of data (Jan. 2010 Dump) 16 24.05.2012
    • Web = Flood of information = 235 TB of data indexed = 40 Wikipedias (incl. Web archive) 17 24.05.2012
    • Web = Flood of information = 12 TB/day added = 2 Wikipedias / day (as of Mar. 2010) 18 24.05.2012
    • Web = Flood of information = 20 PB/day processed = 3,389 Wikipedias/day (Jan. 2010) 19 24.05.2012
    • Web = Flood of information = 160 TB/s transferred = 27 Wikipedias/second (2008; Cisco) 20 24.05.2012
    • From signals … 21 24.05.2012
    • To binary … …10010110… 22 24.05.2012
    • To characters (ASCII/Unicode) … …Hello World… 23 24.05.2012
    • To document markup (HTML) … <title> Hello World </title> She’ll know what to do with <title> 24 24.05.2012 Ah yes, I display this at the top.
    • To data markup … <time=“10:36”/> She’ll know what <time> means 25 24.05.2012 This is what my user asked for. Thanks!
    • To arbitrary information exchange ??? <aidan presents= “session1” /> This is the data I have. 26 24.05.2012 What’s an “aidan”?
    • Arbitrary data/information exchange … We need … Common data model for encoding data (triples) Common ways of serialising data (syntaxes) Well-defined languages for saying what terms mean (semantics) Common ways to query data (query languages) Web standards! Make data machine-readable! <aidan presents= “session1” /> 27 24.05.2012
    • Syntax to semantics / terms to entities <aidan presents=“session1”/> 28 24.05.2012
    • …WHEN DID THE SEMANTIC WEB BEGIN? 29 24.05.2012
    • Started with the Web? 1990 30 24.05.2012
    • Pre-dating Web … Tim Berners Lee ENQUIRE (1980) Pre-dates Web by 10 years / Closer to Semantic Web than Web Link cards (each card reflected an “entity”) Different types of relations Never made it out of CERN … Disk containing software “re-used” Other works in Artificial Intelligence: FOL / Logic Programming / Description Logics / Expert Systems … Knowledge Representation Frame languages / Semantic networks / Ontology … Databases Entity-Attribute-Value (EAV) model / Deductive databases / Conceptual + Logical Schema … Information Retrieval, Natural Language Processing, … 31 24.05.2012
    • Modern Semantic Web … Image by Titti Cimmino; http://www.titticimmino.com/2009/12/31/the-future-internet-semantics-and-service-web-3-0-survey/ 32 24.05.2012
    • …SO WHERE IS THIS SEMANTIC WEB NOW? Image by Titti Cimmino; http://www.titticimmino.com/2009/12/31/the-future-internet-semantics-and-service-web-3-0-survey/ 33 24.05.2012
    • Hidden within the Web? 34 24.05.2012
    • Linked Open Data cloud … 35 24.05.2012
    • Open Government Data (US) http://data.gov/ 36 24.05.2012
    • Open Government Data (UK) http://data.gov.uk/ 37 24.05.2012
    • Semantics in HCLS/Biomedical Domain 38 24.05.2012
    • Drupal 7 Core 39 24.05.2012
    • GoodRelations for Products Image from http://www.heppnetz.de/projects/goodrelations/primer/;; Hepp 40
    • FaceBook’s Open Graph Protocol http://developers.facebook.com/tools/debug/ 41 24.05.2012
    • schema.org http://schema.org 42 24.05.2012
    • BBC World Cup 2010 site 43 24.05.2012
    • qwiki.com http://qwiki.com/ 44 24.05.2012
    • Metaweb / Freebase http://freebase.com/ 45 24.05.2012
    • Google’s Knowledge Graph http://google.com/ncr/ 46 24.05.2012
    • Not there yet (but getting there…) 47 24.05.2012
    • IT ALL BEGINS WITH RDF … 48 24.05.2012
    • A brief history of RDF Meta Content Framework (MCF) by Ramanathan V. Guha [1995] Data-model consisting of Objects, Categories, and Properties Directed, labelled graph type / domain / range / superType / superPropertyType XML syntax (based on XML names) Resource Description Framework (RDF) by W3C [1999] Spec. edited by Ora Lassila and Ralph R. Swick Data-model consisting of Resources, Class, and Properties Directed, labelled graph Later extended to RDFS, including type / domain / range / subClassOf / subPropertyOf XML syntax (based on URIs) RDF Revised by W3C 49 24.05.2012 [2004]
    • What is RDF (not)? 50 24.05.2012
    • What is RDF? 51 24.05.2012
    • What are triples? aidan presents session1 52 24.05.2012
    • RDF Triples: statements in slots of three SUBJECT PREDICATE OBJECT aidan attending eswc2012 aidan worksAt deri deri location galway eswc2012 24.05.2012 session1 aidan 53 presents location crete
    • Triples form a directed, labelled graph aidan presents session1 attending eswc2012 worksAt livesIn location deri Crete location Galway 54 24.05.2012
    • Why triples? Simplest fixed-arity model … (PAIRS) FROM TO deri location location galway eswc2012 location deri 55 24.05.2012 location crete galway
    • Naming in triples … avoid ambiguity aidan … … 56 24.05.2012
    • Avoid ambiguities: use URIs (/IRIs)! http://ex.org/#aidan … … 57 24.05.2012
    • Abbreviating URIs Use “CURIEs” / namespaces PREFIX ex: <http://ex.org/#> ex:aidan = <http://ex.org/#aidan> 58 24.05.2012
    • RDF Triples: literals in object position SUBJECT URI | BNode PREDICATE URI OBJECT URI | Literal | BNode ex:aidan ex:aidan “male” ex:title “Semantic Web Languages and Standards”@en ex:session1 24.05.2012 ex:gender ex:session1 59 ex:presents ex:startTime “10:30:00+02:00” ^^xsd:time ex:session1
    • Simple Literals Simple strings: “male”, “Hello World”, “aju901odksad” 60 24.05.2012
    • Language-tagged Literals Simple strings with specified language: “Hello World”@en “Bonjour tout le monde.”@fr “Whilst I dreamt colourful dreams.”@en-GB (Defined by RFC 3066, ISO 639-2) 61 24.05.2012
    • Datatype Literals Typed literals with mappings from strings to values String (lexical value) / URI (type) pair Many from XML Schema (namespace often given xsd: or xs: prefix) “true”^^xsd:boolean • “false”^^xsd:boolean “1.0”^^xsd:decimal • “1”^^xsd:int • “1”^^xsd:byte “2012-05-21”^^xsd:date • “2012-05-21T10:30:00Z”^^xsd:dateTime “---15”^^xsd:gDay “--05-15”^^xsd:gMonthDay “2010”^^xsd:gYear “Hello World”^^xsd:string (…and more besides) Other datatypes defined elsewhere (rdf:XMLLiteral, Can define custom datatypes (e.g., dbt:usDollars) “literal”^^xsd:string owl:real) ≡ “literal” Can’t mix datatypes and language tags (“Hello World”^^xsd:string@en) 62 24.05.2012
    • RDF Literals: summary Plain Literals Simple Literals “string” Datatype Literals “string”^^xsd:string Lang-tag Literals “string”@en 63 24.05.2012
    • RDF Triples: blank-nodes SUBJECT URI | BNode PREDICATE URI ex:aidan ex:presents ex:aidan ex:gender ex:session1 _:somewhere 64 24.05.2012 ex:venue ex:location OBJECT URI | Literal | BNode ex:session1 “male” _:somewhere ex:kalamaki
    • Blank Nodes Often denoted with the prefix “_:”, and a label suffix _:bnode4 • _:genid2 • _:venue Can only be referenced in a local document! Values of labels are inconsequential Can consistently re-label blank nodes; makes no difference Used: to avoid creating a URI for something for syntax shortcuts if a value is unknown or not concretely identifiable once-off resource (e.g., for time-of-access) only allow local reference etc. 65 24.05.2012
    • Blank Nodes are existential (in theory) Denote the existence of something ex:JohnFKennedy ex:assassin _:unknown . Blank nodes can introduce redundancy (non-lean RDF) ex:aidan ex:coauthoredPaper _:bnode1 ex:title ex:coauthoredPaper “On Blank Nodes”@en _:bnode2 66 24.05.2012
    • Summary of RDF Triples Slots of three: Subject, Predicate, Object Used to make statements about the world Subject: URIs or Blank Nodes Predicate: URIs only Object: URIs, Blank Nodes, Literals (plain [w/lang] or typed) An RDF graph is a set of triples ex:aidan ex:coauthoredPaper ex:coauthoredPaper _:bnode2 (1) ex:aidan (2) _:bnode1 (3) ex:aidan 67 24.05.2012 ex:coauthoredPaper ex:title ex:coauthoredPaper _:bnode1 ex:title “On Blank Nodes”@en _:bnode1 “On Blank Nodes”@en _:bnode2
    • Triples are everywhere! SUBJECT PREDICATE OBJECT PREDICATE … OBJECT OBJECT 68 24.05.2012
    • Triples are everywhere! SUBJECT PREDICATE OBJECT PREDICATE OBJECT PREDICATE … OBJECT 69 24.05.2012
    • Triples are everywhere! SUBJECT PREDICATE PREDICATE OBJECT OBJECT PREDICATE OBJECT SUBJECT PREDICATE PREDICATE … OBJECT 70 24.05.2012 … OBJECT
    • What is RDF? 71 24.05.2012
    • Features of RDF: typing / classes ex:barry ex:denny ex:matthew rdf:type rdf:type rdf:type ex:Tutor rdf:type ex:aidan 72 24.05.2012 rdf:type ex:dan rdf:type ex:elena
    • Features of RDF: containers (aka. lists) ex:summerSchool _:dayOne _:dayOne _:dayOneB _:dayOneB _:dayOneC _:dayOneC _:dayOneD _:dayOneD listNode-1 ex:1stDaySchedule rdf:first rdf:rest rdf:first rdf:rest rdf:first rdf:rest rdf:first rdf:rest rdf:rest listNode-2 rdf:first listEl-1 73 rdf:first listEl-1 24.05.2012 … _:dayOne “Enrico’s Keynote” _:dayOneB “Session 1” _:dayOneC “Session 2” _:dayOneD “Hands On 1” rdf:nil rdf:rest rdf:nil
    • Other features of RDF (not covered) RDF containers RDF reification RDF n-ary predicates Hint: if you’re using these features, you’re probably doing it wrong (unless you specifically know what you’re doing) 74 24.05.2012
    • Writing RDF triples down? 75 24.05.2012
    • RDF syntaxes / serialisation <http://ex.org/#aidan> … … The bit between angle brackets is a URI 76 24.05.2012
    • RDF syntaxes N-Triples Simple syntax for line-delimited triples Turtle Superset of N-Triples, with lots of nice shortcuts Notation3 (N3) Superset of Turtle and RDF (goes beyond RDF!) RDF/XML RDF syntax based on XML RDFa Syntax for embedding RDF directly into XHTML documents 77 24.05.2012
    • N-Triples Full URIs in ‘<>’angle brackets Terms delimited by space or tab Triples ended by ‘.’, delimited by new line <http:/ex.org/#aidan> <http:/ns.com/worksAt> <http:/ex.org/#DERI> . <http:/ex.org/#aidan> <http:/ns.com/author> _:bnode1 . <http:/ex.org/#aidan> <http:/ns.com/author> _:bnode2 . _:bnode2 <http://ns.com/title> “On Blank Nodes”@en . _:bnode2 <http://ns.com/pages> “16”^^<http://w3.org/…#integer> . Blank nodes with ‘_:’ prefix 78 24.05.2012 Literals enclosed with quotes Optional datatype with ‘^^’ Optional lang-tag with ‘@’
    • Turtle (Terse RDF Triple Language) <http:/ex.org/#aidan> <http:/ns.com/worksAt> <http:/ex.org/#DERI> . <http:/ex.org/#aidan> <http:/ns.com/author> _:bnode1 . <http:/ex.org/#aidan> <http:/ns.com/author> _:bnode2 . _:bnode2 <http://ns.com/title> “On Blank Nodes”@en . _:bnode2 <http://ns.com/pages> “16”^^<http://w3.org/…#integer> . Re-usable URI prefixes ‘;’ for common subject ‘,’ for common subject & predicate @base <http://ex.org/#> . @prefix ns: <http://ns.com/> . <aidan> ns:worksAt <DERI> ; ns:author _:bnode1 , _:bnode2 . _:bnode2 ns:title “On Blank Nodes”@en ; ns:pages 16 . Rel. URIs resolved against base 79 24.05.2012 Expands to “16”^^xsd:integer (Similar shortcuts for decimals, floating points and booleans)
    • Turtle (Blank node abbreviation) <http:/ex.org/#aidan> <http:/ns.com/worksAt> <http:/ex.org/#DERI> . <http:/ex.org/#aidan> <http:/ns.com/author> _:bnode1 . <http:/ex.org/#aidan> <http:/ns.com/author> _:bnode2 . _:bnode2 <http://ns.com/title> “On Blank Nodes”@en . _:bnode2 <http://ns.com/pages> “16”^^<http://w3.org/…#integer> . Don’t have to label blank nodes. (Labels are arbitrary anyways) @base <http://ex.org/#> . @prefix ns: <http://ns.com/> . <aidan> ns:worksAt <DERI> ; ns:author [] , [ ns:title “On Blank Nodes”@en ; ns:pages 16 ] . Can assign predicate–object information to implicit blank node 80 24.05.2012
    • Turtle (RDF collection / list abbreviation) <http://ex.org/#summerSchool> <http://ex.org/#1stDaySchedule> _:dayOne . _:dayOne <http://w3.org/…/22-rdf-syntax#first> “Enrico’s Keynote” . _:dayOne <http://w3.org/…/22-rdf-syntax#rest> _:dayOneB . _:dayOneB <http://w3.org/…/22-rdf-syntax#first> “Session 1” . _:dayOneB <http://w3.org/…/22-rdf-syntax#rest> _:dayOneC . _:dayOneC <http://w3.org/…/22-rdf-syntax#first> “Session 2” . _:dayOneC <http://w3.org/…/22-rdf-syntax#rest> _:dayOneD . _:dayOneD <http://w3.org/…/22-rdf-syntax#first> “Hands-on 1” _:dayOneD <http://w3.org/…/22-rdf-syntax#first> <http://…/22-rdf-syntax#nil> . @base <http://ex.org/#> . <summerSchool> <1stDaySchedule> ( “Enrico’s Keynote” “Session 1” “Session 2” “Hands-on 1” ) . Enclose list elements in parentheses, and you’re done! 81 24.05.2012
    • Turtle (my favourite abbreviation) <http://ex.org/#aidan> <http://w3.org/…#type> <http://ex.org/#Tutor> . @base <http://ex.org/#> . <aidan> a <Tutor> . ‘a’ instead of rdf:type (No need to declare rdf: prefix) 82 24.05.2012
    • Notation3 (N3) … a quick note A superset of RDF Contains non-RDF features like rules, scoping graphs, etc. Intersection of N3 and RDF ≈ Turtle N-Triples Turtle N3 83 24.05.2012
    • RDF/XML overview RDF syntax based on XML RDF/XML and RDF often conflated: RDF is a data-model based on triples RDF/XML is a syntax to serialise triples A very prominent syntax (dates back to 1999); used widely Unfortunately, not a very nice syntax: Difficult to see triple structure Shortcuts are confusing Relative name schemes are confusing Not all RDF can be written as RDF/XML (due to limitations of XML names for writing down predicates) Not canonical: XML tools are useless Just plain difficult to read/write/parse/learn, etc. 84 24.05.2012
    • RDF/XML (…will not go into detail) <rdf:Description rdf:about="http://…/TR/rdf-syntax-grammar"> <ex:editor> <rdf:Description> <ex:homePage rdf:resource="http://purl.org/net/dajobe/“ /> <ex:fullName>Dave Beckett</ex:fullName> </rdf:Description> </ex:editor> <dc:title>RDF/XML Syntax Specification (Revised)</dc:title> </rdf:Description> Image from http://www.w3.org/TR/REC-rdf-syntax/;; Beckett 85 24.05.2012
    • RDFa overview RDFa allows for embedding RDF into XHTML Mix human readable and machine readable No need for separate docs! Less server costs simpler hosting Becoming more and more prominent (rec. since 2008) 86 24.05.2012
    • RDFa (…will not go into detail) <div typeof="foaf:Person" xmlns:foaf="http://xmlns.com/foaf/0.1/"> <p property="foaf:name">Alice Birpemswick</p> <p> Email: <a rel="foaf:mbox" href="mailto:alice@example.com">alice@example.com</a> </p> <p> Phone: <a rel="foaf:phone" href="tel:+1-617-555-7332">+1 617.555.7332</a> </p> </div> Image from http://www.w3.org/TR/xhtml-rdfa-primer/;; Adida & Birbeck 87 24.05.2012
    • THAT’S RDF … … NEXT UP… 88 24.05.2012
    • RDFS and OWL! RDF Schema Web Ontology Language W3C Recommendations, 2004 OWL 2 since 2009 Standardised schema/ontology languages Can be serialised in RDF OWL (partly) extends RDFS 89
    • Features walkthrough… …modelling family relationships in RDFS and OWL… 90
    • A Family-Relations OWL Ontology ex:Vito ex:Sonny ex:Vincent 91 ex:Connie ex:Carmela ex:Fredo ex:Michael ex:Mary
    • RDFS 1. rdfs:subPropertyOf 2. rdfs:subClassOf 3. rdfs:domain 4. rdfs:range 92
    • rdfs:subPropertyOf :husbandOf :spouse :wifeOf :spouse ex:Vito ex:Carmela ex:Vito :husbandOf ex:Carmela . :husbandOf rdfs:subPropertyOf :spouse . ⇒ ex:Vito :spouse ex:Carmela . ex:Carmela :wifeOf ex:Vito . :wifeOf rdfs:subPropertyOf :spouse . ⇒ ex:Carmela :spouse ex:Vito . 93
    • rdfs:subClassOf rdf:type :Woman rdf:type ex:Mary :Person ex:Mary rdf:type :Woman . :Woman rdfs:subClassOf :Person . ⇒ ex:Mary rdf:type :Person . 94
    • rdfs:domain :motherOf ex:Carmela ex:Fredo rdf:type :Woman 95 ex:Carmela :motherOf ex:Fredo . :motherOf rdfs:domain :Woman . ⇒ ex:Carmela rdf:type :Woman .
    • rdfs:range :hasSon ex:Carmela ex:Fredo rdf:type ex:Carmela :hasSon ex:Fredo . :hasSon rdfs:range :Man . ⇒ ex:Fredo rdf:type :Man . 96 :Man
    • Recap RDFS What would be the rdfs:domain of the property :fatherOf? What would be the rdfs:range of the property :wifeOf? 97
    • RDFS 1. 2. 3. 4. rdfs:subPropertyOf rdfs:subClassOf rdfs:domain rdfs:range OWL 1. Property Axioms a. b. c. d. e. 98 owl:equivalentProperty owl:inverseOf owl:SymmetricProperty owl:TransitiveProperty owl:propertyChainAxiom
    • owl:equivalentProperty :parentOf :hasChild ex:Vito :hasChild :parentOf ex:Michael ex:Mary ex:Vito :parentOf ex:Michael . ex:Michael :hasChild ex:Mary . :parentOf owl:equivalentProperty :hasChild . ⇒ ex:Vito :hasChild ex:Vincent . ⇒ ex:Michael :parentOf ex:Mary . 99
    • owl:inverseOf :parentOf :childOf ex:Carmela :childOf :parentOf ex:Sonny ex:Carmela :parentOf ex:Sonny . ex:Vincent :childOf ex:Sonny . :parentOf owl:inverseOf :childOf . ⇒ ex:Sonny :parentOf ex:Vincent . ⇒ ex:Sonny :childOf ex:Carmela . 100 ex:Vincent
    • owl:SymmetricProperty :sibling :sibling ex:Connie ex:Fredo ex:Connie :sibling ex:Fredo . :sibling rdf:type owl:SymmetricProperty . ⇒ ex:Fredo :sibling ex:Connie . 101
    • owl:TransitiveProperty :ancestorOf ex:Carmela :ancestorOf ex:Michael ex:Mary :ancestorOf ex:Carmela :ancestorOf ex:Michael . ex:Michael :ancestorOf ex:Mary . :ancestorOf rdf:type owl:TransitiveProperty . ⇒ ex:Carmela :ancestorOf ex:Mary . 102
    • owl:propertyChainAxiom :brotherOf ex:Sonny 2 :fatherOf ex:Michael ex:Mary uncleOf ex:Sonny :brotherOf ex:Michael . ex:Michael :fatherOf ex:Mary . :uncleOf owl:propertyChainAxiom (:brotherOf :fatherOf) . ⇒ ex:Sonny :uncleOf ex:Mary . 103
    • Recap OWL property axioms What would be the owl:inverseOf of the property :fatherOf? Name an owl:SymmetricProperty to do with family relations? Name an owl:TransitiveProperty to do with family relations? Give a owl:propertyChainAxiom for hasNiece? 104
    • RDFS 1. 2. 3. 4. rdfs:subPropertyOf rdfs:subClassOf rdfs:domain rdfs:range OWL 1. Property Axioms 2. Equality a. owl:sameAs b. owl:FunctionalProperty c. owl:InverseFunctionalProperty 105
    • owl:sameAs owl:sameAs owl:sameAs ex:Vito_old :hasGrandson :hasGrandson Vito ex:Vito_young :granddaugtherOf :granddaugtherOf ex:Mary ex:Vincent ex:Vito_old owl:sameAs ex:Vito_young . 106
    • owl:FunctionalProperty :hasFather ex:Fredo ex:Fredo :hasFather ex:Vito_old . ex:Fredo :hasFather ex:Vito_young . :hasFather rdf:type owl:FunctionalProperty . ⇒ ex:Vito_old owl:sameAs ex:Vito_young . 107 ex:Vito_young ex:Vito ex:Vito_old
    • owl:InverseFunctionalProperty :fatherOf ex:Connie ex:Vito_old :fatherOf ex:Connie . ex:Vito_young :fatherOf ex:Connie . :fatherOf rdf:type owl:InverseFunctionalProperty . ⇒ ex:Vito_old owl:sameAs ex:Vito_young . 108 ex:Vito_young ex:Vito ex:Vito_old
    • Recap OWL equality axioms Name an owl:FunctionalProperty to do with family relations? Name a similar owl:InverseFunctionalProperty? 109
    • RDFS 1. 2. 3. 4. rdfs:subPropertyOf rdfs:subClassOf rdfs:domain rdfs:range OWL 1. 2. Property Axioms Equality 3. Class Axioms a. b. c. d. e. 110 owl:unionOf owl:intersectionOf owl:oneOf owl:allValuesFrom owl:someValuesFrom
    • owl:unionOf ≡ :Person :Woman ⊔ :Man type type ex:Vincent ex:Vincent rdf:type :Man . :Person owl:equivalentClass [ owl:unionOf (:Woman :Man) ] ⇒ ex:Vincent rdf:type :Person . 111
    • owl:intersectionOf (i) ⊑ :Mother :Woman rdf:type ⊓ rdf:type :Parent rdf:type ex:Carmela ex:Carmela rdf:type :Mother . :Mother rdfs:subClassOf [ owl:intersectionOf (:Woman :Parent) ] ⇒ ex:Carmela rdf:type :Woman , :Parent . 112
    • owl:intersectionOf (ii) ex:Mother rdf:type ≡ ex:Woman ⊓ rdf:type ex:Parent rdf:type ex:Carmela ex:Carmela rdf:type :Woman , :Parent . :Mother owl:equivalentClass [ owl:intersectionOf (:Woman :Parent) ] ⇒ ex:Carmela rdf:type :Mother . 113
    • owl:oneOf ≡{ :DonCorleone ex:Vito rdf:type , ex:Michael rdf:type , } ex:Vincent rdf:type :DonCorleone owl:equivalentClass [ owl:oneOf (ex:Vito ex:Michael ex:Vincent) ] ⇒ ex:Vito rdf:type :DonCorleone . ⇒ ex:Michael rdf:type :DonCorleone . ⇒ ex:Vincent rdf:type :DonCorleone . 114
    • owl:disjointWith ex:DonCorleone ⊓ ex:LawAbiding ≡ ┴ owl:Nothing rdf:type rdf:type ex:Vincent ex:Michael rdf:type ex:DonCorleone . ex:DonCorleone owl:disjointWith ex:LawAbiding . ex:Michael rdf:type ex:LawAbiding . 115
    • owl:allValuesFrom :Person ⊑∀ :hasParent . rdf:type :Person rdf:type :hasParent ex:Mary ex:Michael ex:Mary rdf:type :Person ; hasParent ex:Michael . :Person rdfs:subClassOf [ owl:allValuesFrom :Person ; owl:onProperty :hasParent ] ⇒ ex:Michael rdf:type :Person . 116
    • owl:someValuesFrom (i) :Parent ≡∃ :hasChild . :Person rdf:type rdf:type :hasChild ex:Carmela ex:Michael ex:Mary :hasChild ex:Michael . ex:Michael rdf:type :Person . :Parent owl:equivalentClass [ owl:someValuesFrom :Person ; owl:onProperty :hasChild ] ⇒ ex:Mary rdf:type :Parent . 117
    • owl:someValuesFrom (ii) :Parent ⊑∃ :hasChild . rdf:type rdf:type :hasChild ex:Carmela :Person ? ? ex:Mary rdf:type :Parent . :Parent rdfs:subClassOf [ owl:someValuesFrom :Person ; owl:onProperty :hasChild ] ⇒ ex:Mary :hasChild _:someone . _:someone rdf:type :Person . 118
    • Recap OWL class axioms A class :Parent might be the owl:unionOf what classes? A class :OnlySon might be the owl:intersectionOf what classes? What OWL feature allows to define enumerations? An example of owl:allValuesFrom for family relations? An example of owl:someValuesFrom for the class :Uncle? 119
    • RDFS 1. 2. 3. 4. rdfs:subPropertyOf rdfs:subClassOf rdfs:domain rdfs:range OWL 1. 2. 3. 120 Property Axioms Equality Class Axioms
    • …some OWL features not covered: 1. owl:hasKey 2. owl:hasValue 3. owl:cardinality(s) 4. owl:different 5. owl:AssymetricProperty 6. owl:IrreflexiveProperty 7. owl:propertyDisjointWith 8. … 121
    • But what does it all mean? 122
    • RDFS History Dan Brickley & R. V. Guha Pat Hayes 123 [2000] [2004]
    • RDF(S) Semantics Built directly on top of RDF (Semantics) Given a mathematical model-theoretic semantics http://ex.org/#aidan … … 124
    • RDF(S) Semantics: existential blank nodes Called “simple entailment” ex:aidan ex:coauthoredPaper _:bnode1 ex:title ex:coauthoredPaper “On Blank Nodes”@en _:bnode2 125 24.05.2012
    • RDFS Semantics: RDFS rules / reasoning Body/Antecedent/Condition Head/Consequent IF ⇒ THEN ?c1 rdfs:subClassOf ?c2 . ?x rdf:type ?c1 . ⇒ ?x rdf:type ?c2 . ex:Tutor rdfs:subClassOf ex:Person . ex:aidan rdf:type ex:Tutor . ⇒ ex:aidan rdf:type ex:Person . … 126 24.05.2012
    • OWL History Description Logics [1980’s to now] DAML (Hendler, McGuinness) [2000] OIL (Fensel, van Harmelen, McGuinness, Patel-, Frank van Harmelen) [2001] DAML+OIL [2002] OWL (W3C Rec.) OWL 2 (W3C Rec.) 127 [2004] [2008]
    • OWL Semantics Much more complex language = Much more complex semantics Considers Axioms: Parent ⊑ ∃hasChild.Person Considers Triples: :Parent rdfs:subClassOf [ owl:someValuesFrom :Person ; owl:onProperty :hasChild ] Restricted so that triples correspond to axioms Decidable for OWL 2 DL (but super-exponential) 128 Unrestricted Undecidable 24.05.2012
    • OWL Profiles P NP-complete OWL 2 EL OWL 2 QL OWL 2 RL RDFS* pD* 129 24.05.2012 Simple RDF RDFS ExpTime OWL Lite NExpTime 2NExpTime Undecidable OWL DL OWL 2 DL OWL Full OWL 2 Full
    • THAT’S RDFS/OWL … … NEXT UP… 130 24.05.2012
    • How can we query RDF? …RDB has SQL… …XML has XPath & XQuery… … …RDF has ? 131
    • SPARQL! SPARQL Protocol and RDF Query Language W3C Recommendation, 2008 SPARQL 1.1 upcoming, 201? Standardised RDF query language (and supporting recommendations) Looks a little like SQL Syntax based on Turtle 132
    • The anatomy of a typical SPARQL query PREFIX PREFIX PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdfs: <http://www.w3.org/2000/01/rdf-schema#> foaf: <http://xmlns.com/foaf/0.1/> oo: <http://purl.org/openorg/> PREFIX DECLARATIONS SELECT ?name ?expertise FROM <http://data.southampton.ac.uk/> RESULT CLAUSE DATASET CLAUSE WHERE { ?person foaf:name ?name ; foaf:familyName ?surname . . ?person rdf:type foaf:Person . ?person foaf:title ?title . FILTER regex(?title, "^Prof") OPTIONAL { ?person oo:availableToCommentOn ?expertiseURI . ?expertiseURI rdfs:label ?expertise } } QUERY CLAUSE ORDER BY ?surname SOLUTION MODIFIERS Give me a list of names of professors in Southampton and their expertise (if available), in order of their surname 133
    • The anatomy of a typical SPARQL query PREFIX PREFIX PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdfs: <http://www.w3.org/2000/01/rdf-schema#> foaf: <http://xmlns.com/foaf/0.1/> oo: <http://purl.org/openorg/> PREFIX DECLARATIONS SELECT ?name ?expertise FROM <http://data.southampton.ac.uk/> RESULT CLAUSE DATASET CLAUSE WHERE { ?person foaf:name ?name ; foaf:familyName ?surname . ?person rdf:type foaf:Person . ?person foaf:title ?title . FILTER regex(?title, "^Prof") OPTIONAL { ?person oo:availableToCommentOn ?expertiseURI . ?expertiseURI rdfs:label ?expertise } } QUERY CLAUSE ORDER BY ?surname SOLUTION MODIFIERS Give me a list of names of professors in Southampton and their expertise (if available), in order of their surname 134
    • Prefix Declarations PREFIX PREFIX PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdfs: <http://www.w3.org/2000/01/rdf-schema#> foaf: <http://xmlns.com/foaf/0.1/> oo: <http://purl.org/openorg/> PREFIX DECLARATIONS foaf:Person ⇔ <http://xmlns.com/foaf/0.1/Person> Use http://prefix.cc/ … 135
    • The anatomy of a typical SPARQL query PREFIX PREFIX PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdfs: <http://www.w3.org/2000/01/rdf-schema#> foaf: <http://xmlns.com/foaf/0.1/> oo: <http://purl.org/openorg/> PREFIX DECLARATIONS SELECT ?name ?expertise FROM <http://data.southampton.ac.uk/> RESULT CLAUSE DATASET CLAUSE WHERE { ?person foaf:name ?name ; foaf:familyName ?surname . ?person rdf:type foaf:Person . ?person foaf:title ?title . FILTER regex(?title, "^Prof") OPTIONAL { ?person oo:availableToCommentOn ?expertiseURI . ?expertiseURI rdfs:label ?expertise } } QUERY CLAUSE ORDER BY ?surname SOLUTION MODIFIERS Give me a list of names of professors in Southampton and their expertise (if available), in order of their surname 136
    • Result Clause SELECT ?name ?expertise RESULT CLAUSE 1. SELECT 2. CONSTRUCT (RDF) 3. ASK 4. DESCRIBE (RDF) 137
    • Result Clause 1. SELECT… SELECT ?name ?expertise RESULT CLAUSE Return all tuples for the bindings of the variables ?name and ?expertise ----------------------------------------------------------| “Professor Robert Allen” | “Control engineering” | | “Professor Robert Allen” | “Biomedical engineering” | | “Prof Carl Leonetto Amos” | | | “Professor Peter Ashburn” | “Silicon technology” | | “Professor Robert Allen” | “Control engineering” | ----------------------------------------------------------- Give me a list of names of professors in Southampton and their expertise (if available), in order of their surname 138
    • Result Clause 1. SELECT DISTINCT… SELECT ?name ?expertise DISTINCT unique Return all tuples for the bindings of the variables ?name and ?expertise ----------------------------------------------------------| “Professor Robert Allen” | “Control engineering” | | “Professor Robert Allen” | “Biomedical engineering” | | “Prof Carl Leonetto Amos” | | | “Professor Peter Ashburn” | “Silicon technology” | | “Professor Robert Allen” | “Control engineering” | ----------------------------------------------------------- Give me a list of names of professors in Southampton and their expertise (if available), in order of their surname 139
    • Result Clause 2. CONSTRUCT… CONSTRUCT { ?person foaf:name ?name ; ex:expertise ?expertise . } RESULT CLAUSE Return RDF using bindings for the variables: ex:RAllen foaf:name “Professor Robert Allen” ; ex:expertise “Biomedical engineering” , “Control engineering” . ex:PAshburn foaf:name “Peter Ashburn ” ; ex:expertise “Silicon technology” . Give me a list of names of professors in Southampton and their expertise (if available), in order of their surname 140
    • Result Clause 3. ASK… ASK … WHERE { … } Is there any results? Returns: true or false 141 RESULT CLAUSE
    • Result Clause 4. DESCRIBE… DESCRIBE ?person RESULT CLAUSE … WHERE { ?person … } Returns some RDF which “describes” the given resource… No standard for what to return! Typically returns: all triples where the given resource appears as subject and/or object OR Concise Bounded Descriptions… 142
    • Result Clause 4. DESCRIBE DESCRIBE ex:RAllen (DIRECT)… RESULT CLAUSE (…can give URIs directly without need for a WHERE clause.) 143
    • The anatomy of a typical SPARQL query PREFIX PREFIX PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdfs: <http://www.w3.org/2000/01/rdf-schema#> foaf: <http://xmlns.com/foaf/0.1/> oo: <http://purl.org/openorg/> PREFIX DECLARATIONS SELECT ?name ?expertise FROM <http://data.southampton.ac.uk/> RESULT CLAUSE DATASET CLAUSE WHERE { ?person foaf:name ?name ; foaf:familyName ?surname . ?person rdf:type foaf:Person . ?person foaf:title ?title . FILTER regex(?title, "^Prof") OPTIONAL { ?person oo:availableToCommentOn ?expertiseURI . ?expertiseURI rdfs:label ?expertise } } QUERY CLAUSE ORDER BY ?surname SOLUTION MODIFIERS Give me a list of names of professors in Southampton and their expertise (if available), in order of their surname 144
    • Dataset clause (FROM/FROM NAMED) FROM <http://data.southampton.ac.uk/> DATASET CLAUSE (Briefly) Restrict the dataset against which you wish to query SPARQL stores named graphs: sets of triples which are associated with (URI) names Can match across graphs! Named graphs typically corrrespond with data provenance (i.e., documents)! Default graph typically corresponds to the merge of all graphs Many engines will typically dereference a graph if not available locally! Give me a list of names of professors in Southampton and their expertise (if available), in order of their surname 145
    • The anatomy of a typical SPARQL query PREFIX PREFIX PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdfs: <http://www.w3.org/2000/01/rdf-schema#> foaf: <http://xmlns.com/foaf/0.1/> oo: <http://purl.org/openorg/> PREFIX DECLARATIONS SELECT ?name ?expertise FROM <http://data.southampton.ac.uk/> RESULT CLAUSE DATASET CLAUSE WHERE { WHERE { ?person foaf:name ?name ; foaf:familyName ?surname . ?person foaf:name ?name ; foaf:familyName ?surname ?person rdf:type foaf:Person . ?person rdf:type foaf:Person ?person foaf:title ?title . FILTER regex(?title, "^Prof") ?person foaf:title ?title OPTIONAL { OPTIONAL { ?person oo:availableToCommentOn ?expertiseURI . ?person oo:availableToCommentOn ?expertiseURI rdfs:label ?expertise ?expertiseURI rdfs:label } } } QUERY CLAUSE } ORDER BY ?surname SOLUTION MODIFIERS Give me a list of names of professors in Southampton and their expertise (if available), in order of their surname 146
    • Query clause (WHERE) WHERE { ?person foaf:name ?name ; foaf:familyName ?surname . ?person rdf:type foaf:Person . ?person foaf:title ?title . FILTER regex(?title, "^Prof") OPTIONAL { ?person oo:availableToCommentOn ?expertiseURI . ?expertiseURI rdfs:label ?expertise } QUERY CLAUSE } “Professor Peter Ashburn” ?person foaf:name rdf:type ex:PAshburn ?name foaf:Person ✓ foaf:title foaf:familyName oo:availableToCommentOn ?surname “Ashburn” ?title “Professor” [FILTER “^Prof”] ✓ ?expertiseURI rdfs:label ex:Silicon “Silicon technology” ?expertise Give me a list of names of professors in Southampton and their expertise (if available), in order of their surname 147
    • Quick mention for UNION WHERE { … {?person oo:availableToCommentOn ?expertiseURI . } UNION {?person foaf:interest ?expertiseURI . } … } QUERY CLAUSE Represent disjunction (OR) Useful when there’s more than one property/class that represents the same information you’re interested in (heterogenity) Reasoning can also help, assuming terms are mapped (more later) 148
    • The anatomy of a typical SPARQL query PREFIX PREFIX PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdfs: <http://www.w3.org/2000/01/rdf-schema#> foaf: <http://xmlns.com/foaf/0.1/> oo: <http://purl.org/openorg/> PREFIX DECLARATIONS SELECT ?name ?expertise FROM NAMED <http://data.southampton.ac.uk/> RESULT CLAUSE DATASET CLAUSE WHERE { ?person foaf:name ?name ; foaf:familyName ?surname . ?person rdf:type foaf:Person . ?person foaf:title ?title . FILTER regex(?title, "^Prof") OPTIONAL { ?person oo:availableToCommentOn ?expertiseURI . ?expertiseURI rdfs:label ?expertise } } QUERY CLAUSE ORDER BY ?surname SOLUTION MODIFIERS Give me a list of names of professors in Southampton and their expertise (if available), in order of their surname 149
    • Solution Modifiers ORDER BY ?surname SOLUTION MODIFIERS Order output results by surname (as you probably guessed) …also… LIMIT ORDER BY ?surname LIMIT 10 SOLUTION MODIFIERS Only return 10 results OFFSET ORDER BY ?surname LIMIT 10 OFFSET 20 SOLUTION MODIFIERS Return results 20‒30 Give me a list of names of professors in Southampton and their expertise (if available), in order of their surname 150
    • The summary of a typical SPARQL query PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> Shortcuts for URIs PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX oo: <http://purl.org/openorg/> PREFIX DECLARATIONS SELECT ?name ?expertise Which results do you want? FROM <http://data.southampton.ac.uk/> Where should we look? RESULT CLAUSE DATASET CLAUSE WHERE { ?person foaf:name ?name ; foaf:familyName ?surname . ?person rdf:type foaf:Person . ?person foaf:title ?title . FILTER regex(?title, "^Prof") What are you looking for? OPTIONAL { ?person oo:availableToCommentOn ?expertiseURI . ?expertiseURI rdfs:label ?expertise } } QUERY CLAUSE ORDER BY ?surname How should results be ordered/split? SOLUTION MODIFIERS Give me a list of names of professors in Southampton and their expertise (if available), in order of their surname 151
    • Trying out a typical SPARQL query PREFIX PREFIX PREFIX PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> rdfs: <http://www.w3.org/2000/01/rdf-schema#> foaf: <http://xmlns.com/foaf/0.1/> oo: <http://purl.org/openorg/> SELECT ?name ?expertise FROM <http://data.southampton.ac.uk/> WHERE { ?person foaf:name ?name ; foaf:familyName ?surname . ; foaf:familyName ?surname . ?person rdf:type foaf:Person . ?person foaf:title ?title . FILTER regex(?title, “^Prof”) OPTIONAL { ?person oo:availableToCommentOn ?expertiseURI . ?expertiseURI rdfs:label ?expertise } } ORDER BY ?surname Give me a list of names of professors in Southampton and their expertise (if available), in order of their surname 152
    • SPARQL in the wild 66% of LD datasets have a SPARQL endpoint 35% offer an RDF dump See http://www.w3.org/wiki/SparqlEndpoints 153
    • Highly recommend checking out: “SPARQL by example” By Cambridge Semantics Lee Feigenbaum & Eric Prud'hommeaux http://www.cambridgesemantics.com/2008/09/sparql-by-example/ 154
    • SPARQL Extension Coming Soon! SPARQL 1.1. W3C Working Draft (2012) New query features: Property-chains ?s ex:father+ ?o . Arithemetic BIND ( ?weight / (?height * ?height) AS ?bmi) Aggregates SELECT AVG(?age) as ?avgAge Sub-queries, exists/not-exists, bindings, etc. SPARQL 1.1 Federation SPARQL 1.1 Update SPARQL 1.1 Entailment 155 24.05.2012
    • AND MORE BESIDES … 156 24.05.2012
    • SO, WHAT IS THE SEMANTIC WEB? 157 24.05.2012