XMPP, TV and the Semantic WebOr ‘how I got to work on something that wasn’t entirely about RDF for a change…’“This will be a very informal and very short talk tointroduce The XMPP (Jabber) internet protocol and some potentialimpact it has for TV and Semantic Web applications."Dan Brickley – VU WAI talk, Feb 1st 2010
Extensible Messaging and Presence Protocol (XMPP)Open standard for Instant Messaging (IM) chatAlternative to vendor-specific closed networksBuilt opensource-style, then ratified at IETFHow it works:userid@my.example.com ‘JIDs’Neverending 2-way conversation via serversXML ‘stanzas’ – e.g. chat or info/query messagesServers can be federated (eg. Google Talk) or standalone (eg. Hyves.nl)
XMPP in a nutshell… Developed and deployed for 10+ years
 XML-based protocol for IM (chat, buddylists, real time messaging)
 Almost entirely unlike SOAP and IRC (but a bit like both)
 Used in products from Google, Apple and tools like GAIM/Pidgin
 Healthy range of toolkits – servers, clients and libraries
 All Google accounts; all Hyves accounts, …
 Bewildering and impressive range of extensions (XEPs), e.g.
XEP-0166: Jingle, ‘peer-to-peer media sessions’ (e.g. Google Talk)
 XEP-0060: Publish-Subscribe
 XEP-0174: Local LAN dns-based discovery and point-to-point links
 XEP-0059: Result Set management
XEP-0235: OAuth Over XMPP
XEP-0045: Multi-User Chat
 XEP-0275: ‘Entity reputation’
 many more…Why care? XMPP can go where HTTP doesn’t bots, scripts and services can act for their human usersXMPP’s ‘social graph’ interconnect sites (like email and FOAF, and unlike closed and proprietary ‘social networks’)Friendly and energetic developer communitySave your time for inventing new things
What does it look like?Two experimental uses:JqbusSPARQL experiments (FOAF project)‘NoTube Network’ ideas for TV remotes (NoTube EU)Jqbus showed an experimental binding of RDF query (SPARQL) to XMPPHow else can you send queries into home or laptop?Or filter them based on buddylist rules (colleagues, family)?Or allow for query results to arrive hours later?(if you don’t know SPARQL, think of it as SQL-ish query over linked RDF databases)
Jqbus: sending a query<iq id="S3IG2-4" to="alice.notube@example.com/sparqlserver" type="get"> <query xmlns='http://www.w3.org/2005/09/xmpp-sparql-binding'>PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt; SELECT DISTINCT ?o WHERE {?s foaf:name ?o.} </query> </iq> (from bandri@livejournal.com )
Jqbus: a query arrives<iq id="40z5D-4" to="alice.notube@example.com/sparqlserver" from="bandri@livejournal.com/sparqlclient" type="get"> <query xmlns="http://www.w3.org/2005/09/xmpp-sparql-binding"> PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt; SELECT DISTINCT ?o WHERE {?s foaf:name ?o.} </query> </iq>

