WebID-based Email Verification in ODS
VERY rough draft doc...
Prerequisites
- Get an ODS account and edit your profile, using one of these tools --
- HTML and Javascript --
http://<cname>/javascript/users/users.html, e.g.: http://id.myopenlink.net/javascript/users/users.html - Virtuoso Server Pages (VSP) --
http://<cname>/vsp/users/users.vsp, e.g: http://id.myopenlink.net/vsp/users/users.vsp - PHP-based server pages --
http://<cname>/php/users/users.php, e.g: http://id.myopenlink.net/php/users/users.php
- HTML and Javascript --
Simple Browser-based demonstration
To verify an email address (i.e., amailto: scheme URI) -- - Go to:
http://id.myopenlink.net/mv/orhttp://ods-qa.openlinksw.com/mv/ - Enter your email address
- Check your mail box for a message that includes a URL to a Resource protected by a WebID-based ACL.
Clicking on the URL results in the creation of a triple in the host data space, associating your WebID with the sha1sum-based hash of the verified email address.
(The Graph IRI is of the form:
http://<data-space-cname>/mv/data/{data-space-generated-hash}.) - Check your results with SPARQL or cURL against
https://<dataspace-cname>/mv/mc.vsp?confirm=<emailHash>
Detailed demonstration, similar to above, using cURL on the command-line
Pass Your Email Address as a URL parameter
-
entry endpoint:
http://<dataspace-cname>/mv/mv.vsp -
parameters:
mbox = <email address>
Example
curl -H "Accept:application/json" -i http://id.myopenlink.net/mv/mv.vsp?mbox={YourEmailAddress}
{"status":"ok", "message":"A confirmation mail was sent, please check your mail box."}
Verify Your Email via a URL to a Resource protected by a WebID-based ACL
-
verification endpoint:
https://<dataspace-cname>/mv/mc.vsp -
parameters:
confirm = <hash-sent-via-email> - authentication: use the PEM file associated with your WebID.
Verification
$ curl -k -H "Accept:application/json, */*;q=0.1" -i -E <local-pem-file>.pem:<password> https://<dataspace-cname>/mv/mc.vsp?confirm=<HashSentInEmail>
{"status":"verified", "document_url":"http://<dataspace-cname>/mv/data/f7fa16ed3c806045faa3109e83b9e3581419fb40"}
-
Graph IRI for data created in data space:
http://<data-space-cname>/mv/data/{data-space-generated-hash}
Access Example
JSON
# curl -i -L -H "Accept: application/json" http://ods-qa.openlinksw.com/mv/data/afacf6b868e6cb36f71d2cecc6d531a26ce1f2ef
HTTP/1.1 303 See Other
Server: Virtuoso/06.02.3130 (Linux) x86_64-generic-linux-glibc25-64 VDB
Connection: close
Content-Type: text/html; charset=UTF-8
Date: Sat, 30 Jul 2011 20:36:16 GMT
Accept-Ranges: bytes
Location: http://ods-qa.openlinksw.com/sparql?query=construct%20%7B%20%3Fs%20%3Fp%20%3Fo%20.%20%3Ft%20%3Ftp%20%3Fto%20.%20%7D%20%20from%20%3Chttp%3A%2F%2Flocalhost%2Fmv%3E%20where%20%7B%20%3Fs%20%3Fp%20%3Fo%20%20.%20%3Fs%20foaf%3AprimaryTopic%20%3Ft%20.%20%3Ft%20%3Ftp%20%3Fto%20.%20filter%20%28%3Fs%20%3D%20%3Chttp%3A%2F%2Fods-qa.openlinksw.com%2Fmv%2Fdata%2Fafacf6b868e6cb36f71d2cecc6d531a26ce1f2ef%3E%20%29%20%7D%20&format=
Content-Length: 0
HTTP/1.1 200 OK
Server: Virtuoso/06.02.3130 (Linux) x86_64-generic-linux-glibc25-64 VDB
Connection: Keep-Alive
Date: Sat, 30 Jul 2011 20:36:16 GMT
Accept-Ranges: bytes
Content-Type: application/json; charset=UTF-8
Content-Length: 413
{
"http://ods-qa.openlinksw.com/dataspace/person/kidehen#this" : { "http://xmlns.com/foaf/0.1/mbox_sha1sum" : [ { "type" : "literal", "value" : "r6z2uGjmyzb3HSzsxtUxomzh8u8=" } ] } ,
"http://ods-qa.openlinksw.com/mv/data/afacf6b868e6cb36f71d2cecc6d531a26ce1f2ef" : { "http://xmlns.com/foaf/0.1/primaryTopic" : [ { "type" : "uri", "value" : "http://ods-qa.openlinksw.com/dataspace/person/kidehen#this" } ] }
}
Microdata+JSON
# curl -i -L -H "Accept: application/json" http://ods-qa.openlinksw.com/mv/data/afacf6b868e6cb36f71d2cecc6d531a26ce1f2ef
HTTP/1.1 303 See Other
Server: Virtuoso/06.02.3130 (Linux) x86_64-generic-linux-glibc25-64 VDB
Connection: close
Content-Type: text/html; charset=UTF-8
Date: Sat, 30 Jul 2011 20:36:16 GMT
Accept-Ranges: bytes
Location: http://ods-qa.openlinksw.com/sparql?query=construct%20%7B%20%3Fs%20%3Fp%20%3Fo%20.%20%3Ft%20%3Ftp%20%3Fto%20.%20%7D%20%20from%20%3Chttp%3A%2F%2Flocalhost%2Fmv%3E%20where%20%7B%20%3Fs%20%3Fp%20%3Fo%20%20.%20%3Fs%20foaf%3AprimaryTopic%20%3Ft%20.%20%3Ft%20%3Ftp%20%3Fto%20.%20filter%20%28%3Fs%20%3D%20%3Chttp%3A%2F%2Fods-qa.openlinksw.com%2Fmv%2Fdata%2Fafacf6b868e6cb36f71d2cecc6d531a26ce1f2ef%3E%20%29%20%7D%20&format=
Content-Length: 0
HTTP/1.1 200 OK
Server: Virtuoso/06.02.3130 (Linux) x86_64-generic-linux-glibc25-64 VDB
Connection: Keep-Alive
Date: Sat, 30 Jul 2011 20:36:16 GMT
Accept-Ranges: bytes
Content-Type: application/json; charset=UTF-8
Content-Length: 413
{
"http://ods-qa.openlinksw.com/dataspace/person/kidehen#this" : { "http://xmlns.com/foaf/0.1/mbox_sha1sum" : [ { "type" : "literal", "value" : "r6z2uGjmyzb3HSzsxtUxomzh8u8=" } ] } ,
"http://ods-qa.openlinksw.com/mv/data/afacf6b868e6cb36f71d2cecc6d531a26ce1f2ef" : { "http://xmlns.com/foaf/0.1/primaryTopic" : [ { "type" : "uri", "value" : "http://ods-qa.openlinksw.com/dataspace/person/kidehen#this" } ] }
}
N3
# curl -i -L -H "Accept: text/n3" http://ods-qa.openlinksw.com/mv/data/afacf6b868e6cb36f71d2cecc6d531a26ce1f2ef HTTP/1.1 303 See Other Server: Virtuoso/06.02.3130 (Linux) x86_64-generic-linux-glibc25-64 VDB Connection: close Content-Type: text/html; charset=UTF-8 Date: Sat, 30 Jul 2011 20:38:06 GMT Accept-Ranges: bytes Location: http://ods-qa.openlinksw.com/sparql?query=construct%20%7B%20%3Fs%20%3Fp%20%3Fo%20.%20%3Ft%20%3Ftp%20%3Fto%20.%20%7D%20%20from%20%3Chttp%3A%2F%2Flocalhost%2Fmv%3E%20where%20%7B%20%3Fs%20%3Fp%20%3Fo%20%20.%20%3Fs%20foaf%3AprimaryTopic%20%3Ft%20.%20%3Ft%20%3Ftp%20%3Fto%20.%20filter%20%28%3Fs%20%3D%20%3Chttp%3A%2F%2Fods-qa.openlinksw.com%2Fmv%2Fdata%2Fafacf6b868e6cb36f71d2cecc6d531a26ce1f2ef%3E%20%29%20%7D%20&format= Content-Length: 0 HTTP/1.1 200 OK Server: Virtuoso/06.02.3130 (Linux) x86_64-generic-linux-glibc25-64 VDB Connection: Keep-Alive Date: Sat, 30 Jul 2011 20:38:06 GMT Accept-Ranges: bytes Content-Type: text/n3; charset=UTF-8 Content-Length: 305 @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix ns1: <http://ods-qa.openlinksw.com/dataspace/person/kidehen#> . ns1:this foaf:mbox_sha1sum "r6z2uGjmyzb3HSzsxtUxomzh8u8=" . @prefix ns2: <http://ods-qa.openlinksw.com/mv/data/> . ns2:afacf6b868e6cb36f71d2cecc6d531a26ce1f2ef foaf:primaryTopic ns1:this
HTML+Microdata
curl -i -L -H "Accept: text/html" http://ods-qa.openlinksw.com/mv/data/afacf6b868e6cb36f71d2cecc6d531a26ce1f2ef
HTTP/1.1 303 See Other
Server: Virtuoso/06.02.3130 (Linux) x86_64-generic-linux-glibc25-64 VDB
Connection: close
Content-Type: text/html; charset=UTF-8
Date: Sat, 30 Jul 2011 20:41:32 GMT
Accept-Ranges: bytes
Location: http://ods-qa.openlinksw.com/sparql?query=construct%20%7B%20%3Fs%20%3Fp%20%3Fo%20.%20%3Ft%20%3Ftp%20%3Fto%20.%20%7D%20%20from%20%3Chttp%3A%2F%2Flocalhost%2Fmv%3E%20where%20%7B%20%3Fs%20%3Fp%20%3Fo%20%20.%20%3Fs%20foaf%3AprimaryTopic%20%3Ft%20.%20%3Ft%20%3Ftp%20%3Fto%20.%20filter%20%28%3Fs%20%3D%20%3Chttp%3A%2F%2Fods-qa.openlinksw.com%2Fmv%2Fdata%2Fafacf6b868e6cb36f71d2cecc6d531a26ce1f2ef%3E%20%29%20%7D%20&format=
Content-Length: 0
HTTP/1.1 200 OK
Server: Virtuoso/06.02.3130 (Linux) x86_64-generic-linux-glibc25-64 VDB
Connection: Keep-Alive
Date: Sat, 30 Jul 2011 20:41:32 GMT
Accept-Ranges: bytes
Content-Type: text/html; charset=UTF-8
Content-Length: 1558
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTML Microdata document</title>
</head>
<body>
<p>This document contains 2 facts in HTML Microdata format.</p>
<p>A generic web browser may not display them properly but the document can be
saved on disk and used by some appropriate program or sent to a third party.
Use "Save As" or "Send To" menu item of the browser; choose "HTML" file type,
not "text file" or "web archive".</p>
<p>The rest of the document may look like garbage for humans or not displayed
by the browser.</p>
<table>
<tr>
<th>Prefix</th>
<th>Namespace IRI</th>
</tr>
<tr>
<td>xsdh</td>
<td>http://www.w3.org/2001/XMLSchema#</td>
</tr>
<tr>
<td>n2</td>
<td>http://ods-qa.openlinksw.com/mv/data/</td>
</tr>
<tr>
<td>n3</td>
<td>http://xmlns.com/foaf/0.1/</td>
</tr>
<tr>
<td>n4</td>
<td>http://ods-qa.openlinksw.com/dataspace/person/kidehen#</td>
</tr>
<tr>
<td>rdf</td>
<td>http://www.w3.org/1999/02/22-rdf-syntax-ns#</td>
</tr>
</table>
<dl itemscope itemid="http://ods-qa.openlinksw.com/dataspace/person/kidehen#this">
<dt>Subject Item</dt>
<dd>n4:this</dd>
<dt>n3:mbox_sha1sum</dt>
<dd>
<span itemprop="http://xmlns.com/foaf/0.1/mbox_sha1sum">r6z2uGjmyzb3HSzsxtUxomzh8u8=</span>
</dd>
</dl>
<dl itemscope itemid="http://ods-qa.openlinksw.com/mv/data/afacf6b868e6cb36f71d2cecc6d531a26ce1f2ef">
<dt>Subject Item</dt>
<dd>n2:afacf6b868e6cb36f71d2cecc6d531a26ce1f2ef</dd>
<dt>n3:primaryTopic</dt>
<dd>
<a itemprop="http://xmlns.com/foaf/0.1/primaryTopic"
href="http://ods-qa.openlinksw.com/dataspace/person/kidehen#this">n4:this</a>
</dd>
</dl>
</body>
</html>
XHTML+RDFa
curl -i -L -H "Accept: application/xhtml+xml" http://ods-qa.openlinksw.com/mv/data/afacf6b868e6cb36f71d2cecc6d531a26ce1f2ef
HTTP/1.1 303 See Other
Server: Virtuoso/06.02.3130 (Linux) x86_64-generic-linux-glibc25-64 VDB
Connection: close
Content-Type: text/html; charset=UTF-8
Date: Sat, 30 Jul 2011 20:44:59 GMT
Accept-Ranges: bytes
Location: http://ods-qa.openlinksw.com/sparql?query=construct%20%7B%20%3Fs%20%3Fp%20%3Fo%20.%20%3Ft%20%3Ftp%20%3Fto%20.%20%7D%20%20from%20%3Chttp%3A%2F%2Flocalhost%2Fmv%3E%20where%20%7B%20%3Fs%20%3Fp%20%3Fo%20%20.%20%3Fs%20foaf%3AprimaryTopic%20%3Ft%20.%20%3Ft%20%3Ftp%20%3Fto%20.%20filter%20%28%3Fs%20%3D%20%3Chttp%3A%2F%2Fods-qa.openlinksw.com%2Fmv%2Fdata%2Fafacf6b868e6cb36f71d2cecc6d531a26ce1f2ef%3E%20%29%20%7D%20&format=
Content-Length: 0
HTTP/1.1 200 OK
Server: Virtuoso/06.02.3130 (Linux) x86_64-generic-linux-glibc25-64 VDB
Connection: Keep-Alive
Date: Sat, 30 Jul 2011 20:44:59 GMT
Accept-Ranges: bytes
Content-Type: application/xhtml+xml; charset=UTF-8
Content-Length: 1159
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsdh="http://www.w3.org/2001/XMLSchema#"
xmlns:n2="http://ods-qa.openlinksw.com/mv/data/"
xmlns:n3="http://xmlns.com/foaf/0.1/"
xmlns:n4="http://ods-qa.openlinksw.com/dataspace/person/kidehen#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<head>
<title>RDFa+XHTML document</title>
</head>
<body>
<p>This document contains 2 facts in XHTML+RDFa format.</p>
<p>A generic web browser may not display them but the document can be saved
on disk and used by some appropriate program or sent to a third party.
Use "Save As" or "Send To" menu item of the browser; choose "HTML" file type,
not "text file" or "web archive".</p>
<p>The rest of the document may look like garbage for humans or not displayed
by the browser.</p>
<div about="[n4:this]">
<div property="n3:mbox_sha1sum">r6z2uGjmyzb3HSzsxtUxomzh8u8=</div>
</div>
<div about="[n2:afacf6b868e6cb36f71d2cecc6d531a26ce1f2ef]">
<div rel="n3:primaryTopic" resource="[n4:this]" />
</div>
</body>
</html>
RDF/XML
curl -i -L -H "Accept: application/rdf+xml" http://ods-qa.openlinksw.com/mv/data/afacf6b868e6cb36f71d2cecc6d531a26ce1f2ef
HTTP/1.1 303 See Other
Server: Virtuoso/06.02.3130 (Linux) x86_64-generic-linux-glibc25-64 VDB
Connection: close
Content-Type: text/html; charset=UTF-8
Date: Sat, 30 Jul 2011 20:56:06 GMT
Accept-Ranges: bytes
Location: http://ods-qa.openlinksw.com/sparql?query=construct%20%7B%20%3Fs%20%3Fp%20%3Fo%20.%20%3Ft%20%3Ftp%20%3Fto%20.%20%7D%20%20from%20%3Chttp%3A%2F%2Flocalhost%2Fmv%3E%20where%20%7B%20%3Fs%20%3Fp%20%3Fo%20%20.%20%3Fs%20foaf%3AprimaryTopic%20%3Ft%20.%20%3Ft%20%3Ftp%20%3Fto%20.%20filter%20%28%3Fs%20%3D%20%3Chttp%3A%2F%2Fods-qa.openlinksw.com%2Fmv%2Fdata%2Fafacf6b868e6cb36f71d2cecc6d531a26ce1f2ef%3E%20%29%20%7D%20&format=
Content-Length: 0
HTTP/1.1 200 OK
Server: Virtuoso/06.02.3130 (Linux) x86_64-generic-linux-glibc25-64 VDB
Connection: Keep-Alive
Date: Sat, 30 Jul 2011 20:56:06 GMT
Accept-Ranges: bytes
Content-Type: application/rdf+xml; charset=UTF-8
Content-Length: 641
<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdf:Description rdf:about="http://ods-qa.openlinksw.com/mv/data/afacf6b868e6cb36f71d2cecc6d531a26ce1f2ef">
<foaf:primaryTopic xmlns:foaf="http://xmlns.com/foaf/0.1/"
rdf:resource="http://ods-qa.openlinksw.com/dataspace/person/kidehen#this"/>
</rdf:Description>
<rdf:Description rdf:about="http://ods-qa.openlinksw.com/dataspace/person/kidehen#this">
<foaf:mbox_sha1sum xmlns:foaf="http://xmlns.com/foaf/0.1/">r6z2uGjmyzb3HSzsxtUxomzh8u8=</foaf:mbox_sha1sum>
</rdf:Description>
</rdf:RDF>
Tagcloud
Category Internal