<docbook><section><title>OdsAddressbookCRUDEndpoint</title><para> </para>
<title>Manipulate my Addressbook data via CRUD RESTful using Addressbook CardDAV Endpoint</title>Manipulate my Addressbook data via CRUD RESTful using Addressbook <ulink url="CardDAV">CardDAV</ulink> Endpoint
<para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2">What?</bridgehead>
 <ulink url="AddressBook">AddressBook</ulink> CRUD (<emphasis>C</emphasis>reate, <emphasis>R</emphasis>ead, <emphasis>U</emphasis>pdate, <emphasis>D</emphasis>elete) Endpoint Service.<bridgehead class="http://www.w3.org/1999/xhtml:h2">Why?</bridgehead>
 Using CRUD RESTful Endpoint service provides an easy way to manage contacts.<bridgehead class="http://www.w3.org/1999/xhtml:h2">How?</bridgehead>
 Knowing an Addressbook CRUD Endpoint Service endpoint URL, one can perform the following activities: <itemizedlist mark="bullet" spacing="compact"><listitem>Copy-paste vCard files containing contacts.
 So once pasted, the system creates the contacts; </listitem>
<listitem>Edit contact(s); </listitem>
<listitem>Update contact(s); </listitem>
<listitem>Delete contact(s); </listitem>
<listitem>Update RDF Data for the Addressbook instance.
 Depending on the instance&#39;s model: <itemizedlist mark="bullet" spacing="compact"><listitem>When model is &quot;Closed&quot;, will be updated the RDF Data for the instance&#39;s private graph: <programlisting>http://cname/dataspace/protected/[name-of-the-instance]
</programlisting></listitem>
<listitem>When model is &quot;Opened&quot;, will be updated the RDF Data for the ODS Dataspace public graph: <programlisting>http://cname/dataspace/[name-of-the-instance]
</programlisting></listitem>
</itemizedlist></listitem>
</itemizedlist><para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3">Example with Addressbook instance that has Member model from type &quot;Closed&quot; and is not set &quot;Visible to public&quot;</bridgehead>
<orderedlist spacing="compact"><listitem>Suppose a user, for ex.
 &quot;demo&quot;, has created Addressbook instance with name &quot;demoAddressBook&quot; and Member model is &quot;Closed&quot;: <figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud1.png" /></figure> </listitem>
<listitem>Mount the Addressbook <ulink url="CardDAV">CardDAV</ulink> Endpoint URL  <ulink url="http://localhost:8890/DAV/home/demo/addressbooks/demoAddressBook/&lt;/code">http://localhost:8890/DAV/home/demo/addressbooks/demoAddressBook/</ulink>&gt; <figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud2.png" /></figure> <figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud3.png" /></figure> <figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud4.png" /></figure> </listitem>
<listitem>Drop a .vcf file, for ex.
 kidehen.vcf into the mapped <ulink url="CardDAV">CardDAV</ulink> Addressbook folder: <programlisting>-- kidehen.vcf
BEGIN:VCARD
VERSION:3.0
REV:2012-01-23T15:30:04-05:00
UID:B12074BC-DB7B-47F5-856E-2DBD08923381-ABSPlugin
NICKNAME:Idehen
FN:Kingsley Idehen
N:Idehen;Kingsley;;
ORG:OpenLink Software
TITLE:CEO
END:VCARD
</programlisting><figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud5.png" /></figure> </listitem>
<listitem>The user demo&#39;s Addressbook Dataspace instance UI now should show under &quot;My Contacts&quot; the new imported contact(s): <figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud6.png" /></figure> </listitem>
<listitem><ulink url="http://ods.openlinksw.com/dataspace/dav/wiki/ODS/ODSGenerateX509Certificate">Generate an X.509 Certificate hosted WebID</ulink> for user &quot;demo&quot; <ulink url="WebID">WebID</ulink>.
</listitem>
<listitem><ulink url="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtAuthFOAFSSLACL">Secure your SPARQL Endpoint via user &quot;demo&quot; WebID</ulink>, for ex.: <programlisting>-- user &quot;demo&quot; WebID:
http://localhost:8890/dataspace/person/demo#this

