This is an old revision of the document!
Semantic Wiki
chris mungall cjm@fruitfly.org
I've thought about it, but never actually implemented one. the wiki
part of the code would appear to be there in Jan's pldoc package, and
the semantic part in either the semweb package, or using straight-up
prolog as you suggest. How do you envision this working? Would it be
a wiki in which arbitrary prolog facts could be inserted? Presumably
there would be some kind of metamodel, capturing distinctions between
classes, instances and relations, similar to semweb, without the
binary relation restriction? Perhaps something along the lines of KIF/
CommonLogic (full first order logic, obviously poorer computational
properties, but perhaps fine for your purposes)
Somewhat OT from SWI-Prolog but I agree about binary relations. In
our semantic web research we are discovering that binary relations
are generally fine for class-level relations, but instance-level
relations in the real world are generally time-indexed.
e.g. http://obo.sourceforge.net/relationship/#OBO_REL:part_of
I presume you've already read this and found it of limited use:
http://www.w3.org/TR/swbp-n-aryRelations/
On Sep 27, 2006, at 8:36 AM, Jocelyn Paine wrote:
from: Jocelyn Paine
popx@j-paine.org
Has anybody implemented a semantic wiki in SWI? Most semantic wikis
allow
at most 2 arguments to the predicates used in annotating pages; I
don't
know why, but I suppose it's because RDF only likes binary
relations. So
if you want to annotate with clauses for predicates of arity > 2,
you can
only do so by coding them in terms of arity-2 predicates. Prolog isn't
limited in this way, so would seem an obvious choice as a semantic
wiki
language. I've not found any implemented in it, though.
My question applies not just to SWI-Prolog, of course. But SWI is
being
used a lot for the Semantic Web - have any of you Semantic Web
researchers
ou there experimented with it as a semantic wiki language?
Another Post
This post comes from SWI-Prolog mailing list.
I posted to deplore the lack of general n-ary relations in semantic wikis
and to ask whether any had been implemented in SWI-Prolog, given the
large amount of Semantic Web work done with it.
On Wed, 27 Sep 2006, chris mungall replied:
I've thought about it, but never actually implemented one. the wiki
part of the code would appear to be there in Jan's pldoc package, and
the semantic part in either the semweb package, or using straight-up
prolog as you suggest.
I've just looked at pldoc: thanks! Does it really provide much that a wiki
engine does? It doesn't implement the editing interface that wikis do -
that's _not_ a criticism, it's not intended for that. And whereas in
wikis, code (i.e. semantic annotations) is marked by special symbols but
comment (free text) is unmarked, pldoc takes a program as input, so code
is unmarked and comment is marked.
How do you envision this working? Would it be
a wiki in which arbitrary prolog facts could be inserted?
Presumably there would be some kind of metamodel, capturing distinctions
between classes, instances and relations, similar to semweb, without the
binary relation restriction?
At first, yes, a wiki in which arbitrary prolog facts could be inserted.
While I'm developing the system, I'd constrain myself to entering only the
appropriate predicates. I haven't decided how I'd go on to implement and
use an explicit metamodel.
There seems to be quite a variety of ways in which these metamodels are
implemented and used, by the way, so a corresponding variety in how one
would use Prolog and pldoc. Since this isn't a semweb/wiki group, I'll
just point at two URLs, in case anyone's interested. There's a first
attempt at a classification, not detailed, by Max Völkel, at
“[swikig] SemWiki2006 Workshop Infos” posting,
http://www.mail-archive.com/swikig@aifb.uni-karlsruhe.de/msg00036.html
And a recent paper, “Annotation and Navigation in Semantic Wikis”, by Eyal
Oren, Renaud Delbru, Knud Möller, Max Völkel and Siegfried Handschuh, at
http://eyaloren.org/pubs/semwiki2006.pdf
Perhaps something along the lines of KIF/
CommonLogic (full first order logic, obviously poorer computational
properties, but perhaps fine for your purposes)
That's something I've not looked at yet. Thanks again.
Somewhat OT from SWI-Prolog but I agree about binary relations. In
our semantic web research we are discovering that binary relations
are generally fine for class-level relations, but instance-level
relations in the real world are generally time-indexed.
e.g.
http://obo.sourceforge.net/relationship/#OBO_REL:part_of
Yes, very limited use. But - I have found a Semantic MediaWiki augmented
with general n-ary relations. Again, as it's out of purpose for this
group, I'll point you at a posting I made to the swikig group about it,
http://www.aifb.uni-karlsruhe.de/pipermail/swikig/2006-October/000304.html
BOWiki itself is at
http://onto.eva.mpg.de/bowiki/index.php/Main_Page
and my posting also points at one of the papers about it.
Jocelyn Paine
http://www.j-paine.org/
And the Reply...
Hi Jocelyn,
Perhaps peripheral, but the text-to-html (tth) interpreter I wrote is
similar to pldoc, except that it expects text as default and marks
prolog code as special. I use it both to generate full text (such as
articles and chapters), but also as the interpreter for blog comments.
Part of the reason for developing it was as a possible future base for
my ontology work. The interpreter uses direct file access to cater for
large amounts of text, but where possible passes lines of text to DCG
for ease of grammar-based interpretation. I vaguely had in mind being
able to formally interpret sections of text like bullet points or table
cells into an underlying ontology.
That bit is in the future, because my ontology isn't ready yet. I've got
a core ontology for entities, connections, causation, actions, etc.,
with a good start on a business domain ontology – all expressed
directly in Prolog. Philosophically I find it a very appropriate
language for ontology.
Anyway, perhaps tth may be of help in what you're doing.
Cheers,
RdR
Collaborative Systems
A collaborative system is one that works with people and other systems to get jobs done faster. Each person and each software program has various strengths and weaknesses. Working alone they can only accomplish so much. Working together, strength combines with strength to increase the likelihood of success.
http://www.collaborative-systems.org/