Skip to content

EmaroLab/ros_multi_ontology_references

Repository files navigation

A ROS Multi Ontology References (aRMOR)

The complete ARMOR service: its direct dependencies, and a python client example.

This repository contains four ROS packages:

aRMOR is a ROS service depending on AMOR (a OWLAPI-based library), and armor_msgs, which contains the ROSjava-based input and output interfaces of aRMOR. The project contains also an example of a Python service's client that uses our api to perform some simple manipulations and queries to a test OWL ontology.

Installation

Each package is a Git sub-module (i.e., a repository, see here for a simple guide).

For installing the progect make sure to have a working installation of ROS and install ROSJava (if you didn't already). For instance, for ROS kinetic type

  • sudo apt-get install ros-kinetic-rosjava

after, run

  • cd your_catkin_ws/src
  • git clone https://github.com/EmaroLab/ros_multi_ontology_references.git
  • cd ros_multi_ontology_references/
  • git submodule update --init --recursive --remote
  • optionally update to the last version
    • git submodule foreach git pull origin master
    • git submodule foreach git checkout master
  • cd ../..
  • catkin_make
  • cd src/ros_multi_ontology_references/armor
  • ./gradlew deployApp

Getting Started

For runnig an hello-world example, type in different terminals:

  • rosrun armor execute it.emarolab.armor.ARMORMainService
  • rosrun armor_py_api client_test.py

You can further test the server by sending requests manually, for instance:

rosservice call /armor_interface_srv "armor_request:
    client_name: ''
    reference_name: 'reference'
    command: 'QUERY'
    primary_command_spec: 'CLASS'
    secondary_command_spec: 'RESTRICTIONS'
    args: ['Class_4']" 

Check here all the aMOR features and installation details. Also, check here the complete list of requests that the service can digest. For more documentation about each modules and the last releases, refer to the links of the four repositories above.

Known Issues

aRMOR gives an elementary interface to SPARQL. We made aMOR in order to accommodate a better support for SPARQL, but we are not planning to implement it soon. You are welcome if you want to contribute or share your idea, and (if your findings are based on OWL-API) we will be happy to integrate them in aRMOR.

Also, it is recommended to do not use ontology with entities having IRI with different roots. For importing entities with different IRIs and convert them to a common root we use the ontology editor Protege.

With such an editor, we also implement ontological structures that do not change at run-time. Indeed aMOR does not support the whole OWL operators, but it focus only on the once that most often are needed in robotic applications. Therefore, it is common to design complex -but static- semantic off-line, and load them through file at run-time with manipulation and querying purposes.

Related Publication

If aMOR is usefull for your applications, please cite our related work

Here scenarios in which we used aRMOR

Contacts

For comment, discussions or support git issues are welcome. For other notices you can contact us at:

Releases

No releases published

Packages

No packages published