-- SPARQL-WebID Endpoint:
-- https://localhost:4433/sparql-webid
</programlisting></listitem>
<listitem>Access the SPARQL-<ulink url="WebID">WebID</ulink> Endpoint.
</listitem>
<listitem>When challenged for authentication select the generated from above certificate for user &quot;demo&quot;: <figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud8.png" /></figure> </listitem>
<listitem>The SPARQL-<ulink url="WebID">WebID</ulink> Endpoint UI should be presented: <figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud9.png" /></figure> </listitem>
<listitem>Enter the following query: <programlisting>SELECT * 
FROM &lt;http://localhost:8890/dataspace/protected/demoAddressBook&gt;
WHERE {?s ?p ?o}
</programlisting><figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud10.png" /></figure> </listitem>
<listitem>As result no rows are found.</listitem>
</orderedlist><bridgehead class="http://www.w3.org/1999/xhtml:h3">Example with Addressbook instance that has Member model from type &quot;Opened&quot; and is set &quot;Visible to Public&quot;</bridgehead>
<orderedlist spacing="compact"><listitem>Suppose a user, for ex.
 &quot;demo&quot;, has created Addressbook instance with name &quot;demoAddressBook&quot; and Member model is &quot;Opened&quot; and is set &quot;Visible to Public&quot;.
<figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud12.png" /></figure> </listitem>
<listitem>Mount the Addressbook <ulink url="CardDAV">CardDAV</ulink> Endpoint URL  <ulink url="http://localhost:8890/DAV/home/demo/addressbooks/demoAddressBook/&lt;/code">http://localhost:8890/DAV/home/demo/addressbooks/demoAddressBook/</ulink>&gt; <figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud2.png" /></figure> <figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud3.png" /></figure> <figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud4.png" /></figure> </listitem>
<listitem>Drop a .vcf file, for ex.
 kidehen.vcf into the mapped <ulink url="CardDAV">CardDAV</ulink> Addressbook folder: <programlisting>-- kidehen.vcf
BEGIN:VCARD
VERSION:3.0
REV:2012-01-23T15:30:04-05:00
UID:B12074BC-DB7B-47F5-856E-2DBD08923381-ABSPlugin
NICKNAME:Idehen
FN:Kingsley Idehen
N:Idehen;Kingsley;;
ORG:OpenLink Software
TITLE:CEO
END:VCARD
</programlisting><figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud5.png" /></figure> </listitem>
<listitem>The user demo&#39;s Addressbook Dataspace instance UI now should show under &quot;My Contacts&quot; the new imported contact(s): <figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud6.png" /></figure> </listitem>
<listitem>Access the SPARQL Public Endpoint.
<figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud13.png" /></figure> </listitem>
<listitem>Suppose the inserted from above contact has id=1004.
</listitem>
<listitem>Enter the following query: <programlisting>SELECT * 
FROM &lt;http://localhost:8890/dataspace&gt;
WHERE {&lt;http://localhost:8890/dataspace/demo/addressbook/demoAddressBook/1004&gt; ?p ?o}
</programlisting><figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud14.png" /></figure> </listitem>
<listitem>Click &quot;Run Query&quot;.
</listitem>
<listitem>As result the freshly inserted RDF Data for the contact in question will be displayed: <figure><graphic fileref="OdsAddressbookCRUDEndpoint/abcrud15.png" /></figure></listitem>
</orderedlist><para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2">Related</bridgehead>
<itemizedlist mark="bullet" spacing="compact"><listitem><ulink url="http://ietfreport.isoc.org/idref/draft-ietf-vcarddav-carddav/">CardDAV Specification</ulink> </listitem>
<listitem><ulink url="OdsAddressbook">ODS-Addressbook Dataspace</ulink> </listitem>
</itemizedlist></section></docbook>