/* * Triple.cpp * * Created on: 2014-6-20 * Author: liyouhuan */ #include "Triple.h" Triple::Triple(const string& _s, const string& _p, const string& _o) { this->subject = _s; this->predicate = _p; this->object = _o; } /* _line responds to a triple * It's OK if _line ends up with '.' or not * tuples separated by '\t' * */ Triple::Triple(string _line) { size_t _first_tab = _line.find('\t'); size_t _second_tab = _line.find('\t', _first_tab+1); int _sub_size = _first_tab - 0; int _pre_size = _second_tab - (_first_tab+1); this->subject = _line.substr(0, _sub_size); this->predicate = _line.substr(_first_tab+1, _pre_size); int _obj_size = -1; char _last_c = _line.at(_line.length()-1); /* make sure that '.' is not included, * if exist at last character */ if(_last_c != '.'){ _obj_size = _line.length() - (_second_tab+1); }else{ _obj_size = (_line.length()-1) - (_second_tab+1); } this->object = _line.substr(_second_tab+1, _obj_size); } Triple::Triple() { this->subject = ""; this->predicate = ""; this->object = ""; } Triple::Triple(const Triple& _triple) { this->subject = _triple.subject; this->predicate = _triple.predicate; this->object = _triple.object; } Triple& Triple::operator=(const Triple& _triple) { this->subject = _triple.subject; this->predicate = _triple.predicate; this->object = _triple.object; return *this; } void Triple::setSubject(const string& _s){ this->subject= _s; } void Triple::setPredicate(const string& _p){ this->predicate= _p; } void Triple::setObject(const string& _o){ this->object= _o; } const string& Triple::getSubject()const{ return this->subject; } const string& Triple::getPredicate()const{ return this->predicate; } const string& Triple::getObject()const{ return this->object; } const string Triple::toString()const{ return this->subject+"\t"+ this->predicate+"\t"+ this->object+"."; } /* for TripleWithObjType */ TripleWithObjType::TripleWithObjType():Triple() { this->object_type = ' '; } TripleWithObjType::TripleWithObjType(const string& _s, const string& _p, const string& _o, const char& _o_type):Triple(_s, _p, _o) { this->object_type = _o_type; } TripleWithObjType::TripleWithObjType(const TripleWithObjType& _triple_with_objtype):Triple(_triple_with_objtype) { this->object_type = _triple_with_objtype.object_type; } TripleWithObjType& TripleWithObjType::operator=(const TripleWithObjType& _triple_with_objtype) { Triple::operator=(_triple_with_objtype); this->object_type = _triple_with_objtype.object_type; return *this; } void TripleWithObjType::setObjType(const char &_o_type) { this->object_type = _o_type; } bool TripleWithObjType::isObjEntity()const { return this->object_type == TripleWithObjType::ENTITY; } bool TripleWithObjType::isObjLiteral()const { return this->object_type == TripleWithObjType::LITERA; } const string TripleWithObjType::toString()const { return this->subject+"\t"+ this->predicate+"\t"+ this->object+"\t"+ this->object_type + "."; }