Quick intro: I'm studying free and open source software communities,
and focusing on change in projects over time (web site, pubs etc at
[1]). I've been working to represent the archives of a project using
an OWL ontology (mailing lists, forums, svn commits release notes
etc). I'm fairly new to RDF/OWL and so I've developed my ontology
thus far in isolation, only recently discovering vocabularies like
SIOC. There is clearly scope for incorporating many SIOC terms into
my ontology (called flosscomms [4]), but I apologize for not having
started that process.
Enough intro :) To work.
I'm currently analyzing the Communication Events from two projects.
I'm drawing my data from our FLOSSmole[2] project (Mailing lists) and
from the Sourceforge dumps collected by Notre Dame [3]. The FLOSSmole
data is spidered from Sourceforge, but the Notre Dame data (Forums,
Trackers, Release Notes) is only available to academic researchers
(they have a licensing agreement with SF). For interest that's about
160,000 distinct events, which with my current ontology expands, after
OWL reasoning, to about 2 million triples. I'm sure there's lots of
things I'm doing in an SQL way, rather than OWL/RDF, but hey, it's a
start.
I'm at the stage where I'm trying to group identifiers (real names,
email addresses, user names) that an actual person uses, in order to
measure community participation (partly as a prelude to identifying
AssessedRoles based on the types of Events undertaken). I hoped to do
this by overlaying a set of owl:sameAs statements on my dataset, some
created by rules (such as matching unique identifiers, like
Sourceforge usernames), some created by manual coding, perhaps some
created by probabilistic fuzzy matching. In any case there might be a
set of such 'merges' using different algorithms or manual coders
(rather than just one), for sensitivity analysis etc.
I'm wondering if others have approached this issue (entity
identification? user identification? identity matching?) in the
context of online communities, and whether there might be some
relevant tools or papers.
Right now though I have a question that I've been surprised to find
difficult, or at least seemingly not a common one. Assuming that I
have a set of owl:sameAs statements between URIs all of which are of a
particular Class (fc:Participant, which is either akin to sioc:User,
or a level of abstraction above it?) what's the easiest/natural/
computationally easy way to get a minimal set of URIs to refer to the
identified people? Then one could count that set of URIs as the
actual number of people that have participated in the community.
Through SPARQL or Jena I can get a list of URIs which are
owl:differentFrom a specific URI, which is a start, but that list
could itself contain URIs that are owl:sameAs with each other. I
can't think of a way to specify that I'd like all the results from a
SPARQL query to be owl:differentFrom each other. I'm about to write
some code to recursively 'whittle' the array of URIs down to the
minimal set (such that all are owl:differentFrom each other and none
are owl:sameAs each other), but it seems like others must have run
into this already.
I'm excited to dig into the SIOC ontologies some more.
Thanks in advance,
James Howison
PhD Student
Syracuse University School of Information Studies
http://james.howison.name
ps. What browser do people use to view the SIOC ontologies? I've
been using Protege.
[1]: http://floss.syr.edu
[2]: http://ossmole.sf.net
[3]: https://zerlot.cse.nd.edu/
[4]: http://floss.syr.edu/ontologies/2008/flosscomms-basic.owl