diff options
Diffstat (limited to 'src/model')
29 files changed, 0 insertions, 1619 deletions
diff --git a/src/model/GraphNode.cpp b/src/model/GraphNode.cpp deleted file mode 100644 index bfb8e63..0000000 --- a/src/model/GraphNode.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include "GraphNode.hpp" - -#include <iostream> -#include <sstream> - -namespace ousia { -namespace model { - -GraphNode::GraphNode(GraphNodeType type, std::shared_ptr<GraphNode> parent, - const std::string &name) : - type(type), parent(parent), name(name) -{ - // Do nothing here -} - -const std::string GraphNode::getFullyQualifiedName() -{ - if (parent) { - std::stringstream ss; - ss << parent->getFullyQualifiedName() << "." << name; - return ss.str(); - } - return name; -} - -} -} - diff --git a/src/model/GraphNode.hpp b/src/model/GraphNode.hpp deleted file mode 100644 index 73d26a0..0000000 --- a/src/model/GraphNode.hpp +++ /dev/null @@ -1,77 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_MODEL_GRAPH_NODE_HPP_ -#define _OUSIA_MODEL_GRAPH_NODE_HPP_ - -#include <string> -#include <memory> - -namespace ousia { -namespace model { - -enum class GraphNodeType { - Domain, Class, Annotation, Structure, ClassCategory, AnnotationCategory -}; - -class GraphNode { - -private: - GraphNodeType type; - std::shared_ptr<GraphNode> parent; - std::string name; - -protected: - GraphNode(GraphNodeType type, std::shared_ptr<GraphNode> parent = nullptr, - const std::string &name = ""); - -public: - const std::string getFullyQualifiedName(); - - const std::string& getName() - { - return name; - } - - void setName(const std::string &name) - { - this->name = name; - } - - std::shared_ptr<GraphNode> getParent() - { - return parent; - } - - void setParent(std::shared_ptr<GraphNode> parent) - { - this->parent = parent; - } - - GraphNodeType getType() - { - return type; - } - -}; - -} -} - -#endif /* _OUSIA_MODEL_GRAPH_NODE_HPP_ */ - diff --git a/src/model/RangeSet.hpp b/src/model/RangeSet.hpp deleted file mode 100644 index ef86363..0000000 --- a/src/model/RangeSet.hpp +++ /dev/null @@ -1,326 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_MODEL_RANGE_SET_HPP_ -#define _OUSIA_MODEL_RANGE_SET_HPP_ - -#include <limits> -#include <set> - -namespace ousia { -namespace model { -/** - * The Range structure represents an interval of numerical values of type T. - */ -template <typename T> -struct Range { - /** - * Start is the start value of the range. - */ - T start; - - /** - * End is the end value of the range (inclusively). - */ - T end; - - /** - * Default constructor of the range class. The range is initialized as - * invalid, with start being set to the maximum possible value of the - * numerical type T, and end being set to the minimum possible value. - */ - Range() : - start(std::numeric_limits<T>::max()), - end(std::numeric_limits<T>::min()) - { - // Do nothing here - } - - /** - * Copies the given start and end value. The given values are not checked - * for validity. Use the "isValid" - * - * @param start is the minimum value the range still covers. - * @param end is the maximum value the range still covers. - */ - Range(const T &start, const T &end) : - start(start), end(end) - { - // Do nothing here - } - - /** - * Creates a range that covers exactly one element, namely the value given - * as parameter n. - */ - Range(const T &n) : - start(n), end(n) - { - // Do nothing here - } - - /** - * Returns true if this range is valid, e.g. its start value is smaller or - * equal to its end value. - * - * @return true if start is smaller or equal to end, false otherwise. - */ - bool isValid() const - { - return start <= end; - } - - /** - * Checks whether the given value lies inside the range. - * - * @param v is the value that is being checked. - * @return true if the value lies within the range, false otherwise. - */ - bool inRange(T v) const - { - return (v >= start) && (v <= end); - } - - /** - * Checks whether the given range overlapps with another range. Not that - * this check is only meaningful if both ranges are valid. - * - * @param r is the range that should be checked for overlapping with this - * range. - */ - bool overlapps(const Range<T> &r) const - { - return (((r.start >= start) || (r.end >= start)) - && ((r.start <= end) || (r.end <= end))); - } - - /** - * Returns true if the two given ranges are neighbours (their limits only - * differ in the smallest representable difference between them). - */ - bool neighbours(const Range<T> &r) const - { - constexpr T eps = std::numeric_limits<T>::is_integer - ? 1 : std::numeric_limits<T>::epsilon(); - return ((r.start > end) && ((r.start - eps) <= end)) - || ((r.end < start) && ((r.end + eps) >= start)); - } - - /** - * Checks whether the given range completely covers this range. - */ - bool coveredBy(const Range<T> &r) const - { - return (r.start <= start) && (r.end >= end); - } - - /** - * Checks whether this range completely covers the given range. - */ - bool covers(const Range<T> &r) const - { - return r.coveredBy(*this); - } - - /** - * Calculates the union of the two ranges -- not that this operation is only - * valid if the ranges overlapp. Use the RangeSet class if you cannot - * guarantee that. - */ - Range<T> merge(const Range<T> &r) const - { - return Range(std::min(start, r.start), std::max(end, r.end)); - } - - /** - * Returns a range that represents the spans the complete set defined by the - * given type T. - */ - static Range<T> typeRange() - { - return Range(std::numeric_limits<T>::min(), - std::numeric_limits<T>::max()); - } - - /** - * Returns a range that represents the spans the complete set defined by the - * given type T up to a given value. - * - * @param till is the value up to which the range should be defined (till is - * included in the set). - */ - static Range<T> typeRangeUntil(const T &till) - { - return Range(std::numeric_limits<T>::min(), till); - } - - /** - * Returns a range that represents the spans the complete set defined by the - * given type T up to a given value. - * - * @param from is the value from which the range should be defined (from is - * included in the set). - */ - static Range<T> typeRangeFrom(const T &from) - { - return Range(from, std::numeric_limits<T>::max()); - } -}; - -/** - * RangeComp is a comperator used to order to sort the ranges within the - * ranges list. Sorts by the start element. - */ -template<typename T> -struct RangeComp { - bool operator() (const Range<T>& lhs, const Range<T>& rhs) const - { - return lhs.start < rhs.start; - } -}; - -/** - * RangeSet represents a set of ranges of the given numerical type and is thus - * capable of representing any possible subset of the given numerical type T. - */ -template<typename T> -class RangeSet { - -protected: - /** - * Set of ranges used internally. - */ - std::set<Range<T>, RangeComp<T>> ranges; - - /** - * Returns an iterator to the first element in the ranges list that overlapps - * with the given range. - * - * @param r is the range for which the first overlapping element should be - * found. - * @return an iterator pointing to the first overlapping element or to the - * end of the list if no such element was found. - */ - typename std::set<Range<T>, RangeComp<T>>::iterator firstOverlapping( - const Range<T> &r, const bool allowNeighbours) - { - // Find the element with the next larger start value compared to the - // start value given in r. - auto it = ranges.upper_bound(r); - - // Go back one element - if (it != ranges.begin()) { - it--; - } - - // Iterate until an overlapping element is found - while (!(it->overlapps(r) || (allowNeighbours && it->neighbours(r))) - && (it != ranges.end())) { - it++; - } - return it; - } - -public: - /** - * Calculates the union of this range set and the given range. - * - * @param range is the range that should be merged into this range set. - */ - void merge(Range<T> r) - { - // Calculate a new range that covers both the new range and all old - // ranges in the set -- delete all old elements on the way - auto it = firstOverlapping(r, true); - while ((it->overlapps(r) || it->neighbours(r)) && it != ranges.end()) { - r = r.merge(*it); - it = ranges.erase(it); - } - - // Insert the new range - ranges.insert(r); - } - - /** - * Calculates the union of this range set and the given range set. - * - * @param ranges is another range set for which the union with this set - * should be calculated. - */ - void merge(const RangeSet<T> &s) - { - for (Range<T> &r : s.ranges) { - merge(r); - } - } - - /** - * Checks whether this range set S contains the given range R: - * S u R = R - * (The intersection between R and S equals the given range) - * - * @param r is the range for which the containment should be checked. - * @return true if the above condition is met, false otherwise. - */ - bool contains(const Range<T> &r) - { - auto it = firstOverlapping(r, false); - if (it != ranges.end()) { - return (*it).covers(r); - } - return false; - } - - /** - * Checks whether this range set S1 contains the given range set S2: - * - * @param s is the range for which the containment should be checked. - * @return true if the above condition is met, false otherwise. - */ - bool contains(const RangeSet<T> &s) - { - bool res = true; - for (Range<T> &r : s.ranges) { - res = res && contains(r); - } - return res; - } - - /** - * Empties the set. - */ - void clear() - { - ranges.clear(); - } - - /** - * Returns the current list of ranges as a const reference. - */ - const std::set<Range<T>, RangeComp<T>>& getRanges() - { - return this->ranges; - } - -}; - -} -} - -#endif /* _OUSIA_MODEL_RANGE_SET_HPP_ */ - diff --git a/src/model/document/Anchor.cpp b/src/model/document/Anchor.cpp deleted file mode 100644 index e153161..0000000 --- a/src/model/document/Anchor.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <model/domain/Anchor.hpp> - -namespace ousia { -namespace domain { - -//This class is fully specified by its header. - -} -} - diff --git a/src/model/document/Anchor.hpp b/src/model/document/Anchor.hpp deleted file mode 100644 index 66ff8eb..0000000 --- a/src/model/document/Anchor.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _ANCHOR_HPP_ -#define _ANCHOR_HPP_ - -#include <model/GraphNode.hpp> - -namespace ousia { -namespace domain { - -class Anchor : public GraphNode { - -public: - using GraphNode::GraphNode; - -}; -} -} - -#endif /* _ANCHOR_HPP_ */ diff --git a/src/model/domain/Annotation.cpp b/src/model/domain/Annotation.cpp deleted file mode 100644 index 42e6ce8..0000000 --- a/src/model/domain/Annotation.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <model/domain/Annotation.hpp> - -namespace ousia { -namespace model { -namespace domain { - -//This class is fully defined by its header. - -} -} -} - diff --git a/src/model/domain/Annotation.hpp b/src/model/domain/Annotation.hpp deleted file mode 100644 index 0e84d1c..0000000 --- a/src/model/domain/Annotation.hpp +++ /dev/null @@ -1,65 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_MODEL_DOMAIN_ANNOTATION_HPP_ -#define _OUSIA_MODEL_DOMAIN_ANNOTATION_HPP_ - -#include <memory> -#include <string> -#include <vector> - -#include <model/GraphNode.hpp> -#include "Structure.hpp" -#include "Field.hpp" - -namespace ousia { -namespace model { -namespace domain { - -//class Structure; -//class Field; - -class Annotation : public GraphNode { - -private: - std::vector<std::shared_ptr<Structure>> structures; - std::vector<std::shared_ptr<Field>> fields; - -public: - - Annotation(std::shared_ptr<GraphNode> parent = nullptr, - const std::string &name = "") : - GraphNode(GraphNodeType::Annotation, parent, name) - { - // Do nothing here - } - - std::vector<std::shared_ptr<Structure>>& getStructures() - { - return structures; - } - - std::vector<std::shared_ptr<Field>>& getFields() - { - return fields; - } -}; -} -} -} -#endif /* _OUSIA_MODEL_DOMAIN_ANNOTATION_HPP_ */ diff --git a/src/model/domain/AnnotationCategory.hpp b/src/model/domain/AnnotationCategory.hpp deleted file mode 100644 index 8ec6003..0000000 --- a/src/model/domain/AnnotationCategory.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_MODEL_DOMAIN_ANNOTATIONCATEGORY_HPP_ -#define _OUSIA_MODEL_DOMAIN_ANNOTATIONCATEGORY_HPP_ - -#include <memory> -#include <string> -#include <vector> - -#include <model/GraphNode.hpp> - -#include "Annotation.hpp" - -namespace ousia { -namespace model { -namespace domain { - -class AnnotationCategory : public GraphNode { - -private: - std::vector<std::shared_ptr<Annotation>> annotations; - -public: - - AnnotationCategory(std::shared_ptr<GraphNode> parent = nullptr, - const std::string &name = "") : - GraphNode(GraphNodeType::AnnotationCategory, parent, name) - { - // Do nothing here - } - - std::vector<std::shared_ptr<Annotation>>& getAnnotations() - { - return annotations; - } - -}; - -} -} -} - -#endif /* _OUSIA_MODEL_DOMAIN_ANNOTATIONCATEGORY_HPP_ */ - diff --git a/src/model/domain/AnnotationReference.hpp b/src/model/domain/AnnotationReference.hpp deleted file mode 100644 index 873938e..0000000 --- a/src/model/domain/AnnotationReference.hpp +++ /dev/null @@ -1,66 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_MODEL_DOMAIN_ANNOTATIONREFERENCE_HPP_ -#define _OUSIA_MODEL_DOMAIN_ANNOTATIONREFERENCE_HPP_ - -#include <string> - -namespace ousia { -namespace model { -namespace domain { - -/** - * A AnnotationReference is an expression resolvable to either a single - * annotation or any annotation in some given category (* expression). - */ -class AnnotationReference { - -private: - std::string domainName; - std::string categoryName; - /** - * The annotation name might also be "any". - */ - std::string className; - -public: - - const std::string& getDomainName() - { - return domainName; - } - - const std::string& getCategoryName() - { - return categoryName; - } - - const std::string& getClassName() - { - return className; - } - -}; - -} -} -} - -#endif /* _OUSIA_MODEL_DOMAIN_ANNOTATIONREFERENCE_HPP_ */ - diff --git a/src/model/domain/Category.cpp b/src/model/domain/Category.cpp deleted file mode 100644 index c509285..0000000 --- a/src/model/domain/Category.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - - diff --git a/src/model/domain/Category.hpp b/src/model/domain/Category.hpp deleted file mode 100644 index 6255e6a..0000000 --- a/src/model/domain/Category.hpp +++ /dev/null @@ -1,50 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _CATEGORY_HPP_ -#define _CATEGORY_HPP_ - -#include <memory> -#include <vector> - -#include <model/GraphNode.hpp> - -#include "Class.hpp" - -namespace ousia { -namespace domain { - -class Category : public GraphNode { - -private: - std::vector<std::shared_ptr<Class>> classes; - -public: - - std::vector<std::shared_ptr<Class>>& getClasses() - { - return classes; - } - -}; - -} -} - -#endif /* _CATEGORY_HPP_ */ - diff --git a/src/model/domain/Class.cpp b/src/model/domain/Class.cpp deleted file mode 100644 index e69de29..0000000 --- a/src/model/domain/Class.cpp +++ /dev/null diff --git a/src/model/domain/Class.hpp b/src/model/domain/Class.hpp deleted file mode 100644 index 6100214..0000000 --- a/src/model/domain/Class.hpp +++ /dev/null @@ -1,99 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_MODEL_DOMAIN_CLASS_HPP_ -#define _OUSIA_MODEL_DOMAIN_CLASS_HPP_ - -#include <memory> -#include <string> -#include <vector> - -#include <model/GraphNode.hpp> -#include "ClassReferenceSet.hpp" -#include "Field.hpp" -#include "Layer.hpp" - -namespace ousia { -namespace model { -namespace domain { - -/** - * A class represents some semantic concept in a given domain that has - * structural relevance, like headings in a text. Classes are usually expected - * to be in a "tree-esque" structure: It is not really a tree, but we still - * think about classes as nodes with children, even though children might be - * nodes higher up the tree, which leads to cycles. - */ -class Class : public GraphNode { - -private: - - std::vector<std::shared_ptr<ClassReferenceSet>> children; - std::vector<std::shared_ptr<Field>> fields; - std::vector<std::shared_ptr<Layer>> layers; - -public: - - Class(std::shared_ptr<GraphNode> parent = nullptr, - const std::string &name = "") : - GraphNode(GraphNodeType::Class, parent, name) - { - // Do nothing here - } - - /** - * The children of a given class are not resolved on parsing time but lazily - * during document creation and validation time. This circumvents some - * problems we would have otherwise like: How do we treat the case that - * merging two domains adds more possible classes to some given category? - * How do we treat references to linked domains? - * - * Thus we do not specify the children that are allowed but a sequence of - * sets that define what set of classes is allowed at each point in the - * children sequence. Please note that each ClassReferenceSet also stores - * a cardinality, how many children, that are members of this set, have to - * exist. Therefore this construction can be interpreted as a quasi finite - * state automaton, e.g.: - * - * (class1|class2)* (class3){1,4} - */ - std::vector<std::shared_ptr<ClassReferenceSet>>& getChildren() - { - return children; - } - - std::vector<std::shared_ptr<Field>>& getFields() - { - return fields; - } - - /** - * Layers specify the annotations that are allowed upon instances of this - * class and its children. - */ - std::vector<std::shared_ptr<Layer>>& getLayers() - { - return layers; - } -}; -} -} -} - -#endif /* _OUSIA_MODEL_DOMAIN_CLASS_HPP_ */ - diff --git a/src/model/domain/ClassCategory.hpp b/src/model/domain/ClassCategory.hpp deleted file mode 100644 index 2f60284..0000000 --- a/src/model/domain/ClassCategory.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_MODEL_DOMAIN_CLASSCATEGORY_HPP_ -#define _OUSIA_MODEL_DOMAIN_CLASSCATEGORY_HPP_ - -#include <memory> -#include <string> -#include <vector> - -#include <model/GraphNode.hpp> - -#include "Class.hpp" - -namespace ousia { -namespace model { -namespace domain { - -class ClassCategory : public GraphNode { - -private: - std::vector<std::shared_ptr<Class>> classes; - -public: - - ClassCategory(std::shared_ptr<GraphNode> parent = nullptr, - const std::string &name = "") : - GraphNode(GraphNodeType::ClassCategory, parent, name) - { - // Do nothing here - } - - std::vector<std::shared_ptr<Class>>& getClasses() - { - return classes; - } - -}; - -} -} -} - -#endif /* _OUSIA_MODEL_DOMAIN_CLASSCATEGORY_HPP_ */ - diff --git a/src/model/domain/ClassReference.hpp b/src/model/domain/ClassReference.hpp deleted file mode 100644 index 807fd76..0000000 --- a/src/model/domain/ClassReference.hpp +++ /dev/null @@ -1,66 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_MODEL_DOMAIN_CLASSREFERENCE_HPP_ -#define _OUSIA_MODEL_DOMAIN_CLASSREFERENCE_HPP_ - -#include <string> - -namespace ousia { -namespace model { -namespace domain { - -/** - * A ClassReference is an expression resolvable to either a single class or - * any class in some given category (* expression). - */ -class ClassReference { - -private: - std::string domainName; - std::string categoryName; - /** - * The class name might also be "any". - */ - std::string className; - -public: - - const std::string& getDomainName() - { - return domainName; - } - - const std::string& getCategoryName() - { - return categoryName; - } - - const std::string& getClassName() - { - return className; - } - -}; - -} -} -} - -#endif /* _OUSIA_MODEL_DOMAIN_CLASSREFERENCE_HPP_ */ - diff --git a/src/model/domain/ClassReferenceSet.cpp b/src/model/domain/ClassReferenceSet.cpp deleted file mode 100644 index 14f57a2..0000000 --- a/src/model/domain/ClassReferenceSet.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ -namespace ousia { -namespace model { -namespace domain { - - //For now this class is fully specified by its header. - -} -} -} - - diff --git a/src/model/domain/ClassReferenceSet.hpp b/src/model/domain/ClassReferenceSet.hpp deleted file mode 100644 index 61db014..0000000 --- a/src/model/domain/ClassReferenceSet.hpp +++ /dev/null @@ -1,72 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_MODEL_DOMAIN_CLASSREFERENCESET_HPP_ -#define _OUSIA_MODEL_DOMAIN_CLASSREFERENCESET_HPP_ - -#include "ClassReference.hpp" -#include <model/RangeSet.hpp> - -namespace ousia { -namespace model { -namespace domain { - -/** - * A ClassReferenceSet lazily defines references to classes that are allowed at - * this point of the domain description. It specifies a set in a twofold meaning: - * 1.) It defines the set of classes, that are allowed. - * 2.) It defines how many instances of those classes have to be instantiated - * in a document that implements this domain standard (cardinality). - */ -class ClassReferenceSet { - -private: - std::vector<std::shared_ptr<ClassReference>> conjunctions; - std::shared_ptr<RangeSet<unsigned int>> cardinality; - -public: - - /** - * This defines the conjunctions of references to classes that are allowed - * Please note that each ClassReference again does not have to reference to - * a single class but can also reference to multiple classes in a * - * expression. - */ - std::vector<std::shared_ptr<ClassReference>>& getConjunctions() - { - return conjunctions; - } - - std::shared_ptr<RangeSet<unsigned int>> getCardinality() - { - return cardinality; - } - - void setCardinality(std::shared_ptr<RangeSet<unsigned int>>) - { - this->cardinality = cardinality; - } - -}; - -} -} -} - -#endif /* _OUSIA_MODEL_DOMAIN_CLASSREFERENCESET_HPP_ */ - diff --git a/src/model/domain/Domain.cpp b/src/model/domain/Domain.cpp deleted file mode 100644 index 9b27e3a..0000000 --- a/src/model/domain/Domain.cpp +++ /dev/null @@ -1,27 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include "Domain.hpp" - -namespace ousia { -namespace model { -namespace domain { - -} -} -} diff --git a/src/model/domain/Domain.hpp b/src/model/domain/Domain.hpp deleted file mode 100644 index 278adc5..0000000 --- a/src/model/domain/Domain.hpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_MODEL_DOMAIN_DOMAIN_HPP_ -#define _OUSIA_MODEL_DOMAIN_DOMAIN_HPP_ - -#include <memory> -#include <string> -#include <vector> - -#include <model/GraphNode.hpp> - -#include "Structure.hpp" -#include "ClassCategory.hpp" -#include "AnnotationCategory.hpp" -#include "ClassReferenceSet.hpp" - -namespace ousia { -namespace model { -namespace domain { - -class Domain : public GraphNode { - -private: - std::shared_ptr<ClassReferenceSet> root; - std::vector<std::shared_ptr<Structure>> structures; - std::vector<std::shared_ptr<ClassCategory>> classCategories; - std::vector<std::shared_ptr<AnnotationCategory>> annotationCategories; - -public: - - Domain(std::shared_ptr<GraphNode> parent = nullptr, - const std::string &name = "") : - GraphNode(GraphNodeType::Domain, parent, name) - { - // Do nothing here - } - - std::shared_ptr<ClassReferenceSet>& getRoot() - { - return root; - } - - std::vector<std::shared_ptr<Structure>>& getStructures() - { - return structures; - } - - std::vector<std::shared_ptr<ClassCategory>>& getClassCategories() - { - return classCategories; - } - - std::vector<std::shared_ptr<AnnotationCategory>>& getAnnotationCategories() - { - return annotationCategories; - } - -}; - -} -} -} - -#endif /* _OUSIA_MODEL_DOMAIN_DOMAIN_HPP_ */ - diff --git a/src/model/domain/Field.cpp b/src/model/domain/Field.cpp deleted file mode 100644 index af7f81e..0000000 --- a/src/model/domain/Field.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <model/domain/Field.hpp> - -namespace ousia { -namespace model { -namespace domain { - - //This class is fully specified by its header. - -} -} -} diff --git a/src/model/domain/Field.hpp b/src/model/domain/Field.hpp deleted file mode 100644 index 293a361..0000000 --- a/src/model/domain/Field.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_MODEL_DOMAIN_FIELD_HPP_ -#define _OUSIA_MODEL_DOMAIN_FIELD_HPP_ - -#include <memory> - -#include <model/GraphNode.hpp> -#include <model/types/Type.hpp> - -namespace ousia{ - -//namespace types { -// class Type; -// class Value; -//} -namespace model { -namespace domain { - -class Field : public GraphNode { - -private: - std::shared_ptr<types::Type> type; - bool optional; - -public: - using GraphNode::GraphNode; - - std::shared_ptr<types::Type> getType() - { - return type; - } - - void setType(std::shared_ptr<types::Type> type) - { - this->type = type; - } - - bool getOptional() - { - return optional; - } - - void setOptional(bool optional) - { - this->optional = optional; - } -}; -} -} -} - -#endif /* _OUSIA_MODEL_DOMAIN_FIELD_HPP_ */ diff --git a/src/model/domain/Layer.cpp b/src/model/domain/Layer.cpp deleted file mode 100644 index fb22b4c..0000000 --- a/src/model/domain/Layer.cpp +++ /dev/null @@ -1,27 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <model/domain/Layer.hpp> - -namespace ousia { -namespace domain { - - //This class is fully specified by its header. - -} -} diff --git a/src/model/domain/Layer.hpp b/src/model/domain/Layer.hpp deleted file mode 100644 index d419710..0000000 --- a/src/model/domain/Layer.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_MODEL_DOMAIN_LAYER_HPP_ -#define _OUSIA_MODEL_DOMAIN_LAYER_HPP_ - -#include <memory> -#include <vector> - -#include "AnnotationReference.hpp" - -namespace ousia { -namespace model { -namespace domain { - -/** - * A Layer lazily defines references to annotations that are allowed upon - * certain classes. You can interpret a layer as a ClassReferenceSet minus the - * cardinality. - */ -class Layer { - -private: - std::vector<std::shared_ptr<AnnotationReference>> conjunctions; - -public: - - /** - * This defines the conjunctions of references to annotations that are allowed - * Please note that each AnnotationReference again does not have to reference to - * a single class but can also reference to multiple classes in a * - * expression. - */ - std::vector<std::shared_ptr<AnnotationReference>>& getConjunctions() - { - return conjunctions; - } -}; - -} -} -} - -#endif /* _OUSIA_MODEL_DOMAIN_LAYER_HPP_ */ - diff --git a/src/model/domain/Structure.cpp b/src/model/domain/Structure.cpp deleted file mode 100644 index f0f9d1e..0000000 --- a/src/model/domain/Structure.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - - -#include <model/domain/Structure.hpp> - -namespace ousia { -namespace model { -namespace domain { - - //This class for now has no special features that would distinguish it - //from an abstract GraphNode. - -} -} -} diff --git a/src/model/domain/Structure.hpp b/src/model/domain/Structure.hpp deleted file mode 100644 index 4f0604a..0000000 --- a/src/model/domain/Structure.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_MODEL_DOMAIN_STRUCTURE_HPP_ -#define _OUSIA_MODEL_DOMAIN_STRUCTURE_HPP_ - -#include <memory> -#include <string> - -#include <model/GraphNode.hpp> - -namespace ousia { -namespace model { -namespace domain { - -class Structure : public GraphNode { - -public: - Structure(std::shared_ptr<GraphNode> parent = nullptr, - const std::string &name = "") : - GraphNode(GraphNodeType::Structure, parent, name) - { - // Do nothing here - } - - -}; -} -} -} - -#endif /* _OUSIA_MODEL_DOMAIN_STRUCTURE_HPP_ */ diff --git a/src/model/types/Type.cpp b/src/model/types/Type.cpp deleted file mode 100644 index d219b61..0000000 --- a/src/model/types/Type.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <model/GraphNode.hpp> -#include <model/types/Type.hpp> - -namespace ousia { -namespace types { - - -//TODO: THIS IS A DUMMY CLASS DECLARATION - -} -} diff --git a/src/model/types/Type.hpp b/src/model/types/Type.hpp deleted file mode 100644 index c4a9900..0000000 --- a/src/model/types/Type.hpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_TYPES_TYPE_HPP_ -#define _OUSIA_TYPES_TYPE_HPP_ - -namespace ousia { -namespace types { - -class Type { - -//TODO: THIS IS A DUMMY CLASS DECLARATION -}; -} -} -#endif /* _OUSIA_TYPES_TYPE_HPP_ */ diff --git a/src/model/types/Value.cpp b/src/model/types/Value.cpp deleted file mode 100644 index 73d233a..0000000 --- a/src/model/types/Value.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <model/GraphNode.hpp> -#include <model/types/Value.hpp> - -namespace ousia { -namespace types { - - -//TODO: THIS IS A DUMMY CLASS DECLARATION - -} -} diff --git a/src/model/types/Value.hpp b/src/model/types/Value.hpp deleted file mode 100644 index ec9f354..0000000 --- a/src/model/types/Value.hpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - Ousía - Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef _OUSIA_TYPES_VALUE_HPP_ -#define _OUSIA_TYPES_VALUE_HPP_ - -namespace ousia { -namespace types { - -class Value { - -//TODO: THIS IS A DUMMY CLASS DECLARATION -}; -} -} -#endif /* _OUSIA_TYPES_VALUE_HPP_ */ |