Graphic1

FOAFRealm Ontology Specification

Specification Document - 18 June 2008

Last update:
$Date: 2008/06/18 12:45:41 $
Revision:
Authors:
Lukasz Korczynski (Editor) - DERI
Sławomir Grzonkowski (Editor) - DERI
Sebastian Ryszard Kruk - DERI
Adam Gzella - DERI
Tomasz Woroniecki - DERI

Creative Commons LicenseThis work is licensed under a Creative Commons License. This copyright applies to the FOAFRealm Ontology Specification and accompanying documentation and does not apply to FOAFRealm data formats, ontology terms, or technology. Regarding underlying technology, FOAFRealm relies heavily on W3C's RDF technology, an open Web standard that can be freely used by anyone.
This visual layout and structure of the specification was adapted from the FOAF Vocabulary Specification by Dan Brickley and Libby Miller as well as SIOC Vocabulary Specification by Uldis Bojars and John G. Breslin.


Abstract

Proposed FOAFRealm (Friend-of-a-Friend Realm) system allows to take advantage of social networks and FOAF profiles in user profile management systems. However, the FOAF standard must be enriched with new concepts and properties that are described in this document. The enriched version is called FOAFRealm.


Status of This Document

NOTE: This section describes the status of this document at the time of its publication. Other documents may supersede this document.

This specification is an evolving document. This document is generated by combining a machine-readable FOAFRealm ontology expressed in RDF/XML with a specification template and a set of per-term documents.

Authors welcome suggestions on the FOAFRealm ontology and this document. Please send comments to the FOAFRealm developers list; public archives are available. This document may be updated or added to based on implementation experience, but no commitment is made by the authors regarding future updates.

Table of Contents


Introduction

Social networking, instant messaging, Peer-to-Peer technologies have become standard internet applications; systems which use those technologies require authorizing and controling users'shared resources. Therefore, all developers will benefit of a universal solution that is easy to embed in an existing web-project.

FOAF is an idea of using RDF in order to describe user's profile and knows relationship within users'community. The knows relationship, however, can be easily adapted to other needs. Why not to use such a social network graph in order to control access to resources or give different weights of votes during negotiations? The main issues is how well we know another person in the network. It would make possible to describe how one can view ie. our photos by specifing the maximum length of the path between us and him or her. Our suggestions in negotiations would gain more points if they were approved by people we know less.

The FOAF's idea of describing graph of knows relations, where everyone specifies people who knows because no one else should be able to modify this information, some issues that must be solved. Firstly, security issues which are very important in the context of web applications. It seams that saying A :knows B is not enough and in the real world we would rather consider this relation in a more precise way like A knows-very-good B. Though it seams that the threshold values should be smoothed as much as it is possible. Moreover, the SHA1 value of password should be provided in order to keep users'emails confidential. The last but not the least is the trust issue - if the information is distributed how can we controll that no one else can ie. add additional knows relations and in that way violate the security constraints imposed by owner of the resource and gain access to it. In order to asure users of profiles'security, we propose extending the FOAF vocabulary with digital signatures. Moreover, privacy issues must be taken into consideration. Not everyone user, for instance, want to reveal email address.

An excellent source of FOAFRealm's information is the project website

Terminology and Notation

The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC 2119].

Namespace URIs of the general form "http://www.example.com/." represents some application-dependent or context-dependent URI as defined in RFC 2396 [RFC 2396].

The XML Namespace URI that MUST be used by implementations of this specification is:

FOAFRealm At A Glance

An alphabetical index of FOAFRealm terms, by class (categories or types) and by property. All the terms are hyperlinked to their detailed description for quick reference.

Classes: Domain, Resource,

Properties: accessibleTo, additionalEmails, additionalMbox_sha1sum, additionalNicks, additionalPhones, additionalPictures, annotates, bio, distributed, follows, friendshipLevel, hideEmail, http://www.foafrealm.org/xfoaf-sscf/0.1/interestLevel, http://www.foafrealm.org/xfoaf-sscf/0.1/interestedIn, isEvaluatedWith, isIn, isIssuedBy, issueDate, jontoClassification, knows_sig, maxResults, minResults, nationality, password_sha1sum, preferedStyle, relationshipLevel, relationshipName, rsa_key, rsa_key_pub, sessionId, timestamp, value, wordNetClassification,

FOAFRealm Overview

How well do I know you

In the real world it is common that some of our friends are closer than the others. In most cases we are able to evaluate our friendships on the base of our hitherto events. Expresing relationships, could be done by means of numeric values of predefinied values. However, Orkut on-line comminity portal, for example, propose additional properties to express the firendship level like "very good friend" or "never-met acquaintance".

Who do I know better?

