Addressbook
NB: this currently mainly describes how Solid OS stores data on a Solid Pod.
You can create an addressbook containing persons and groups, by adding triples to RDF documents on your pod.
To create an addressbook, create a document for it, e.g., /address-book/index.ttl
, and add the following triples to that document:
</address-book/index.ttl#this> a vcard:AddressBook .
</address-book/index.ttl#this> dc:title "New address Book" .
</address-book/index.ttl#this> acl:owner </profile/card#me> .
You can create separate documents for the people index and for the groups index, as long as you link to those from the main /address-book/index.ttl
document in the following ways:
</address-book/index.ttl#this> vcard:nameEmailIndex </address-book/peopleIndex.ttl> .
</address-book/index.ttl#this> vcard:groupIndex </address-book/groupIndex.ttl> .
To indicate that a person /johnDoe.ttl
with full name “John Doe” is in addressbook /address-book/index.ttl
, add the following triples:
</johnDoe.ttl#this> vcard:inAddressBook </address-book/index.ttl#this> . # (NB: needs to be in /address-book/peopleIndex.ttl)
</johnDoe.ttl#this> a vcard:Individual .
</johnDoe.ttl#this> vcard:fn "John Doe" .
To indicate that addressbook /address-book/index.ttl
has a group called “Colleagues”, add the following triples:
</address-book/index.ttl#this> vcard:includesGroup </address-book/colleagues.ttl#this> . # (NB: needs to be in /address-book/groupIndex.ttl)
</address-book/colleagues.ttl#this> a vcard:Group .
</address-book/colleagues.ttl#this> vcard:fn "Colleagues" .
To indicate that johnDoe.ttl#this
has a certain WebId’s, Solid OS uses:
</johnDoe.ttl#this>
vcard:url [ a vcard:WebID ; vcard:value <https://johndoe.com/#me> ] ;
vcard:url [ a vcard:WebID ; vcard:value <https://johndoe.org/#me> ] .
To deal with contacts whose WebID changes, add the new one, then remove the old one. Just like how you would deal with a contact who gets a new phone number, basically.
Contacts imported through Prov4ITData
Google People API
Using the Google People API we can transfer our Google contacts.
Please note that this use case can be extended easily to other Google Products.
Using Schema.org
A Google contact can be mapped to a schema:Person
, along with the following properties:
Google contact resource | schema:Person |
---|---|
givenName |
schema:givenName |
familyName |
schema:familyName |
displayName |
schema:alternativeName |
## [Add a friend on Solid](https://taisukef.github.io/solid-addfriend/)
> [!NOTE]
> Requests root access
Uses [custom module](https://github.com/taisukef/solid-addfriend/blob/master/scripts/main.js) writing to `/profile/card`:
```turtle
@prefix c: <https://taisukef.solid.community/profile/card#>.