def test_disjoint_1(self): test = read_drawio_xml("tests/inputs_finding/test_disjoint_1.xml") ellipses = find_ellipses(test) for id, ellipse in ellipses.items(): self.assertEqual(ellipse["type"], "owl:disjointWith") self.assertEqual(ellipse["group"], ["3", "4"])
def test_unnamed(self): test = read_drawio_xml("tests/inputs_finding/test_unnamed.xml") concepts, _ = find_concepts_and_attributes(test) for id, concept in concepts.items(): self.assertEqual(concept["prefix"], "") self.assertEqual(concept["uri"], "")
def test_union_2(self): test = read_drawio_xml("tests/inputs_finding/test_union_2.xml") ellipses = find_ellipses(test) for id, ellipse in ellipses.items(): self.assertEqual(ellipse["type"], "owl:unionOf") self.assertEqual(ellipse["group"], ["3", "4"])
def test_individual_2(self): test = read_drawio_xml("tests/inputs_finding/test_individual_2.xml") individuals = find_individuals(test) for id, individual in individuals.items(): self.assertEqual(individual["prefix"], "ns") self.assertEqual(individual["uri"], "Individual1") self.assertEqual(individual["type"] is None, True)
def test_relations_18(self): test = read_drawio_xml("tests/inputs_finding/test_relation_18.xml") relations = find_relations(test) for id, relation in relations.items(): self.assertEqual(relation["type"], "rdf:type") self.assertEqual(relation["source"], "5") self.assertEqual(relation["target"], "4")
def test_relations_10(self): test = read_drawio_xml("tests/inputs_finding/test_relation_10.xml") relations = find_relations(test) for id, relation in relations.items(): self.assertEqual(relation["type"], "owl:equivalentClass") self.assertEqual(relation["source"], "3") self.assertEqual(relation["target"], "2")
def test_namespaces(self): test = read_drawio_xml("tests/inputs_finding/test_namespaces.xml") namespaces = find_namespaces(test) for prefix, uri in namespaces.items(): self.assertEqual(prefix in ["base", "saref"], True) self.assertEqual( uri in ["http://theOntology.namespace.com", "http://saref.com"], True)
def generate_ontologies(): tests_path = os.path.dirname(os.path.abspath(__file__)) inputs_path = os.path.join(tests_path, "inputs") outputs_path = os.path.join(tests_path, "outputs") for filename in os.listdir(inputs_path): child_tracker = ChildTracker() input_filepath = os.path.join(inputs_path, filename) output_filepath = os.path.join(outputs_path, filename[:-3] + "ttl") root, root_complete, mxGraphModel, diagram, mxfile, tree = read_drawio_xml( input_filepath) transform_ontology(root, output_filepath, child_tracker)
def test_relations_17(self): test = read_drawio_xml("tests/inputs_finding/test_relation_17.xml") relations = find_relations(test) for id, relation in relations.items(): self.assertEqual(relation["prefix"], "ns") self.assertEqual(relation["uri"], "objectProperty") self.assertEqual(relation["source"], "3") self.assertEqual(relation["target"], "2") self.assertEqual(relation["domain"], False) self.assertEqual(relation["range"], True) self.assertEqual(relation["someValuesFrom"], False) self.assertEqual(relation["functional"], False) self.assertEqual(relation["inverse_functional"], False) self.assertEqual(relation["transitive"], False) self.assertEqual(relation["symmetric"], False)
def test_attributes_6(self): test = read_drawio_xml("tests/inputs_finding/test_attributes_6.xml") _, attribute_blocks = find_concepts_and_attributes(test) for id, attribute_block in attribute_blocks.items(): self.assertEqual(attribute_block["concept_associated"], "3") attributes = attribute_block["attributes"] for attribute in attributes: self.assertEqual(attribute["prefix"] in ["ns"], True) self.assertEqual(attribute["uri"] in ["datatypeProperty1"], True) self.assertEqual(attribute["datatype"] in ["datatype"], True) self.assertEqual(attribute["domain"], True) self.assertEqual(attribute["range"], True) self.assertEqual(attribute["allValuesFrom"], False) self.assertEqual(attribute["someValuesFrom"], False) self.assertEqual(attribute["functional"], False) self.assertEqual(attribute["min_cardinality"], "1") self.assertEqual(attribute["max_cardinality"] is None, True)
file.write(subject + " rdf:type " + concept) for relation_id, relation in relations.items(): file.write(" ;\n") predicate = relation["prefix"] + ":" + relation["uri"] target_id = relation["target"] object = individuals[target_id]["prefix"] + ":" + individuals[ target_id]["uri"] file.write("\t" + predicate + " " + object) file.write(" .\n\n") if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("diagram_path") parser.add_argument("output_path") parser.add_argument("type") args = parser.parse_args() root = read_drawio_xml(args.diagram_path) if args.type == "ontology": transform_ontology(root, args.output_path) elif args.type == "rdf": transform_rdf(root, args.output_path) else: raise ValueError("Not a correct option of data")