Thanks Alessandro.

That's most helpful - I'll come back on "why can't I just do that with a
simple line of code..." once I can see it all working.

Currently I'm attempting to follow those examples to create a registry with
a single library containing two ontologies:

1) http://www.fedora.info/definitions/1/0/fedora-relsext-ontology.rdfs
2) http://www.w3.org/2009/08/skos-reference/skos.rdf

(note the first is just rdfs, the second is owl; also the URI used for the
second is the URI that resolves to the document; the URI identifying the
ontology is different - not sure if any of these are issues).

So I've constructed:
http://www.acuityunlimited.net/ontologies/iks/fedoracore.rdf

Using the Felix config console I add this, but I see a couple of errors in
the logs (plus, after loading I can no longer activate my bundle, grabbing
the @Reference, it complains of an unsatisifed dependency for the
RegistryManager).

The errors are:
---
15.02.2012 18:35:18.619 *WARN* [CM Event Dispatcher (Fire
ConfigurationEvent: pi
d=org.apache.stanbol.ontologymanager.registry.impl.RegistryManagerImpl)]
org.apa
che.stanbol.ontologymanager.registry.impl.RegistryManagerImpl Invalid
registry c
onfiguration  - Skipping... java.lang.IllegalArgumentException: URI is not
absol
ute
        at java.net.URI.toURL(URI.java:1080)
        at
uk.ac.manchester.cs.owl.owlapi.ParsableOWLOntologyFactory.canLoad(Par
sableOWLOntologyFactory.java:160)
        at
uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadOntology(OW
LOntologyManagerImpl.java:722)
        at
uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadOntology(OW
LOntologyManagerImpl.java:667)
        at
uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadOntology(OW
LOntologyManagerImpl.java:641)
        at
org.apache.stanbol.ontologymanager.registry.impl.RegistryManagerImpl.
activate(RegistryManagerImpl.java:207)
        at
org.apache.stanbol.ontologymanager.registry.impl.RegistryManagerImpl.
activate(RegistryManagerImpl.java:170)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
---

and

---
15.02.2012 18:35:21.166 *ERROR* [CM Event Dispatcher (Fire
ConfigurationEvent: p
id=org.apache.stanbol.ontologymanager.registry.impl.RegistryManagerImpl)]
org.ap
ache.stanbol.ontologymanager.registry
[org.apache.stanbol.ontologymanager.regist
ry.impl.RegistryManagerImpl] The activate method has thrown an exception
(java.l
ang.StackOverflowError) java.lang.StackOverflowError
        at
uk.ac.manchester.cs.owl.owlapi.OWLNamedIndividualImpl.accept(OWLNamed
IndividualImpl.java:195)
        at
org.semanticweb.owlapi.util.OWLObjectTypeIndexProvider.getTypeIndex(O
WLObjectTypeIndexProvider.java:173)
        at
uk.ac.manchester.cs.owl.owlapi.OWLObjectImpl.compareTo(OWLObjectImpl.
java:183)
        at
uk.ac.manchester.cs.owl.owlapi.OWLObjectImpl.compareTo(OWLObjectImpl.
java:74)
        at java.util.TreeMap.put(TreeMap.java:545)
        at java.util.TreeSet.add(TreeSet.java:238)
        at
uk.ac.manchester.cs.owl.owlapi.OWLIndividualImpl.getObjectPropertyVal
ues(OWLIndividualImpl.java:200)
        at
uk.ac.manchester.cs.owl.owlapi.OWLIndividualImpl.getObjectPropertyVal
ues(OWLIndividualImpl.java:132)
        at
org.apache.stanbol.ontologymanager.registry.impl.RegistryManagerImpl.
populateLibrary(RegistryManagerImpl.java:559)
        at
org.apache.stanbol.ontologymanager.registry.impl.RegistryManagerImpl.
populateOntology(RegistryManagerImpl.java:589)
        at
org.apache.stanbol.ontologymanager.registry.impl.RegistryManagerImpl.
populateLibrary(RegistryManagerImpl.java:561)
---

