gStore/Query/SPARQLquery.cpp

191 lines
3.5 KiB
C++
Raw Normal View History

2016-09-18 20:01:57 +08:00
/*=============================================================================
# Filename: SPARQLquery.cpp
# Author: Bookug Lobert
# Mail: 1181955272@qq.com
# Last Modified: 2015-10-31 19:15
# Description: implement functions in SPARQLquery.h
=============================================================================*/
#include "SPARQLquery.h"
#include "../Parser/DBparser.h"
#include "../Database/Database.h"
using namespace std;
SPARQLquery::SPARQLquery(const string& _query)
{
}
SPARQLquery::SPARQLquery()
{
}
SPARQLquery::~SPARQLquery()
{
for(unsigned i = 0; i < this->query_union.size(); i ++)
{
delete this->query_union[i];
}
}
void
SPARQLquery::addQueryVar(const string& _var)
{
query_var.push_back(_var);
}
const int
SPARQLquery::getQueryVarNum()
{
return query_var.size();
}
const vector<string>&
SPARQLquery::getQueryVar()const
{
return this->query_var;
}
const string&
SPARQLquery::getQueryVar(int _id)
{
return this->query_var.at(_id);
}
void
SPARQLquery::addTriple(const Triple& _triple){
int last_i = query_union.size()-1;
query_union[last_i]->addTriple(_triple);
}
const int
SPARQLquery::getBasicQueryNum()
{
return this->query_union.size();
}
void
SPARQLquery::encodeQuery(KVstore* _p_kv_store)
{
for(unsigned i = 0; i < this->query_union.size(); i ++)
{
(this->query_union[i])->encodeBasicQuery(_p_kv_store, this->query_var);
}
}
void
SPARQLquery::encodeQuery(KVstore* _p_kv_store, vector< vector<string> > sparql_query_varset)
{
for(unsigned i = 0; i < this->query_union.size(); i ++)
{
(this->query_union[i])->encodeBasicQuery(_p_kv_store, sparql_query_varset[i]);
}
}
BasicQuery&
SPARQLquery::getBasicQuery(int basic_query_id)
{
return *(query_union[basic_query_id]);
}
void
SPARQLquery::addBasicQuery(){
query_union.push_back(new BasicQuery(""));
}
void
SPARQLquery::addBasicQuery(BasicQuery* _basic_q)
{
this->query_union.push_back(_basic_q);
}
vector<BasicQuery*>&
SPARQLquery::getBasicQueryVec()
{
return this->query_union;
}
void
SPARQLquery::print(ostream& _out_stream){
int k=getQueryVarNum();
cout<<"QueryVar "<<k<<":"<<endl;
for (int i=0;i<k;i++){
cout<<getQueryVar(i)<<endl;
}
k=getBasicQueryNum();
cout<<"Block "<<k<<" in total."<<endl;
for (int i=0;i<k;i++){
cout<<"Block "<<i<<endl;
getBasicQuery(i).print(_out_stream);
}
}
string
SPARQLquery::triple_str()
{
stringstream _ss;
_ss << "varNum:" << this->query_var.size() << endl;
for(unsigned i = 0; i < this->query_var.size(); i ++)
{
_ss << this->query_var[i] << "\t";
}
_ss << endl;
for(unsigned i = 0; i < this->query_union.size(); i ++)
{
_ss << "bq" << i << " :" << this->query_union[i]->triple_str() << endl;
}
return _ss.str();
}
string
SPARQLquery::candidate_str()
{
stringstream _ss;
for(unsigned i = 0; i < this->query_union.size(); i ++)
{
_ss << "bq" << i << " :" << this->query_union[i]->candidate_str() << endl;
}
return _ss.str();
}
string
SPARQLquery::result_str()
{
stringstream _ss;
for(unsigned i = 0; i < this->query_union.size(); i ++)
{
_ss << "bq" << i << " :" << this->query_union[i]->result_str() << endl;
}
return _ss.str();
}
string
SPARQLquery::to_str()
{
stringstream _ss;
_ss << "varNum:" << this->query_var.size() << endl;
for(unsigned i = 0; i < this->query_var.size(); i ++)
{
_ss << this->query_var[i] << "\t";
}
_ss << endl;
for(unsigned i = 0; i < this->query_union.size(); i ++)
{
_ss << "bq" << i << " :\n" << this->query_union[i]->to_str() << endl;
}
return _ss.str();
}