def test_single_branch_ancestry(self): child_ancestry = ClassAncestry(child_cls_iri, self.schema_graph) self.assertEquals(child_ancestry.bottom_up, [child_cls_iri, b1p_cls_iri, b1gp_cls_iri]) self.assertEquals(child_ancestry.child, child_cls_iri) self.assertEquals(child_ancestry.top_down, [b1gp_cls_iri, b1p_cls_iri, child_cls_iri]) self.assertEquals(child_ancestry.parents(child_cls_iri), [b1p_cls_iri]) self.assertEquals(child_ancestry.parents(b1p_cls_iri), [b1gp_cls_iri]) self.assertEquals(child_ancestry.parents(b1gp_cls_iri), [])
def test_two_branch_ancestry_without_priority(self): self.schema_graph.add( (URIRef(child_cls_iri), RDFS.subClassOf, URIRef(b2p_cls_iri))) self.schema_graph.add( (URIRef(child_cls_iri), RDFS.subClassOf, URIRef(b2gp_cls_iri))) child_ancestry = ClassAncestry(child_cls_iri, self.schema_graph) self.assertEquals(child_ancestry.bottom_up[0], child_cls_iri) self.assertEquals(set(child_ancestry.bottom_up[1:3]), {b1p_cls_iri, b2p_cls_iri}) self.assertEquals(set(child_ancestry.bottom_up[3:]), {b1gp_cls_iri, b2gp_cls_iri}) self.assertEquals(child_ancestry.child, child_cls_iri) self.assertEquals(set(child_ancestry.parents(child_cls_iri)), {b1p_cls_iri, b2p_cls_iri}) self.assertEquals(child_ancestry.parents(b1p_cls_iri), [b1gp_cls_iri]) self.assertEquals(child_ancestry.parents(b1gp_cls_iri), []) self.assertEquals(child_ancestry.parents(b2p_cls_iri), [b2gp_cls_iri]) self.assertEquals(child_ancestry.parents(b2gp_cls_iri), [])
def test_three_branch_ancestry_with_priority(self): child_ref = URIRef(child_cls_iri) self.schema_graph.add( (child_ref, RDFS.subClassOf, URIRef(b2p_cls_iri))) self.schema_graph.add( (child_ref, RDFS.subClassOf, URIRef(b2gp_cls_iri))) self.schema_graph.add( (child_ref, RDFS.subClassOf, URIRef(b3p_cls_iri))) priority_b1 = BNode() self.schema_graph.add( (child_ref, URIRef(MODEL_HAS_PRIORITY_IRI), priority_b1)) self.schema_graph.add((priority_b1, URIRef(MODEL_PRIORITY_CLASS_IRI), URIRef(b1p_cls_iri))) self.schema_graph.add( (priority_b1, URIRef(MODEL_PRIORITY_IRI), Literal(1))) priority_b2 = BNode() self.schema_graph.add( (child_ref, URIRef(MODEL_HAS_PRIORITY_IRI), priority_b2)) self.schema_graph.add((priority_b2, URIRef(MODEL_PRIORITY_CLASS_IRI), URIRef(b2p_cls_iri))) self.schema_graph.add( (priority_b2, URIRef(MODEL_PRIORITY_IRI), Literal(2))) child_ancestry = ClassAncestry(child_cls_iri, self.schema_graph) self.assertEquals(child_ancestry.bottom_up[0], child_cls_iri) self.assertEquals(child_ancestry.bottom_up[1:3], [b2p_cls_iri, b2gp_cls_iri]) self.assertEquals(child_ancestry.bottom_up[3:5], [b1p_cls_iri, b1gp_cls_iri]) # b3p_cls_iri is the last because has no priority (nothing declared) self.assertEquals(child_ancestry.bottom_up[-1], b3p_cls_iri) self.assertEquals(child_ancestry.child, child_cls_iri) self.assertEquals(child_ancestry.parents(child_cls_iri), [b2p_cls_iri, b1p_cls_iri, b3p_cls_iri]) self.assertEquals(child_ancestry.parents(b1p_cls_iri), [b1gp_cls_iri]) self.assertEquals(child_ancestry.parents(b1gp_cls_iri), []) self.assertEquals(child_ancestry.parents(b2p_cls_iri), [b2gp_cls_iri]) self.assertEquals(child_ancestry.parents(b2gp_cls_iri), [])