SIOC/CombiningOntologies

From W3C Wiki

This illustrates a use case in SIOC where an inverse of foaf:holdsAccount is probably necessary express the fact that a sioc:User (subclass of foaf:OnlineAccount) account belongs to a person. We used a fictional property foaf:accountOf in this example to reflect this.

Note: sioc:User has a URI
Note2: foaf:Person is a blank node


@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sioc: <http://rdfs.org/sioc/ns#> .

sioc:User rdfs:subClassOf foaf:OnlineAccount .

<http://www.johnbreslin.com/blog/author/cloud/>
    a sioc:User ;
    foaf:accountName "Cloud" ;
    foaf:accountOf _:person ;
    sioc:created "1999-11-30T00:00:00" .

_:person
    a foaf:Person ;
    foaf:mbox_sha1 "9a6b7eefc08fd755d51dd9321aecfcc87992e9a2" ;
    foaf:firstName "John" ;
    foaf:surname "Breslin" .

RDF/XML representation:


<sioc:User rdf:about="http://www.johnbreslin.com/blog/author/cloud/">
	<foaf:accountName>Cloud</foaf:accountName>
	<sioc:created>1999-11-30T00:00:00</sioc:created>
	<foaf:accountOf>
		<foaf:Person>
			<foaf:firstName>John</foaf:firstName>
			<foaf:surname>Breslin</foaf:surname>
			<foaf:mbox_sha1>9a6b7eefc08fd755d51dd9321aecfcc87992e9a2</foaf:mbox_sha1>
		</foaf:Person>
	</foaf:accountOf>
</sioc:User>

In the mailing list discussion it was proposed to use a rdfs:seeAlso as a temporary solution (see discussion post #5), but that does not solve much.


Discussion on alternatives as timbl and danbri mentioned the use of owl:inverse on a rdfs:label

Note: the RDF/XML is an experiment how to express this relation using owl:inverse as proposed by DanBri and TimBL. -- CaptSolo


<foaf:Person rdf:ID="chris">
 <rdfs:label>Person</rdfs:label>
 <foaf:name>Christoph</foaf:name>
</foaf:Person>

<sioc:User rdf:ID="goern">
 <sioc:name>goern</sioc:name>
 <foaf:accountOf rdf:resource="#chris" />

</sioc:User>

<rdf:Property rdf:about="http://xmlns.com/foaf/0.1/accountOf">
 <owl:inverse>
  <rdf:Property>
   <rdfs:label>holds account</rdfs:label>i
  </rdf:Property>
 </owl:inverse>
</rdf:Property>

this assumed foaf:holdsAccount has a rdfs:label of "holds account" (which is true)


    :chris     a <http://xmlns.com/foaf/0.1/Person>;
         rdfs:label "Person";
         <http://xmlns.com/foaf/0.1/name> "Christoph" .

    :goern     a <http://rdfs.org/sioc/User>;
         <http://rdfs.org/sioc/name> "goern";
         <http://xmlns.com/foaf/0.1/accountOf> :chris .

    <http://xmlns.com/foaf/0.1/accountOf>     a rdf:Property;
         owl:inverse  [
             a rdf:Property;
             rdfs:label "holds account" ] .


I'm still a bit confused... Why exactly can't we use this (below). Is the problem because the sioc:User (ie. the OnlineAccount) might be a bNode and note named by URI? --DanBri


<sioc:User rdf:about="http://www.johnbreslin.com/blog/author/cloud/"> 
  <foaf:accountName>Cloud</foaf:accountName>
  <sioc:created>1999-11-30T00:00:00</sioc:created>
</sioc:User>
<foaf:Person>
  <foaf:holdsAccount rdf:resource="www.johnbreslin.com/blog/author/cloud/" />
  <foaf:firstName>John</foaf:firstName>
  <foaf:surname>Breslin</foaf:surname>
  <foaf:mbox_sha1>9a6b7eefc08fd755d51dd9321aecfcc87992e9a2</foaf:mbox_sha1>
</foaf:Person>