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

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

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