<?xml version="1.0"?>

<!DOCTYPE rdf:RDF [
  <!ENTITY xsd   "http://www.w3.org/2001/XMLSchema#">
  <!ENTITY foaf  "http://xmlns.com/foaf/0.1/">
  <!ENTITY relx  "http://www.dicom.uninsubria.it/dawsec/vocs/relx#">
]>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
         xmlns:owl="http://www.w3.org/2002/07/owl#"
         xmlns:xsd="&xsd;"
         xmlns:foaf="&foaf;"
         xmlns="&relx;"
         xmlns:base="&relx;"
         xmlns:relx="&relx;">

  <owl:Ontology rdf:about="&relx;">
    <owl:versionInfo>v0.1</owl:versionInfo>
    <rdfs:label xml:lang="en">The REL-X Vocabulary</rdfs:label>
    <rdfs:comment xml:lang="en">REL-X: A vocabulary for expressing relationships and trust levels between people in a social network.</rdfs:comment>
  </owl:Ontology>

<!-- Classes -->

  <owl:Class rdf:ID="RelType">
    <rdfs:label xml:lang="en">A Relationship Type</rdfs:label>
    <rdfs:comment xml:lang="en">The type of a relationship</rdfs:comment>
    <rdfs:isDefinedBy rdf:resource="&relx;"/>
  </owl:Class>

  <owl:Class rdf:ID="Relationship">
    <rdfs:label xml:lang="en">A Relationship</rdfs:label>
    <rdfs:comment xml:lang="en">A relationship existing between two &amp;foaf;Agents.</rdfs:comment>
    <rdfs:isDefinedBy rdf:resource="&relx;"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#initNode" />
        <owl:cardinality>1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#termNode" />
        <owl:cardinality>1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#type" />
        <owl:maxCardinality>1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#depth" />
        <owl:cardinality>1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#trustLevel" />
        <owl:maxCardinality>1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

<!-- Relationship properties -->

  <owl:ObjectProperty rdf:ID="hasMember">
    <rdfs:label xml:lang="en">Has Member</rdfs:label>
    <rdfs:comment xml:lang="en">One of the two &amp;foaf;Agent's who are members of a relationship.</rdfs:comment>
    <rdfs:domain rdf:resource="#Relationship" />
    <rdfs:range  rdf:resource="&foaf;Agent" />
    <rdfs:isDefinedBy rdf:resource="&relx;"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="initNode">
    <rdfs:label xml:lang="en">Initial Node</rdfs:label>
    <rdfs:comment xml:lang="en">The &amp;foaf;Agent who specified a relationship.</rdfs:comment>
    <rdfs:subPropertyOf rdf:resource="#hasMember" />
    <rdfs:isDefinedBy rdf:resource="&relx;"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="termNode">
    <rdfs:label xml:lang="en">Terminal Node</rdfs:label>
    <rdfs:comment xml:lang="en">The &amp;foaf;Agent beneficiary of a relationship.</rdfs:comment>
    <rdfs:subPropertyOf rdf:resource="#hasMember" />
    <rdfs:isDefinedBy rdf:resource="&relx;"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="type">
    <rdfs:label xml:lang="en">Relationship Type</rdfs:label>
    <rdfs:comment xml:lang="en">The type of a relationship.</rdfs:comment>
    <rdfs:domain rdf:resource="#Relationship" />
    <rdfs:range  rdf:resource="#RelType" />
    <rdfs:isDefinedBy rdf:resource="&relx;"/>
  </owl:ObjectProperty>

  <owl:DatatypeProperty rdf:ID="depth">
    <rdfs:label xml:lang="en">Relationship Depth</rdfs:label>
    <rdfs:comment xml:lang="en">The depth of a relationship (i.e., the distance between the nodes participating in it).</rdfs:comment>
    <rdfs:domain rdf:resource="#Relationship" />
    <rdfs:range  rdf:resource="&xsd;nonNegativeInteger" />
    <rdfs:isDefinedBy rdf:resource="&relx;"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="trustLevel">
    <rdfs:label xml:lang="en">Relationship Trust Level</rdfs:label>
    <rdfs:comment xml:lang="en">The trust level of a relationship.</rdfs:comment>
    <rdfs:domain rdf:resource="#Relationship" />
    <rdfs:range  rdf:resource="&xsd;decimal" />
    <rdfs:isDefinedBy rdf:resource="&relx;"/>
  </owl:DatatypeProperty>

<!-- "Can Access" property -->

  <owl:ObjectProperty rdf:ID="canAccess">
    <rdfs:label xml:lang="en">Can Access</rdfs:label>
    <rdfs:comment xml:lang="en">The property denoting an authorized &amp;foaf;Agent and the corresponding resource.</rdfs:comment>
    <rdfs:domain rdf:resource="&foaf;Agent" />
    <rdfs:range  rdf:resource="&foaf;Document" />
    <rdfs:isDefinedBy rdf:resource="&relx;"/>
  </owl:ObjectProperty>