The idea of the FOAFRealm is to model real world situations in the virtual space. In some cases we would rather share some resources with friends of our friends than our own friends. For example, if we have a very good friend it means that his/her very good friends are better known by us, that some of our friends that we barely know or have never met at all. (see Picture 2.1 - Who is a closer friend ?). That is reason why evaluating the friendship is important.

Picture 2.1 - Who is a closer friend ?

Expressing the friendship value?

Let's assume that the <foaf:knows> represents an average frienship value. There is, however, whole range of friendships from very close (very good friend) to very distant one (person I have never met). Let's now evaluate every friendship from 0% (very distant) to 100% (very close), with 50% represeting average friendship (see Picture 2.2 - How much <foaf:knows> is true ?).
Picture 2.2 - How much <foaf:knows> is true ?

Now we have to attach this information to the <foaf:knows> statement. The most convenient way is to make use of reifications that is to make statements about statement. Picture 2.3 - Reified foaf:knows statement presents how to evaluate the friendship between two people.

Picture 2.3 - Reified foaf:knows statement

Evaluating friendship between two people

To find out if a specified person is allowed to access given resource within defined roles, we have to find the closest distance between the interested people and the highest friendship's level. There are, however, two approaches depending on the goal:


Picture 2.4 - Evaluating the friendship between Person_A and Person_B

Picture 2.4 presents possible solutions depending on a given goal. The shortest way between Person_A and Person_B is a direct connection, but the connection of the highest overall level of friendship is Person_A -> Person_C -> Person_D -> Person_B [47.6%]. If the minimal requirements are 2 connections and level of friendship above 25% the algorithm can end up with path Person_A -> Person_E -> Person_B [28.8%]. In many real situations, constraints on the distance can significantly speed-up the algorithm.

It is really me

Another significant drawback of the FOAF is the lack of the authentication information. The <foaf:mbox> property can be successfully used as a login information although in some situations only the <foaf:mbox_sha1sum> is stored. SHA1 sum of <foaf:mbox> can be easily generated. The result is the value of <foaf:mbox_sha1sum> property. Similarly the password can be treated. The only information stored in model is <xfoaf:passowrd_sha1sum> value which is compared by org.apache.catalina. Realm implementation with SHA1 sum generated from password provided by the user.

Having foaf:knows outside the FOAFRealm model

Within the FOAF-Realm each friendship can be evaluated by two measures: distance and friendship level. But what if we have situation like presented on Picture 2.5 - Having friends from outside the FOAFRealm ontology? There is a lack of information about the level of the friendship relationships outside the FOAF-Realm model. Preparing the model implementation, have to decide either to loose the information about the level of friendship between Person_A and Person_D or to assume fixed friendship value (e.g. 50%).

Picture 2.5 - Having friends from outside the FOAF-Realm ?

Picture 5.1 - Having friends from outside the FOAF-Realm ?

FOAFRealm Ontology Description

This specification serves as the FOAFRealm "namespace document". As such it describes the FOAFRealm ontology and the terms (RDF classes and properties) that constitute it, so that Semantic Web applications can use those terms in a variety of RDF-compatible document formats and applications.

This document presents FOAFRealm as a Semantic Web vocabulary or Ontology. The FOAFRealm ontology is straightforward, pragmatic and designed to allow simultaneous deployment and extension, and is therefore intended for widescale use.

Evolution and Extension

The FOAFRealm ontology is identified by the namespace URI 'http://www.foafrealm.org/xfoaf/0.1/'.

Revisions and extensions of the FOAFRealm are conducted through edits to the namespace document, which by convention is published in the Web at the namespace URI.

The properties and types defined here provide some basic concepts for use in the FOAFRealm descriptions. Other vocabularies (e.g. the Dublin Core metadata elements for simple bibliographic description, FOAF, the SSCF for collaborative filtering, etc.) can also be mixed in with FOAFRealm terms.

Standards

It is important to understand that the FOAFRealm ontology as specified in this document is not a standard in the sense of ISO Standardisation, or that associated with W3C Process.

FOAFRealm depends heavily on W3C's standards work, specifically on XML, XML Namespaces, RDF, and OWL. All FOAFRealm documents must be well-formed RDF/XML documents.

This specification contributes an ontology, "FOAFRealm", to the Semantic Web, specifying it using W3C's Resource Description Framework (RDF). As such, FOAFRealm adopts by reference both a syntax (using XML), a data model (RDF graphs) and a mathematically grounded definition for the rules that underpin the RDF design.

Security Issues in Distributed FOAFRealm

The credibility of the users'profile depends on several aspects. The social network's information security depends on the security of the knows relationship. Therefore, the applied ontology like FOAFRealm has to ensure the consistence and the security of the social network information.

In order to protect the foaf:knows list the standard FOAF metadata has been extended with DSA - [WWW] Digital Signature Algorithm. As a result the FOAF ontology has been enriched with three properties:

