kDB: Knowledge DataBase
Loading...
Searching...
No Matches
Class_h.h
1#pragma once
2
3#include <QList>
4#include <QSharedDataPointer>
5
6/%
7 QStringList included_headers;
8 for(const knowRDF::Node* query_node : query_nodes)
9 {
10 for(const Stuff& s : generateStuffs(query_node, knowCore::Uris::askcore_queries::result) + generateStuffs(query_node, knowCore::Uris::askcore_queries::binding))
11 {
12 if(not s.header.isEmpty() and not included_headers.contains(s.header))
13 {
14 included_headers.append(s.header);%/
15#include </%= s.header %/>/%
16 }
17 }
18 }
19
20%/
21
22
23namespace kDB
24{
25 namespace Repository
26 {
27 class QueryConnectionInfo;
28 }
29}
30
31/%
32for(const QString& ns : namespaces)
33{
34 %/
35namespace /%= ns %/
36{/%
37}
38
39for(const knowRDF::Node* query_node : query_nodes)
40{
41 const knowRDF::Node* name_node = query_node->getFirstChild(knowCore::Uris::foaf::name);
42 const knowRDF::Node* query_query_node = query_node->getFirstChild(knowCore::Uris::askcore_queries::query);
43 QString klass_name = toCamelCase(name_node->literal().value<QString>().expectSuccess(), true);
44 QList<Stuff> returned_stuffs = generateStuffs(query_node, knowCore::Uris::askcore_queries::result);
45 QList<Stuff> argumented_stuffs = generateStuffs(query_node, knowCore::Uris::askcore_queries::binding);
46 bool single_anomymous_result = returned_stuffs.size() == 1 and returned_stuffs.first().name.isEmpty();
47 bool multiple_return = returned_stuffs.size() > 0;
48 bool single_value_return = queryType(query_query_node->literal().value<QString>().expectSuccess(), argumented_stuffs) == kDB::SPARQL::Query::Type::Ask;
49 %/
50 class /%= klass_name %/
51 {
52 public:
53/%
54 if(single_value_return)
55 {
56 %/
57 typedef /%= returned_stuffs.first().type %/ DataType;/%
58 } else if(single_anomymous_result)
59 {
60 %/
61 typedef QList</%= returned_stuffs.first().type %/> DataType;/%
62 } else if(multiple_return)
63 {
64 %/
65 class Result
66 {
67 friend struct /%= klass_name %/;
68 public:
69 Result();
70 Result(const Result& _rhs);
71 Result& operator=(const Result& _rhs);
72 ~Result();
73 bool isValid() const;
74 /%
75 for(const Stuff& rS : returned_stuffs)
76 {%/
77 /%= rS.type %/ /%= toCamelCase(rS.name, false) %/() const; /%
78 }%/
79 private:
80 struct Private;
81 QSharedDataPointer<Private> d;
82 };
83 typedef QList<Result> DataType;/%
84
85 }
86 %/
87 struct Results
88 {/%
89 if(multiple_return or single_anomymous_result or single_value_return)
90 {
91 %/
92 DataType data; /%
93 } %/
94 bool success;
95 QString errorMessage;
96 };
97 public:
98 static Results execute(const kDB::Repository::QueryConnectionInfo& _connectionInfo/%= generateArguments(argumented_stuffs, true) %/);
99 };/%
100}
101for(const QString& ns : namespaces)
102{
103 Q_UNUSED(ns)
104 %/
105}/%
106}
107
108%/
Definition QueryConnectionInfo.h:8
cres_qresult< _T_ > value(TypeCheckingMode _conversion=TypeCheckingMode::Safe) const
Definition Value.h:353
Definition Node.h:17
const Node * getFirstChild(const knowCore::Uri &_predicate) const
Definition Node.cpp:174
Literal literal() const
Definition Node.cpp:123
Definition main.cpp:25