<!-- Relationship types, derived from the FOAF and RELATIONSHIP vocabularies -->

  <RelType rdf:ID="Knows">
    <rdfs:label xml:lang="en">Knows</rdfs:label>
    <rdfs:comment xml:lang="en">A person known by this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="FriendOf">
    <rdfs:label xml:lang="en">Friend Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who shares mutual friendship with this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="AcquaintanceOf">
    <rdfs:label xml:lang="en">Acquaintance Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person having more than slight or superficial knowledge of this person but short of friendship.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="ParentOf">
    <rdfs:label xml:lang="en">Parent Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who has given birth to or nurtured and raised this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="SiblingOf">
    <rdfs:label xml:lang="en">Sibling Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person having one or both parents in common with this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="ChildOf">
    <rdfs:label xml:lang="en">Child Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who was given birth to or nurtured and raised by this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="GrandchildOf">
    <rdfs:label xml:lang="en">Grandchild Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who is a child of any of this person's children.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="SpouseOf">
    <rdfs:label xml:lang="en">Spouse Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who is married to this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="EnemyOf">
    <rdfs:label xml:lang="en">Enemy Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person towards whom this person feels hatred, intends injury to, or opposes the interests of.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="AntagonistOf">
    <rdfs:label xml:lang="en">Antagonist Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who opposes and contends against this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="AmbivalentOf">
    <rdfs:label xml:lang="en">Ambivalent Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person towards whom this person has mixed feelings or emotions.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="LostContactWith">
    <rdfs:label xml:lang="en">Lost Contact With</rdfs:label>
    <rdfs:comment xml:lang="en">A person who was once known by this person but has subsequently become uncontactable.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="KnowsOf">
    <rdfs:label xml:lang="en">Knows Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who has come to be known to this person through their actions or position.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="WouldLikeToKnow">
    <rdfs:label xml:lang="en">Would Like to Know</rdfs:label>
    <rdfs:comment xml:lang="en">A person whom this person would desire to know more closely.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="KnowsInPassing">
    <rdfs:label xml:lang="en">Knows In Passing</rdfs:label>
    <rdfs:comment xml:lang="en">A person whom this person has slight or superficial knowledge of.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="KnowsByReputation">
    <rdfs:label xml:lang="en">Knows By Reputation</rdfs:label>
    <rdfs:comment xml:lang="en">A person known by this person primarily for a particular action, position or field of endeavour.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="CloseFriendOf">
    <rdfs:label xml:lang="en">Close Friend Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who shares a close mutual friendship with this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="HasMet">
    <rdfs:label xml:lang="en">Has Met</rdfs:label>
    <rdfs:comment xml:lang="en">A person who has met this person whether in passing or longer.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="WorksWith">
    <rdfs:label xml:lang="en">Works With</rdfs:label>
    <rdfs:comment xml:lang="en">A person who works for the same employer as this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="ColleagueOf">
    <rdfs:label xml:lang="en">Colleague Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who is a member of the same profession as this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="CollaboratesWith">
    <rdfs:label xml:lang="en">Collaborates With</rdfs:label>
    <rdfs:comment xml:lang="en">A person who works towards a common goal with this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="EmployerOf">
    <rdfs:label xml:lang="en">Employer Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who engages the services of this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="EmployedBy">
    <rdfs:label xml:lang="en">Employed By</rdfs:label>
    <rdfs:comment xml:lang="en">A person for whom this person's services have been engaged.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="MentorOf">
    <rdfs:label xml:lang="en">Mentor Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who serves as a trusted counselor or teacher to this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="ApprenticeTo">
    <rdfs:label xml:lang="en">Apprentice To</rdfs:label>
    <rdfs:comment xml:lang="en">A person to whom this person serves as a trusted counselor or teacher.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="LivesWith">
    <rdfs:label xml:lang="en">Lives With</rdfs:label>
    <rdfs:comment xml:lang="en">A person who shares a residence with this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="NeighborOf">
    <rdfs:label xml:lang="en">Neighbor Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who lives in the same locality as this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="GrandparentOf">
    <rdfs:label xml:lang="en">Grandparent Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who is the parent of any of this person's parents.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="LifePartnerOf">
    <rdfs:label xml:lang="en">Life Partner Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who has made a long-term commitment to this person's.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="EngagedTo">
    <rdfs:label xml:lang="en">Engaged To</rdfs:label>
    <rdfs:comment xml:lang="en">A person to whom this person is betrothed.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="AncestorOf">
    <rdfs:label xml:lang="en">Ancestor Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person who is a descendant of this person.</rdfs:comment>
  </RelType>
  <RelType rdf:ID="DescendantOf">
    <rdfs:label xml:lang="en">Descendant Of</rdfs:label>
    <rdfs:comment xml:lang="en">A person from whom this person is descended.</rdfs:comment>
  </RelType>

</rdf:RDF>
