@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix xfn: <xfn#> .

# === Document descriptions =========

<xfn> a owl:Ontology;
    dcterms:title "XFN in RDF: Vocabulary Specification"@en;
    dcterms:description "This is an RDFS and OWL vocabulary for expressing XFN microformat data in RDF. It defines a set of RDF properties that represent different social relationships between two people, like friend, co-worker or sweetheart. The relationship types are originally defined by the XFN microformat."@en;
    dcterms:creator <http://richard.cyganiak.de/foaf.rdf#cygri>;
    rdfs:seeAlso <http://gmpg.org/xfn/11>;
    foaf:page <xfn/guide>;
    dcterms:hasFormat <xfn.n3>;
    dcterms:hasFormat <xfn.rdf>;
    .
<xfn/guide> a foaf:Document;
    dcterms:title "Expressing the XFN microformat in RDF (Guide)";
    dcterms:description "A guide to using this vocabulary.";
    .
<http://gmpg.org/xfn/11> a foaf:Document;
    dcterms:title "XFN 1.1 relationships meta data profile";
    dcterms:description "Defines the XFN microformat.";
    .

# === Term descriptions =========

xfn:mePage a rdf:Property;
    a owl:InverseFunctionalProperty;
    rdfs:label "me page"@en;
    rdfs:comment "A page you are responsible for. Only a single person can be responsible for any one page."@en;
    rdfs:domain owl:Thing;  # Cannot be foaf:Person because we want foaf:homepage to be a subproperty of xfn:mePage to allow IFP smushing between mePage and homepage
    rdfs:range foaf:Document;
    rdfs:subPropertyOf foaf:page;
    rdfs:subPropertyOf dcterms:creator;
    rdfs:isDefinedBy <xfn>;
    .
foaf:homepage rdfs:subPropertyOf xfn:mePage .

xfn:human-relationship-hyperlink a rdf:Property;
    rdfs:label "human relationship hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. There are subproperties for expressing specific social relationships."@en;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:subPropertyOf dcterms:related;
    rdfs:subPropertyOf rdfs:seeAlso;
    rdfs:isDefinedBy <xfn>;
    .
xfn:human-relationship a rdf:Property;
    rdfs:label "human relationship"@en;
    rdfs:comment "A human relationship between two people. There are subproperties for expressing specific social relationships."@en;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .
foaf:knows rdfs:subPropertyOf xfn:human-relationship .

# Someone you know how to get in touch with. Often symmetric.
xfn:contact-hyperlink a rdf:Property;
    rdfs:label "contact hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is someone you know how to get in touch with. Often symmetric."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:contact a rdf:Property;
    rdfs:label "contact"@en;
    rdfs:comment "Someone you know how to get in touch with. Often symmetric."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf foaf:knows;  # @@@ a bit questionable, but we want xfn:contact to be usable by foaf:knows-aware tools
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# Someone who you have exchanged greetings and not much (if any) more — maybe a short conversation or two. Often symmetric.
xfn:acquaintance-hyperlink a rdf:Property;
    rdfs:label "acquaintance hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is someone who you have exchanged greetings and not much (if any) more — maybe a short conversation or two. Often symmetric."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:acquaintance a rdf:Property;
    rdfs:label "acquaintance"@en;
    rdfs:comment "Someone who you have exchanged greetings and not much (if any) more — maybe a short conversation or two. Often symmetric."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf foaf:knows;  # @@@ a bit questionable, but we want xfn:contact to be usable by foaf:knows-aware tools
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# Someone you are a friend to. A compatriot, buddy, home(boy|girl) that you know. Often symmetric.
xfn:friend-hyperlink a rdf:Property;
    rdfs:label "friend hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is someone you are a friend to. A compatriot, buddy, home(boy|girl) that you know. Often symmetric."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:friend a rdf:Property;
    rdfs:label "friend"@en;
    rdfs:comment "Someone you are a friend to. A compatriot, buddy, home(boy|girl) that you know. Often symmetric."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf foaf:knows;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# Someone who you have actually met in person. Symmetric.
xfn:met-hyperlink a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "met hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is someone who you have actually met in person. Symmetric."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:met a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "met"@en;
    rdfs:comment "Someone who you have actually met in person. Symmetric."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf foaf:knows;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# Someone a person works with, or works at the same organization as. Symmetric. Usually transitive.
xfn:co-worker-hyperlink a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "co-worker hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is someone a person works with, or works at the same organization as. Symmetric. Usually transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:co-worker a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "co-worker"@en;
    rdfs:comment "Someone a person works with, or works at the same organization as. Symmetric. Usually transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf foaf:knows;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# Someone in the same field of study/activity. Symmetric. Often transitive.
xfn:colleague-hyperlink a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "colleague hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is someone in the same field of study/activity. Symmetric. Often transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:colleague a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "colleague"@en;
    rdfs:comment "Someone in the same field of study/activity. Symmetric. Often transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf foaf:knows;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# Someone you share a street address with. Symmetric and transitive.
xfn:co-resident-hyperlink a rdf:Property;
    a owl:SymmetricProperty;
    a owl:TransitiveProperty;
    rdfs:label "co-resident hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is someone you share a street address with. Symmetric and transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:co-resident a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "co-resident"@en;
    rdfs:comment "Someone you share a street address with. Symmetric and transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf foaf:knows;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# Someone who lives nearby, perhaps only at an adjacent street address or doorway. Symmetric. Often transitive.
