Design ====== The integration between ROS and TypeDB is implemented with 2 classes, `TypeDBInterface `_ and `ROSTypeDBInterface `_. The `TypeDBInterface `_ class interacts with the typeDB database using the `typedb python api `_, and it contains basic functionalities that are common for all applications, such as `insert_database `_ and `match_database `_. The `ROSTypeDBInterface `_ class is a ROS 2 `LifeCycle `_ Node, and it implements 2 ROS interfaces. A ROS service server :code:`ros_typedb_interface/query` that is used to query the database, which uses the `Query.srv `_ service type. And the ROS topic :code:`ros_typedb_interface/events`, where it publishes insert and delete events when data is inserted or deleted from the database with the query service. Class diagram: .. raw:: html

Overview: .. raw:: html

.. TypeDBInterfaceLink: https://github.com/Rezenders/ros_typedb/blob/main/ros_typedb/ros_typedb/typedb_interface.py .. ROSTypeDBInterfaceLink: https://github.com/Rezenders/ros_typedb/blob/main/ros_typedb/ros_typedb/ros_typedb_interface.py .. PythonAPILink: https://typedb.com/docs/clients/2.x/python/python-tutorial.html .. InsertDatabaseLink: https://github.com/Rezenders/ros_typedb/blob/c16e3f8f1958f4ac2333c7b7d0612c8c79d698a0/ros_typedb/ros_typedb/typedb_interface.py#L153 .. MatchDatabaseLink: https://github.com/Rezenders/ros_typedb/blob/c16e3f8f1958f4ac2333c7b7d0612c8c79d698a0/ros_typedb/ros_typedb/typedb_interface.py#L175 .. LifeCycleLink: https://design.ros2.org/articles/node_lifecycle.html .. QuerySrvLink: https://github.com/Rezenders/ros_typedb/blob/main/ros_typedb_msgs/srv/Query.srv