Triples
-
class omexmeta::Triples
A Triples object is a collection of Triple objects.
the implementation of Triples is hampered by the inability to clone Triple objects. Instead triples must use move semantics to get Triples in or out of a Triples object. Under the hood, the Triples object is just a std::vector<Triple>.
Public Functions
-
Triples()
-
explicit Triples(int size)
create an empty Triples object big enough for
- Parameters
size – Triple objects
-
explicit Triples(Triple &triple)
construct a Triples object from a single triple
The triple is moved into element 0 of a new Triples object. The Triple must be passed by reference so that the triple is moved directly, instead of copied and then moved into the Triples object (which is a memory leak).
- Parameters
triple – The triple to put into triples
-
explicit Triples(std::vector<Triple> triples)
construct a Triples object directly from a std::vector<Triple>
-
void moveBack(Triple &triple)
move a Triple to the back of the Triples object. Analogous to push back but with move semantics.
moves a Triple object to the back of Triples
The vector storing the Triples is increased in size by 1 and the
-
void emplace_back(UriHandler &uriHandler, LibrdfNode subject, const PredicatePtr &predicatePtr, const LibrdfNode &resource)
construct a Triple object from the necessary components and move it to the back of Triples
this method is heavily overloaded and has several signatures all of which result in the construction and emplacement of a Triple at the back of Triples.
-
void emplace_back(UriHandler &uriHandler, const LibrdfNode &subject, const LibrdfNode &predicate, const LibrdfNode &resource)
-
void emplace_back(UriHandler &uriHandler, LibrdfNode subject, const Predicate &predicate, const LibrdfNode &resource)
construct a Triple object from the necessary components and move it to the back of Triples
this method is heavily overloaded and has several signatures all of which result in the construction and emplacement of a Triple at the back of Triples.
-
std::vector<std::string> getSubjectsStr()
get all subjects as strings
we do not return the subject itself because subjects cannot be copied, which complicates matters.
- Returns
All subject uri’s as strings in a std::vector
-
std::vector<std::string> getPredicates()
get all predicates as strings
we do not return the predicate itself because Predicate objects cannot be copied.
- Returns
All predicate uri’s as strings in a std::vector
-
std::vector<std::string> getResources()
get all resources as strings
we do not return the LibrdfNode itself because LibrdfNode objects cannot be copied.
- Returns
All resource uri’s as strings in a std::vector
-
int size() const
get the number of triples in the Triples object
- Returns
the integer number of triples in the Triples object
-
TripleVector::iterator begin()
the begin iterator for a Triples object
this method is simply forwarded on to std::vector::begin()
-
TripleVector::iterator end()
the end iterator for a Triples object
this method is simply forwarded on to std::vector::end()
-
void freeTriples()
-
Triple pop()
moves one triple of the end of triples
No copies are made. This is deliberate as it reduces risk of memory issues. When you pop, you remove from the end of the Triples object and return it. This means that responsibility for freeing the returned Triple switches to the caller.
- Returns
the triple from the end of the triples vector
-
Triple &operator[](int index)
getter operator for Triples object
A copy is made of the Triple you want to return. To get a reference without copying see Triples::pop(). Remember that iterating over a Triples object and making copies will cause complications with freeing the objects.
- Returns
a reference to the Triple at index
index
Private Members
-
TripleVector triples_
-
Triples()