83 lines
2.2 KiB
C++
83 lines
2.2 KiB
C++
#ifndef OBELISK_INCLUDE_OBELISK_H
|
|
#define OBELISK_INCLUDE_OBELISK_H
|
|
|
|
#include "knowledge_base.h"
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
|
|
/**
|
|
* @brief The obelisk namespace contains everything needed to compile obelisk
|
|
* code.
|
|
*
|
|
*/
|
|
namespace obelisk
|
|
{
|
|
/**
|
|
* @brief The obelisk library provides everything needed to consult the
|
|
* KnowledgeBase.
|
|
*
|
|
*/
|
|
class Obelisk
|
|
{
|
|
private:
|
|
std::unique_ptr<obelisk::KnowledgeBase> kb_;
|
|
|
|
public:
|
|
/**
|
|
* @brief Construct a new Obelisk object.
|
|
*
|
|
*/
|
|
Obelisk(std::string filename);
|
|
|
|
/**
|
|
* @brief Destroy the Obelisk object.
|
|
*
|
|
*/
|
|
~Obelisk() = default;
|
|
|
|
/**
|
|
* @brief Get the obelisk version.
|
|
*
|
|
* @return std::string The version.
|
|
*/
|
|
std::string getVersion();
|
|
|
|
/**
|
|
* @brief Get the obelisk library so version.
|
|
*
|
|
* @return int The version.
|
|
*/
|
|
int getLibVersion();
|
|
|
|
/**
|
|
* @brief Query the obelisk KnowledgeBase to see if a Fact is true
|
|
* or not.
|
|
*
|
|
* @param[in] p_obelisk The obelisk object pointer.
|
|
* @param[in] left_entity The left entity.
|
|
* @param[in] verb The verb.
|
|
* @param[in] right_entity The right entity.
|
|
* @return double Returns whether or not the Fact is true.
|
|
*/
|
|
double query(const std::string& leftEntity,
|
|
const std::string& verb,
|
|
const std::string& rightEntity);
|
|
|
|
/**
|
|
* @brief Query the Obelisk KnowledgeBase and return the suggested
|
|
* action to take.
|
|
*
|
|
* @param[in] leftEntity The left entity.
|
|
* @param[in] verb The verb.
|
|
* @param[in] rightEntity The right entity.
|
|
* @return std::string Returns the suggested action.
|
|
*/
|
|
std::string queryAction(const std::string& leftEntity,
|
|
const std::string& verb,
|
|
const std::string& rightEntity);
|
|
};
|
|
} // namespace obelisk
|
|
|
|
#endif
|