[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