Suppose an addressbook is stored using VCARD repository at a base URI $b.
The book itself has uri $b/book.ttl#this
A group with cleaned-up name (spaces converted to _ and multiple __ reduced to one) $n has URI $b/Group/$n/index.ttl#this
A person with UUID $u (was: truncated UUID) has URI $b/Person/$u/index.ttl#this
A mugshot person with UUID $u has URI $b/Person/$u/image.png
The group membership triple is stored in the group file but not in the person file. (Design choice: this is so that you can publish someone's details without revealing which groups they are in. This could be varied under other social contraints.)
When there is no known webid for a person, then in the group file we have just a simple membership triple using their id $b/Person/$u/index.ttl#this.<#this> vcard:hasMember <../Person/$u/index.ttl#this> .When there IS a known webid $w, then that instead is used in the membership triple, and the internal ID for the person is equated to the webid.
<#this> vcard:hasMember <$w> . <$w> = <../Person/$u/index.ttl#this> .Note that the owl:sameAs triple can be either way around, as = is commutative.
<#this> vcard:hasMember <$w> <../Person/$u/index.ttl#this> = <$w> .
The group file contains a declation that the group is of type vcard:Group, and the vcard:fn (name) of the group is in BOTH the group file and the group index.
A index file $b/people.ttl contains copies of the vcard:fn and email triples so that just by loading that one can do the very common task of autocompletion user input for names and emails.
A index file $b/groups.ttl contains copies of the vcard:fn of the groups so that just by loading that one can do the very common autocompletion user input for names and emails.
These two files can be found from the book itself.
<#this> vcard:nameEmailIndex <people.ttl>; vcard:fn "Bob's Address Book"; vcard:groupIndex <groups.ttl>.
@prefix vcard: <http://www.w3.org/2006/vcard/ns#>. @prefix ab: <http://www.w3.org/ns/pim/ab#>. # For mac-specific stuff @prefix dc: <http://purl.org/dc/elements/1.1/>. @prefix xsd: <http://www.w3.org/2001/XMLSchema#>. <#this> a vcard:Individual; vcard:fn "Test Person"; vcard:hasName [vcard:given-name "Test"; vcard:family-name "Person"; ]; vcard:organization-name "mit"; vcard:url [ a vcard:webid; vcard:value <http://example.org/foobar>], [ a vcard:FOAF; vcard:value <http://example.org/test>]; ab:ABPersonFlags 0; vcard:hasUID <urn:uuid:82464976-2F1F-457F-9EB1-BFADC309EA8D:ABPerson>; dc:created "2015-11-10T18:25:06+0000"^^xsd:dateTime; dc:modified "2015-11-10T18:26:14+0000"^^xsd:dateTime.