<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="xslt/"?>
<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:foaf="http://xmlns.com/foaf/0.1/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xml:base="http://www.hackcraft.net/FOAFNonIFP/">
	<owl:Ontology rdf:about="" dc:title="Non-IFP Versions of FOAF IFP Properties">
		<owl:imports rdf:resource="http://www.w3.org/2000/01/rdf-schema"/>
		<owl:imports rdf:resource="http://www.w3.org/2002/07/owl"/>
		<owl:imports rdf:resource="http://xmlns.com/foaf/0.1/"/>
		<dc:description rdf:parseType="Literal" xmlns="http://www.w3.org/1999/xhtml">
			<p>
				FOAF contains a good few inverse functional properties (IFPs) which can be used in two
				ways:
			</p>
			<ol>
				<li>
					The values of the properties can be used directly themselves when useful, for example
					the <a href="http://xmlns.com/foaf/0.1/#term_mbox">foaf:mbox</a> property can be
					used to obtain an email address to contact someone with.
				</li>
				<li>
					The values can be used when combining information about an individual from different
					sources. If there are two descriptions of a resource and each resource has the same
					value for a given IFP then those resources are in fact one and the same, and they
					can be merged.
				</li>
			</ol>
			<p>
				A consequence of this is that the meaning of, say,
				<a href="http://xmlns.com/foaf/0.1/#term_weblog">foaf:weblog</a> is not merely:
			</p>
			<blockquote cite="http://xmlns.com/foaf/0.1/#term_weblog">
				<p>A weblog of some thing (whether person, group, company etc.).</p>
			</blockquote>
			<p>
				Rather the meaning is a weblog of some thing, <em>that is not shared by any other thing</em>.
				This is not true of all weblogs (including some of the best). Similarly there are still
				quite a few people who have an email mailbox they share with someone else (generally
				their partner) that they use as their “main” mailbox. Even in the case of
				<a href="http://xmlns.com/foaf/0.1/#term_homepage">foaf:homepage</a>,
				while arguably <a href="http://xmlns.com/foaf/0.1/#term_page">foaf_page</a> would
				serve adequately for a page that was about someone, but not exclusively about them,
				there are people who have a page that is personal enough and directly relevant
				enough that it could be considered a personal homepage, and yet which isn’t
				solely theirs. foaf:homepage has been found to be particularly unreliable as an
				IFP in FOAF data mined from other data [source: John Breslin, in coversation, later
				also Christopher Schmidt while reviewing this document (<a href="http://www.ilrt.bris.ac.uk/discovery/chatlogs/foaf/2004-09-03.html#T15-52-51">on #foaf</a>)].
			</p>
			<p>
				This ontology defines 6 properties. 3 are super-properties of
				<a href="http://xmlns.com/foaf/0.1/#term_mbox">foaf:mbox</a>,
				<a href="http://xmlns.com/foaf/0.1/#term_weblog">foaf:weblog</a> and
				<a href="http://xmlns.com/foaf/0.1/#term_homepage">foaf:homepage</a> that are
				not IFPs. 3 are sub-properties of this first 3 that not only are not IFPs, but
				which are of the typed as from the complement of owl:InverseFunctionalProperty,
				if a resource has a value for one of these properties it is not the only such
				resource. For example if a person has a shared_mbox then at least one other
				person or agent also has it.
			</p>
			<p>
				In developping this ontology the author is in no way criticising the inverse functional
				nature of the existing FOAF properties. Rather in providing non-IFP versions not only do
				I hope to enable more information to be expressed in FOAF, but also to remove the
				temptation to mis-use them when inappropriate which reduces the value of the IFP nature
				of the FOAF properties by increasing the number of cases where “smushing”
				results in incorrect data.
			</p>
			<h2>Suggested Use-Cases</h2>
			<p>
				One suggested use-case for this is that instead of software which produces FOAF
				files based on user-input either asking the user to only use properties which
				apply only to them (or the person or agent in question) or else not mentioning
				the way these properties are used in FOAF and hoping for the best, they could
				ask for these values and then ask whether or not they are shared. The author
				believes that this is more likely to result in correct data.
			</p>
			<p>
				Another use case is when existing data is being mined for FOAF data. For example
				when mining email addresses one of the three cases can be true:
			</p>
			<ol>
				<li>The address is known to be used by only one person, and “smushing” can be performed safely.</li>
				<li>The address is known to be used by more than one person, and “smushing” will produce inaccurate results.</li>
				<li>It is not known how many people use the address, and “smushing” may produce useful results, but should not be relied on to be completely accurate even if the source data is.</li>
			</ol>
			<h2>Note On Modelling</h2>
			<p>
				In the case of the properties which are known to be shared between two or more
				agents, this could more richly be modelled stating that the agent is a member of
				a group and that the group shares this property. This is arguably more useful.
				However it comes with two problems:
			</p>
			<ol>
				<li>
					The relationship between the agent and the property is now indirect, more work
					is needed to make use of it when, for example, finding an address they can be
					contacted at.
				</li>
				<li>
					It would be most desirable to use the IFP properties provided by the FOAF
					vocabuary in relation to the group. However this is problematic. The statements
					“Alice is a member of the group AliceAndBob” and “The
					group AliceAndBob have a ’blog at http://aliceandbob.example.com/” does
					not necessarily entail that Alice writes for that weblog, any more than
					“AliceAndBob are a group of two people” implies that Alice is a
					group of two people. Rather we need to
					explicitly state “<em>All</em> members of the group AliceAndBob write for
					the ’blog at http://aliceandbob.example.com/”, which is not the
					semantics of the FOAF IFP property. Attempting to use
					the <a href="http://xmlns.com/foaf/0.1/#term_weblog">foaf:weblog</a> property
					either removes the knowledge that Alice writes for the blog or, worse, could lead
					to incorrectly believing that someone engages in some activity or has some
					attribute because they are a member of a group that does.
				</li>
			</ol>
			<p>
				Because of this, while modelling the group of people that share one of the
				properties detailed in this ontology may be useful, it does not adequately
				express what this vocabuary is intended to express.
			</p>
			<h2>Omitted IFPs</h2>
			<p>
				The main (sole?) use of
				<a href="http://xmlns.com/foaf/0.1/#term_mbox_sha1sum">foaf:mbox_sha1sum</a>
				is as an identifier, and hence there is no real value in a version which is not
				an IFP.
			</p>
			<p>
				Similarly 
				<a href="http://xmlns.com/foaf/0.1/#term_aimChatID">foaf:aimChatID</a>,
				<a href="http://xmlns.com/foaf/0.1/#term_icqChatID">foaf:icqChatID</a>,
				<a href="http://xmlns.com/foaf/0.1/#term_jabberID">foaf:jabberID</a>,
				<a href="http://xmlns.com/foaf/0.1/#term_msnChatID">foaf:msnChatID</a> and
				<a href="http://xmlns.com/foaf/0.1/#term_yahooChatID">foaf:yahooChatID</a> are
				identifiers within various systems and it is probably of little or no value to
				document super-properties of them which are not IFPs (I’m not sure about this and welcome
				feedback).
			</p>
		</dc:description>
	</owl:Ontology>
	<owl:Class rdf:nodeID="notIFP">
		<owl:ComplementOf rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/>
	</owl:Class>
	<rdf:Property rdf:about="mbox">
		<rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
		<rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
		<rdfs:isDefinedBy rdf:resource=""/>
	</rdf:Property>
	<rdf:Property rdf:about="homepage">
		<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/page"/>
		<rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
		<rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/>
		<rdfs:isDefinedBy rdf:resource=""/>
		<rdfs:comment>Open question: Is this really any different to foaf:page?</rdfs:comment>
	</rdf:Property>
	<rdf:Property rdf:about="weblog">
		<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/page"/>
		<rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
		<rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/>
		<rdfs:isDefinedBy rdf:resource=""/>
	</rdf:Property>
	<rdf:Property rdf:about="shared_mbox">
		<rdf:type rdf:nodeID="notIFP"/>
		<rdfs:subPropertyOf rdf:resource="mbox"/>
		<rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
		<rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
		<rdfs:isDefinedBy rdf:resource=""/>
	</rdf:Property>
	<rdf:Property rdf:about="shared_homepage">
		<rdf:type rdf:nodeID="notIFP"/>
		<rdfs:subPropertyOf rdf:resource="homepage"/>
		<rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
		<rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/>
		<rdfs:isDefinedBy rdf:resource=""/>
	</rdf:Property>
	<rdf:Property rdf:about="shared_weblog">
		<rdf:type rdf:nodeID="notIFP"/>
		<rdfs:subPropertyOf rdf:resource="weblog"/>
		<rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
		<rdfs:range rdf:resource="http://xmlns.com/foaf/0.1/Document"/>
		<rdfs:isDefinedBy rdf:resource=""/>
	</rdf:Property>
	<rdf:Description rdf:about="http://xmlns.com/foaf/0.1/mbox">
		<rdfs:subPropertyOf rdf:resource="mbox"/>
	</rdf:Description>
	<rdf:Description rdf:about="http://xmlns.com/foaf/0.1/homepage">
		<rdfs:subPropertyOf rdf:resource="homepage"/>
	</rdf:Description>
	<rdf:Description rdf:about="http://xmlns.com/foaf/0.1/weblog">
		<rdfs:subPropertyOf rdf:resource="weblog"/>
	</rdf:Description>
</rdf:RDF>