diff --git a/ontopy/excelparser.py b/ontopy/excelparser.py index a537a286..79d4663c 100755 --- a/ontopy/excelparser.py +++ b/ontopy/excelparser.py @@ -552,15 +552,14 @@ def get_metadata_from_dataframe( # pylint: disable=too-many-locals,too-many-bra # Add versionInfo try: - _add_literal( - metadata, - onto.metadata.versionInfo, - "Ontology version Info", - metadata=True, - only_one=True, + name_list = _parse_literal( + metadata, "Ontology version Info", metadata=True ) + onto.metadata.versionInfo.append(name_list[0]) except AttributeError: pass + + onto.set_version(onto.get_version()) return onto, catalog diff --git a/ontopy/ontology.py b/ontopy/ontology.py index c14682a7..9318ee1a 100644 --- a/ontopy/ontology.py +++ b/ontopy/ontology.py @@ -97,7 +97,7 @@ def get_ontology( version of EMMO. Until first stable release emmo-inferred and emmo-development will be the same. OntologyClass: If given and `base_iri` doesn't correspond - to an existing ontology, a new ontology is created of + an existing ontology, a new ontology is created of this Ontology subclass. Defaults to `ontopy.Ontology`. label_annotations: Sequence of label IRIs used for accessing entities in the ontology given that they are in the ontology. @@ -875,6 +875,7 @@ def save( write_catalog_file=False, append_catalog=False, catalog_file="catalog-v001.xml", + keep_python_names=False, **kwargs, ) -> Path: """Writes the ontology to file. @@ -937,6 +938,29 @@ def save( "'Known issues' section of the README." ) ) + if not keep_python_names: + ontocopy = self.copy() + ontocopy._del_data_triple_spod( + p=ontocopy._abbreviate( + "http://www.lesfleursdunormal.fr/static/_downloads/" + "owlready_ontology.owl#python_name" + ) + ) + returnpath = ontocopy.save( + filename=filename, + format=format, + dir=dir, + mkdir=mkdir, + overwrite=overwrite, + recursive=recursive, + squash=squash, + write_catalog_file=write_catalog_file, + append_catalog=append_catalog, + catalog_file=catalog_file, + keep_python_names=True, + ) + return returnpath + revmap = {value: key for key, value in FMAP.items()} if filename is None: if format: @@ -988,6 +1012,7 @@ def save( recursive=False, squash=False, write_catalog_file=False, + keep_python_names=keep_python_names, **kwargs, ) @@ -1104,9 +1129,18 @@ def copy(self): recursive=True, write_catalog_file=True, mkdir=True, + keep_python_names=True, ) + # copy all in dirname to new directory + # newdir = Path("/home/flb/projects/Team4.0/EMMOntoPy/temp/newonto") + # import shutil + + # shutil.copytree(dirname, newdir) + # print(filename) ontology = get_ontology(filename).load() ontology.name = self.name + ontology.iri = self.iri + ontology.base_iri = self.base_iri return ontology def get_imported_ontologies(self, recursive=False): diff --git a/tests/test_excelparser/result_ontology/fromexcelonto.ttl b/tests/test_excelparser/result_ontology/fromexcelonto.ttl index 5da686a6..403dad54 100644 --- a/tests/test_excelparser/result_ontology/fromexcelonto.ttl +++ b/tests/test_excelparser/result_ontology/fromexcelonto.ttl @@ -4,6 +4,7 @@ @prefix owl: . @prefix rdfs: . @prefix skos: . +@prefix xsd: . a owl:Ontology ; dcterms:contributor "SINTEF"@en, @@ -14,7 +15,8 @@ dcterms:title "A test domain ontology"@en ; owl:imports , ; - owl:versionInfo "0.01"@en . + owl:versionIRI ; + owl:versionInfo "0.01"^^xsd:string . :EMMO_0264be35-e8ad-5b35-a1a3-84b37bde22d1 a owl:Class ; emmo:EMMO_967080e5_2f42_4eb2_a3a9_c58143e835f9 "Temporal pattern occurring in a time interval"@en ; diff --git a/tests/test_excelparser/result_ontology/fromexcelonto_only_classes.ttl b/tests/test_excelparser/result_ontology/fromexcelonto_only_classes.ttl index 0b73b8ee..cf8c0908 100644 --- a/tests/test_excelparser/result_ontology/fromexcelonto_only_classes.ttl +++ b/tests/test_excelparser/result_ontology/fromexcelonto_only_classes.ttl @@ -4,6 +4,7 @@ @prefix owl: . @prefix rdfs: . @prefix skos: . +@prefix xsd: . a owl:Ontology ; dcterms:contributor "SINTEF"@en, @@ -14,7 +15,8 @@ dcterms:title "A test domain ontology"@en ; owl:imports , ; - owl:versionInfo "0.01"@en . + owl:versionIRI ; + owl:versionInfo "0.01"^^xsd:string . :EMMO_0264be35-e8ad-5b35-a1a3-84b37bde22d1 a owl:Class ; emmo:EMMO_967080e5_2f42_4eb2_a3a9_c58143e835f9 "Temporal pattern occurring in a time interval"@en ; diff --git a/tests/test_excelparser/test_excelparser.py b/tests/test_excelparser/test_excelparser.py index 58d6da30..c9bac84f 100644 --- a/tests/test_excelparser/test_excelparser.py +++ b/tests/test_excelparser/test_excelparser.py @@ -33,7 +33,18 @@ def test_excelparser(repo_dir: "Path") -> None: repo_dir / "tests" / "test_excelparser" / "onto_update.xlsx" ) ontology, catalog, errors = create_ontology_from_excel(xlspath, force=True) - # ontology.save("test.ttl") # used for printing new ontology when debugging + # ontology.save("test.ttl", keep_python_names=False) # used for printing new ontology when debugging + ontology._del_data_triple_spod( + p=ontology._abbreviate( + "http://www.lesfleursdunormal.fr/static/_downloads/" + "owlready_ontology.owl#python_name" + ) + ) + + ontology.save( + "test.ttl", keep_python_names=True + ) # used for printing new ontology when debugging + assert onto == ontology assert errors.keys() == { "already_defined",