KJB
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Semantic_traits.h
Go to the documentation of this file.
1 #ifndef SEMANTIC_TRAITS_H_
2 #define SEMANTIC_TRAITS_H_
3 
11 #include "semantics/SemanticIO.h"
13 #include <map>
14 #include <vector>
15 
16 namespace semantics
17 {
18 
22 
25 void initialize_semantic_maps(const std::string config_file_path);
26 
30  const std::map<std::string, std::string>& config_file_path_map
31  );
32 
33 class Null_primitive;
34 class Unary_relation_primitive;
35 class Binary_relation_primitive;
36 class Category_primitive;
37 class Color_primitive;
38 class Size_primitive;
39 class Semantic_object;
40 class Unary_predicate;
41 class Binary_predicate;
42 
43 template<class T>
44 class Semantic_traits
45 {};
46 
47 
48 template<>
49 struct Semantic_traits<Null_primitive>
50 {
51  enum
52  {
53  n_args = 0,
54  type_code = 0
55  };
57  {
58  static Step_code::Weights::Data_type f = {{0.1,1,1,1,1,1,1}};
59  static Step_code::Weights filter(f);
60  return filter.normalize();
61  }
62 };
63 
64 
65 template<>
66 struct Semantic_traits<Unary_relation_primitive>
67 {
68  enum
69  {
70  n_args = 0,
71  type_code = 1,
72  TARGET = 0
73  };
75  {
76  static Step_code::Weights::Data_type f = {{0.1,1,0,0,0,0,0}};
77  static Step_code::Weights filter(f);
78  return filter.normalize();
79  }
80 };
81 
82 
83 template<>
84 struct Semantic_traits<Binary_relation_primitive>
85 {
86  enum
87  {
88  n_args = 0,
89  type_code = 2
90  };
92  {
93  static Step_code::Weights::Data_type f = {{0.1,1,0,0,0,0,0}};
94  static Step_code::Weights filter(f);
95  return filter.normalize();
96  }
97 };
98 
99 
100 template<>
101 struct Semantic_traits<Semantic_object>
102 {
103  typedef Category_primitive Head_type;
104  enum
105  {
106  n_args = 2,
107  type_code = 6,
108  COLOR = 0,
109  SIZE = 1
110  };
112  {
113  static Step_code::Weights::Data_type f = {{0.1,1,1,0,0,1,1}};
114  static Step_code::Weights filter(f);
115  return filter.normalize();
116  }
117 };
118 
119 
120 template<>
121 struct Semantic_traits<Category_primitive>
122 {
123  enum
124  {
125  n_args = 0,
126  type_code = 3
127  };
129  {
130  static Step_code::Weights::Data_type f = {{0.1,1,0,0,0,0,0}};
131  static Step_code::Weights filter(f);
132  return filter.normalize();
133  }
134 };
135 
136 
137 template<>
138 struct Semantic_traits<Color_primitive>
139 {
140  enum
141  {
142  n_args = 0,
143  type_code = 4,
144  attribute = 0
145  };
147  {
148  static Step_code::Weights::Data_type f = {{0.1,1,0,0,0,0,0}};
149  static Step_code::Weights filter(f);
150  return filter.normalize();
151  }
152 };
153 
154 
155 template<>
156 struct Semantic_traits<Size_primitive>
157 {
158  enum
159  {
160  n_args = 0,
161  type_code = 5,
162  attribute = 1
163  };
165  {
166  static Step_code::Weights::Data_type f = {{0.1,1,0,0,0,0,0}};
167  static Step_code::Weights filter(f);
168  return filter.normalize();
169  }
170 };
171 
172 
173 
174 
175 template<>
176 struct Semantic_traits<Unary_predicate>
177 {
178  typedef Unary_relation_primitive Head_type;
179  enum
180  {
181  n_args = 1,
182  type_code = 7,
183  TARGET = 0
184  };
186  {
187  static Step_code::Weights::Data_type f = {{0.1,1,1,1,0,0,0}};
188  static Step_code::Weights filter(f);
189  return filter.normalize();
190  }
191 };
192 
193 
194 template<>
195 struct Semantic_traits<Binary_predicate>
196 {
197  typedef Binary_relation_primitive Head_type;
198  enum
199  {
200  n_args = 2,
201  type_code = 8,
202  TARGET = 0,
203  BASE = 1
204  };
206  {
207  static Step_code::Weights::Data_type f = {{0.1,1,1,1,1,0,0}};
208  static Step_code::Weights filter(f);
209  return filter.normalize();
210  }
211 };
212 
226 
229 const boost::shared_ptr<Null_semantic_terminal>&
231 
234 boost::shared_ptr<Object_elaboration>
236 (
237  const Object_data::Val_type& category,
238  const Semantic_elaboration::Referent_code& referent_code =
240 );
241 
242 const std::vector<Step_code::Weights>& step_code_priors();
243 
244 };
245 
246 #endif
247 
248 
249 
250 
251 
252 
253 
static const Step_code::Weights & step_filter()
Definition: Semantic_traits.h:111
Semantic_data< Binary_predicate > Binary_data
Definition: Semantic_traits.h:221
Semantic_data< Color_primitive > Color_data
Definition: Semantic_traits.h:217
static const Step_code::Weights & step_filter()
Definition: Semantic_traits.h:164
static const Step_code::Weights & step_filter()
Definition: Semantic_traits.h:128
const std::vector< Step_code::Weights > & step_code_priors()
Definition: Semantic_traits.cpp:176
Definition: Semantic_elaboration.h:78
Semantic_data< Null_primitive > Null_data
Definition: Semantic_traits.h:213
void initialize_semantic_maps()
read in mappings from files, default config path
Definition: Semantic_traits.cpp:53
boost::array< Val_type, D > Data_type
Definition: prob_weight_array.h:44
Unary_relation_primitive Head_type
Definition: Semantic_traits.h:178
Semantic_data< Semantic_object > Object_data
Definition: Semantic_traits.h:219
Binary_relation_primitive Head_type
Definition: Semantic_traits.h:197
Semantic_data< Size_primitive > Size_data
Definition: Semantic_traits.h:218
static const Step_code::Weights & step_filter()
Definition: Semantic_traits.h:146
Nonterminal_elaboration< Unary_predicate > Unary_elaboration
Definition: Semantic_traits.h:224
static const Step_code::Weights & step_filter()
Definition: Semantic_traits.h:91
Traits class storing information specific to given elaboration types.
Definition: Semantic_elaboration.h:52
static const Step_code::Weights & step_filter()
Definition: Semantic_traits.h:56
Class representing semantic nodes at the leaves of trees.
Definition: Semantic_elaboration.h:70
static const Step_code::Weights & step_filter()
Definition: Semantic_traits.h:185
Nonterminal_elaboration< Binary_predicate > Binary_elaboration
Definition: Semantic_traits.h:225
Semantic_data< Binary_relation_primitive > Binary_relation_data
Definition: Semantic_traits.h:216
int Referent_code
Definition: Semantic_elaboration.h:272
static const Step_code::Weights & step_filter()
Definition: Semantic_traits.h:74
Forward declarations.
Definition: prob_weight_array.h:28
Nonterminal_elaboration< Semantic_object > Object_elaboration
Definition: Semantic_traits.h:223
Semantic_data< Category_primitive > Category_data
Definition: Semantic_traits.h:214
Semantic_data< Unary_relation_primitive > Unary_relation_data
Definition: Semantic_traits.h:215
Terminal_elaboration< Null_primitive > Null_semantic_terminal
Definition: Semantic_elaboration.h:87
Category_primitive Head_type
Definition: Semantic_traits.h:103
static const Step_code::Weights & step_filter()
Definition: Semantic_traits.h:205
Self_t & normalize()
normalize the weights
Definition: prob_weight_array.h:237
static const Referent_code NULL_REFERENT
Definition: Semantic_elaboration.h:274
Concrete semantic data class for storing hash codes about nodes.
Definition: Semantic_elaboration.h:62
Semantic_data< Unary_predicate > Unary_data
Definition: Semantic_traits.h:220
Semantic_db::Val_type Val_type
Definition: Semantic_elaboration.h:111
const boost::shared_ptr< Null_semantic_terminal > & null_semantic_terminal()
creates a new "null" terminal node (w/ no semantic content)
Definition: Semantic_traits.cpp:46
boost::shared_ptr< Object_elaboration > make_plain_semantic_object(const Object_data::Val_type &category, const Semantic_elaboration::Referent_code &referent_code)
create an object semantic node of category category, no attributes
Definition: Semantic_traits.cpp:25