FOAF (acronimo di friend of a friend - Amico di un amico) è un'ontologia comprensibile dal computer atta a descrivere persone, con le loro attività e le relazioni con altre persone e oggetti. Chiunque può usare FOAF per descriversi. FOAF permette a gruppi di persone di descrivere quel fenomeno noto come social network senza la necessità di un database centralizzato.
FOAF è un vocabolario descrittivo espresso in Resource Description Framework (RDF) ed è definita usando Web Ontology Language (OWL). I computer possono usare FOAF, ad esempio, per cercare tutte le persone che vivono in Europa, o tutte le persone che hanno un tuo amico in comune[1][2], questo appunto perché permette di definire le relazioni tra persone. Ogni profilo ha un identificativo univoco (come ad esempio l'indirizzo email, l'URI dell'homepage o del blog della persona) che viene utilizzato quando definisci queste relazioni.
Il progetto FOAF, che definisce ed estende il vocabolario di un profilo FOAF, è iniziato nel 2000 ad opera di Libby Miller e Dan Brickley. Può essere considerata la prima applicazione Social Semantic Web in quanto combina la tecnologia RDF con quello che riguarda il 'Social Web'.
Tim Berners-Lee in saggio del 2007[3] (leggi un recente articolo), ridefinisce il concetto di web semantico in qualcosa che lui chiama Giant Global Graph (Grafo Gigante Globale), dove le relazioni trascendono reti e documenti. Egli considera il GGG al pari di Internet e del World Wide Web, affermando che "io esprimo la mia rete in un file FOAF, e questo è l'inizio della rivoluzione".
(precedentemente noto come FOAF+SSL[4]) è un protocollo di autenticazione sicura decentralizzato che utilizza le informazioni del profilo FOAF allo stesso modo di SSL security layer virtualmente disponibile in tutti i browser web moderni. È stato presentato per la prima volta[5][6] per il W3C Workshop 'the Future of Social Networking' nel 2009. Contrariamente al modello di utilizzo usuale di SSL, questo non richiede[7] il Certificate authority dedicato per effettuare l'autenticazione dell'utente. Le identità utili possono essere coniate per gli utenti facilmente dalle autorità, ma un web of trust FOAF-based collega tutte le attività degli utenti nel World Wide Web cosicché può essere instaurato gradualmente in seguito, senza una formale key signing parties, per rendere l'identità più affidabile e difficile da forgiare per chiunque (anche l'originale autorità di emissione).[8]
Sebbene sia relativamente semplice use-case e standard, FOAF ha avuto una limitata adozione nel web. Per esempio, i blog dei siti Live Journal e il DeadJournal supportano i profili FOAF per tutti i membri,[9] la community My Opera supporta i profili FOAF per i membri tanto quanto per i gruppi, il supporto a FOAF è presente sui servizi di Identi.ca, FriendFeed, WordPress e TypePad.[10] La piattaforma di blog search Yandex supporta[11] la ricerca di informazione sui profili FOAF. Un eccellente supporto client-side a FOAF è disponibile in Safari[12] web browser, nel Semantic Radar[13] plugin per Firefox browser, e nel RDF Detective[14] plugin per Google Chrome browser.
Ci sono anche moduli o plugin per il supporto ai profili FOAF o all'autenticazione FOAF+SSL per i linguaggi di programmazione,[15][16] tanto quanto per i CMS (content management systems).[17]
Il seguente profilo FOAF (scritto in formato XML) parla di Jimmy Wales, il suo indirizzo e-mail, la sua homepage e la sua fotografia sono delle risorse. Lui ha interesse in Wikipedia e conosce Angela Beesley (che è il nome della risorsa 'Persona').
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<foaf:Person rdf:about="#JW">
<foaf:name>Jimmy Wales</foaf:name>
<foaf:mbox rdf:resource="mailto:jwales@bomis.com" />
<foaf:homepage rdf:resource="http://www.jimmywales.com/" />
<foaf:nick>Jimbo</foaf:nick>
<foaf:depiction rdf:resource="http://www.jimmywales.com/aus_img_small.jpg" />
<foaf:interest>
<rdf:Description rdf:about="http://www.wikimedia.org" rdfs:label="Wikipedia" />
</foaf:interest>
<foaf:knows>
<foaf:Person>
<foaf:name>Angela Beesley</foaf:name>
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>
E di seguito lo stesso esempio nel formato Turtle:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
<#JW>
a foaf:Person ;
foaf:name "Jimmy Wales" ;
foaf:mbox <mailto:jwales@bomis.com> ;
foaf:homepage <http://www.jimmywales.com/> ;
foaf:nick "Jimbo" ;
foaf:depiction <http://www.jimmywales.com/aus_img_small.jpg> ;
foaf:interest <http://www.wikimedia.org> ;
foaf:knows [
a foaf:Person ;
foaf:name "Angela Beesley"
] .
<http://www.wikimedia.org>
rdfs:label "Wikimedia" .