covers: data portability, microformats, GRDDL, RDFa, FOAF, SIOC, and vCard
Users are increasingly wanting more and more powerful applications to access their social data - and having that data behind a firewall just won't do in 2008.
The DataPortability.org to the rescue.. Danny Ayer's VideoSeems to soon be based on an OpenID-like model, but has currently evolving structure.
Putting the word out and attracting interest - mostly from developers, and those who see their business model based on providing applications for portable social graphs instead of forcing users to recreate them.
For example...
Except using OpenID to access the file system and transporting data around in JSON...actually, quite similar to SPARQL minus OpenID!
RDF already a perfect file format for data transfer issues!Work needed to be done to integrate OpenID into the Semantic Web stack!
And not enough research and working, running code around on the Web to convince development community that the Semantic Web is the way to go!
ClaimID: Your data is spread throughout the online world...and mostly not under your control
Similar to "browser wars," there now are competing ways to share social graph data on the Internet.
Obviously a W3C-approved Semantic Web compatible standard way of doing this would be ideal.
At first it was released had standardized input and output in Atom, and so could be easily converted to RDF.
But in later versions has more and more become a standardized API not for "widget" applications and not for end-users to control and access their data.
Has accessibility issues as any pure API does.
REST API is still forthcoming but looks very encouraging, possibly have SemWeb serialization!
More and more sites are allowing their social data to be available in microformats...
Microformats are centralized data formats for different types of data, often (nearly) isomorphic to already widely adopted non-Web standards:
VCard (RFC2445):
BEGIN:VCARD SOURCE:http://www.ibiblio.org/hhalpin VERSION:3.0 N;CHARSET=utf-8:Halpin;Harry;Reeves;; ORG;CHARSET=utf-8:University of Edinburgh FN;CHARSET=utf-8:Harry Reeves Halpin ADR;CHARSET=utf-8:;;2 Buccleuch Place;Edinburgh;Scotland;;UK TEL:+44-131-650-4421 END:VCARD
Make your own VCard using this web-form maker!
hCard = vCard in HTML
<table border="1"> <tr><td> <span class="fn n"> <span class="given-name">Harry</span> <span class="additional-name">Reeves</span> <span class="family-name"> Halpin</span> </span></td></tr> <tr><td><span class="tel">+44-131-650-4421</span></td></tr> <div class="adr"> <tr><td><span class="street-address">2 Buccleuch Place</span></td></tr> <tr><td><span class="locality">Edinburgh</span></td></tr> <tr><td><span class="postalcode">EH8 9LW</span></td></tr>
Make your own using hCalendar creator
hCard and other microformats have shared tools, knowledge, process...
XFN, "XHTML Friends Network"
The earliest microformat, used to describe social relationships
relationship category | XFN values |
---|---|
friendship (at most one): |
friend acquaintance contact |
physical: | met |
professional: | co-worker
colleague
|
geographical (at most one): | co-resident
neighbor |
family (at most one): | child
parent
sibling
spouse
kin |
romantic: | muse
crush
date
sweetheart |
identity: | me |
<li class="vcard"><a href="http://www.ihmc.us/users/user.php?UserID=42" class="url fn" rel="met collegue">Pat Hayes</a></li> <li class="vcard"><a href="http://www.w3.org/People/Connolly/" class="url fn" rel="met collegue friend">Dan Connolly</a></li> </ul> rel="met friend">Tom Heath</a></li> <li class="vcard"><a href="http://kmi.open.ac.uk/people/tom/html" class="url fn"
Deployed by quite a few sites, usually in conjunction with hCard
One of the earliest and most popular Semantic Web vocabularies.
My hand-made FOAF is here: http://www.ibiblio.org/hhalpin/foaf.rdf
<rdf:RDF>
<foaf:PersonalProfileDocument rdf:about="http://www.ibiblio.org/hhalpin/foaf.rdf">
<foaf:maker rdf:resource="http://www.ibiblio.org/hhalpin#"/>
<foaf:primaryTopic rdf:resource="http://www.ibiblio.org/hhalpin/"/>
</foaf:PersonalProfileDocument>
<foaf:Person rdf:about="http://www.ibiblio.org/hhalpin#">
<foaf:name>Harry Halpin</foaf:name>
<foaf:title>Mr. </foaf:title>
<foaf:givenname>Harry </foaf:givenname>
<foaf:family_name>Halpin</foaf:family_name>
<foaf:nick>hhalpin</foaf:nick>
<foaf:nick>harry</foaf:nick>
<foaf:nick>hrhalpin</foaf:nick>
<foaf:homepage rdf:resource="http://www.ibiblio.org/hhalpin/index.html"/>
<foaf:weblog rdf:resource="http://www.harryhalpin.blogspot.com/"/>
<foaf:mbox_sha1sum>c5e75a0dd882184416c8680f5c402a261314bb79</foaf:mbox_sha1sum>
<foaf:workplaceHomepage rdf:resource="http://www.inf.ed.ac.uk"/>
−
<foaf:depiction>
−
<foaf:image rdf:about="http://www.ibiblio.org/hhalpin/homepage/images/harrytrain.png">
<foaf:depicts rdf:resource="http://www.ibiblio.org/hhalpin#me"/>
</foaf:image>
</foaf:depiction>
<foaf:gender>male</foaf:gender>
<foaf:schoolHomepage rdf:resource="www.inf.ed.ac.uk"/>
<foaf:phone rdf:resource="tel:(44)-0-131-650-4421"/>
−
<foaf:geekcode>
gcs/gp>go d-- s++,s- a- c++ ul++ p++ L++ E+ W+++ N o-- K- w--- O M- V? PS++ PE-- Y++ PGP++ t+ 5? X++ R+ !tv b+++ DI++ D+ G e+++>e++++$ h* r z+
</foaf:geekcode>
<foaf:jabberID>hhalpin@jabber.org/Gaim</foaf:jabberID>
<foaf:aimChatID>HarryRHalpin</foaf:aimChatID>
−
<foaf:knows>
−
<foaf:Person>
<rdfs:seeAlso rdf:resource="http://dit.unitn.it/~bouquet/foaf.rdf"/>
<foaf:name>Paolo Bouquet</foaf:name>
</foaf:Person>
</foaf:knows>
−
<foaf:knows>
−
<foaf:Person rdf:nodeID="IanDavis">
<foaf:name>Ian Davis</foaf:name>
<foaf:mbox_sha1sum>dd7085aa3616597958f2deb0dc0c483514857082</foaf:mbox_sha1sum>
</foaf:Person>
</foaf:knows>
−
<foaf:knows>
−
<foaf:Person>
<foaf:name>Dan Connolly</foaf:name>
<foaf:mbox_sha1sum>94b6eb0c835f928c5ed565dc3ed1a355ac1b41e5</foaf:mbox_sha1sum>
<rdfs:seeAlso rdf:resource="http://www.w3.org/People/Connolly/home-smart.rdf"/>
<foaf:homepage rdf:resource="http://www.w3.org/People/Connolly/"/>
</foaf:Person>
</foaf:knows>
...
Check out Alexander Passant's marvelous foafmap.net mash-up of FOAF and Google Maps.
They do names a bit differently, with VCard splitting names while FOAF doesn't
Just convert VCard to RDF, as in the new VCard ontology.Some of VCard may be get brought into a future version of FOAF.
hCard can be GRDDL'ed into RDF as well. http://www.w3.org/2006/vcard/hcard2rdf.xslBatch convert VCard to FOAF at: http://toxi.co.uk/foafgen/
And almost all XFN properties are sub-properties of the more generic foaf:knows, so fixing can be done.
See the XFN GRDDL that converts XFN to FOAF: grokXFNA mapping of VCard, FOAF, and XFN is available in this table.
The main issue is that FOAF uses separate URIs for people than for documentsBrad Fitzpatrick over at Google is working on using the hCard and XFN microformats to create and track identities.
Contact Finder follows relationships and indexes whose linked to whom...
See Plaxo's open source Social Graph code.
She doesn't trust the wisdom of crowds. He trusts:
A hotel with a ranking of 5 reviewed by a trusted friend:
rating | name | region | homepage | hotelname |
---|---|---|---|---|
5 | PeterS | Edinburgh | http://peter.example.org | Witch's Caldron Hotel, Edinburgh |
"How did you do that?"
<#p> foaf:name "PeterS"; <#p> foaf:homepage <http://peter.example.org>.
Note the relationship to HTML links, especially with the re-discovery of the rel attribute.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. @prefix foaf: <http://xmlns.com/foaf/0.1/>. @prefix rev: <http://www.purl.org/stuff/rev#>. @prefix vcard: <http://www.w3.org/2006/vcard/ns#>. @prefix xfn: <http://gmpg.org/xfn/11#>. _:hotel vcard:adr [ vcard:locality "Amsterdam" ]; rev:hasReview [ rev:rating 5; rev:reviewer _:who; rdfs:label "Witch's Caldron Hotel, Edinburgh" ]. <jane> xfn:friend _:who. _:who foaf:name "PeterS"; foaf:homepage < http://peter.example.org>.
GRDDL (Gleaning Resource Descriptions from Dialects of Languages) is a way to boostrap RDF out of XML and in particular XHTML data by explicitly linking transformations from RDF to XML.
GRDDL terminology:
One problem with GRDDL is that it only works with HTML...
However, you can use tidy or tagsoup parser to automatically convert HTML to XHTML.
HTML 5 will include an standardized XML serialization of HTML (XHTML 5) that then lets us use GRDDL - see html5lib
.Note that HTML 5 may deprecate the profile
attribute used by GRDDL, in which case we can update GRDDL to use just just the typed Link
attributes.
Also note that HTTP is likely adding in a Link
header back into HTTP, so that GRDDL can be added to pages without touching the HTML.
Recall Jane needs to her list of trusted sources in some machine readable format.
As long as they can be mapped to RDF, they can be mapped to each other.
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head profile="http://gmpg.org/xfn/11"> <title>Jane's XFN List</title> </head> <body> <h1>Jane's <abbr title="XHTML Friends Network">XFN</abbr> List</h1> <ul class="xoxo"> <li class="vcard"><a href="http://peter.example.org" class="url fn" rel="met collegue friend">Peter Smith</a></li> <li class="vcard"><a href="http://john.example.org" class="url fn" rel="met">John Doe</a></li> <li class="vcard"><a href="http://paul.example.org" class="url fn" rel="met">Paul Revere</a></li> </ul> </body> </html>
* actually, the XFN profile isn't quite GRDDL-happy yet; but the eRDF profile is.
magic* happens here...
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix h: <http://www.w3.org/1999/xhtml> . @prefix xfn: <http://gmpg.org/xfn/11#> . [] foaf:homepage <http://www.w3.org/2001/sw/grddl-wg/doc29/janefriends.html>; xfn:friend [ foaf:homepage <http://peter.example.org> ]; xfn:met [ foaf:homepage <http://peter.example.org> ], [ foaf:homepage <http://john.example.org> ], [ foaf:homepage <http://paul.example.org> ] .
*we'll explain the trick later.
The hReview microformat doesn't have an established profile yet, so the Hotel Review data uses GRDDL directly:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head profile="http://www.w3.org/2003/g/data-view"> <title>Hotel Reviews from Example.com</title> <link rel="transformation" href="http://www.w3.org/2001/sw/grddl-wg/doc29/hreview2rdfxml.xsl"/> </head> <div class="hreview" id="_665"> <div class="item vcard"> <b class="fn org">Witch's Caldron Hotel, Edinburgh</b> <span><span class="rating">5</span> out of 5 stars</span>
PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX c: <http://www.w3.org/2002/12/cal/icaltzd#> SELECT ?name, ?summary, ?when FROM <myFriendsBlogsData> WHERE { ?somebody foaf:name ?name; foaf:mbox ?mbox. ?event c:summary ?summary; c:dtstart ?ymd; c:attendee [ c:calAddress ?mbox ] }.
?name | ?summary | ?when |
---|---|---|
Tantek Çelik | Web 2.0 | 2005-10-05 |
Norm Walsh | XML 2005 | 2005-11-13 |
Dan Connolly | W3C tech plenary | 2006-02-27 |
See SPARQL Query Language for RDF of course.
"Find reviews better than 2 stars and tell me the name of the hotel and the reviewer."
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rev: <http://www.purl.org/stuff/rev#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?name ?rating ?hotelname
FROM <http://www.w3.org/2001/sw/grddl-wg/doc29/review.rdf>
WHERE {
?x rev:hasReview ?review.
?review rev:rating ?rating;
rdfs:label ?hotelname;
rev:reviewer [ foaf:name ?name ].
FILTER (?rating > 2).
}
Details: hotelquery1.rq
The query worked, but it's not precise enough:
name | rating | hotelname |
"PeterS" | 5 | "Enlightenment Amsterdam Hotel" |
"RexR" | 5 | "Pilgrim Hostel" |
"PeterS" | 4 | "Fano Hotel" |
"MaryV" | 5 | "Franklin Hotel, Philadelphia" |
"Simon" | 5 | "Forest Cafe Youth Hostel, Edinburgh" |
"JennyR" | 3 | "Merton Atlanta" |
"JohnD" | 4 | "Walter Scot Hotel, Edinburgh" |
"PeterS" | 5 | "Royal Moon Hotel, Boston" |
"JohnD" | 5 | "Elena Plaza Hotel" |
"PeterS" | 5 | "Witch's Caldron Hotel, Edinburgh" |
"RexR" | 3 | "Bond Plaza Hotel" |
"RexR" | 5 | "McRae Palace, Edinburgh" |
"RexR" | 5 | "Ritchie Centre, Edinburgh" |
"PeterS" | 5 | "Maximus New York Hotel & Towers" |
"Find reviews of hotels in Edinburgh better than 2 stars and tell me the name of the hotel and the reviewer."
SELECT DISTINCT ?name ?rating ?homepage
FROM <hotel-data.rdf>
FROM <janefriends.rdf>
WHERE {
?x rev:hasReview ?review;
vcard:adr [ vcard:locality "Edinburgh" ].
?review rev:rating ?rating;
rdfs:label ?hotelname;
rev:reviewer [ foaf:name ?name ].
FILTER (?rating > 2).
This shows hotels with a rating of 2 stars or higher that are located in Edinburgh, but there might be review spam:
rating | name | hotelname | region |
5 | "RexR" | "Ritchie Centre, Edinburgh" | "Edinburgh" |
5 | "PeterS" | "Witch's Caldron Hotel, Edinburgh" | "Edinburgh" |
5 | "Simon" | "Forest Cafe Youth Hostel, Edinburgh" | "Edinburgh" |
5 | "RexR" | "McRae Palace, Edinburgh" | "Edinburgh" |
4 | "JohnD" | "Walter Scott Hotel, Edinburgh" | "Edinburgh" |
"Find reviews by my friends of hotels in Edinburgh better than 2 stars and tell me the name of the hotel and the reviewer."
PREFIX xfn: <http://gmpg.org/xfn/11#>
SELECT DISTINCT ?rating ?name ?homepage ?hotelname
FROM <review.rdf>
FROM <xfn.rdf>
WHERE {
?place rev:hasReview ?review;
vcard:adr [ vcard:Locality "Edinburgh"].
?review
rdfs:label ?hotelname;
rev:rating ?rating;
rev:reviewer ?reviewer.
FILTER (?rating > 2).
?reviewer foaf:name ?name;
foaf:homepage ?homepage.
[ foaf:homepage <janefriends.html> ]
xfn:friend [ foaf:homepage ?homepage ].
}
Details: hotelquery3.rq
"Find reviews by my friends of hotels in Edinburgh better than 2 stars and tell me the name of the hotel and the reviewer."
Just right:
rating | name | region | homepage | hotelname |
---|---|---|---|---|
5 | PeterS | Edinburgh | http://peter.example.org | Witch's Caldron Hotel, Edinburgh |
When can Jane, David, and Robin meet?
David has chosen to mark up his schedule using Embedded RDF (an alternative to RDFa), a way to use GRDDL to get out RDF from documents.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://purl.org/NET/erdf/profile">
<title>Where Am I</title>
<link rel="schema.cal" href="http://www.w3.org/2002/12/cal#" />
</head>
<body>
<p class="-cal-Vevent" id="tiddlywinks">
From <span class="cal-dtstart" title="2006-10-07">7 October, 2006</span>
to <span class="cal-dtend" title="2006-10-13">12 October, 2006</span>
I will be attending the <span class="cal-summary">National Tiddlywinks
Championship</span> in
<span class="cal-location">Bognor Regis, UK</span>.
</p>
<p class="-cal-Vevent" id="holiday">
Then I'm <span class="cal-summary">on holiday</span> in the
<span class="cal-location">Cayman Islands</span> between
<span class="cal-dtstart" title="2006-11-14">14 November, 2006</span>
and <span class="cal-dtend" title="2007-01-02">1 January, 2007</span>.
</p>
<p class="-cal-Vevent" id="award">
I then visit Scotland on <span class="cal-dtstart" title="2007-01-08">the 8th
January</span> to <span class="cal-summary">pick up a lifetime
achievement award from the world gamers association</span>. This time
the ceremony is in <span class="cal-location">Edinburgh, UK</span>. I'll be
taking the train home on the <span class="cal-dtend" title="2007-01-11">10th</span>.
</p>
</body>
</html>
GRDDL has gone meta!
This allows the HTML profile document to be GRDDL-enabled to link the standard library transformation of <link rel="transformation" href="http://www.w3.org/2003/g/glean-profile" /> and so extract the http://www.w3.org/2003/g/data-view#profileTransformation whose object is the transformation itself.
Embedded RDF has a link to a GRDDL transformation in its profile document.
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head profile="http://www.w3.org/2003/g/data-view"> <title>Embedded RDF HTML Profile</title> <link rel="transformation" href="http://www.w3.org/2003/g/glean-profile" /> </head> <body> <p> <a rel="profileTransformation" href="http://purl.org/NET/erdf/extract-rdf">GRDDL transform</a> </p> </body> </html>
No Transformation Links - just go to the namespace document!
In RDF, OWL, RDF Schema:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dataview="http://www.w3.org/2003/g/data-view#">
<rdf:Description rdf:about="http://www.w3.org/2004/01/rdxh/p3q-ns-example">
<dataview:namespaceTransformation
rdf:resource="http://www.w3.org/2004/01/rdxh/grokP3Q.xsl"/>
</rdf:Description>
</rdf:RDF>
In XML Schema:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http:.../Order-1.0"
targetNamespace="http:.../Order-1.0"
version="1.0"
...
xmlns:data-view="http://www.w3.org/2003/g/data-view#"
data-view:transformation="http://www.w3.org/2003/g/embeddedRDF.xsl" >
<xsd:element name="Order" type="OrderType">
<xsd:annotation
<xsd:documentation>This element is the root element.</xsd:documentation>
</xsd:annotation>
...
<xsd:annotation>
<xsd:appinfo>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="http://www.w3.org/2003/g/po-ex">
<data-view:namespaceTransformation
rdf:resource="grokPO.xsl" />
</rdf:Description>
</rdf:RDF>
</xsd:appinfo>
</xsd:annotation>
...
Is it too much work to ask people to add the transformation and profile to their individual instance data?
Creators or maintainers of vocabularies can also give users of their data the option of having their data transformed into RDF without having to even add any new markup to individual documents
Since once the tranformation has been linked to the profile or namespace document, all the users of the dialect get the added value of RDF for free
In either the namespace document or profile URI there has to be the following RDF property: http://www.w3.org/2003/g/data-view#profileTransformation whose subject is the namespace doc or profile document and whose object is the transformation itself.
While GRDDL has primarily in the wild been used to convert widely deployed microformats to RDF, it can actually be used with the W3C RDFa work item that allows one to "microformat-style" embed arbitary RDF statements in HTML
RDFa is useful because microformats exist as a number of centralized vocabularies, and what if you want to mark-up meta-data in a web-page about a subject there isn't a microformat about?
Since RDFa is still a moving target, we personally recommend people use Embedded RDF for the time being unless they are willing to track the changes in RDFa, but RDFa is more expressive than Embedded RDF (allowing XML Schema datatypes, etc.
This document is licensed under a <a href="http://cc.org/licenses/by/3.0/"> CC License </a> and was written by TimBL.
This document is licensed under a <a href="http://cc.org/licenses/by/3.0/" xmlns:cc="http://cc.org/ns#" rel="cc:license"> CC License </a> and was written by TimBL.
This document ... <div rel="dc:creator" class="foaf:Person" xmlns:dc="http://..." xmlns:foaf="http://..."> and was written by <span property="foaf:nickname"> TimBL </span>. </div>
yields
<> dc:creator [a foaf:Person ; foaf:nickname "TimBL"] .
RDFa for Jane's schedule online
<html xmlns:cal="http://www.w3.org/2002/12/cal/icaltzd#" xmlns:xs="http://www.w3.org/2001/XMLSchema#">
<head profile="http://www.w3.org/2003/g/data-view"> <title>Jane's Blog</title> <link rel="transformation"
href="http://www.w3.org/2001/sw/grddl-wg/td/RDFa2RDFXML.xsl"/> </head> <body> <p about="#event1" class ="cal:Vevent"> <b property="cal:summary">Weekend off in Iona</b>:
<span property="cal:dtstart" content="2006-10-21" datatype="xs:date">Oct 21st</span>
to <span property="cal:dtend" content="2006-10-21" datatype="xs:date">Oct 23rd</span>.
See <a rel="cal:url" href="http://freetime.example.org/">FreeTime.Example.org</a> for
info on <span property="cal:location">Iona, UK</span>.
</p>
<p about="#event2" class ="cal:Vevent">
<b property="cal:summary">Holiday in Ireland</b>:
<span property="cal:dtstart" content="2006-12-23" datatype="xs:date">Dec 23rd</span>
to <span property="cal:dtend" content="2006-12-27" datatype="xs:date">Dec 27th</span>.
See <a rel="cal:url" href="http://vacation.example.org/">Vacation.Example.org</a> for
info on <span property="cal:location">Belfast, Ireland</span>.
</p>
<p><b>New Years!</b> Now it's 2007...</p>
<p about="#event3" class ="cal:Vevent">
<b property="cal:summary">Web Conference</b>:
<span property="cal:dtstart" content="2007-01-08" datatype="xs:date">Jan 8th</span>
to <span property="cal:dtend" content="2007-01-11" datatype="xs:date">Jan 11th</span>.
See <a rel="cal:url" href="http://webconf.example.org/">webconf.example.org</a> for
info on <span property="cal:location">Edinburgh, UK</span>.
</p>
But what about the authentication side of the story?
As easy as encrypting FOAF files? Not quite...OpenID is a way of a user "logging-in once" to a service provider and then having their log-in details be verified by a trusted identity provider.
Your new OpenID username is a globally-unique URI:a href="http://openid.claimid.com/hhalpin">http://openid.claimid.com/hhalpin
ClaimID gave me...so can many others...Sound familiar?
Tim Berners-Lee: "The AWWW says that everything of importance deserves a URI. Go ahead and give yourself a URI. You deserve it!"
<html><head>
<meta http-equiv="X-XRDS-Location" content="http://openid.claimid.com/hhalpin/xrds" />
<link rel="openid.server" href="http://openid.claimid.com/server" />
</head><body>
<p>OpenID identity page for hhalpin</p>
</body></html>
No lock-in into your provider
A user can change their provider - a user can eve use the same URI using delegatation Just put this code in the page that moves my provider from LiveJournal to ClaimID:
<link rel="openid.server"
href="http://www.livejournal.com/openid/server.bml">
<link rel="openid.delegate"
href="http://openid.claimid.com/">
</code>
There is no set way to verify the user's identity in the OpenID specification, although most just use username and password.
Could use client-side SSL certificates, live SMS identification (ala Twittr), other out-of-band information.
An untrusted site redirects a user to their trusted OpenID provider.
Yet this is still basically what Ebay and other sites doAlso, OpenID gives at minimum very little information about you.
Not even your name or whether you are human or not. Just the URI and the fact that a OpenID server trusts it! How to stop phishing?Go use your OpenID (list from LifeWiki
Built in support for desktop applications, mobile devices, set-top boxes, and of course websites.
OAuth prevents it by explicitly asking you if you want to let Facebook grab your details from the provider. While OpenID 2.0 providers (using OpenID Attribute Exchange) may hold general information about you (avatar photo, addresses, phone numbers) that it can with your consent to service providers so users don't have to re-enter profile details, it's not really extensible on a Web-scale or meant to compete with OAuth.Enter FOAF and RDF?
WWW-Authenticate
combined with digital signatures to authorize tokens that let one machine authorize the use of user's data on another server.
Once you verify that someone is trusted (perhaps via OpenID), you can offer them services via handing out keys via OAuth. It's Web Services Redux with a good authentication story!
No reason it can not be used to exchange Semantic Web Data
http://www.ibiblio.org/hhalpin/foaf.rdf
Authorization: OAuth realm="http://openid.claimid.com/hhalpin",
oauth_consumer_key="dpf43f3p2l4k3l03",
oauth_token="nnch734d00sl2jdk",
oauth_signature_method="HMAC-SHA1",
oauth_signature="tR3%2BTy81lMeYAr%2FFid0kMTYa%2FWM%3D",
oauth_timestamp="1191242096",
oauth_nonce="kllo9940pd9333jh",
oauth_version="1.0"
Features an easy to read XML format that is converted to OWL via GRDDL.
Could be combined with OAuth to allow access to groups of resources - the requested URI maybe could be a POWDER document<code> <wdr:iriset> <wdr:includeSchemes>http https</wdr:includeSchemes> <wdr:includeHosts>ibiblio.org</wdr:includeHosts> <wdr:includePathStartsWith>/hhalpin</wdr:includePathStartsWith> <wdr:excludePathEndsWith>.rdf</wdr:excludePathEndsWith> </wdr:iriset> </code>
People want different levels of access and different profiles for different people.
If all your data is stored in RDF, then you could use rules to determine what parts of it you want to release.Different rules for different levels of access.
Data could carry a proof of where it's been generated, where it is supposed to go, and so on.The two questions are:
The first easy-to-use Semantic Web application that integrates these etechnologies to let people manage their social data across real world services are going to make a large splash...
And we are going to try to build one in the next session!Seen is slow, semi-closed, and old-fashioned - surely not the place for hip Web 2.0 developers and entrepreneurs! And we all know standards by committee are a disaster...
The W3C would be useful would to ratify, double-check, and flesh out corner-cases for existing best practices that are already implemented, and kept up with by a small and fast-moving group!
An optimal solution would be, in conjunction with other groups like DataPortability.org, to outline a working technical solution using an Incubator Group, and then the W3C to ratify it through a Working Group.Having a patent in supposed open standard that companies unwittingly implement is an instant business plan for troll.
For examples, see the conflict over XRIs (used in some ideas about data portability!) in the W3C, which led to the development of the W3C's patent policy.Royalty-Free might discourage both large corporations with huge numbers of patents from participating...but social data portability is only going to work if everyone comes to the table honestly and openly.
Allows a much-looser and quicker moving forum than a Working Group for exploratory purposes, allows creation of a Working Group in a year to be sped up!
Can be a front-group inside the W3C to push social data portability work and standards from other groups.A litmus test for companies deciding if they are going to make their work to be royalty-free or not.
Maybe stabilize relevant standards such as FOAF, VCard/OWL, and think through the interface of OpenID with the Semantic Web.
Complements the OpenID story being told by Data-Portability.org and can explore into other stories, such as those based on APIs and XML.Anyone can join as an Invited Expert and completely open - contact me or Harry Halpin.
If a W3C Member - interested in joining or co-sponsoring group's initial take-off?Starting end of February - help us create the charter on a wiki
Time for a break!
Afterwards, guest presentations by Alexander Passant on SIOC and Dan Brickley on the Future of FOAF...And then some hands-on work
For OpenSocial Setup, see tutorial on setting up OpenSocial and a database.
Then let's see Bizer's Page about D2R mappings from databases to RDF