ORO: the OpenRobots Ontology
Server documentation - build on 2024-01-23

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 and 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.


Overview of the cognitive kernel features

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, Python, TCL bindings, a ROS node, a YARP connector). New ones can be easily created on request.

List of available methods

(Last updated on 2011-10-24 10:56:23)
  • administration
    • makeHtmlDoc(): returns a list of available methods in HTML format for inclusion in documentation.
    • listMethods(): returns the list of available methods with their signatures and short descriptions as a map.
    • stats(): returns some statistics on the server
    • listSimpleMethods(): returns a raw list of available methods.
    • reset(): Reload the base ontologies, discarding all inserted of removed statements, in every models
    • list(String): Lists on the serveur stdout all facts matching a given pattern.
    • save(): exports the current ontology model to an OWL file. The file will be saved to the current directory with an automaticallygenerated name.
    • save(String): exports the current ontology model to an OWL file. The provided path must be writable by the server.
  • agent
    • getInfosForAgent(String, String): returns the set of asserted and inferred statements whose the given node is part of. It represents the usages of a resource.
  • agents
  • base
    • 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).
    • 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).
    • check(Set): checks that one or several statements are asserted or can be inferred from the ontology
    • checkConsistency(): checks that the ontology is semantically consistent
    • checkConsistency(Set): checks that a set of statements are consistent with the current model
    • help(): returns a human-friendly list of available methods with their signatures and short descriptions.
    • getLabel(String): return the label of a concept, if available.
    • 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).
    • lookup(String, String): try to identify a concept from its id or label and its type (class, instance, object_property, datatype_property).
    • revise(Set, String):
    • add(Set): adds one or several statements (triplets S-P-O) to the robot model, in long term memory.
    • add(Set, String): adds one or several statements (triplets S-P-O) to the robot model associated with a memory profile.
    • clear(Set): removes statements in the given set
    • remove(Set): removes one or several statements (triplets S-P-O) from the ontology.
    • update(Set): update the value of a functional property.
  • concept comparison
  • events
    • registerEventForAgent(String, String, String, String, List): registers an event on a specific agent model. Expected parameters are: agent, type, triggering type, variable, event pattern.
    • registerEventForAgent(String, String, String, List): registers an event on a specific agent model. Expected parameters are: agent, type, triggering type, event pattern.
    • registerEvent(String, String, String, List): registers an event. Expected parameters are: type, triggering type, variable, event pattern.
    • registerEvent(String, String, List): registers an event. Expected parameters are: type, triggering type, event pattern.
    • clearEvent(String, String): Remove one specific event from a specific model.
    • clearEventsForAgent(String): Remove all events associated to a specific model.
    • clearEvent(String): Remove one specific event from the main model.
    • clearEvents(): Remove all events associated to the main model.
  • querying
    • find(String, Set): tries to identify a resource given a set of partially defined statements about this resource.
    • find(String, Set, Set): tries to identify a resource given a set of partially defined statements plus restrictions about this resource.
    • getInfos(String): returns the set of asserted and inferred statements whose the given node is part of. It represents the usages of a resource.
    • query(String, String): performs one SPARQL query on the ontology
    • getResourceDetails(String): returns a serialized ResourceDescription object that describe all the links of this resource with others resources (sub and superclasses, instances, properties, etc.).
    • 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
    • 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.
    • 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.
    • 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.
    • 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.
    • 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.
    • 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.
    • 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.
    • 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 OpenRobotsOntologyTest class which contains over 35 unit tests, covering most of the API.
  • The socket communication protocol is documented here: SocketConnector
  • If you're interested in the server internal's, OroServer is the main entry point to the software.

All Packages Core Packages Modules Packages Tests Packages 
Package Description
laas.openrobots.ontology
Base package, that mainly stores the oro-server entry class, OroServer.
laas.openrobots.ontology.backends
Provides the actual underlying ontology-based storage.
laas.openrobots.ontology.connectors
Provides external connectors to communicate with the server.
laas.openrobots.ontology.exceptions
Stores all the exceptions used by oro-server.
laas.openrobots.ontology.helpers  
laas.openrobots.ontology.json  
laas.openrobots.ontology.modules  
laas.openrobots.ontology.modules.alterite
Allows explicit representation of other agents with independant models of the world.
laas.openrobots.ontology.modules.base  
laas.openrobots.ontology.modules.categorization
Provides methods to extract similarities, differences and categories from a set of concepts.
laas.openrobots.ontology.modules.events
Provides the cognitive event manager module.
laas.openrobots.ontology.modules.memory
Provides the memory management module (including fact forgetting and reinforcement learning.
laas.openrobots.ontology.service
This package stores all the classes related to service declaration.
A service is: a method tagged with the RPCMethod annotation...
laas.openrobots.ontology.tests
Provides unit-tests suites fro oro-server.
laas.openrobots.ontology.types
Stores some type and serialization-related classes.