@Override public Concept visit(OWLSubClassOfAxiom axiom) { OWLClassExpression subclass = axiom.getSubClass(); EntityType subtype; if (subclass.isOWLClass()) { subtype = migrator.entityType(subclass.asOWLClass()); } else { // TODO - we need a strategy to support class expressions, e.g. as constraints // on instances return null; } OWLClassExpression superclass = axiom.getSuperClass(); EntityType supertype; if (superclass.isOWLClass()) { supertype = migrator.entityType(superclass.asOWLClass()); } else { // TODO - we need a strategy to support class expressions, e.g. as constraints // on instances return null; } if (!supertype.equals(subtype.sup())) { subtype.sup(supertype); } return null; }
@Override public void buildSchema(GraknTx tx) { key = tx.putAttributeType("name", AttributeType.DataType.STRING); geoEntity = tx.putRole("geo-entity"); entityLocation = tx.putRole("entity-location"); isLocatedIn = tx.putRelationshipType("is-located-in") .relates(geoEntity).relates(entityLocation); geographicalObject = tx.putEntityType("geoObject") .plays(geoEntity) .plays(entityLocation); geographicalObject.has(key); continent = tx.putEntityType("continent") .sup(geographicalObject) .plays(entityLocation); country = tx.putEntityType("country") .sup(geographicalObject) .plays(geoEntity) .plays(entityLocation); region = tx.putEntityType("region") .sup(geographicalObject) .plays(geoEntity) .plays(entityLocation); city = tx.putEntityType("city") .sup(geographicalObject) .plays(geoEntity) .plays(entityLocation); university = tx.putEntityType("university") .plays(geoEntity); university.has(key); }
/** * Make the second argument the super of the first argument * * @throws GraqlQueryException if the types are different, or setting the super to be a meta-type */ public static void setSuper(SchemaConcept subConcept, SchemaConcept superConcept) { if (superConcept.isEntityType()) { subConcept.asEntityType().sup(superConcept.asEntityType()); } else if (superConcept.isRelationshipType()) { subConcept.asRelationshipType().sup(superConcept.asRelationshipType()); } else if (superConcept.isRole()) { subConcept.asRole().sup(superConcept.asRole()); } else if (superConcept.isAttributeType()) { subConcept.asAttributeType().sup(superConcept.asAttributeType()); } else if (superConcept.isRule()) { subConcept.asRule().sup(superConcept.asRule()); } else { throw GraqlQueryException.insertMetaType(subConcept.label(), superConcept); } }
/** * Make the second argument the super of the first argument * * @throws GraqlQueryException if the types are different, or setting the super to be a meta-type */ private static void setSuper(SchemaConcept subConcept, SchemaConcept superConcept) { if (superConcept.isEntityType()) { subConcept.asEntityType().sup(superConcept.asEntityType()); } else if (superConcept.isRelationshipType()) { subConcept.asRelationshipType().sup(superConcept.asRelationshipType()); } else if (superConcept.isRole()) { subConcept.asRole().sup(superConcept.asRole()); } else if (superConcept.isAttributeType()) { subConcept.asAttributeType().sup(superConcept.asAttributeType()); } else if (superConcept.isRule()) { subConcept.asRule().sup(superConcept.asRule()); } else { throw GraqlQueryException.insertMetaType(subConcept.getLabel(), superConcept); } } }