<xfoaf:knows_sig>

the signature on the foaf:knows list.

<xfoaf:rsa_key_pub>

user's public key.

<xfoaf:rsa_key>

user's private key.

The signature has to be computed each time the foaf:knows information is changed at one of the FOAFRealm nodes. The registration server is responsible for generating the signature out of the foaf:knows triples list since the private key cannot be revealed outside the registration server.

Each time a system that uses this ontology performs operation that requires foaf:knows information it should check the integrity against the signature attached to each list of foaf:knows triples originating from one of FOAFRealm instances. The public key should be kept at the registration server and provided on demand.

FOAFRealm cross-reference: Classes and Properties

FOAFRealm introduces the following classes and properties.

Class: xfoaf:Domain

URI: http://www.foafrealm.org/xfoaf/0.1/Domain

Domain of interest - Represents a domain of interest linked to the SSCF Directory instances

sub-class-of:
xfoaf:Resource
in-range-of:
http://www.foafrealm.org/xfoaf-sscf/0.1/interestedIn

[back to top]

Class: xfoaf:Resource

URI: http://www.foafrealm.org/xfoaf/0.1/Resource

Resource - Represents an resource within the webapp

sub-class-of:
foaf:Document
in-domain-of:
xfoaf:timestamp
xfoaf:isIn
xfoaf:isEvaluatedWith
xfoaf:accessibleTo
in-range-of:
xfoaf:annotates

[back to top]

Property: xfoaf:accessibleTo

URI: http://www.foafrealm.org/xfoaf/0.1/accessibleTo

ACL - Defines valid FOAFRealm ACL entry (*, ISAFRIENDOF, /F[login@server.domain]distance{,|.}trust/)

Domain:
xfoaf:Resource
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:additionalEmails

URI: http://www.foafrealm.org/xfoaf/0.1/additionalEmails

Additional user email - Describes one of the additional emails

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:additionalMbox_sha1sum

URI: http://www.foafrealm.org/xfoaf/0.1/additionalMbox_sha1sum

sha sum for one of the additiona email - Describing one of the additional phone number

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:additionalNicks

URI: http://www.foafrealm.org/xfoaf/0.1/additionalNicks

Additional user nickname - Describing one of the additional emails

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:additionalPhones

URI: http://www.foafrealm.org/xfoaf/0.1/additionalPhones

Additional user phone number - Describing one of the additional phone number

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:additionalPictures

URI: http://www.foafrealm.org/xfoaf/0.1/additionalPictures

Additional user picture number - Describing one of the additional picture

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:annotates

URI: http://www.foafrealm.org/xfoaf/0.1/annotates

Which resources are being annotated by this one - Defines which resources are being annotated by this one

Domain:
xfoaf:Annotation
Range:
xfoaf:Resource

[back to top]

Property: xfoaf:bio

URI: http://www.foafrealm.org/xfoaf/0.1/bio

Biography/Credentials - Describes some biography/resume/creadential of the person

OWL Type:
InverseFunctionalProperty (uniquely identifying property)
Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2#string

[back to top]

Property: xfoaf:distributed

URI: http://www.foafrealm.org/xfoaf/0.1/distributed

Distributed profile - Identicates if the user profile is stored localy or if is distributed

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#boolean

[back to top]

Property: xfoaf:follows

URI: http://www.foafrealm.org/xfoaf/0.1/follows

The annotations that this annotation follows/responds to - Defines the annotations that this annotations follows/responds to in the conversation

sub-property-of:
xfoaf:annotates
Domain:
xfoaf:Annotation
Range:
xfoaf:Annotation

[back to top]

Property: xfoaf:friendshipLevel

URI: http://www.foafrealm.org/xfoaf/0.1/friendshipLevel

Trust level of the friendship - Reifies the foaf:knows statement to define the trust level between people

Domain:
xfoaf:KnowsStatement
Range:
http://www.w3.org/TR/xmlschema-2#float

[back to top]

Property: xfoaf:hideEmail

URI: http://www.foafrealm.org/xfoaf/0.1/hideEmail

hide the email address - Identicates if the user required to hide his email address during the FOAF export

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#boolean

[back to top]

Property: interestLevel

URI: http://www.foafrealm.org/xfoaf-sscf/0.1/interestLevel

Person's level of interest in given domain - Defines how much given person is interested in given domain

[back to top]

Property: interestedIn

URI: http://www.foafrealm.org/xfoaf-sscf/0.1/interestedIn

Person is interesed in particular Domain of interest - Defines that the diven person is interested in some domain

[back to top]

Property: xfoaf:isEvaluatedWith

URI: http://www.foafrealm.org/xfoaf/0.1/isEvaluatedWith

Which concepts evaluates this resource - Defines the concepts :typeOf Evaluation that evaluates this Resource

