wiki:PimoService

Version 5 (modified by sauermann, 19 years ago) (diff)

--

PIMO Service

The PimoService is an implementation of the PIMO (see PIMO Technical Report), which is an improved manifestation of the Wikitology idea.

It allows the user to create things, classes and properties in his personal information model and link them together or to other (external) resources and things.

Tasks of the PIMO-Service:

  • during the first start of the system, the PIMO-Service creates and instance of Pimo-Person for the user and hangs it to the pimo-model.

some useful facts:

  • While the given labels are preserved, the URIs may differ due to syntax restrictions.
  • It is possible to create different things with the same name.
  • It is NOT possible to create different classes with the same name.

Tips on inferencing by Michael Sintek

this here taken from an e-mail from michael sintek, the gott of inference:

I had a look at the Sesame RDFS implementation, which is quite nice: they use a set of rules (implemented in Java!) for a forward rule engine (probably using some Rete algorithm).

The rules (for Sesame2) are here:

http://www.openrdf.org/doc/sesame2/api/org/openrdf/sesame/sailimpl/inferencer/RDFSRules.html

If you don't want the complete inferences, simply remove some of them, e.g. the rules for adding types:

rule rdfs9_1: xxx rdfs:subClassOf yyy && (nt) aaa rdf:type xxx

--> (t1) aaa rdf:type yyy (t2)

rule rdfs9_2: aaa rdf:type xxx && (nt) xxx rdfs:subClassOf yyy

--> (t1) aaa rdf:type yyy (t2)

I could imagine that creating a subclass of RDFSRules and removing these rules will do the magic already, but I have never looked at the code. Anyway, should be trivial ...

At least you could start with this implementation -- doing the entailment stuff from scratch is really nasty (you need something like a semi-naive bottom-up evaluation, otherwise you will derive the same new triples over and over again).

Comment by Florian Mittag

We tried to do just this, but it turned out to be anything else than trivial. The inference engine of sesame described above is only applicable on MemoryStore, but we need it for a NativeStore. Converting the code to do this would mean to implement an inferencer on the native sail, which is quite complicated due to many dependencies on the inner working of the MemoryStore.

Gunnar hacked an improvement of the Jena inferencer, that will do what we want with little transactions (ie only one). Additionaly we will try to create all necessary triples on creation or deletion of classes and things, so an inference engine hopefully won't be needed. Still, it is good to have a backup ;-)