// Path: DBPediaAnalyzer/src/dbpediaanalyzer/dbpediaobject/Category.java
// public class Category extends HierarchyElement {
//     public static final String DBPEDIA_CATEGORY_URI_PREFIX = "http://dbpedia.org/resource/Category";
// 
//     public Category(String uri) {
//         super(uri);
//     }
// 
//     @Override
//     public void addParent(HierarchyElement parent) {
//         if(parent instanceof Category) {
//             super.addParent(parent);
//         }
//     }
// 
//     @Override
//     public void addChild(HierarchyElement child) {
//         if(child instanceof Category) {
//             super.addChild(child);
//         }
//     }
// 
//     public static List<Category> getAccessibleUpwardCategories(Collection<Category> fromSubset) {
//         Collection<HierarchyElement> accessible = HierarchyElement.getAccessibleUpwardElements(fromSubset);
//         ArrayList<Category> retVal = new ArrayList<>();
// 
//         for(HierarchyElement he : accessible) {
//             retVal.add((Category) he);
//         }
// 
//         return retVal;
//     }
// }
// 
// Path: DBPediaAnalyzer/src/dbpediaanalyzer/dbpediaobject/OntologyClass.java
// public class OntologyClass extends HierarchyElement {
//     public static final String DBPEDIA_ONTOLOGY_CLASS_URI_PREFIX = "http://dbpedia.org/ontology";
// 
//     public OntologyClass(String uri) {
//         super(uri);
//     }
// 
//     @Override
//     public void addParent(HierarchyElement parent) {
//         if(parent instanceof OntologyClass) {
//             super.addParent(parent);
//         }
//     }
// 
//     @Override
//     public void addChild(HierarchyElement child) {
//         if(child instanceof OntologyClass) {
//             super.addChild(child);
//         }
//     }
// 
//     public static List<OntologyClass> getAccessibleUpwardOntologyClasses(Collection<OntologyClass> fromSubset) {
//         Collection<HierarchyElement> accessible = HierarchyElement.getAccessibleUpwardElements(fromSubset);
//         ArrayList<OntologyClass> retVal = new ArrayList<>();
// 
//         for(HierarchyElement he : accessible) {
//             retVal.add((OntologyClass) he);
//         }
// 
//         return retVal;
//     }
// }
// 
// Path: DBPediaAnalyzer/src/dbpediaanalyzer/dbpediaobject/YagoClass.java
// public class YagoClass extends HierarchyElement {
//     public static final String DBPEDIA_YAGO_CLASS_URI_PREFIX = "http://dbpedia.org/class/yago";
// 
//     public YagoClass(String uri) {
//         super(uri);
//     }
// 
//     @Override
//     public void addParent(HierarchyElement parent) {
//         if(parent instanceof YagoClass) {
//             super.addParent(parent);
//         }
//     }
// 
//     @Override
//     public void addChild(HierarchyElement child) {
//         if(child instanceof YagoClass) {
//             super.addChild(child);
//         }
//     }
// 
//     public static List<YagoClass> getAccessibleUpwardYagoClasses(Collection<YagoClass> fromSubset) {
//         Collection<HierarchyElement> accessible = HierarchyElement.getAccessibleUpwardElements(fromSubset);
//         ArrayList<YagoClass> retVal = new ArrayList<>();
// 
//         for(HierarchyElement he : accessible) {
//             retVal.add((YagoClass) he);
//         }
// 
//         return retVal;
//     }
// }


import dbpediaanalyzer.dbpediaobject.Category;
import dbpediaanalyzer.dbpediaobject.OntologyClass;
import dbpediaanalyzer.dbpediaobject.YagoClass;
import java.util.*;
package dbpediaanalyzer.lattice;



/**
 * Concept of the annotated lattice
 *
 * @author Pierre Monnin
 *
 */
public class Concept {
    // Basic concept data
    private List<String> objects;
    private List<String> attributes;

    // Relationships
    private List<Concept> parents;
    private List<Concept> children;

