oro-server is a Java-based knowledge base for cognitive robotic applications. It is developped at the LAAS-CNRS by Séverin Lemaignan (severin.lemaignan@laas.fr)
oro-server features
oro-server relies on RDF/OWL ontologies to represent an store knowledge and runs several active processes that offer, amongst other things, reasonning facilities, support for bio-inspired memory models, concepts of "cognitive events", categorization and explicit modeling of other agents.
Planned features include reinforcement learning, pro-active "curiosity" and mechanisms to handle cognitive conflicts (ie inconsistent chuncks of knowledge).
The main communication channel with oro-server is a simple socket interface. However several bridges and wrapper to higher-level framework are available (including a C++ object-oriented abstraction, a YARP connector, a JSON connector). New ones can be easily created on request.
List of available methods
(Last updated on 2010-02-15 15:03:50)
- administration
- {@linkplain laas.openrobots.ontology.OroServer#makeHtmlDoc() makeHtmlDoc()}: returns a list of available methods in HTML format for inclusion in documentation.
- {@linkplain laas.openrobots.ontology.OroServer#listMethods() listMethods()}: returns the list of available methods with their signatures and short descriptions as a map.
- {@linkplain laas.openrobots.ontology.OroServer#listSimpleMethods() listSimpleMethods()}: returns a raw list of available methods.
- {@linkplain laas.openrobots.ontology.OroServer#stats() stats()}: returns some statistics on the server
- {@linkplain laas.openrobots.ontology.backends.OpenRobotsOntology#reload() reload()}: Reload the base ontologies, discarding all inserted of removed statements
- {@linkplain laas.openrobots.ontology.backends.OpenRobotsOntology#save(String) save(String)}: exports the current ontology model to an OWL file. The provided path must be writable by the server.
- agents
- {@linkplain laas.openrobots.ontology.modules.alterite.AlteriteModule#discriminateForAgent(String, Set) discriminateForAgent(String, Set)}: returns a list of properties that helps to differentiate individuals for a specific agent.
- {@linkplain laas.openrobots.ontology.modules.alterite.AlteriteModule#findForAgent(String, String, Set) findForAgent(String, String, Set)}: tries to identify a resource given a set of partially defined statements in an specific agent model.
- {@linkplain laas.openrobots.ontology.modules.alterite.AlteriteModule#findForAgent(String, String, Set, Set) findForAgent(String, String, Set, Set)}: tries to identify a resource given a set of partially defined statements and restrictions in an specific agent model.
- {@linkplain laas.openrobots.ontology.modules.alterite.AlteriteModule#listAgents() listAgents()}: Returns the set of agents I'm aware of (ie, for whom I have a cognitive model).
- {@linkplain laas.openrobots.ontology.modules.alterite.AlteriteModule#addForAgent(String, Set) addForAgent(String, Set)}: adds one or several statements (triplets S-P-O) to a specific agent model, in long term memory.
- {@linkplain laas.openrobots.ontology.modules.alterite.AlteriteModule#addForAgent(String, Set, String) addForAgent(String, Set, String)}: adds one or several statements (triplets S-P-O) to a specific agent model associated with a memory profile.
- {@linkplain laas.openrobots.ontology.modules.alterite.AlteriteModule#removeForAgent(String, Set) removeForAgent(String, Set)}: adds one or several statements (triplets S-P-O) to a specific agent model, in long term memory.
- {@linkplain laas.openrobots.ontology.modules.alterite.AlteriteModule#save(String, String) save(String, String)}: exports the cognitive model of a given agent to an OWL file. The provided path must be writable by the server.
- base
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#safeAdd(Set) safeAdd(Set)}: try to add news statements in long term memory, if they don't lead to inconsistencies (return false if at least one stmt wasn't added).
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#safeAdd(Set, String) safeAdd(Set, String)}: try to add news statements with a specific memory profile, if they don't lead to inconsistencies (return false if at least one stmt wasn't added).
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#check(Set) check(Set)}: checks that one or several statements are asserted or can be inferred from the ontology
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#checkConsistency() checkConsistency()}: checks that the ontology is semantically consistent
- {@linkplain laas.openrobots.ontology.OroServer#help() help()}: returns a human-friendly list of available methods with their signatures and short descriptions.
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#lookup(String) lookup(String)}: try to identify a concept from its id or label, and return it, along with its type (class, instance, object_property, datatype_property).
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#lookup(String, String) lookup(String, String)}: try to identify a concept from its id or label and its type (class, instance, object_property, datatype_property).
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#add(Set) add(Set)}: adds one or several statements (triplets S-P-O) to the robot model, in long term memory.
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#add(Set, String) add(Set, String)}: adds one or several statements (triplets S-P-O) to the robot model associated with a memory profile.
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#remove(Set) remove(Set)}: removes one or several statements (triplets S-P-O) from the ontology.
- concept comparison
- {@linkplain laas.openrobots.ontology.modules.categorization.CategorizationModule#discriminate(Set) discriminate(Set)}: returns a list of properties that helps to differentiate individuals.
- {@linkplain laas.openrobots.ontology.modules.categorization.CategorizationModule#getDifferences(String, String) getDifferences(String, String)}: given two concepts, return the list of relevant differences (types, properties...) between these concepts.
- {@linkplain laas.openrobots.ontology.modules.categorization.CategorizationModule#getSimilarities(String, String) getSimilarities(String, String)}: given two concepts, return the list of relevant similarities (types, properties...) between these concepts.
- events
- {@linkplain laas.openrobots.ontology.modules.events.EventModule#registerEvent(String, String, String, List, IEventConsumer) registerEvent(String, String, String, List, IEventConsumer)}: registers an event. Expected parameters are: type, triggering type, variable, event pattern. The last parameter is set automatically.
- natural language
- {@linkplain laas.openrobots.ontology.modules.naturallanguage.NaiveNaturalLanguageModule#processNL(String) processNL(String)}: try to parse a natural language sentence, and, if it succeed, execute and answer something meaningful.
- querying
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#find(String, Set) find(String, Set)}: tries to identify a resource given a set of partially defined statements about this resource.
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#find(String, Set, Set) find(String, Set, Set)}: tries to identify a resource given a set of partially defined statements plus restrictions about this resource.
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#getInfos(String) getInfos(String)}: returns the set of asserted and inferred statements whose the given node is part of. It represents the usages of a resource.
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#query(String, String) query(String, String)}: performs one SPARQL query on the ontology
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#getResourceDetails(String) getResourceDetails(String)}: returns a serialized ResourceDescription object that describe all the links of this resource with others resources (sub and superclasses, instances, properties, etc.).
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#getResourceDetails(String, String) getResourceDetails(String, String)}: returns a serialized ResourceDescription object that describe all the links of this resource with others resources (sub and superclasses, instances, properties, etc.). The second parameter specify the desired language (following RFC4646).
- taxonomy
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#getClassesOf(String) getClassesOf(String)}: returns a map of {class name, label} (or {class name, class name without namespace} is no label is available) of asserted and inferred classes of a given individual.
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#getDirectClassesOf(String) getDirectClassesOf(String)}: returns a map of {class name, label} (or {class name, class name without namespace} is no label is available) of asserted and inferred direct classes of a given individual.
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#getDirectInstancesOf(String) getDirectInstancesOf(String)}: returns a map of {instance name, label} (or {instance name, instance name without namespace} is no label is available) of asserted and inferred direct instances of a given class.
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#getDirectSubclassesOf(String) getDirectSubclassesOf(String)}: returns a map of {class name, label} (or {class name, class name without namespace} is no label is available) of all asserted and inferred direct subclasses of a given class.
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#getDirectSuperclassesOf(String) getDirectSuperclassesOf(String)}: returns a map of {class name, label} (or {class name, class name without namespace} is no label is available) of all asserted and inferred direct superclasses of a given class.
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#getInstancesOf(String) getInstancesOf(String)}: returns a map of {instance name, label} (or {instance name, instance name without namespace} is no label is available) of asserted and inferred instances of a given class.
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#getSubclassesOf(String) getSubclassesOf(String)}: returns a map of {class name, label} (or {class name, class name without namespace} is no label is available) of all asserted and inferred subclasses of a given class.
- {@linkplain laas.openrobots.ontology.modules.base.BaseModule#getSuperclassesOf(String) getSuperclassesOf(String)}: returns a map of {class name, label} (or {class name, class name without namespace} is no label is available) of all asserted and inferred superclasses of a given class.
Where to go then?
- If you just want to use the server, a good source of examples is the {@link laas.openrobots.ontology.tests.OpenRobotsOntologyTest OpenRobotsOntologyTest} class which contains over 25 unit tests, covering most of the API.
- The socket communication protocol is documented here: {@link laas.openrobots.ontology.connectors.SocketConnector}
- If you're interested in the server internal's, {@link laas.openrobots.ontology.OroServer} is the main entry point to the software.