Domain:
xfoaf:Resource
Range:
xfoaf:Evaluation

[back to top]

Property: xfoaf:isIn

URI: http://www.foafrealm.org/xfoaf/0.1/isIn

Resource :isIn the directory - Defines the directories that the resource has been placed in

Domain:
xfoaf:Resource
Range:
xfoaf:Directory

[back to top]

Property: xfoaf:isIssuedBy

URI: http://www.foafrealm.org/xfoaf/0.1/isIssuedBy

Who issued this evaluation/annotation - Defines the :Person-s that issued this :Evaluation or :Annotation

Domain:
xfoaf:Annotation
xfoaf:Evaluation
Range:
foaf:Person

[back to top]

Property: xfoaf:issueDate

URI: http://www.foafrealm.org/xfoaf/0.1/issueDate

Date the annotation has been issued - Defines when someone has statted this annotation

Domain:
xfoaf:Annotation
Range:
http://www.w3.org/TR/xmlschema-2#dateTime

[back to top]

Property: xfoaf:jontoClassification

URI: http://www.foafrealm.org/xfoaf/0.1/jontoClassification

JOntoClassification uri of a resource. -

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:knows_sig

URI: http://www.foafrealm.org/xfoaf/0.1/knows_sig

local signature - local signature (done with SHA1SUM and RSA keys) on the foaf:knows and foaf:knows reifications

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:maxResults

URI: http://www.foafrealm.org/xfoaf/0.1/maxResults

Maximal amount of results get by searching - Describes the maximal amount of results that user wants to get in search process.

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#long

[back to top]

Property: xfoaf:minResults

URI: http://www.foafrealm.org/xfoaf/0.1/minResults

Minimal amount of results get by searching - Describes the minimal amount of results that user wants to get in search process.

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#long

[back to top]

Property: xfoaf:nationality

URI: http://www.foafrealm.org/xfoaf/0.1/nationality

Person nationality - Describes person nationality

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:password_sha1sum

URI: http://www.foafrealm.org/xfoaf/0.1/password_sha1sum

password for the account in the FOAFRealm - The property stores SHA1 sum of the password that with the email address stands for credentials of the person loggin in to FOAFRealm enabled service

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:preferedStyle

URI: http://www.foafrealm.org/xfoaf/0.1/preferedStyle

preferedStyle for JeromeDL - preferedStyle for JeromeDL

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:relationshipLevel

URI: http://www.foafrealm.org/xfoaf/0.1/relationshipLevel

Trust level of the relationship - Reifies the foaf:knows statement to define the trust level between people

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:relationshipName

URI: http://www.foafrealm.org/xfoaf/0.1/relationshipName

Relationship name -

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:rsa_key

URI: http://www.foafrealm.org/xfoaf/0.1/rsa_key

private RSA key - not exportable from home server, passphrase locked

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:rsa_key_pub

URI: http://www.foafrealm.org/xfoaf/0.1/rsa_key_pub

public RSA key - exportable to and stored by other servers, together with foaf:seeAlso information

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:sessionId

URI: http://www.foafrealm.org/xfoaf/0.1/sessionId

Session id for SOA leyer - Used to identify logged user

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

Property: xfoaf:timestamp

URI: http://www.foafrealm.org/xfoaf/0.1/timestamp

Indicates latest changes made to the concept - Applications can make use of it to handle caching in distributed environments

Domain:
foaf:Person
xfoaf:Resource
Range:
http://www.w3.org/TR/xmlschema-2#long

[back to top]

Property: xfoaf:value

URI: http://www.foafrealm.org/xfoaf/0.1/value

The value of evaluations of resource - Defines the value given to in this evaluation

Domain:
xfoaf:Evaluation
Range:
http://www.w3.org/TR/xmlschema-2#float

[back to top]

Property: xfoaf:wordNetClassification

URI: http://www.foafrealm.org/xfoaf/0.1/wordNetClassification

WordNet classification of a resource. -

Domain:
foaf:Person
Range:
http://www.w3.org/TR/xmlschema-2/#normalizedString

[back to top]

External Classes and Properties

Classes and properties from other ontologies can be used together with FOAFRealm. During the FOAFRealm ontology design process some external classes and properties were identified that are suitable for reuse. Such concepts are not included inside FOAFRealm but are use directly together with terms from FOAFRealm to describe the information about on-line comunity.

This sections list the main external classes and properties that can be used with FOAFRealm in a meaningful way. This list is not and can not be exhaustive because many RDF ontologies can be used together.

Class: foaf:Person

The FOAFRealm uses this class and extend it with additional properties

Ontology namespaces referenced:

foaf http://xmlns.com/foaf/0.1/ Friend of a Friend (FOAF) Vocabulary

References

Change Log

slawomir d-o-t grzonkowski a-t deri d-o-t org