Exemplo n.º 1
0
    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"])
Exemplo n.º 2
0
    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"], "")
Exemplo n.º 3
0
    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"])
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
    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")
Exemplo n.º 6
0
    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")
Exemplo n.º 7
0
    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)
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
        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")