[doap-interest] foaf:Person, sioc:User, sioc:Role, doap:Project and baetle:Issue

Henry Story henry.story at bblfish.net
Tue Apr 3 16:32:40 UTC 2007


In baetle we are using a number of ontologies [1] of which sioc, doap  
and foaf.

In the current ontology I have started linking baetle:Issue(s) to  
sioc:User(s) thinking it makes sense to reduce the need for user  
identification.  A sioc:User is a subclass of foaf:OnlineAccount, so  
both of these are quite clearly distinct from foaf:Persons [2].

On the other hand doap:Projects  are related to foaf:Person(s) via  
the relationship doap:documenter, doap:maintainer, ...

So if I create links from baetle:Issue to sioc:User(s) will I have to  
create a blank node to link doap:Projects to sioc:Users?

<http://code.google.com/p/baetle/> a doap:Project;
       :developer [ a foaf:Person;
                    foaf:holdsAccount <http://code.google.com/u/ 
henry.story/>
                  ]
.

I don't have any problem giving my foaf url (see my sig), but for  
most people in say the NetBeans project we would only want to publish  
account handles.

Interestingly enough sioc does have a notion of roles, as a class of  
objects, instead of role relations between a foaf:Project and a  
doap:Project, so one could fit in those roles, by creating subclass  
relations for . Would it make sense to have doap URLs for Developer,  
Translator, ... ?
They could be used like this:

<http://code.google.com/u/henry.story/>
         sioc:has_function  [ a doapx:Developer;
                              sioc:has_scope <http://code.google.com/ 
p/baetle/> ],
                            [ a doapx:Maintainer;
                              sioc:has_scope http://code.google.com/p/ 
baetle/>],
                            [ a doapx:Documenter;
                              sioc:has_scope http://code.google.com/p/ 
baetle/>] .


To remove the blank nodes each project would have its roles urls,  
perhaps like this:

<http://code.google.com/p/baetle/roles#Developer> a doapx:Developer;
        sioc:scope_of <http://code.google.com/p/baetle/> .

<http://code.google.com/p/baetle/roles#Maintainerr> a doapx:Maintainer;
        sioc:scope_of <http://code.google.com/p/baetle/> .

<http://code.google.com/p/baetle/roles#Documenter> a doapx:Documenter;
        sioc:scope_of <http://code.google.com/p/baetle/> .


And so my functions could be described like this

<http://code.google.com/u/henry.story/> a sioc:User;
         sioc:has_function <http://code.google.com/p/baetle/ 
roles#Developer>,
                           <http://code.google.com/p/baetle/ 
roles#Maintainer>,
                           <http://code.google.com/p/baetle/ 
roles#Documenter> .


So one could define the relationships between these like this in N3:

{ ?proj a doap:Project;
         doap:developer ?p . }
<=>
{ ?p foaf:holdsAccount [  sioc:has_function ?devel ] .
   ?devel a sioc:Role, doapx:Developer;
          sioc:scope_of ?proj . }


Btw, since mapping between ontologies can often be more complex than  
what is expressible in OWL, I suggest they be written out in N3.  
There may not be a lot of software around to read them, but I think  
it helps make discussions a lot clearer. The decisions can be kept,  
and later when a standard rule language emerges easily converted to  
that language.

Henry


[1] http://code.google.com/p/baetle/
[2] Even if the comment on the sioc:last_name relation is somewhat  
misleading

   sioc:last_name     a owl:DatatypeProperty,
                 owl:DeprecatedProperty;
          :comment "Last (real) name of this user. Synonyms include  
surname or family name.";
          :domain sioc:User;
          :isDefinedBy sioc:;
          owl:versionInfo "This property is deprecated. Use foaf:name  
or foaf:surname instead." .

    How can one use foaf:surname on an account?


Home page: http://bblfish.net/
Sun Blog: http://blogs.sun.com/bblfish/
Foaf name: http://bblfish.net/people/henry/card#me





More information about the doap-interest mailing list