owlcpp  v0.3.3-86-g20d8c12~
C++ library for working with OWL ontologies
 All Classes Namespaces Files Functions Macros Pages
triple_store.hpp
Go to the documentation of this file.
1 
6 #ifndef TRIPLE_STORE_HPP_
7 #define TRIPLE_STORE_HPP_
8 #include "owlcpp/rdf/detail/map_traits.hpp"
9 #include "owlcpp/rdf/map_ns.hpp"
10 #include "owlcpp/rdf/map_node.hpp"
11 #include "owlcpp/rdf/map_doc.hpp"
13 #include "owlcpp/rdf/map_std.hpp"
16 #include "owlcpp/rdf/nodes_std.hpp"
22 
23 namespace owlcpp{
24 
32 class Triple_store :
33 public Map_std_ns_crtpb<Triple_store>,
34 public Map_std_node_crtpb<Triple_store>,
35 public Crtpb_ns_node_iri<Triple_store>,
36 public Map_doc_crtpb<Triple_store>,
37 public Map_node_literal_crtpb<Triple_store>,
38 public Map_node_blank_crtpb<Triple_store>,
39 public Map_triple_crtpb<Triple_store>
40 {
41  friend class Map_std_ns_crtpb<Triple_store>;
42  friend class Map_std_node_crtpb<Triple_store>;
43  friend class Map_node_literal_crtpb<Triple_store>;
44  friend class Map_node_blank_crtpb<Triple_store>;
45  friend class Map_doc_crtpb<Triple_store>;
46  friend class Map_triple_crtpb<Triple_store>;
47 
48  typedef detail::Map_traits<Triple_store> traits;
49 
50 public:
51  typedef traits::map_std_type map_std_type;
52  typedef traits::map_ns_type map_ns_type;
53  typedef traits::map_node_type map_node_type;
54  typedef traits::map_doc_type map_doc_type;
55  typedef traits::map_triple_type map_triple_type;
56 
57  struct Err : public Rdf_err {};
58 
59  Triple_store()
60  : map_std_(map_std_type::get(Nodes_owl()))
61  {}
62 
63  template<class Nodes_std> explicit Triple_store(Nodes_std const& nodes_std)
64  : map_std_(map_std_type::get(nodes_std))
65  {}
66 
67  map_std_type const& map_std() const {return map_std_;}
68  map_ns_type const& map_ns() const {return map_ns_;}
69  map_node_type const& map_node() const {return map_node_;}
70  map_doc_type const& map_doc() const {return map_doc_;}
71  map_triple_type const& map_triple() const {return map_triple_;}
72 
73  //disambiguate overloaded methods
74  using Map_std_ns_crtpb<Triple_store>::operator[];
75  using Map_std_node_crtpb<Triple_store>::operator[];
76  using Map_doc_crtpb<Triple_store>::operator[];
77  using Map_std_ns_crtpb<Triple_store>::at;
79  using Map_doc_crtpb<Triple_store>::at;
80 
83 
84  using Map_std_node_crtpb<Triple_store>::find_node_iri;
85  using Crtpb_ns_node_iri<Triple_store>::find_node_iri;
86 
87  using Map_std_ns_crtpb<Triple_store>::find;
89  using Map_doc_crtpb<Triple_store>::find;
90 
91  using Map_std_ns_crtpb<Triple_store>::insert;
93 
94 private:
95  map_std_type const& map_std_;
96  map_ns_type map_ns_;
97  map_node_type map_node_;
98  map_doc_type map_doc_;
99  map_triple_type map_triple_;
100 
101 };
102 
107 }//namespace owlcpp
108 #endif /* TRIPLE_STORE_HPP_ */
Node_id insert_node_iri(const Ns_id nsid, std::string const &name)
Insert IRI node.
Definition: map_std_node_crtpb.hpp:80
Definition: nodes_std.hpp:21
Definition: triple_store.hpp:57
Node_id insert_node_iri(std::string const &iri)
if not already present, store IRI reference node
Definition: crtpb_ns_node_iri.hpp:24
Definition: map_node_blank_crtpb.hpp:19
Definition: exception.hpp:13
Definition: map_node_literal_crtpb.hpp:19
void insert(Triple const &t)
Insert a new triple void insert( const Node_id subj, const Node_id pred, const Node_id obj...
Definition: map_triple_crtpb.hpp:86
Definition: map_triple_crtpb.hpp:19
Definition: crtpb_ns_node_iri.hpp:16
Definition: map_std_node_crtpb.hpp:20
node_type const * find(const Node_id id) const
Definition: map_std_node_crtpb.hpp:59
Store namespace IRIs, RDF nodes, document infos, and RDF triples.
Definition: triple_store.hpp:32
node_type const & at(const Node_id id) const
Definition: map_std_node_crtpb.hpp:51
Definition: map_doc_crtpb.hpp:20
Definition: map_std_ns_crtpb.hpp:20