I suspect I've got something fairly basic wrong in my document for the
Registry, but I can't work out what it might be.

Can you spot anything that looks wrong?

Thanks
Steve


> -----Original Message-----
> From: Alessandro Adamou [mailto:[email protected]] 
> Sent: 14 February 2012 13:19
> To: [email protected]
> Subject: Re: OntologyManager Registry Java API examples
> 
> 
> Hi Steve,
> 
> Thank you for your interest. It seems I should probably add 
> more input 
> to the docs.
> 
> > I can see how one can create a RegistryOntology from an 
> > OWLNamedIndividual, and one can create a Library similarly, and 
> > presumably then use Library#addChild to add one or more 
> ontologies to 
> > the library.
> 
> You are most likely not going to need the Java API in order 
> to configure 
> your libraries. You can use the Felix console for most of it.
> 
> A Registry is itself an ontology. It can reference one or more 
> libraries, each identified by an IRI, and more registries can 
> reference 
> different libraries or add ontologies to the same library.
> 
> An example is the unit test resource at
> 
> http://svn.apache.org/repos/asf/incubator/stanbol/trunk/ontolo
> gymanager/registry/src/test/resources/ontologies/registry/onmtest.owl
> 
> or the first stub of "IKS default ontologies" registry at
> 
> http://svn.apache.org/repos/asf/incubator/stanbol/trunk/ontolo
> gymanager/registry/src/main/resources/ontologies/registry/iksn
> etwork.owl
> 
> > But I'm struggling with the usage of Registry; how do I create this 
> > and add my Library?  Presumably I need to do this and then use the
> > RegistryManager#addRegistry(Registry) to register my ontologies
> 
> After creating such an RDF document, you have to put it 
> online so as to 
> have a physical IRI. In my TODO list, you will also be able 
> to provide 
> the file in a bundle so that the Data file provider will load it.
> 
> Then go to the Stanbol Felix configuration console, open the Ontology 
> Registry Manager configuration and add the physical location of the 
> Registry.
> 
> The internal model for the registry (addChild() and 
> everything) will be 
> created by itself. If you keep the default configuration (i.e. lazy 
> loading), the ontologies referenced by the registry will 
> *not* be loaded 
> until you "touch" a library.
> 
> > Overall the use case is to use a LibrarySource to load several 
> > ontologies into a space's core scope.
> 
> This is when you "touch" the library indeed, and where you 
> could use the 
> Java API.
> 
> the registry manager is an OSGi service component (you have 
> to supply it 
> because library sources are not components):
> 
> @Reference
> RegistryManager registryManager;
> 
> new LibrarySource(libraryIRI, registryManager)
> 
> Now all the referenced ontologies are loaded (using the Clerezza 
> ontology provider from OntoNet) and appended to a new root 
> ontology. You 
> can then feed this source to a space or session.
> 
> The ontologies loaded from a library will be loaded using the same 
> storage backend as OntoNet (by default, the Clerezza one), 
> whereas the 
> model of libraries is in-memory OWL API stuff (but should always be 
> reasonably small).
> 
> Is there anything here that triggered a thought in your head 
> like "but 
> why can't I just do that with a simple line of code such as 
> _____" ? We 
> can work with that I suppose.
> 
> Perhaps I can help you shape your registry. How is the knowledge base 
> you'd like to structure into libraries organised?
> 
> All the best,
> 
> Alessandro
> 
> -- 
> M.Sc. Alessandro Adamou
> 
> Alma Mater Studiorum - Università di Bologna
> Department of Computer Science
> Mura Anteo Zamboni 7, 40127 Bologna - Italy
> 
> Semantic Technology Laboratory (STLab)
> Institute for Cognitive Science and Technology (ISTC)
> National Research Council (CNR)
> Via Nomentana 56, 00161 Rome - Italy
> 
> 
> "As for the charges against me, I am unconcerned. I am beyond 
> their timid, lying morality, and so I am beyond caring." 
> (Col. Walter E. Kurtz)
> 
> Not sent from my iSnobTechDevice
> 
> 

Reply via email to