owlcpp  v0.3.3~
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  map_doc_(),
66  map_triple_()
67  {}
68 
69  map_std_type const& map_std() const {return map_std_;}
70  map_ns_type const& map_ns() const {return map_ns_;}
71  map_node_type const& map_node() const {return map_node_;}
72  map_doc_type const& map_doc() const {return map_doc_;}
73  map_triple_type const& map_triple() const {return map_triple_;}
74 
75  //disambiguate overloaded methods
76  using Map_std_ns_crtpb<Triple_store>::operator[];
77  using Map_std_node_crtpb<Triple_store>::operator[];
78  using Map_doc_crtpb<Triple_store>::operator[];
79  using Map_std_ns_crtpb<Triple_store>::at;
81  using Map_doc_crtpb<Triple_store>::at;
82 
85 
86  using Map_std_node_crtpb<Triple_store>::find_node_iri;
87  using Crtpb_ns_node_iri<Triple_store>::find_node_iri;
88 
89  using Map_std_ns_crtpb<Triple_store>::find;
91  using Map_doc_crtpb<Triple_store>::find;
92 
93 private:
94  map_std_type const& map_std_;
95  map_ns_type map_ns_;
96  map_node_type map_node_;
97  map_doc_type map_doc_;
98  map_triple_type map_triple_;
99 
100 };
101 
106 }//namespace owlcpp
107 #endif /* TRIPLE_STORE_HPP_ */