    // Annotations
    private List<Category> categories;
    private List<OntologyClass> ontologyClasses;
// Path: DBPediaAnalyzer/src/dbpediaanalyzer/dbpediaobject/Category.java
// public class Category extends HierarchyElement {
//     public static final String DBPEDIA_CATEGORY_URI_PREFIX = "http://dbpedia.org/resource/Category";
// 
//     public Category(String uri) {
//         super(uri);
//     }
// 
//     @Override
//     public void addParent(HierarchyElement parent) {
//         if(parent instanceof Category) {
//             super.addParent(parent);
//         }
//     }
// 
//     @Override
//     public void addChild(HierarchyElement child) {
//         if(child instanceof Category) {
//             super.addChild(child);
//         }
//     }
// 
//     public static List<Category> getAccessibleUpwardCategories(Collection<Category> fromSubset) {
//         Collection<HierarchyElement> accessible = HierarchyElement.getAccessibleUpwardElements(fromSubset);
//         ArrayList<Category> retVal = new ArrayList<>();
// 
//         for(HierarchyElement he : accessible) {
//             retVal.add((Category) he);
//         }
// 
//         return retVal;
//     }
// }
// 
// Path: DBPediaAnalyzer/src/dbpediaanalyzer/dbpediaobject/OntologyClass.java
// public class OntologyClass extends HierarchyElement {
//     public static final String DBPEDIA_ONTOLOGY_CLASS_URI_PREFIX = "http://dbpedia.org/ontology";
// 
//     public OntologyClass(String uri) {
//         super(uri);
//     }
// 
//     @Override
//     public void addParent(HierarchyElement parent) {
//         if(parent instanceof OntologyClass) {
//             super.addParent(parent);
//         }
//     }
// 
//     @Override
//     public void addChild(HierarchyElement child) {
//         if(child instanceof OntologyClass) {
//             super.addChild(child);
//         }
//     }
// 
//     public static List<OntologyClass> getAccessibleUpwardOntologyClasses(Collection<OntologyClass> fromSubset) {
//         Collection<HierarchyElement> accessible = HierarchyElement.getAccessibleUpwardElements(fromSubset);
//         ArrayList<OntologyClass> retVal = new ArrayList<>();
// 
//         for(HierarchyElement he : accessible) {
//             retVal.add((OntologyClass) he);
//         }
// 
//         return retVal;
//     }
// }
// 
// Path: DBPediaAnalyzer/src/dbpediaanalyzer/dbpediaobject/YagoClass.java
// public class YagoClass extends HierarchyElement {
//     public static final String DBPEDIA_YAGO_CLASS_URI_PREFIX = "http://dbpedia.org/class/yago";
// 
//     public YagoClass(String uri) {
//         super(uri);
//     }
// 
//     @Override
//     public void addParent(HierarchyElement parent) {
//         if(parent instanceof YagoClass) {
//             super.addParent(parent);
//         }
//     }
// 
//     @Override
//     public void addChild(HierarchyElement child) {
//         if(child instanceof YagoClass) {
//             super.addChild(child);
//         }
//     }
// 
//     public static List<YagoClass> getAccessibleUpwardYagoClasses(Collection<YagoClass> fromSubset) {
//         Collection<HierarchyElement> accessible = HierarchyElement.getAccessibleUpwardElements(fromSubset);
//         ArrayList<YagoClass> retVal = new ArrayList<>();
// 
//         for(HierarchyElement he : accessible) {
//             retVal.add((YagoClass) he);
//         }
// 
//         return retVal;
//     }
// }


// Path: DBPediaAnalyzer/src/dbpediaanalyzer/lattice/Concept.java
import dbpediaanalyzer.dbpediaobject.Category;
import dbpediaanalyzer.dbpediaobject.OntologyClass;
import dbpediaanalyzer.dbpediaobject.YagoClass;
import java.util.*;

package dbpediaanalyzer.lattice;



/**
 * Concept of the annotated lattice
 *
 * @author Pierre Monnin
 *
 */
public class Concept {
    // Basic concept data
    private List<String> objects;
    private List<String> attributes;

    // Relationships
    private List<Concept> parents;
    private List<Concept> children;

    // Annotations
    private List<Category> categories;
    private List<OntologyClass> ontologyClasses;
    private List<YagoClass> yagoClasses;