XMPP, TV and the Semantic Web


Published on

A short talk about XMPP, for the WAI series of talks at VU.

  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

XMPP, TV and the Semantic Web

  1. 1. XMPP, TV and the Semantic Web<br />Or ‘how I got to work on something that wasn’t entirely about RDF for a change…’<br />“This will be a very informal and very short talk tointroduce <br />The XMPP (Jabber) internet protocol and some potentialimpact <br />it has for TV and Semantic Web applications."<br />Dan Brickley – VU WAI talk, Feb 1st 2010<br />
  2. 2. Extensible Messaging and Presence Protocol (XMPP)<br />Open standard for Instant Messaging (IM) chat<br />Alternative to vendor-specific closed networks<br />Built opensource-style, then ratified at IETF<br />How it works:<br />userid@my.example.com ‘JIDs’<br />Neverending 2-way conversation via servers<br />XML ‘stanzas’ – e.g. chat or info/query messages<br />Servers can be federated (eg. Google Talk) or standalone (eg. Hyves.nl)<br />
  3. 3. XMPP in a nutshell…<br /><ul><li> Developed and deployed for 10+ years
  4. 4. XML-based protocol for IM (chat, buddylists, real time messaging)
  5. 5. Almost entirely unlike SOAP and IRC (but a bit like both)
  6. 6. Used in products from Google, Apple and tools like GAIM/Pidgin
  7. 7. Healthy range of toolkits – servers, clients and libraries
  8. 8. All Google accounts; all Hyves accounts, …
  9. 9. Bewildering and impressive range of extensions (XEPs), e.g.
  10. 10. XEP-0166: Jingle, ‘peer-to-peer media sessions’ (e.g. Google Talk)
  11. 11. XEP-0060: Publish-Subscribe
  12. 12. XEP-0174: Local LAN dns-based discovery and point-to-point links
  13. 13. XEP-0059: Result Set management
  14. 14. XEP-0235: OAuth Over XMPP
  15. 15. XEP-0045: Multi-User Chat
  16. 16. XEP-0275: ‘Entity reputation’
  17. 17. many more…</li></li></ul><li>Why care?<br /> XMPP can go where HTTP doesn’t<br /> bots, scripts and services can act for their human users<br />XMPP’s ‘social graph’ interconnect sites (like email and FOAF, and unlike closed and proprietary ‘social networks’)<br />Friendly and energetic developer community<br />Save your time for inventing new things<br />
  18. 18. What does it look like?<br />Two experimental uses:<br />JqbusSPARQL experiments (FOAF project)<br />‘NoTube Network’ ideas for TV remotes (NoTube EU)<br />Jqbus showed an experimental binding of RDF query (SPARQL) to XMPP<br />How else can you send queries into home or laptop?<br />Or filter them based on buddylist rules (colleagues, family)?<br />Or allow for query results to arrive hours later?<br />(if you don’t know SPARQL, think of it as <br />SQL-ish query over linked RDF databases) <br />
  19. 19. Jqbus: sending a query<br /><iq id="S3IG2-4" to="alice.notube@example.com/sparqlserver" type="get"> <br /><query xmlns='http://www.w3.org/2005/09/xmpp-sparql-binding'><br />PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt; SELECT DISTINCT ?o WHERE {?s foaf:name ?o.} </query> <br /></iq> <br />(from bandri@livejournal.com )<br />
  20. 20. Jqbus: a query arrives<br /><iq id="40z5D-4" to="alice.notube@example.com/sparqlserver" from="bandri@livejournal.com/sparqlclient" type="get"> <br /><query xmlns="http://www.w3.org/2005/09/xmpp-sparql-binding"> <br />PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt; SELECT DISTINCT ?o WHERE {?s foaf:name ?o.} <br /></query> <br /></iq> <br />
  21. 21. A response is sent…<br /><iq id="40z5D-4" to="bandri@livejournal.com/sparqlclient" from="alice.notube@example.com/sparqlserver" type="result"><br /> <query-result xmlns="http://www.w3.org/2005/09/xmpp-sparql-binding"><br /><sparql xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xs="http://www.w3.org/2001/XMLSchema#" xmlns="http://www.w3.org/2005/sparql-results#"> <br /><head><variable name="o"/> </head> <br /><results> <br /><result> <binding name="o"> <literal>Libby Miller</literal> </binding> </result><br /> <result> <binding name="o"> <literal>Tim Berners-Lee</literal> </binding> </result> <!-- ... more bindings here --> <br /></results> </sparql> </query-result> </iq> <br />
  22. 22. …and is received.<br />Messages can be directed or general<br />Eg: to danbrickley@gmail.com or to<br />danbrickley@gmail.com/photo_database<br />Can be real-time or delayed<br />Have practical limits on message size<br />These SPARQL bindings should be redone<br />Jingle specs help with bulky data and direct links<br />
  23. 23. Eg. 2: “Buttons” (NoTube Network)<br />Work-in-progress ‘smart remote control’ protocol<br />XMPP as controlled route thru NAT/firewall<br />Attached to desktop ‘media centre’ software:<br />Boxee / XBMC / Plex (TV-like full screen media)<br />MythTV (linux-based PVR, uses DVB-T USB for TV)<br />EyeTV (applescript-able OSX tool, also DVB-T)<br />MediaPortal (Opensource C# software)<br />Windows Media Centre (with .NET SDK)<br />Itunes (applescript-able on OSX)<br />
  24. 24. What do these all have in common?<br />A lot but not enough: chaos of different media-centre APIs and schemas<br />Remotes tend to be dumb: sending clicks not commands, and no return-path for data…<br />APIs allow basic navigation, play/pause, screenshot, EPG access, but via local PC or LAN<br />Can diverse media centres share an API?<br />Can we expose it over XMPP? <br />Use it from smartphones? Multi-touch tables?<br />
  25. 25.
  26. 26.
  27. 27. A remote control with a buddylist?<br /><iq to="alice.notube@gmail.com/0AEDD375" type="result"><br /><query xmlns="jabber:iq:roster"><br /><item jid="bob.notube@gmail.com" subscription="both”><br /><item jid="buttons@foaf.tv" subscription="both"/><br /><item jid="danbrickley@gmail.com" subscription="both”><br /><item jid="libby.miller@gmail.com" subscription="both"/><br /><item jid="yves.example @gmail.com" subscription="both"/><br /></query><br /></iq><br />
  28. 28. Maybe.<br />Prototyped at the play/pause/ffwd level<br />With Strophe.js and BOSH, can do HTML5 too!<br />Can control Boxee and MythTV via XMPP<br />Sample client running on iphone<br />Server attached to xmpp:buttons@foaf.tv<br />Remote attached to xmpp:bob.notube@gmail.com<br />Very often super-fast; sometimes awkwardly slow<br />Can we drop down from server-mediated comms?<br />
  29. 29. Maybe.<br />XEP-0174 defines local network discovery<br />And point-to-point XMPP comms (ie. not via gtalk!)<br />As used in Apple’s Bonjour iChat local chat<br />The Jingle specs also relevant here<br />Other tricks for faster UI?<br />Iphone motion sensor – if it’s moving, send a ping<br />Design a protocol that sends commands not clicks<br />But beware downloading megabytes of EPG TV data<br />
  30. 30. Service Discovery<br /> Web service discovery for real?<br />Which of my buddys have VOIP support? Video?<br />Which have RDF databases online?<br />Or a TV / media centre connected?<br />Which are on same LAN as me?<br />How do we manage permissions for all this?<br />
  31. 31. Presence and capabilities<br /><presence from=”example.buddy@gmail.com/BitlBee82551989" to="alice.notube@gmail.com/0AEDD375"> <br />[…] </presence><br /><caps:c node="http://mail.google.com/xmpp/client/caps" ver="1.1" ext="pmuc-v1 sms-v1" xmlns:caps="http://jabber.org/protocol/caps"/><br />
  32. 32. Summary<br />XMPP – the basics just work<br />Lots of libraries / tools<br />Helpful, friendly community<br />Focal point for problem-sharing<br />Tread carefully<br />Navigating the maze of interesting extensions<br />Guessing which toolkit to bet on for your needs<br />Learning the landscape and what to rely on<br />
  33. 33. Questions?<br />Or to danbri@few.vu.nl<br />MythTV / iChat demo: Libby Miller<br />Draft iPhone graphics: Vicky Buser<br />NoTube project: www.notube.tv<br />