XMPP, TV and the Semantic Web

  • 1.
    XMPP, TV andthe Semantic WebOr ‘how I got to work on something that wasn’t entirely about RDF for a change…’“This will be a very informal and very short talk tointroduce The XMPP (Jabber) internet protocol and some potentialimpact it has for TV and Semantic Web applications."Dan Brickley – VU WAI talk, Feb 1st 2010
  • 2.
    Extensible Messaging andPresence Protocol (XMPP)Open standard for Instant Messaging (IM) chatAlternative to vendor-specific closed networksBuilt opensource-style, then ratified at IETFHow it works:userid@my.example.com ‘JIDs’Neverending 2-way conversation via serversXML ‘stanzas’ – e.g. chat or info/query messagesServers can be federated (eg. Google Talk) or standalone (eg. Hyves.nl)
  • 3.
    XMPP in anutshell… Developed and deployed for 10+ years
  • 4.
    XML-based protocolfor IM (chat, buddylists, real time messaging)
  • 5.
    Almost entirelyunlike SOAP and IRC (but a bit like both)
  • 6.
    Used inproducts from Google, Apple and tools like GAIM/Pidgin
  • 7.
    Healthy rangeof toolkits – servers, clients and libraries
  • 8.
    All Googleaccounts; all Hyves accounts, …
  • 9.
    Bewildering andimpressive range of extensions (XEPs), e.g.
  • 10.
    XEP-0166: Jingle, ‘peer-to-peermedia sessions’ (e.g. Google Talk)
  • 11.
  • 12.
    XEP-0174: LocalLAN dns-based discovery and point-to-point links
  • 13.
    XEP-0059: ResultSet management
  • 14.
  • 15.
  • 16.
  • 17.
    many more…Whycare? XMPP can go where HTTP doesn’t bots, scripts and services can act for their human usersXMPP’s ‘social graph’ interconnect sites (like email and FOAF, and unlike closed and proprietary ‘social networks’)Friendly and energetic developer communitySave your time for inventing new things
  • 18.
    What does itlook like?Two experimental uses:JqbusSPARQL experiments (FOAF project)‘NoTube Network’ ideas for TV remotes (NoTube EU)Jqbus showed an experimental binding of RDF query (SPARQL) to XMPPHow else can you send queries into home or laptop?Or filter them based on buddylist rules (colleagues, family)?Or allow for query results to arrive hours later?(if you don’t know SPARQL, think of it as SQL-ish query over linked RDF databases)
  • 19.
    Jqbus: sending aquery<iq id="S3IG2-4" to="alice.notube@example.com/sparqlserver" type="get"> <query xmlns='http://www.w3.org/2005/09/xmpp-sparql-binding'>PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt; SELECT DISTINCT ?o WHERE {?s foaf:name ?o.} </query> </iq> (from bandri@livejournal.com )
  • 20.
    Jqbus: a queryarrives<iq id="40z5D-4" to="alice.notube@example.com/sparqlserver" from="bandri@livejournal.com/sparqlclient" type="get"> <query xmlns="http://www.w3.org/2005/09/xmpp-sparql-binding"> PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt; SELECT DISTINCT ?o WHERE {?s foaf:name ?o.} </query> </iq>
  • 21.
    A response issent…<iq id="40z5D-4" to="bandri@livejournal.com/sparqlclient" from="alice.notube@example.com/sparqlserver" type="result"> <query-result xmlns="http://www.w3.org/2005/09/xmpp-sparql-binding"><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#"> <head><variable name="o"/> </head> <results> <result> <binding name="o"> <literal>Libby Miller</literal> </binding> </result> <result> <binding name="o"> <literal>Tim Berners-Lee</literal> </binding> </result> <!-- ... more bindings here --> </results> </sparql> </query-result> </iq>
  • 22.
    …and is received.Messagescan be directed or generalEg: to danbrickley@gmail.com or todanbrickley@gmail.com/photo_databaseCan be real-time or delayedHave practical limits on message sizeThese SPARQL bindings should be redoneJingle specs help with bulky data and direct links
  • 23.
    Eg. 2: “Buttons”(NoTube Network)Work-in-progress ‘smart remote control’ protocolXMPP as controlled route thru NAT/firewallAttached to desktop ‘media centre’ software:Boxee / XBMC / Plex (TV-like full screen media)MythTV (linux-based PVR, uses DVB-T USB for TV)EyeTV (applescript-able OSX tool, also DVB-T)MediaPortal (Opensource C# software)Windows Media Centre (with .NET SDK)Itunes (applescript-able on OSX)
  • 24.
    What do theseall have in common?A lot but not enough: chaos of different media-centre APIs and schemasRemotes tend to be dumb: sending clicks not commands, and no return-path for data…APIs allow basic navigation, play/pause, screenshot, EPG access, but via local PC or LANCan diverse media centres share an API?Can we expose it over XMPP? Use it from smartphones? Multi-touch tables?
  • 27.
    A remote controlwith a buddylist?<iq to="alice.notube@gmail.com/0AEDD375" type="result"><query xmlns="jabber:iq:roster"><item jid="bob.notube@gmail.com" subscription="both”><item jid="buttons@foaf.tv" subscription="both"/><item jid="danbrickley@gmail.com" subscription="both”><item jid="libby.miller@gmail.com" subscription="both"/><item jid="yves.example @gmail.com" subscription="both"/></query></iq>
  • 28.
    Maybe.Prototyped at theplay/pause/ffwd levelWith Strophe.js and BOSH, can do HTML5 too!Can control Boxee and MythTV via XMPPSample client running on iphoneServer attached to xmpp:buttons@foaf.tvRemote attached to xmpp:bob.notube@gmail.comVery often super-fast; sometimes awkwardly slowCan we drop down from server-mediated comms?
  • 29.
    Maybe.XEP-0174 defines localnetwork discoveryAnd point-to-point XMPP comms (ie. not via gtalk!)As used in Apple’s Bonjour iChat local chatThe Jingle specs also relevant hereOther tricks for faster UI?Iphone motion sensor – if it’s moving, send a pingDesign a protocol that sends commands not clicksBut beware downloading megabytes of EPG TV data
  • 30.
    Service Discovery Webservice discovery for real?Which of my buddys have VOIP support? Video?Which have RDF databases online?Or a TV / media centre connected?Which are on same LAN as me?How do we manage permissions for all this?
  • 31.
    Presence and capabilities<presencefrom=”example.buddy@gmail.com/BitlBee82551989" to="alice.notube@gmail.com/0AEDD375"> […] </presence><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"/>
  • 32.
    SummaryXMPP – thebasics just workLots of libraries / toolsHelpful, friendly communityFocal point for problem-sharingTread carefullyNavigating the maze of interesting extensionsGuessing which toolkit to bet on for your needsLearning the landscape and what to rely on
  • 33.
    Questions?Or to danbri@few.vu.nlMythTV/ iChat demo: Libby MillerDraft iPhone graphics: Vicky BuserNoTube project: www.notube.tv