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

Linked Data in Use - Front in Bahia 2014

Avatar for Ícaro Medeiros Ícaro Medeiros
May 14, 2024
10

Linked Data in Use - Front in Bahia 2014

Avatar for Ícaro Medeiros

Ícaro Medeiros

May 14, 2024
Tweet

Transcript

  1. Ícaro Medeiros [email protected] Time de Semântica [email protected] globo.com Front in

    Bahia 13/9/2014 LINKED DATA IN USE Schema.org, JSON-LD, and hypermedia APIs
  2. "I have a dream for the web in which computers

    become capable of analyzing all the data on the web - the content, links, and transactions between people and computers." Tim Berners-Lee
  3. Standard Vocabularies • Dublin Core: publications • FOAF: people •

    SIOC: online communities • DBPedia: Wikipedia in triples
  4. Linked Data Principles 1. Use URIs as names for things

    2. Use HTTP URIs so that people can look up those names. 3. When someone looks up a URI, provide useful information, using the standards (RDF*, SPARQL) 4. Include links to other URIs, so that they can discover more things.
  5. <Neymar> <Barcelona> <Santos> <Player> <Time> <BarcelonaXSantos:02082013> <Partida> is a is

    a is a plays for is a home team away team <Camp Nou> location "2013/08/02" date
  6. RDF triples @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. @prefix foaf:

    <http://xmlns.com/foaf/0.1/>. @prefix dbpedia: <http://dbpedia.org/ontology> esportes:Neymar rdf:type dbpedia:SoccerPlayer ; rdfs:label "Neymar" ; foaf:name "Neymar da Silva Santos Júnior" ; dbpedia:birthDate "05/02/1992" ; owl:sameAs dbpedia:Neymar . Linking datasets
  7. SPARQL query Select all instances of dbpedia:SoccerPlayer class and its

    names SELECT ?player ?name FROM <http://dbpedia.org> WHERE { ?player rdf:type dbpedia:SoccerPlayer ; rdfs:label ?name . }
  8. • Complexity (ontologies?) • NO clear advantage • Triplestore databases:

    immature • Missing a killer application • Fax problem • Slow adoption Problems
  9. <html itemscope itemtype="http://schema.org/Event"> ... <section itemprop="location" itemscope itemtype="http://schema.org/Place"> <span itemprop="name">CESMAC</span>

    <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"> <span itemprop="addressLocality"> Maceió </span> ... NESTED PROPERTIES
  10. Schema.org usage • Sample 12B pages (Google Index) • 6%

    domains • ~21% pages • Avg entities/page: 6 • Avg facts/page: 26 http://www.slideshare.net/rvguha/sem-tech2014c
  11. Advantages • Semantic layer on top of JSON • Self-described

    • Can be added to existing APIs • JSON is extensively used • Data can be anchored in schema.org • Easy serialization to RDF
  12. GET /events/1 HTTP/1.1 Host: example.com ==================================== HTTP/1.0 200 OK ...

    Content-Type: application/json Link: <example.com/events/1.jsonld>; rel=http://www.w3.org/ns/json-ld#context; type=application/ld+json { "name": "Keith Urban", "url": "http://www.keithurban.net/tour/420", } Client follows link (hypermedia API)
  13. { "@context": "http://schema.org", "@type": "MusicEvent", "@id": "/events/1", "name": "Keith Urban",

    "url": "http://www.keithurban.net/tour/420", } Self-described Resource
  14. { "@context": "http://schema.org", "@type": "MusicEvent", "@id": "/events/1", "name": "Keith Urban",

    "url": "http://www.keithurban.net/tour/420", "offers": [{ "@id": "/events/1/offer/1", "@type": "Offer" }]} Client follows link Resource+links
  15. GET /events/1 HTTP/1.1 Host: example2.com ==================================== HTTP/1.0 200 OK …

    Content-Type: application/json; profile=/events/1/_schema { "name": "Keith Urban", "url": "http://www.keithurban.net/tour/420", } Client follows link (hypermedia API) Schema in different resource
  16. GET /events/1/_schema HTTP/1.1 Host: example2.com ==================================== HTTP/1.0 200 OK …

    { "title": "Event", "type": "object", "properties": { "name": {"type": "string"}, "url": {"type": "url"} }, "links": { "rel": "offers", "href": "/events/1/offers" } } Client does not know URLs, just 'rel's
  17. Hypermedia? • Don’t remind URLS. Navigate! • Decoupling server and

    client • Content negotiation • Application treated as State Machine
  18. / GET { "items": [ { "title": "News", "@id": "http://example.com/news/",

    "resource_id": "news" }, { "title": "Sports", "@id": "http://example.com/sports/", "resource_id": "sports" } ], "links": {} }
  19. / GET # continuation "links": [ { "href": “http://example.com/“, "rel":

    "self" }, { "href": "http://example.com/{resource_id}", "rel": "item" }, { "href": "http://example.com", "method": "POST", "rel": "create" }, { "href": "http://example.com/{resource_id}", "method": "DELETE", "rel": "delete" }, { "href": "http://example.com/?page=2", "method": "GET", "rel": "next" } ] …
  20. JSON-LD annotation <script type="application/ld+json"> [{ "@context": "http://schema.org", "@type": "MusicEvent", "name":

    "Keith Urban", "url": "http://www.keithurban.net/tour/420", "startDate": "2014-09-07", "performer": [{ "@type": "MusicGroup", "name": "Keith Urban", "sameAs": "http://www.keithurban.net"}], www.keithurban.net/tour Linking datasets Same vocabulary
  21. "location": { "@type": "Place", "name": "Sleep Train Amphitheatre", "address": {

    "@type": "PostalAddress", "addressLocality": "Sacramento", "addressState": "CA", "addressCountry": "US" }}, "offers": [{ "@type: "Offer", "name": "TICKETS", "url": "http://www.keithurban.net/tour/420" }]} //... ] </script> Link is followed by crawler
  22. { "@context": "http://schema.org", "@type": "MusicEvent", // ... "offers": [{ "@type":

    "Offer", "name": "General Tickets", "price": "40.00", "priceCurrency": "USD", "availability": "InStock", "validFrom": "2014-02-15T10:00", "category": "primary", "url": "www.axs.com/events/248328/keith-urban-tickets" }]} keithurban.net/tour/420 ……..
  23. <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "FlightReservation", "reservationNumber": "RXJ34P", "reservationStatus":

    "http://schema.org/Confirmed", "underName": { "@type": "Person", "name": "Eva Green" }, "reservationFor": { "@type": "Flight", "flightNumber": "110", "airline": { "@type": "Airline", "name": "United" }, //... </script>
  24. Semantic annotation goes a looong way • +SEO • +Mobile

    Rich Info • Applications we don’t even know yet
  25. icaromedeiros.com.br • Pelican (Python) • Use ReStructuredText (rst) or Markdown

    • Generate static pages • Deploy to github pages easily • github.com/icaromedeiros/pelican-microdata
  26. .. itemscope:: BusinessEvent :tag: p Today I have presented a

    talk in :itemprop:`Salvador <location>` at :itemprop:`Front in Bahia <name>`.
  27. <p itemscope itemtype="http://schema.org/BusinessEvent"> Today I have presented a talk in

    <span itemprop="location">Salvador</span> at <span itemprop="name">Front in Bahia</span>. </p>