Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Web of the Future: Introduction to the Semantic Web - Bulgaria PHP 2019

Arnout Boks
November 09, 2019

The Web of the Future: Introduction to the Semantic Web - Bulgaria PHP 2019

What if we could evolve our web of individual documents and data to a web of interlinked knowledge, a web where machines can automatically combine data from multiple sources and draw conclusions from it? The Semantic Web technologies from W3C enable us to make sense of the data wilderness on the web and unlock the full potential of the data treasures hidden in it.

In this talk, we will see how RDF enables us to formally describe the meaning of data and how such data can be queried with SPARQL. We will look at how OWL lets us make more expressive statements about the world, so that a computer can logically reason about it and infer new information. We will demonstrate these technologies by showing how they can be used to query seemingly incompatible data sets as if they were one and letting a computer draw logical (and perhaps surprising) conclusions for us.

Contains: ‘retro’ technology, linked data, fundamental properties of the web, and Donald Trump’s opinion on PHP frameworks.

Arnout Boks

November 09, 2019
Tweet

More Decks by Arnout Boks

Other Decks in Technology

Transcript

  1. The Web of the Future: Introduction to the Semantic Web

    @arnoutboks Arnout Boks #bgphp19 09-11-2019
  2. @arnoutboks #bgphp19 “Web 2.0” Feed of events • iCalendar or

    vCalendar? • Different types of events?
  3. @arnoutboks #bgphp19 “Web 2.0” Weather forecast API • XML or

    JSON? • Which fields and properties? • Which units?
  4. @arnoutboks #bgphp19 Semantic web • Question to agent (e.g. Siri,

    Google Assistant) • Agent searches across different sources • Agent combines data • Agent answers question
  5. @arnoutboks #bgphp19 Semantic Web (“Web 3.0”?) Web of Linked Data

    for consumption by intelligent agents/PA’s
  6. @arnoutboks #bgphp19 Revolutionary? Based on W3C-standards • RDF (1998) •

    RDFS (1998) • SPARQL (2008) • OWL (2004) • …
  7. @arnoutboks #bgphp19 RDF (triples) Subject Predicate Object Arnout worksAt Moxio

    Arnout twitterHandle “@arnoutboks” Arnout livesIn Delft Delft cityIn The Netherlands Moxio basedIn Delft
  8. @arnoutboks #bgphp19 RDF (graph) Arnout Moxio Delft @arnoutboks worksAt basedIn

    The Netherlands Subject Predicate Object Arnout worksAt Moxio Arnout twitterHandle “@arnoutboks” Arnout livesIn Delft Delft cityIn The Netherlands Moxio basedIn Delft
  9. @arnoutboks #bgphp19 Merging RDF (triples) Subject Predicate Object Arnout worksAt

    Moxio Arnout twitterHandle “@arnoutboks” Arnout livesIn Delft Delft cityIn The Netherlands Moxio basedIn Delft Subject Predicate Object The Netherlands hasCapital Amsterdam The Netherlands population “17.000.000”
  10. @arnoutboks #bgphp19 Merging RDF (triples) Subject Predicate Object Arnout worksAt

    Moxio Arnout twitterHandle “@arnoutboks” Arnout livesIn Delft Delft cityIn The Netherlands Moxio basedIn Delft The Netherlands hasCapital Amsterdam The Netherlands population “17.000.000”
  11. @arnoutboks #bgphp19 Merging RDF (graph) Arnout Moxio Delft @arnoutboks worksAt

    basedIn The Netherlands Amsterdam hasCapital 17.000.000 population
  12. @arnoutboks #bgphp19 Serializing RDF: Turtle @prefix : <http://www.example.com/#> . @prefix

    rdf: <http://www.w3.org/1999/02/22-rdf-syntax- ns#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @base <http://www.example.com/> . :Arnout :livesIn :Delft ; :worksAt :Moxio ; :twitterHandle "@arnoutboks"^^xsd:string . :Delft :cityIn :The_Netherlands . :Moxio :basedIn :Delft .
  13. @arnoutboks #bgphp19 Serializing RDF: RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns="http://www.example.com/#" <!--

    ... -->> <rdf:Description rdf:about="http://www.example.com/#Arnout"> <twitterHandle rdf:datatype="http://www.w3.org/2001/XMLSchema#string">@a rnoutboks</twitterHandle> <worksAt rdf:resource="http://www.example.com/#Moxio"/> <livesIn rdf:resource="http://www.example.com/#Delft"/> </rdf:Description> <!-- ... --> </rdf:RDF>
  14. @arnoutboks #bgphp19 Serializing RDF: JSON-LD [ { "@id" : "http://www.example.com/#Arnout",

    "http://www.example.com/#livesIn" : [ { "@id" : "http://www.example.com/#Delft" } ], "http://www.example.com/#twitterHandle" : [ { "@value" : "@arnoutboks" } ], "http://www.example.com/#worksAt" : [ { "@id" : "http://www.example.com/#Moxio" } ] }, ... ]
  15. @arnoutboks #bgphp19 Identity Subject Predicate Object Amsterdam numberOfGuns “42” Amsterdam

    status Wrecked National Maritime Museum (“Scheepvaartmuseum”)
  16. @arnoutboks #bgphp19 Identity Subject Predicate Object Amsterdam numberOfGuns “42” Amsterdam

    status Wrecked Subject Predicate Object The Netherlands hasCapital Amsterdam The Netherlands population “17.000.000” National Maritime Museum (“Scheepvaartmuseum”) Lonely Planet
  17. @arnoutboks #bgphp19 URI’s for namespacing National Maritime Museum (“Scheepvaartmuseum”) https://www.hetscheepvaartmuseum.nl/ships/Amsterdam

    https://www.hetscheepvaartmuseum.nl/ships/numberOfGuns Lonely Planet https://www.lonelyplanet.com/Amsterdam https://www.lonelyplanet.com/hasCapital
  18. @arnoutboks #bgphp19 Prefixes & QNames National Maritime Museum (“Scheepvaartmuseum”) nmm:Amsterdam

    nmm:numberOfGuns Lonely Planet lonelyplanet:Amsterdam lonelyplanet:hasCapital
  19. @arnoutboks #bgphp19 Absence of information Subject Predicate Object whitehouse:Trump fw:knows

    php-fig:Symfony whitehouse:Trump fw:knows php-fig:CakePHP whitehouse:Trump fw:knows php-fig:CodeIgniter
  20. @arnoutboks #bgphp19 SPARQL SELECT ?employee ?company WHERE { ?employee :worksAt

    ?company . ?company :basedIn :Delft . } ?employee ?company :Arnout :Moxio
  21. @arnoutboks #bgphp19 SPARQL SELECT ?employee ?company ?city WHERE { ?employee

    :worksAt ?company . ?company :basedIn ?city . ?employee :livesIn ?city . } ?employee ?company ?city :Arnout :Moxio :Delft
  22. @arnoutboks #bgphp19 Online SPARQL endpoints PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX dbr:

    <http://dbpedia.org/resource/> SELECT ?song ?runtime WHERE { ?song dbo:artist dbr:The_Beatles . ?song dbo:runtime ?runtime . ?song rdf:type dbo:Song . } ORDER BY DESC (?runtime)
  23. @arnoutboks #bgphp19 Online SPARQL endpoints PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX dbr:

    <http://dbpedia.org/resource/> SELECT ?ancestor WHERE { dbr:Willem-Alexander_of_the_Netherlands dbo:parent+ ?ancestor . }
  24. @arnoutboks #bgphp19 RDF Schema (RDFS) Describes the structure of RDF-data…

    in RDF • Classes • Properties • Domain and range of properties • Inheritance of classes • ‘Inheritance’ of properties
  25. @arnoutboks #bgphp19 RDF Schema (RDFS) Subject Predicate Object :DonaldTrump :isFatherOf

    :IvankaTrump :isFatherOf rdfs:range :Person :isFatherOf rdfs:domain :Father :Father rdfs:subclassOf :Parent :Parent rdfs:subclassOf :Person :isFatherOf rdfs:subpropertyOf :isParentOf
  26. @arnoutboks #bgphp19 RDF Schema & Inference Subject Predicate Object :DonaldTrump

    :isFatherOf :IvankaTrump :isFatherOf rdfs:range :Person :isFatherOf rdfs:domain :Father :Father rdfs:subclassOf :Parent :Parent rdfs:subclassOf :Person :isFatherOf rdfs:subpropertyOf :isParentOf :IvankaTrump rdf:type :Person :DonaldTrump rdf:type :Father :DonaldTrump rdf:type :Parent :DonaldTrump rdf:type :Person :DonaldTrump :isParentOf :IvankaTrump
  27. @arnoutboks #bgphp19 SPARQL & Inference SELECT ?person WHERE { ?person

    rdf:type :Person . } ?person :IvankaTrump :DonaldTrump
  28. @arnoutboks #bgphp19 Combining data using inference Subject Predicate Object a:DonaldTrump

    rdf:type a:Person Datasource A Subject Predicate Object b:MelaniaTrump rdf:type b:Human Datasource B
  29. @arnoutboks #bgphp19 Combining data using inference Subject Predicate Object a:DonaldTrump

    rdf:type a:Person Datasource A Subject Predicate Object b:MelaniaTrump rdf:type b:Human Datasource B Subject Predicate Object a:Person rdfs:subclassOf b:Human b:Human rdfs:subclassOf a:Person Mapping rules
  30. @arnoutboks #bgphp19 Combining data using inference Subject Predicate Object a:DonaldTrump

    rdf:type a:Person b:MelaniaTrump rdf:type b:Human a:Person rdfs:subclassOf b:Human b:Human rdfs:subclassOf a:Person a:DonaldTrump rdf:type b:Human b:MelaniaTrump rdf:type a:Person
  31. @arnoutboks #bgphp19 RDF Schema vs. JSON/XML Schema Subject Predicate Object

    mi6:JamesBond rdf:type mi6:SecretAgent mi6:JamesBond nmm:numberOfGuns “1” MI6 files
  32. @arnoutboks #bgphp19 RDF Schema vs. JSON/XML Schema Subject Predicate Object

    mi6:JamesBond rdf:type mi6:SecretAgent mi6:JamesBond nmm:numberOfGuns “1” MI6 files
  33. @arnoutboks #bgphp19 RDF Schema vs. JSON/XML Schema Subject Predicate Object

    mi6:JamesBond rdf:type mi6:SecretAgent mi6:JamesBond nmm:numberOfGuns “1” MI6 files Subject Predicate Object nmm:numberOfGuns rdf:domain nmm:Ship National Maritime Museum (“Scheepvaartmuseum”)
  34. @arnoutboks #bgphp19 RDF Schema vs. JSON/XML Schema Subject Predicate Object

    mi6:JamesBond rdf:type mi6:SecretAgent mi6:JamesBond nmm:numberOfGuns “1” nmm:numberOfGuns rdf:domain nmm:Ship mi6:JamesBond rdf:type nmm:Ship
  35. @arnoutboks #bgphp19 OWL: Inverse properties Subject Predicate Object :DonaldTrump :isParentOf

    :IvankaTrump :isParentOf owl:inverseOf :isChildOf :IvankaTrump :isChildOf :DonaldTrump
  36. @arnoutboks #bgphp19 OWL: Symmetric properties Subject Predicate Object :DonaldTrump :isMarriedTo

    :MelaniaTrump :isMarriedTo rdf:type owl:SymmetricProperty :MelaniaTrump :isMarriedTo :DonaldTrump
  37. @arnoutboks #bgphp19 OWL: Equality Subject Predicate Object :DonaldTrump :isMarriedTo :MelaniaTrump

    :DonaldTrump owl:sameAs :TheDon :TheDon :isMarriedTo :MelaniaTrump
  38. @arnoutboks #bgphp19 OWL: Functional properties Subject Predicate Object :IvankaTrump :hasFather

    :DonaldTrump :IvankaTrump :hasFather :TheDon :hasFather rdf:type owl:FunctionalProperty :TheDon owl:sameAs :DonaldTrump
  39. @arnoutboks #bgphp19 Inconsistency Subject Predicate Object :IvankaTrump :hasFather :DonaldTrump :IvankaTrump

    :hasFather :TheDon :hasFather rdf:type owl:FunctionalProperty :TheDon owl:differentFrom :DonaldTrump
  40. @arnoutboks #bgphp19 It’s okay to be inconsistent… (remember the AAA

    slogan) …but the reasoner won’t help you anymore
  41. @arnoutboks #bgphp19 Leveraging the Semantic Web Mapping between vocabularies: •

    rdfs:subclassOf • rdfs:subpropertyOf • owl:inverseOf • owl:sameAs
  42. @arnoutboks #bgphp19 Existing vocabularies • Dublin Core • Metadata about

    publications and authors • Friend of a Friend • People, connections, social networks • GoodRelations • Products, prices, eCommerce • CB-NL • Construction, infrastructure, spatial planning • QUDT • Quantities, units, dimensions, conversions
  43. @arnoutboks #bgphp19 Resources • Apache Jena (includes Fuseki triple store)

    • Semantic web framework/tools (written in Java) • easyrdf/easyrdf • RDF parser/writer for PHP • semsol/arc2 • PHP RDF library and MySQL-based triple store • FaCT++, HermiT & Pellet • Open source OWL reasoners • Protégé • RDF/OWL IDE with various reasoner plugins
  44. @arnoutboks #bgphp19 Resources • https://www.w3.org/2013/data/ • https://www.w3.org/2001/sw/wiki/ • https://www.w3.org/TR/rdf11-primer/ •

    https://www.w3.org/TR/owl2-primer/ • https://www.w3.org/TR/sparql11-query/ • http://wiki.dbpedia.org/OnlineAccess • https://www.data.gov/ • http://lod-cloud.net/
  45. @arnoutboks #bgphp19 Feedback & Questions Please leave your feedback on

    joind.in: https://joind.in/talk/de222 @arnoutboks https://aboks.github.io Arnout Boks
  46. @arnoutboks #bgphp19 Image Credits • https://www.flickr.com/photos/lex-photographic/32521124574 • https://www.flickr.com/photos/rwoan/34676675925 • https://www.flickr.com/photos/littlehuw/15236543728

    • https://www.flickr.com/photos/crdominguez/422517106 • https://www.flickr.com/photos/pamwood707/5646757752 • https://www.flickr.com/photos/blair25/3240686470 • https://www.flickr.com/photos/tylerbeaulawrence/15167523690 • https://www.flickr.com/photos/23975018@N04/3675503072 • https://pixabay.com/nl/nuance-stalen-kleur-pantone-1074766/ • https://www.flickr.com/photos/borkurdotnet/9682277597