xfn:neighbor-hyperlink a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "neighbor hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is someone who lives nearby, perhaps only at an adjacent street address or doorway. Symmetric. Often transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:neighbor a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "neighbor"@en;
    rdfs:comment "Someone who lives nearby, perhaps only at an adjacent street address or doorway. Symmetric. Often transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# A person's genetic offspring, or someone that a person has adopted and takes care of. Inverse is parent.
xfn:child-hyperlink a rdf:Property;
    rdfs:label "child hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is your genetic offspring, or someone you have adopted and take care of."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf xfn:kin-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    owl:inverseOf xfn:parent-hyperlink;
    rdfs:isDefinedBy <xfn>;
    .
xfn:child a rdf:Property;
    rdfs:label "child"@en;
    rdfs:comment "A person's genetic offspring, or someone that a person has adopted and takes care of. Inverse is parent."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf foaf:knows;
    rdfs:subPropertyOf xfn:kin;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    owl:inverseOf xfn:parent;
    rdfs:isDefinedBy <xfn>;
    .

# Inverse of child.
xfn:parent-hyperlink a rdf:Property;
    rdfs:label "parent hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. You are the genetic offspring of the person responsible for the other page, or have been adopted and are taken care of by that person."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf xfn:kin-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    owl:inverseOf xfn:child-hyperlink;
    rdfs:isDefinedBy <xfn>;
    .
xfn:parent a rdf:Property;
    rdfs:label "parent"@en;
    rdfs:comment "You are the genetic offspring, or have been adopted and are taken care of by this person."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf foaf:knows;
    rdfs:subPropertyOf xfn:kin;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    owl:inverseOf xfn:child;
    rdfs:isDefinedBy <xfn>;
    .

# Someone a person shares a parent with. Symmetric. Usually transitive.
xfn:sibling-hyperlink a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "sibling hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is someone you share a parent with. Symmetric. Usually transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf xfn:kin-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:sibling a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "sibling"@en;
    rdfs:comment "Someone a person shares a parent with. Symmetric. Usually transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf foaf:knows;
    rdfs:subPropertyOf xfn:kin;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# Someone you are married to. Symmetric. Not transitive.
xfn:spouse-hyperlink a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "spouse hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is someone you are married to. Symmetric. Not transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf xfn:kin-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:spouse a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "spouse"@en;
    rdfs:comment "Someone you are married to. Symmetric. Not transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf foaf:knows;
    rdfs:subPropertyOf xfn:kin;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# A relative, someone you consider part of your extended family. Symmetric and typically transitive.
xfn:kin-hyperlink a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "kin hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is a relative, someone you consider part of your extended family. Symmetric and typically transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:kin a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "kin"@en;
    rdfs:comment "A relative, someone you consider part of your extended family. Symmetric and typically transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf foaf:knows;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# Someone who brings you inspiration. No inverse.
xfn:muse-hyperlink a rdf:Property;
    rdfs:label "muse hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is someone who brings you inspiration. No inverse."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:muse a rdf:Property;
    rdfs:label "muse"@en;
    rdfs:comment "Someone who brings you inspiration. No inverse."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# Someone you have a crush on. No inverse.
xfn:crush-hyperlink a rdf:Property;
    rdfs:label "crush hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is someone you have a crush on. No inverse."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:crush a rdf:Property;
    rdfs:label "crush"@en;
    rdfs:comment "Someone you have a crush on. No inverse."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# Someone you are dating. Symmetric. Not transitive.
xfn:date-hyperlink a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "date hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is someone you are dating. Symmetric. Not transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:date a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "date"@en;
    rdfs:comment "Someone you are dating. Symmetric. Not transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf foaf:knows;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# Someone with whom you are intimate and at least somewhat committed, typically exclusively. Symmetric. Not transitive.
xfn:sweetheart-hyperlink a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "sweetheart hyperlink"@en;
    rdfs:comment "A hyperlink that indicates a human relationship between the people responsible for two web pages. The person responsible for the other page is someone with whom you are intimate and at least somewhat committed, typically exclusively. Symmetric. Not transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:sweetheart a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "sweetheart"@en;
    rdfs:comment "Someone with whom you are intimate and at least somewhat committed, typically exclusively. Symmetric. Not transitive."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf foaf:knows;
    rdfs:subPropertyOf owl:differentFrom;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

# A link to yourself at a different URL. Exclusive of all other XFN values. Required symmetric. There is an implicit "me" relation from a subdirectory to all of its contents.
xfn:me-hyperlink a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "me hyperlink"@en;
    rdfs:comment "A hyperlink that indicates that the same person is responsible for both web pages. Exclusive of all other XFN relationships. Required symmetric."@en;
    rdfs:subPropertyOf xfn:human-relationship-hyperlink;
    rdfs:domain foaf:Document;
    rdfs:range foaf:Document;
    rdfs:isDefinedBy <xfn>;
    .
xfn:me a rdf:Property;
    a owl:SymmetricProperty;
    rdfs:label "me"@en;
    rdfs:comment "A link to a different URI for yourself. Exclusive of all other XFN values. Required symmetric."@en;
    rdfs:subPropertyOf xfn:human-relationship;
    rdfs:subPropertyOf owl:sameAs;
    rdfs:domain foaf:Person;
    rdfs:range foaf:Person;
    rdfs:isDefinedBy <xfn>;
    .

