From 9be6270942b3999dccdd57bc847e0e527dc748b3 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Thu, 24 Apr 2025 18:15:01 +0200 Subject: [PATCH 01/37] :sparkles: update ontology documentation, fixed ontology ids --- docs/requirements.txt | 4 +- docs/source/_templates/ontology.rst | 68 +++++++++ docs/source/_templates/ontology2.rst | 122 +++++++++++++++ .../benchmarking/agricultural/agrovoc.rst | 8 +- .../benchmarking/agricultural/foodon.rst | 6 +- docs/source/benchmarking/agricultural/po.rst | 4 +- .../arts_&_humanities/chordontology.rst | 8 +- .../benchmarking/arts_&_humanities/icon.rst | 2 +- .../arts_&_humanities/musicontology.rst | 8 +- .../arts_&_humanities/nomisma.rst | 2 +- .../arts_&_humanities/timelineontology.rst | 10 +- docs/source/benchmarking/benchmark.rst | 1 + .../biology_&_life_sciences/biopax.rst | 2 +- .../biology_&_life_sciences/efo.rst | 6 +- .../biology_&_life_sciences/go.rst | 4 +- .../biology_&_life_sciences/lifo.rst | 6 +- .../biology_&_life_sciences/marinetlo.rst | 4 +- .../biology_&_life_sciences/mged.rst | 4 +- .../biology_&_life_sciences/microscopy.rst | 6 +- .../biology_&_life_sciences/npo.rst | 4 +- .../biology_&_life_sciences/pato.rst | 4 +- docs/source/benchmarking/chemistry/afo.rst | 6 +- docs/source/benchmarking/chemistry/chebi.rst | 2 +- .../source/benchmarking/chemistry/cheminf.rst | 4 +- docs/source/benchmarking/chemistry/chiro.rst | 4 +- docs/source/benchmarking/chemistry/chmo.rst | 4 +- docs/source/benchmarking/chemistry/fix.rst | 2 +- .../chemistry/massspectrometry.rst | 2 +- docs/source/benchmarking/chemistry/mop.rst | 4 +- docs/source/benchmarking/chemistry/nmrcv.rst | 2 +- .../source/benchmarking/chemistry/ontokin.rst | 6 +- docs/source/benchmarking/chemistry/proco.rst | 6 +- docs/source/benchmarking/chemistry/psimod.rst | 2 +- docs/source/benchmarking/chemistry/rex.rst | 2 +- docs/source/benchmarking/chemistry/rxno.rst | 4 +- docs/source/benchmarking/chemistry/vibso.rst | 6 +- .../ecology_&_environment/envo.rst | 6 +- .../ecology_&_environment/oeo.rst | 2 +- .../ecology_&_environment/sweet.rst | 8 +- .../benchmarking/education/bibframe.rst | 2 +- docs/source/benchmarking/education/common.rst | 6 +- docs/source/benchmarking/education/doco.rst | 4 +- .../source/benchmarking/events/conference.rst | 4 +- docs/source/benchmarking/events/icalendar.rst | 2 +- docs/source/benchmarking/events/lode.rst | 2 +- .../benchmarking/finance/goodrelations.rst | 6 +- .../benchmarking/food_&_beverage/wine.rst | 2 +- .../benchmarking/general_knowledge/cco.rst | 6 +- .../general_knowledge/dbpedia.rst | 6 +- .../general_knowledge/dublincore.rst | 4 +- .../benchmarking/general_knowledge/edam.rst | 4 +- .../benchmarking/general_knowledge/gist.rst | 6 +- .../benchmarking/general_knowledge/iao.rst | 6 +- .../benchmarking/general_knowledge/prov.rst | 2 +- .../benchmarking/general_knowledge/ro.rst | 6 +- .../general_knowledge/schemaorg.rst | 2 +- .../benchmarking/general_knowledge/umbel.rst | 6 +- docs/source/benchmarking/geography/geo.rst | 6 +- .../benchmarking/geography/geonames.rst | 4 +- docs/source/benchmarking/geography/gts.rst | 4 +- docs/source/benchmarking/geography/juso.rst | 6 +- docs/source/benchmarking/industry/auto.rst | 8 +- docs/source/benchmarking/industry/dbo.rst | 4 +- docs/source/benchmarking/industry/doap.rst | 2 +- docs/source/benchmarking/industry/iof.rst | 4 +- docs/source/benchmarking/industry/pto.rst | 4 +- docs/source/benchmarking/industry/tubes.rst | 6 +- .../source/benchmarking/law/copyrightonto.rst | 10 +- .../library_&_cultural_heritage/gnd.rst | 2 +- docs/source/benchmarking/livestock/atol.rst | 2 +- .../amontology.rst | 6 +- .../materials_science_&_engineering/asmo.rst | 4 +- .../atomistic.rst | 2 +- .../materials_science_&_engineering/bmo.rst | 4 +- .../materials_science_&_engineering/bvco.rst | 2 +- .../materials_science_&_engineering/cdco.rst | 2 +- .../chameo.rst | 4 +- .../cifcore.rst | 2 +- .../materials_science_&_engineering/cmso.rst | 2 +- .../materials_science_&_engineering/diso.rst | 2 +- .../materials_science_&_engineering/dsim.rst | 2 +- .../materials_science_&_engineering/emmo.rst | 6 +- .../emmocrystallography.rst | 4 +- .../materials_science_&_engineering/fso.rst | 2 +- .../materials_science_&_engineering/gpo.rst | 4 +- .../materials_science_&_engineering/hpont.rst | 4 +- .../materials_science_&_engineering/ldo.rst | 2 +- .../materials_science_&_engineering/lpbfo.rst | 2 +- .../materials_science_&_engineering/mambo.rst | 2 +- .../materials_science_&_engineering/mat.rst | 2 +- .../materialinformation.rst | 6 +- .../matonto.rst | 6 +- .../matvoc.rst | 2 +- .../matwerk.rst | 10 +- .../materials_science_&_engineering/mdo.rst | 4 +- .../materials_science_&_engineering/mds.rst | 2 +- .../mechanicaltesting.rst | 4 +- .../microstructures.rst | 2 +- .../materials_science_&_engineering/mmo.rst | 2 +- .../molbrinell.rst | 4 +- .../moltensile.rst | 4 +- .../materials_science_&_engineering/mseo.rst | 2 +- .../materials_science_&_engineering/msle.rst | 6 +- .../nanomine.rst | 2 +- .../oiemanufacturing.rst | 4 +- .../oiematerials.rst | 4 +- .../oiemodels.rst | 4 +- .../oiesoftware.rst | 2 +- .../ontocape.rst | 2 +- .../ontorule.rst | 4 +- .../periodictable.rst | 4 +- .../photovoltaics.rst | 2 +- .../materials_science_&_engineering/pldo.rst | 2 +- .../materials_science_&_engineering/pmdco.rst | 4 +- .../materials_science_&_engineering/podo.rst | 2 +- .../materials_science_&_engineering/ssn.rst | 4 +- .../systemcapabilities.rst | 4 +- .../materials_science_&_engineering/vimmp.rst | 6 +- docs/source/benchmarking/medicine/bto.rst | 2 +- docs/source/benchmarking/medicine/deb.rst | 2 +- docs/source/benchmarking/medicine/doid.rst | 4 +- docs/source/benchmarking/medicine/enm.rst | 8 +- docs/source/benchmarking/medicine/mfoem.rst | 10 +- docs/source/benchmarking/medicine/obi.rst | 8 +- docs/source/benchmarking/news_&_media/bbc.rst | 8 +- .../benchmarking/news_&_media/bbcbusiness.rst | 6 +- .../benchmarking/news_&_media/bbccms.rst | 8 +- .../news_&_media/bbccoreconcepts.rst | 6 +- .../news_&_media/bbccreativework.rst | 8 +- .../benchmarking/news_&_media/bbcfood.rst | 6 +- .../benchmarking/news_&_media/bbcpolitics.rst | 6 +- .../news_&_media/bbcprogrammes.rst | 6 +- .../news_&_media/bbcprovenance.rst | 8 +- .../benchmarking/news_&_media/bbcsport.rst | 8 +- .../news_&_media/bbcstoryline.rst | 6 +- .../benchmarking/news_&_media/bbcwildlife.rst | 6 +- .../scholarly_knowledge/aiiso.rst | 2 +- .../benchmarking/scholarly_knowledge/cito.rst | 4 +- .../benchmarking/scholarly_knowledge/cso.rst | 8 +- .../scholarly_knowledge/datacite.rst | 8 +- .../benchmarking/scholarly_knowledge/dcat.rst | 2 +- .../benchmarking/scholarly_knowledge/duo.rst | 2 +- .../scholarly_knowledge/eurio.rst | 6 +- .../benchmarking/scholarly_knowledge/expo.rst | 2 +- .../scholarly_knowledge/frapo.rst | 4 +- .../scholarly_knowledge/frbroo.rst | 2 +- .../scholarly_knowledge/lexinfo.rst | 10 +- .../scholarly_knowledge/metadata4ing.rst | 4 +- .../scholarly_knowledge/nfdicore.rst | 4 +- .../benchmarking/scholarly_knowledge/oboe.rst | 4 +- .../benchmarking/scholarly_knowledge/opmw.rst | 2 +- .../scholarly_knowledge/pplan.rst | 2 +- .../scholarly_knowledge/premon.rst | 2 +- .../scholarly_knowledge/sepio.rst | 6 +- .../scholarly_knowledge/spdocument.rst | 6 +- .../scholarly_knowledge/spworkflow.rst | 6 +- .../benchmarking/scholarly_knowledge/swo.rst | 6 +- .../scholarly_knowledge/tribain.rst | 4 +- .../benchmarking/scholarly_knowledge/voaf.rst | 4 +- .../benchmarking/scholarly_knowledge/wild.rst | 4 +- .../benchmarking/social_sciences/as2.rst | 10 +- .../benchmarking/social_sciences/bio.rst | 10 +- .../benchmarking/social_sciences/contact.rst | 10 +- .../benchmarking/social_sciences/foaf.rst | 8 +- .../benchmarking/social_sciences/sioc.rst | 6 +- .../units_and_measurements/om.rst | 6 +- .../units_and_measurements/owltime.rst | 4 +- .../units_and_measurements/qudt.rst | 4 +- .../units_and_measurements/qudv.rst | 4 +- .../units_and_measurements/uo.rst | 4 +- .../benchmarking/upper_ontology/bfo.rst | 4 +- .../benchmarking/upper_ontology/dolce.rst | 4 +- .../benchmarking/upper_ontology/fair.rst | 6 +- .../benchmarking/upper_ontology/gfo.rst | 6 +- .../benchmarking/upper_ontology/sio.rst | 4 +- .../benchmarking/upper_ontology/sumo.rst | 8 +- .../benchmarking/web_&_internet/saref.rst | 4 +- docs/source/conf.py | 1 + ontolearner/__init__.py | 4 +- ontolearner/ontology/agricultural.py | 2 +- ontolearner/ontology/arts_humanities.py | 6 +- ontolearner/ontology/chemistry.py | 2 +- ontolearner/ontology/education.py | 2 +- ontolearner/ontology/general.py | 2 +- ontolearner/ontology/geography.py | 2 +- ontolearner/ontology/industry.py | 2 +- ontolearner/ontology/law.py | 2 +- ontolearner/ontology/medicine.py | 2 +- ontolearner/ontology/news_media.py | 24 +-- ontolearner/ontology/scholarly_knowledge.py | 8 +- ontolearner/ontology/social_sciences.py | 10 +- ontolearner/ontology/web.py | 2 +- ontolearner/{pipeline.py => processor.py} | 143 +++++++----------- 193 files changed, 677 insertions(+), 516 deletions(-) create mode 100644 docs/source/_templates/ontology.rst create mode 100644 docs/source/_templates/ontology2.rst rename ontolearner/{pipeline.py => processor.py} (57%) diff --git a/docs/requirements.txt b/docs/requirements.txt index bcec96f..ecd9c27 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -4,5 +4,7 @@ sphinx_autodoc_typehints myst-parser sphinx_markdown_tables sphinx-copybutton -sphinx_inline_tabs sphinxcontrib-mermaid +sphinx-panels +sphinx-design +sphinx-tabs diff --git a/docs/source/_templates/ontology.rst b/docs/source/_templates/ontology.rst new file mode 100644 index 0000000..53db768 --- /dev/null +++ b/docs/source/_templates/ontology.rst @@ -0,0 +1,68 @@ +{{ ontology_name }} +======================================================================================================================== + +Overview +-------- +{{ description }} + +:Domain: {{ domain }} +:Category: {{ category }} +:Current Version: {{ version }} +:Last Updated: {{ last_updated }} +:Creator: {{ creator }} +:License: {{ license }} +:Format: {{ format }} +:Download: `{{ ontology_name }} Homepage <{{ download_url }}>`_ + +Graph Metrics +------------- + - **Total Nodes**: {{ total_nodes }} + - **Total Edges**: {{ total_edges }} + - **Root Nodes**: {{ root_nodes }} + - **Leaf Nodes**: {{ leaf_nodes }} + +Knowledge coverage +------------------ + - Classes: {{ num_classes }} + - Individuals: {{ num_individuals }} + - Properties: {{ num_properties }} + +Hierarchical metrics +-------------------- + - **Maximum Depth**: {{ max_depth }} + - **Minimum Depth**: {{ min_depth }} + - **Average Depth**: {{ avg_depth }} + - **Depth Variance**: {{ depth_variance }} + +Breadth metrics +------------------ + - **Maximum Breadth**: {{ max_breadth }} + - **Minimum Breadth**: {{ min_breadth }} + - **Average Breadth**: {{ avg_breadth }} + - **Breadth Variance**: {{ breadth_variance }} + +Dataset Statistics +------------------ +Generated Benchmarks: + - **Term Types**: {{ num_term_types }} + - **Taxonomic Relations**: {{ num_taxonomic_relations }} + - **Non-taxonomic Relations**: {{ num_non_taxonomic_relations }} + - **Average Terms per Type**: {{ avg_terms_per_type }} + +Usage Example +------------- +.. code-block:: python + + from ontolearner.ontology import {{ class_name }} + + # Initialize and load ontology + ontology = {{ class_name }}() + ontology.load("path/to/ontology.owl") + + # Extract datasets + data = ontology.extract() + + # Access specific relations + term_types = data.term_typings + taxonomic_relations = data.type_taxonomies + non_taxonomic_relations = data.type_non_taxonomic_relations diff --git a/docs/source/_templates/ontology2.rst b/docs/source/_templates/ontology2.rst new file mode 100644 index 0000000..8859a49 --- /dev/null +++ b/docs/source/_templates/ontology2.rst @@ -0,0 +1,122 @@ +{{ ontology_name }} +============================================================================== + +Overview +-------- +{{ description }} + +.. container:: metadata-columns + + .. container:: left-column + + :Domain: {{ domain }} + :Category: {{ category }} + :Current Version: {{ version }} + :Last Updated: {{ last_updated }} + :Creator: {{ creator }} + :License: {{ license }} + :Format: {{ format }} + + .. container:: right-column + + .. container:: download-button + + `Download {{ ontology_name }} <{{ download_url }}>`_ + +Metrics & Statistics +------------------- + +.. tabs:: + + .. tab:: Graph Metrics + + .. list-table:: + :widths: 50 50 + :header-rows: 0 + + * - **Total Nodes** + - {{ total_nodes }} + * - **Total Edges** + - {{ total_edges }} + * - **Root Nodes** + - {{ root_nodes }} + * - **Leaf Nodes** + - {{ leaf_nodes }} + + .. tab:: Knowledge Coverage + + .. list-table:: + :widths: 50 50 + :header-rows: 0 + + * - **Classes** + - {{ num_classes }} + * - **Individuals** + - {{ num_individuals }} + * - **Properties** + - {{ num_properties }} + + .. tab:: Hierarchical Metrics + + .. list-table:: + :widths: 50 50 + :header-rows: 0 + + * - **Maximum Depth** + - {{ max_depth }} + * - **Minimum Depth** + - {{ min_depth }} + * - **Average Depth** + - {{ avg_depth }} + * - **Depth Variance** + - {{ depth_variance }} + + .. tab:: Breadth Metrics + + .. list-table:: + :widths: 50 50 + :header-rows: 0 + + * - **Maximum Breadth** + - {{ max_breadth }} + * - **Minimum Breadth** + - {{ min_breadth }} + * - **Average Breadth** + - {{ avg_breadth }} + * - **Breadth Variance** + - {{ breadth_variance }} + + .. tab:: Dataset Statistics + + **Generated Benchmarks**: + + .. list-table:: + :widths: 50 50 + :header-rows: 0 + + * - **Term Types** + - {{ num_term_types }} + * - **Taxonomic Relations** + - {{ num_taxonomic_relations }} + * - **Non-taxonomic Relations** + - {{ num_non_taxonomic_relations }} + * - **Average Terms per Type** + - {{ avg_terms_per_type }} + +Usage Example +------------- +.. code-block:: python + + from ontolearner.ontology import {{ class_name }} + + # Initialize and load ontology + ontology = {{ class_name }}() + ontology.load("path/to/ontology.owl") + + # Extract datasets + data = ontology.extract() + + # Access specific relations + term_types = data.term_typings + taxonomic_relations = data.type_taxonomies + non_taxonomic_relations = data.type_non_taxonomic_relations diff --git a/docs/source/benchmarking/agricultural/agrovoc.rst b/docs/source/benchmarking/agricultural/agrovoc.rst index f326a5f..c9524d8 100644 --- a/docs/source/benchmarking/agricultural/agrovoc.rst +++ b/docs/source/benchmarking/agricultural/agrovoc.rst @@ -1,5 +1,5 @@ -AGROVOC Multilingual Thesaurus -=================================== +AGROVOC Multilingual Thesaurus (AGROVOC) +======================================================================================================================== Overview -------- @@ -15,7 +15,7 @@ indexing processes and making searches more efficient. :Creator: Food and Agriculture Organization of the United Nations :License: Creative Commons 4.0 :Format: RDF, SKOS -:Download: `AGROVOC Multilingual Thesaurus Homepage `_ +:Download: `AGROVOC Multilingual Thesaurus (AGROVOC) Homepage `_ Graph Metrics ------------- @@ -50,7 +50,7 @@ Generated Benchmarks: - **Term Types**: 1234769 - **Taxonomic Relations**: 13 - **Non-taxonomic Relations**: 7 - - **Average Terms per Type**: 47491.12 + - **Average Terms per Type**: 137196.56 Usage Example ------------- diff --git a/docs/source/benchmarking/agricultural/foodon.rst b/docs/source/benchmarking/agricultural/foodon.rst index 377de46..ce53f59 100644 --- a/docs/source/benchmarking/agricultural/foodon.rst +++ b/docs/source/benchmarking/agricultural/foodon.rst @@ -1,5 +1,5 @@ Food Ontology (FoodON) -========================== +======================================================================================================================== Overview -------- @@ -50,8 +50,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 16 - **Taxonomic Relations**: 98513 - - **Non-taxonomic Relations**: 7924 - - **Average Terms per Type**: 0.94 + - **Non-taxonomic Relations**: 2072 + - **Average Terms per Type**: 8.00 Usage Example ------------- diff --git a/docs/source/benchmarking/agricultural/po.rst b/docs/source/benchmarking/agricultural/po.rst index 3fa1559..4d30e3c 100644 --- a/docs/source/benchmarking/agricultural/po.rst +++ b/docs/source/benchmarking/agricultural/po.rst @@ -1,5 +1,5 @@ Plant Ontology (PO) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 5288 - - **Non-taxonomic Relations**: 117 + - **Non-taxonomic Relations**: 36 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/arts_&_humanities/chordontology.rst b/docs/source/benchmarking/arts_&_humanities/chordontology.rst index 6ff3125..1351fab 100644 --- a/docs/source/benchmarking/arts_&_humanities/chordontology.rst +++ b/docs/source/benchmarking/arts_&_humanities/chordontology.rst @@ -1,5 +1,5 @@ -Chord Ontology -========================== +Chord Ontology (ChordOntology) +======================================================================================================================== Overview -------- @@ -12,7 +12,7 @@ The Chord Ontology is an ontology for describing chords in musical pieces. :Creator: Yves Raimond, Samer Abdallah, Centre for Digital Music, Queen Mary, University of London :License: Creative Commons 3.0 :Format: RDF/XML -:Download: `Chord Ontology Homepage `_ +:Download: `Chord Ontology (ChordOntology) Homepage `_ Graph Metrics ------------- @@ -47,7 +47,7 @@ Generated Benchmarks: - **Term Types**: 108 - **Taxonomic Relations**: 4 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 5.68 + - **Average Terms per Type**: 21.60 Usage Example ------------- diff --git a/docs/source/benchmarking/arts_&_humanities/icon.rst b/docs/source/benchmarking/arts_&_humanities/icon.rst index baada0c..c8e2aaa 100644 --- a/docs/source/benchmarking/arts_&_humanities/icon.rst +++ b/docs/source/benchmarking/arts_&_humanities/icon.rst @@ -1,5 +1,5 @@ Icon Ontology (ICON) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/arts_&_humanities/musicontology.rst b/docs/source/benchmarking/arts_&_humanities/musicontology.rst index ac92618..866c48f 100644 --- a/docs/source/benchmarking/arts_&_humanities/musicontology.rst +++ b/docs/source/benchmarking/arts_&_humanities/musicontology.rst @@ -1,5 +1,5 @@ -Music Ontology -========================== +Music Ontology (MusicOntology) +======================================================================================================================== Overview -------- @@ -14,7 +14,7 @@ on the Semantic Web. :Creator: Knowledge Media Institute, Open University :License: Creative Commons 4.0 :Format: RDF/XML -:Download: `Music Ontology Homepage `_ +:Download: `Music Ontology (MusicOntology) Homepage `_ Graph Metrics ------------- @@ -49,7 +49,7 @@ Generated Benchmarks: - **Term Types**: 13 - **Taxonomic Relations**: 67 - **Non-taxonomic Relations**: 2 - - **Average Terms per Type**: 1.18 + - **Average Terms per Type**: 6.50 Usage Example ------------- diff --git a/docs/source/benchmarking/arts_&_humanities/nomisma.rst b/docs/source/benchmarking/arts_&_humanities/nomisma.rst index e7c2c1e..afd0953 100644 --- a/docs/source/benchmarking/arts_&_humanities/nomisma.rst +++ b/docs/source/benchmarking/arts_&_humanities/nomisma.rst @@ -1,5 +1,5 @@ Nomisma Ontology (Nomisma) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/arts_&_humanities/timelineontology.rst b/docs/source/benchmarking/arts_&_humanities/timelineontology.rst index 4715ace..b5a1a07 100644 --- a/docs/source/benchmarking/arts_&_humanities/timelineontology.rst +++ b/docs/source/benchmarking/arts_&_humanities/timelineontology.rst @@ -1,5 +1,5 @@ -Timeline Ontology -========================== +Timeline Ontology (TimelineOntology) +======================================================================================================================== Overview -------- @@ -14,7 +14,7 @@ A timeline may support a signal, a video, a score, a work, etc. :Creator: Christopher Sutton, Yves Raimond, Matthias Mauch :License: Creative Commons 1.0 :Format: RDF/XML -:Download: `Timeline Ontology Homepage `_ +:Download: `Timeline Ontology (TimelineOntology) Homepage `_ Graph Metrics ------------- @@ -48,8 +48,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 2 - **Taxonomic Relations**: 106 - - **Non-taxonomic Relations**: 17 - - **Average Terms per Type**: 0.12 + - **Non-taxonomic Relations**: 10 + - **Average Terms per Type**: 1.00 Usage Example ------------- diff --git a/docs/source/benchmarking/benchmark.rst b/docs/source/benchmarking/benchmark.rst index f673fe4..8692667 100644 --- a/docs/source/benchmarking/benchmark.rst +++ b/docs/source/benchmarking/benchmark.rst @@ -229,6 +229,7 @@ Ontologies related to materials, their structure, properties, processing, and en materials_science_&_engineering/materialinformation.rst materials_science_&_engineering/matonto.rst materials_science_&_engineering/matvoc.rst + materials_science_&_engineering/matwerk.rst materials_science_&_engineering/mdo.rst materials_science_&_engineering/mds.rst materials_science_&_engineering/mechanicaltesting.rst diff --git a/docs/source/benchmarking/biology_&_life_sciences/biopax.rst b/docs/source/benchmarking/biology_&_life_sciences/biopax.rst index 7b56848..c613347 100644 --- a/docs/source/benchmarking/biology_&_life_sciences/biopax.rst +++ b/docs/source/benchmarking/biology_&_life_sciences/biopax.rst @@ -1,5 +1,5 @@ Biological Pathways Exchange (BioPAX) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/biology_&_life_sciences/efo.rst b/docs/source/benchmarking/biology_&_life_sciences/efo.rst index 6aa654b..8ca3959 100644 --- a/docs/source/benchmarking/biology_&_life_sciences/efo.rst +++ b/docs/source/benchmarking/biology_&_life_sciences/efo.rst @@ -1,5 +1,5 @@ Experimental Factor Ontology (EFO) -========================== +======================================================================================================================== Overview -------- @@ -49,8 +49,8 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 280860 - - **Non-taxonomic Relations**: 15975 + - **Taxonomic Relations**: 280844 + - **Non-taxonomic Relations**: 10335 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/biology_&_life_sciences/go.rst b/docs/source/benchmarking/biology_&_life_sciences/go.rst index 8c844eb..279aa05 100644 --- a/docs/source/benchmarking/biology_&_life_sciences/go.rst +++ b/docs/source/benchmarking/biology_&_life_sciences/go.rst @@ -1,5 +1,5 @@ Gene Ontology (GO) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 206031 - - **Non-taxonomic Relations**: 14155 + - **Non-taxonomic Relations**: 3676 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/biology_&_life_sciences/lifo.rst b/docs/source/benchmarking/biology_&_life_sciences/lifo.rst index 2f6b3d0..8268175 100644 --- a/docs/source/benchmarking/biology_&_life_sciences/lifo.rst +++ b/docs/source/benchmarking/biology_&_life_sciences/lifo.rst @@ -1,5 +1,5 @@ Life Ontology (LifO) -========================== +======================================================================================================================== Overview -------- @@ -49,8 +49,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 9 - **Taxonomic Relations**: 581 - - **Non-taxonomic Relations**: 15 - - **Average Terms per Type**: 0.69 + - **Non-taxonomic Relations**: 0 + - **Average Terms per Type**: 9.00 Usage Example ------------- diff --git a/docs/source/benchmarking/biology_&_life_sciences/marinetlo.rst b/docs/source/benchmarking/biology_&_life_sciences/marinetlo.rst index 99ea017..17ea299 100644 --- a/docs/source/benchmarking/biology_&_life_sciences/marinetlo.rst +++ b/docs/source/benchmarking/biology_&_life_sciences/marinetlo.rst @@ -1,5 +1,5 @@ Marine Taxonomy and Life Ontology (MarineTLO) -========================== +======================================================================================================================== Overview -------- @@ -56,7 +56,7 @@ Generated Benchmarks: - **Term Types**: 1 - **Taxonomic Relations**: 113 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 0.17 + - **Average Terms per Type**: 1.00 Usage Example ------------- diff --git a/docs/source/benchmarking/biology_&_life_sciences/mged.rst b/docs/source/benchmarking/biology_&_life_sciences/mged.rst index 236fd4d..26b0893 100644 --- a/docs/source/benchmarking/biology_&_life_sciences/mged.rst +++ b/docs/source/benchmarking/biology_&_life_sciences/mged.rst @@ -1,5 +1,5 @@ MGED Ontology (MGED) -========================== +======================================================================================================================== Overview -------- @@ -51,7 +51,7 @@ Generated Benchmarks: - **Term Types**: 744 - **Taxonomic Relations**: 1536 - **Non-taxonomic Relations**: 6 - - **Average Terms per Type**: 16.53 + - **Average Terms per Type**: 7.83 Usage Example ------------- diff --git a/docs/source/benchmarking/biology_&_life_sciences/microscopy.rst b/docs/source/benchmarking/biology_&_life_sciences/microscopy.rst index 55abd25..768226f 100644 --- a/docs/source/benchmarking/biology_&_life_sciences/microscopy.rst +++ b/docs/source/benchmarking/biology_&_life_sciences/microscopy.rst @@ -1,5 +1,5 @@ Microscopy Ontology (MO) -========================== +======================================================================================================================== Overview -------- @@ -48,8 +48,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 1 - **Taxonomic Relations**: 1181 - - **Non-taxonomic Relations**: 114 - - **Average Terms per Type**: 0.06 + - **Non-taxonomic Relations**: 20 + - **Average Terms per Type**: 1.00 Usage Example ------------- diff --git a/docs/source/benchmarking/biology_&_life_sciences/npo.rst b/docs/source/benchmarking/biology_&_life_sciences/npo.rst index 57a67dd..f3ef733 100644 --- a/docs/source/benchmarking/biology_&_life_sciences/npo.rst +++ b/docs/source/benchmarking/biology_&_life_sciences/npo.rst @@ -1,5 +1,5 @@ NanoParticle Ontology (NPO) -========================== +======================================================================================================================== Overview -------- @@ -52,7 +52,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 6895 - - **Non-taxonomic Relations**: 12640 + - **Non-taxonomic Relations**: 12277 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/biology_&_life_sciences/pato.rst b/docs/source/benchmarking/biology_&_life_sciences/pato.rst index 1905b9e..2299aa7 100644 --- a/docs/source/benchmarking/biology_&_life_sciences/pato.rst +++ b/docs/source/benchmarking/biology_&_life_sciences/pato.rst @@ -1,5 +1,5 @@ Phenotype and Trait Ontology (PATO) -========================== +======================================================================================================================== Overview -------- @@ -46,7 +46,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 62605 - - **Non-taxonomic Relations**: 5456 + - **Non-taxonomic Relations**: 752 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/chemistry/afo.rst b/docs/source/benchmarking/chemistry/afo.rst index 7c4dbcb..dc61751 100644 --- a/docs/source/benchmarking/chemistry/afo.rst +++ b/docs/source/benchmarking/chemistry/afo.rst @@ -1,5 +1,5 @@ Allotrope Foundation Ontology (AFO) -========================== +======================================================================================================================== Overview -------- @@ -50,8 +50,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 38 - **Taxonomic Relations**: 9889 - - **Non-taxonomic Relations**: 208 - - **Average Terms per Type**: 1.41 + - **Non-taxonomic Relations**: 34 + - **Average Terms per Type**: 3.45 Usage Example ------------- diff --git a/docs/source/benchmarking/chemistry/chebi.rst b/docs/source/benchmarking/chemistry/chebi.rst index a0b4fb1..67ef2bf 100644 --- a/docs/source/benchmarking/chemistry/chebi.rst +++ b/docs/source/benchmarking/chemistry/chebi.rst @@ -1,5 +1,5 @@ Chemical Entities of Biological Interest (ChEBI) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/chemistry/cheminf.rst b/docs/source/benchmarking/chemistry/cheminf.rst index 0ba83a1..ef886d3 100644 --- a/docs/source/benchmarking/chemistry/cheminf.rst +++ b/docs/source/benchmarking/chemistry/cheminf.rst @@ -1,5 +1,5 @@ Chemical Information Ontology (CHEMINF) -========================== +======================================================================================================================== Overview -------- @@ -49,7 +49,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 594 - - **Non-taxonomic Relations**: 10 + - **Non-taxonomic Relations**: 1 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/chemistry/chiro.rst b/docs/source/benchmarking/chemistry/chiro.rst index 28b0c5c..7049b6d 100644 --- a/docs/source/benchmarking/chemistry/chiro.rst +++ b/docs/source/benchmarking/chemistry/chiro.rst @@ -1,5 +1,5 @@ CHEBI Integrated Role Ontology (CHIRO) -========================== +======================================================================================================================== Overview -------- @@ -49,7 +49,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 27299 - - **Non-taxonomic Relations**: 647 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/chemistry/chmo.rst b/docs/source/benchmarking/chemistry/chmo.rst index a41bfc9..6271751 100644 --- a/docs/source/benchmarking/chemistry/chmo.rst +++ b/docs/source/benchmarking/chemistry/chmo.rst @@ -1,5 +1,5 @@ Chemical Methods Ontology (ChMO) -========================== +======================================================================================================================== Overview -------- @@ -50,7 +50,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 4268 - - **Non-taxonomic Relations**: 216 + - **Non-taxonomic Relations**: 114 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/chemistry/fix.rst b/docs/source/benchmarking/chemistry/fix.rst index e56a3ce..5ee1afd 100644 --- a/docs/source/benchmarking/chemistry/fix.rst +++ b/docs/source/benchmarking/chemistry/fix.rst @@ -1,5 +1,5 @@ FIX Ontology (FIX) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/chemistry/massspectrometry.rst b/docs/source/benchmarking/chemistry/massspectrometry.rst index 43340e3..8a207bb 100644 --- a/docs/source/benchmarking/chemistry/massspectrometry.rst +++ b/docs/source/benchmarking/chemistry/massspectrometry.rst @@ -1,5 +1,5 @@ Mass Spectrometry Ontology (MassSpectrometry) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/chemistry/mop.rst b/docs/source/benchmarking/chemistry/mop.rst index 7032297..f6cafb4 100644 --- a/docs/source/benchmarking/chemistry/mop.rst +++ b/docs/source/benchmarking/chemistry/mop.rst @@ -1,5 +1,5 @@ Molecular Process Ontology (MOP) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 4171 - - **Non-taxonomic Relations**: 78 + - **Non-taxonomic Relations**: 47 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/chemistry/nmrcv.rst b/docs/source/benchmarking/chemistry/nmrcv.rst index a7628b3..320b6cf 100644 --- a/docs/source/benchmarking/chemistry/nmrcv.rst +++ b/docs/source/benchmarking/chemistry/nmrcv.rst @@ -1,5 +1,5 @@ Nuclear Magnetic Resonance Controlled Vocabulary (NMRCV) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/chemistry/ontokin.rst b/docs/source/benchmarking/chemistry/ontokin.rst index b29d375..2b449da 100644 --- a/docs/source/benchmarking/chemistry/ontokin.rst +++ b/docs/source/benchmarking/chemistry/ontokin.rst @@ -1,5 +1,5 @@ -OntoKin -========================== +Chemical Kinetics Ontology (OntoKin) +======================================================================================================================== Overview -------- @@ -12,7 +12,7 @@ OntoKin is an ontology developed for representing chemical kinetic reaction mech :Creator: IEEE :License: Creative Commons 4.0 :Format: OWL -:Download: `OntoKin Homepage `_ +:Download: `Chemical Kinetics Ontology (OntoKin) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/chemistry/proco.rst b/docs/source/benchmarking/chemistry/proco.rst index e8b44c1..6a348d1 100644 --- a/docs/source/benchmarking/chemistry/proco.rst +++ b/docs/source/benchmarking/chemistry/proco.rst @@ -1,5 +1,5 @@ PROcess Chemistry Ontology (PROCO) -========================== +======================================================================================================================== Overview -------- @@ -47,8 +47,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 14 - **Taxonomic Relations**: 2975 - - **Non-taxonomic Relations**: 17 - - **Average Terms per Type**: 0.93 + - **Non-taxonomic Relations**: 1 + - **Average Terms per Type**: 7.00 Usage Example ------------- diff --git a/docs/source/benchmarking/chemistry/psimod.rst b/docs/source/benchmarking/chemistry/psimod.rst index a904f8b..eb21e1f 100644 --- a/docs/source/benchmarking/chemistry/psimod.rst +++ b/docs/source/benchmarking/chemistry/psimod.rst @@ -1,5 +1,5 @@ Proteomics Standards Initiative (PSI) Protein Modifications Ontology (PSI-MOD) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/chemistry/rex.rst b/docs/source/benchmarking/chemistry/rex.rst index 7b73852..9bdae0c 100644 --- a/docs/source/benchmarking/chemistry/rex.rst +++ b/docs/source/benchmarking/chemistry/rex.rst @@ -1,5 +1,5 @@ Physico-chemical process ontology (REX) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/chemistry/rxno.rst b/docs/source/benchmarking/chemistry/rxno.rst index a96babe..241d967 100644 --- a/docs/source/benchmarking/chemistry/rxno.rst +++ b/docs/source/benchmarking/chemistry/rxno.rst @@ -1,5 +1,5 @@ Reaction Ontology (RXNO) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 3757 - - **Non-taxonomic Relations**: 87 + - **Non-taxonomic Relations**: 16 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/chemistry/vibso.rst b/docs/source/benchmarking/chemistry/vibso.rst index ebac55e..13efba8 100644 --- a/docs/source/benchmarking/chemistry/vibso.rst +++ b/docs/source/benchmarking/chemistry/vibso.rst @@ -1,5 +1,5 @@ Vibrational Spectroscopy Ontology (VIBSO) -========================== +======================================================================================================================== Overview -------- @@ -47,8 +47,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 40 - **Taxonomic Relations**: 856 - - **Non-taxonomic Relations**: 125 - - **Average Terms per Type**: 1.48 + - **Non-taxonomic Relations**: 23 + - **Average Terms per Type**: 2.35 Usage Example ------------- diff --git a/docs/source/benchmarking/ecology_&_environment/envo.rst b/docs/source/benchmarking/ecology_&_environment/envo.rst index 0b51a73..5f4388c 100644 --- a/docs/source/benchmarking/ecology_&_environment/envo.rst +++ b/docs/source/benchmarking/ecology_&_environment/envo.rst @@ -1,5 +1,5 @@ Environment Ontology (ENVO) -========================== +======================================================================================================================== Overview -------- @@ -49,8 +49,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 46 - **Taxonomic Relations**: 28876 - - **Non-taxonomic Relations**: 1244 - - **Average Terms per Type**: 2.30 + - **Non-taxonomic Relations**: 148 + - **Average Terms per Type**: 5.75 Usage Example ------------- diff --git a/docs/source/benchmarking/ecology_&_environment/oeo.rst b/docs/source/benchmarking/ecology_&_environment/oeo.rst index a178b86..9974eb0 100644 --- a/docs/source/benchmarking/ecology_&_environment/oeo.rst +++ b/docs/source/benchmarking/ecology_&_environment/oeo.rst @@ -1,5 +1,5 @@ The Open Energy Ontology (OEO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/ecology_&_environment/sweet.rst b/docs/source/benchmarking/ecology_&_environment/sweet.rst index 1e96feb..b30fbac 100644 --- a/docs/source/benchmarking/ecology_&_environment/sweet.rst +++ b/docs/source/benchmarking/ecology_&_environment/sweet.rst @@ -1,5 +1,5 @@ Semantic Web for Earth and Environment Technology Ontology (SWEET) -========================== +======================================================================================================================== Overview -------- @@ -49,9 +49,9 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 2439 - - **Taxonomic Relations**: 18840 - - **Non-taxonomic Relations**: 517 - - **Average Terms per Type**: 81.30 + - **Taxonomic Relations**: 18839 + - **Non-taxonomic Relations**: 515 + - **Average Terms per Type**: 11.67 Usage Example ------------- diff --git a/docs/source/benchmarking/education/bibframe.rst b/docs/source/benchmarking/education/bibframe.rst index f45c11d..b063f50 100644 --- a/docs/source/benchmarking/education/bibframe.rst +++ b/docs/source/benchmarking/education/bibframe.rst @@ -1,5 +1,5 @@ Bibliographic Framework Ontology (BIBFRAME) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/education/common.rst b/docs/source/benchmarking/education/common.rst index ffb30f6..c71fae5 100644 --- a/docs/source/benchmarking/education/common.rst +++ b/docs/source/benchmarking/education/common.rst @@ -1,5 +1,5 @@ -Common Ontology -========================== +Common Ontology (Common) +======================================================================================================================== Overview -------- @@ -12,7 +12,7 @@ Ontology for the representation of commons elements in the Trias ontology :Creator: Jhon Toledo, Miguel Angel García, Oscar Corcho :License: Creative Commons Attribution 4.0 International (CC BY 4.0) :Format: RDF/XML -:Download: `Common Ontology Homepage `_ +:Download: `Common Ontology (Common) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/education/doco.rst b/docs/source/benchmarking/education/doco.rst index 407f792..7f4ba1c 100644 --- a/docs/source/benchmarking/education/doco.rst +++ b/docs/source/benchmarking/education/doco.rst @@ -1,5 +1,5 @@ Document Components Ontology (DoCO) -========================== +======================================================================================================================== Overview -------- @@ -49,7 +49,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 156 - - **Non-taxonomic Relations**: 13 + - **Non-taxonomic Relations**: 7 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/events/conference.rst b/docs/source/benchmarking/events/conference.rst index ed371c4..92e4faa 100644 --- a/docs/source/benchmarking/events/conference.rst +++ b/docs/source/benchmarking/events/conference.rst @@ -1,5 +1,5 @@ Conference Ontology (Conference) -========================== +======================================================================================================================== Overview -------- @@ -50,7 +50,7 @@ Generated Benchmarks: - **Term Types**: 32 - **Taxonomic Relations**: 184 - **Non-taxonomic Relations**: 3 - - **Average Terms per Type**: 2.00 + - **Average Terms per Type**: 10.67 Usage Example ------------- diff --git a/docs/source/benchmarking/events/icalendar.rst b/docs/source/benchmarking/events/icalendar.rst index 3efa2c0..06a5cf5 100644 --- a/docs/source/benchmarking/events/icalendar.rst +++ b/docs/source/benchmarking/events/icalendar.rst @@ -1,5 +1,5 @@ iCalendar Vocabulary (iCalendar) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/events/lode.rst b/docs/source/benchmarking/events/lode.rst index beaa693..67d8db6 100644 --- a/docs/source/benchmarking/events/lode.rst +++ b/docs/source/benchmarking/events/lode.rst @@ -1,5 +1,5 @@ Linking Open Descriptions of Events (LODE) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/finance/goodrelations.rst b/docs/source/benchmarking/finance/goodrelations.rst index 0eb8596..84824f0 100644 --- a/docs/source/benchmarking/finance/goodrelations.rst +++ b/docs/source/benchmarking/finance/goodrelations.rst @@ -1,5 +1,5 @@ Good Relations Language Reference (GoodRelations) -========================== +======================================================================================================================== Overview -------- @@ -50,8 +50,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 47 - **Taxonomic Relations**: 25 - - **Non-taxonomic Relations**: 265 - - **Average Terms per Type**: 1.74 + - **Non-taxonomic Relations**: 264 + - **Average Terms per Type**: 5.22 Usage Example ------------- diff --git a/docs/source/benchmarking/food_&_beverage/wine.rst b/docs/source/benchmarking/food_&_beverage/wine.rst index a1e480f..d5a45b3 100644 --- a/docs/source/benchmarking/food_&_beverage/wine.rst +++ b/docs/source/benchmarking/food_&_beverage/wine.rst @@ -1,5 +1,5 @@ Wine Ontology (Wine) -============================================================================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/general_knowledge/cco.rst b/docs/source/benchmarking/general_knowledge/cco.rst index cfd9612..543c61c 100644 --- a/docs/source/benchmarking/general_knowledge/cco.rst +++ b/docs/source/benchmarking/general_knowledge/cco.rst @@ -1,5 +1,5 @@ Common Core Ontologies (CCO) -========================== +======================================================================================================================== Overview -------- @@ -47,8 +47,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 362 - **Taxonomic Relations**: 1806 - - **Non-taxonomic Relations**: 86 - - **Average Terms per Type**: 8.83 + - **Non-taxonomic Relations**: 21 + - **Average Terms per Type**: 10.06 Usage Example ------------- diff --git a/docs/source/benchmarking/general_knowledge/dbpedia.rst b/docs/source/benchmarking/general_knowledge/dbpedia.rst index 3047d79..7d01218 100644 --- a/docs/source/benchmarking/general_knowledge/dbpedia.rst +++ b/docs/source/benchmarking/general_knowledge/dbpedia.rst @@ -1,5 +1,5 @@ -DBpedia Ontology -========================== +DBpedia Ontology (DBpedia) +======================================================================================================================== Overview -------- @@ -15,7 +15,7 @@ into a crowd-sourced effort, resulting in a shallow cross-domain ontology. :Creator: DBpedia Maintainers and Contributors :License: Creative Commons 3.0 :Format: OWL -:Download: `DBpedia Ontology Homepage `_ +:Download: `DBpedia Ontology (DBpedia) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/general_knowledge/dublincore.rst b/docs/source/benchmarking/general_knowledge/dublincore.rst index 0fc20c3..898a898 100644 --- a/docs/source/benchmarking/general_knowledge/dublincore.rst +++ b/docs/source/benchmarking/general_knowledge/dublincore.rst @@ -1,5 +1,5 @@ Dublin Core Vocabulary (DublinCore) -========================== +======================================================================================================================== Overview -------- @@ -50,7 +50,7 @@ Generated Benchmarks: - **Term Types**: 30 - **Taxonomic Relations**: 0 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 0.88 + - **Average Terms per Type**: 3.00 Usage Example ------------- diff --git a/docs/source/benchmarking/general_knowledge/edam.rst b/docs/source/benchmarking/general_knowledge/edam.rst index d831692..a5d2825 100644 --- a/docs/source/benchmarking/general_knowledge/edam.rst +++ b/docs/source/benchmarking/general_knowledge/edam.rst @@ -1,5 +1,5 @@ The ontology of data analysis and management (EDAM) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 9748 + - **Taxonomic Relations**: 9745 - **Non-taxonomic Relations**: 1314 - **Average Terms per Type**: 0.00 diff --git a/docs/source/benchmarking/general_knowledge/gist.rst b/docs/source/benchmarking/general_knowledge/gist.rst index 35592b2..2cbfe11 100644 --- a/docs/source/benchmarking/general_knowledge/gist.rst +++ b/docs/source/benchmarking/general_knowledge/gist.rst @@ -1,5 +1,5 @@ GIST Upper Ontology (GIST) -========================== +======================================================================================================================== Overview -------- @@ -48,8 +48,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 8 - **Taxonomic Relations**: 78 - - **Non-taxonomic Relations**: 106 - - **Average Terms per Type**: 1.33 + - **Non-taxonomic Relations**: 56 + - **Average Terms per Type**: 8.00 Usage Example ------------- diff --git a/docs/source/benchmarking/general_knowledge/iao.rst b/docs/source/benchmarking/general_knowledge/iao.rst index fa8d7e2..8250ae4 100644 --- a/docs/source/benchmarking/general_knowledge/iao.rst +++ b/docs/source/benchmarking/general_knowledge/iao.rst @@ -1,5 +1,5 @@ Information Artifact Ontology (IAO) -========================== +======================================================================================================================== Overview -------- @@ -47,8 +47,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 18 - **Taxonomic Relations**: 567 - - **Non-taxonomic Relations**: 35 - - **Average Terms per Type**: 1.06 + - **Non-taxonomic Relations**: 19 + - **Average Terms per Type**: 6.00 Usage Example ------------- diff --git a/docs/source/benchmarking/general_knowledge/prov.rst b/docs/source/benchmarking/general_knowledge/prov.rst index 86feb0d..f5c9eab 100644 --- a/docs/source/benchmarking/general_knowledge/prov.rst +++ b/docs/source/benchmarking/general_knowledge/prov.rst @@ -1,5 +1,5 @@ PROV Ontology (PROV-O) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/general_knowledge/ro.rst b/docs/source/benchmarking/general_knowledge/ro.rst index 6c84a9b..35e3040 100644 --- a/docs/source/benchmarking/general_knowledge/ro.rst +++ b/docs/source/benchmarking/general_knowledge/ro.rst @@ -1,5 +1,5 @@ Relation Ontology (RO) -========================== +======================================================================================================================== Overview -------- @@ -47,8 +47,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 2 - **Taxonomic Relations**: 98 - - **Non-taxonomic Relations**: 13 - - **Average Terms per Type**: 0.15 + - **Non-taxonomic Relations**: 10 + - **Average Terms per Type**: 2.00 Usage Example ------------- diff --git a/docs/source/benchmarking/general_knowledge/schemaorg.rst b/docs/source/benchmarking/general_knowledge/schemaorg.rst index e0f6ef8..e167506 100644 --- a/docs/source/benchmarking/general_knowledge/schemaorg.rst +++ b/docs/source/benchmarking/general_knowledge/schemaorg.rst @@ -1,5 +1,5 @@ Schema.org Ontology (SchemaOrg) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/general_knowledge/umbel.rst b/docs/source/benchmarking/general_knowledge/umbel.rst index 7ed71e5..c2eb93e 100644 --- a/docs/source/benchmarking/general_knowledge/umbel.rst +++ b/docs/source/benchmarking/general_knowledge/umbel.rst @@ -1,5 +1,5 @@ Upper Mapping and Binding Exchange Layer (UMBEL) Vocabulary -========================== +======================================================================================================================== Overview -------- @@ -50,8 +50,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 10 - **Taxonomic Relations**: 64 - - **Non-taxonomic Relations**: 33 - - **Average Terms per Type**: 1.25 + - **Non-taxonomic Relations**: 0 + - **Average Terms per Type**: 10.00 Usage Example ------------- diff --git a/docs/source/benchmarking/geography/geo.rst b/docs/source/benchmarking/geography/geo.rst index 86553a9..72a9e1d 100644 --- a/docs/source/benchmarking/geography/geo.rst +++ b/docs/source/benchmarking/geography/geo.rst @@ -1,5 +1,5 @@ Geographical Entities Ontology (GEO) -========================== +======================================================================================================================== Overview -------- @@ -48,8 +48,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 46949 - **Taxonomic Relations**: 664 - - **Non-taxonomic Relations**: 65 - - **Average Terms per Type**: 1877.96 + - **Non-taxonomic Relations**: 19 + - **Average Terms per Type**: 1805.73 Usage Example ------------- diff --git a/docs/source/benchmarking/geography/geonames.rst b/docs/source/benchmarking/geography/geonames.rst index b07a197..2992e8f 100644 --- a/docs/source/benchmarking/geography/geonames.rst +++ b/docs/source/benchmarking/geography/geonames.rst @@ -1,5 +1,5 @@ GeoNames Ontology (GeoNames) -========================== +======================================================================================================================== Overview -------- @@ -48,7 +48,7 @@ Generated Benchmarks: - **Term Types**: 699 - **Taxonomic Relations**: 150 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 99.86 + - **Average Terms per Type**: 349.50 Usage Example ------------- diff --git a/docs/source/benchmarking/geography/gts.rst b/docs/source/benchmarking/geography/gts.rst index 1512dc0..2fbedd9 100644 --- a/docs/source/benchmarking/geography/gts.rst +++ b/docs/source/benchmarking/geography/gts.rst @@ -1,5 +1,5 @@ Geologic Timescale model (GTS) -========================== +======================================================================================================================== Overview -------- @@ -49,7 +49,7 @@ Generated Benchmarks: - **Term Types**: 7 - **Taxonomic Relations**: 549 - **Non-taxonomic Relations**: 2 - - **Average Terms per Type**: 0.47 + - **Average Terms per Type**: 7.00 Usage Example ------------- diff --git a/docs/source/benchmarking/geography/juso.rst b/docs/source/benchmarking/geography/juso.rst index 3c4f5ca..df6443b 100644 --- a/docs/source/benchmarking/geography/juso.rst +++ b/docs/source/benchmarking/geography/juso.rst @@ -1,5 +1,5 @@ -Juso Ontology -========================== +Juso Ontology (Juso) +======================================================================================================================== Overview -------- @@ -12,7 +12,7 @@ Juso Ontology is a Web vocabulary for describing geographical addresses and feat :Creator: James G. Kim, LiST Inc. :License: Creative Commons 4.0 :Format: TTL -:Download: `Juso Ontology Homepage `_ +:Download: `Juso Ontology (Juso) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/industry/auto.rst b/docs/source/benchmarking/industry/auto.rst index c3ebc7f..7eb2f62 100644 --- a/docs/source/benchmarking/industry/auto.rst +++ b/docs/source/benchmarking/industry/auto.rst @@ -1,5 +1,5 @@ Automotive Ontology (AUTO) -========================== +======================================================================================================================== Overview -------- @@ -48,9 +48,9 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 58 - - **Taxonomic Relations**: 13448 - - **Non-taxonomic Relations**: 49 - - **Average Terms per Type**: 2.32 + - **Taxonomic Relations**: 13439 + - **Non-taxonomic Relations**: 42 + - **Average Terms per Type**: 3.62 Usage Example ------------- diff --git a/docs/source/benchmarking/industry/dbo.rst b/docs/source/benchmarking/industry/dbo.rst index 0ab1686..1310697 100644 --- a/docs/source/benchmarking/industry/dbo.rst +++ b/docs/source/benchmarking/industry/dbo.rst @@ -1,5 +1,5 @@ Digital Buildings Ontology (DBO) -========================== +======================================================================================================================== Overview -------- @@ -48,7 +48,7 @@ Generated Benchmarks: - **Term Types**: 35 - **Taxonomic Relations**: 37016 - **Non-taxonomic Relations**: 12 - - **Average Terms per Type**: 1.09 + - **Average Terms per Type**: 2.06 Usage Example ------------- diff --git a/docs/source/benchmarking/industry/doap.rst b/docs/source/benchmarking/industry/doap.rst index 968aabd..34102cc 100644 --- a/docs/source/benchmarking/industry/doap.rst +++ b/docs/source/benchmarking/industry/doap.rst @@ -1,5 +1,5 @@ The Description of a Project (DOAP) vocabulary -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/industry/iof.rst b/docs/source/benchmarking/industry/iof.rst index fe27e27..c776d49 100644 --- a/docs/source/benchmarking/industry/iof.rst +++ b/docs/source/benchmarking/industry/iof.rst @@ -1,5 +1,5 @@ Industrial Ontology Foundry (IOF) -========================== +======================================================================================================================== Overview -------- @@ -50,7 +50,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 298 - - **Non-taxonomic Relations**: 29 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/industry/pto.rst b/docs/source/benchmarking/industry/pto.rst index ae2ae63..6dec5d1 100644 --- a/docs/source/benchmarking/industry/pto.rst +++ b/docs/source/benchmarking/industry/pto.rst @@ -1,5 +1,5 @@ Product Types Ontology (PTO) -========================== +======================================================================================================================== Overview -------- @@ -48,7 +48,7 @@ Generated Benchmarks: - **Term Types**: 3001 - **Taxonomic Relations**: 4000 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 375.12 + - **Average Terms per Type**: 3001.00 Usage Example ------------- diff --git a/docs/source/benchmarking/industry/tubes.rst b/docs/source/benchmarking/industry/tubes.rst index c827c05..f21dc5e 100644 --- a/docs/source/benchmarking/industry/tubes.rst +++ b/docs/source/benchmarking/industry/tubes.rst @@ -1,5 +1,5 @@ -TUBES System Ontology -========================== +TUBES System Ontology (TUBES) +======================================================================================================================== Overview -------- @@ -15,7 +15,7 @@ in a future semantic web of building data. It has a strong alignment to other on :Creator: Nicolas Pauen :License: Creative Commons 4.0 :Format: RDF/XML, Turtle, JSON-LD -:Download: `TUBES System Ontology Homepage `_ +:Download: `TUBES System Ontology (TUBES) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/law/copyrightonto.rst b/docs/source/benchmarking/law/copyrightonto.rst index e33554d..95ef4a1 100644 --- a/docs/source/benchmarking/law/copyrightonto.rst +++ b/docs/source/benchmarking/law/copyrightonto.rst @@ -1,5 +1,5 @@ -Copyright Ontology -========================== +Copyright Ontology (CopyrightOnto) +======================================================================================================================== Overview -------- @@ -15,7 +15,7 @@ end-users permissions to consume content, like many rights languages and ontolog :Creator: Rhizomik :License: Creative Commons 4.0 :Format: RDF -:Download: `Copyright Ontology Homepage `_ +:Download: `Copyright Ontology (CopyrightOnto) Homepage `_ Graph Metrics ------------- @@ -49,8 +49,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 7 - **Taxonomic Relations**: 403 - - **Non-taxonomic Relations**: 7 - - **Average Terms per Type**: 2.33 + - **Non-taxonomic Relations**: 6 + - **Average Terms per Type**: 7.00 Usage Example ------------- diff --git a/docs/source/benchmarking/library_&_cultural_heritage/gnd.rst b/docs/source/benchmarking/library_&_cultural_heritage/gnd.rst index 8f03917..01d6531 100644 --- a/docs/source/benchmarking/library_&_cultural_heritage/gnd.rst +++ b/docs/source/benchmarking/library_&_cultural_heritage/gnd.rst @@ -1,5 +1,5 @@ Gemeinsame Normdatei (GND) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/livestock/atol.rst b/docs/source/benchmarking/livestock/atol.rst index 78bf8ad..b185f18 100644 --- a/docs/source/benchmarking/livestock/atol.rst +++ b/docs/source/benchmarking/livestock/atol.rst @@ -1,5 +1,5 @@ Animal Trait Ontology for Livestock (ATOL) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/amontology.rst b/docs/source/benchmarking/materials_science_&_engineering/amontology.rst index 92cbd94..cc833a6 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/amontology.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/amontology.rst @@ -1,5 +1,5 @@ Additive Manufacturing Ontology (AMOntology) -========================== +======================================================================================================================== Overview -------- @@ -51,8 +51,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 59 - **Taxonomic Relations**: 1603 - - **Non-taxonomic Relations**: 24 - - **Average Terms per Type**: 1.48 + - **Non-taxonomic Relations**: 5 + - **Average Terms per Type**: 1.26 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/asmo.rst b/docs/source/benchmarking/materials_science_&_engineering/asmo.rst index 804e1ef..7bd7782 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/asmo.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/asmo.rst @@ -1,5 +1,5 @@ Atomistic Simulation Methods Ontology (ASMO) -========================== +======================================================================================================================== Overview -------- @@ -49,7 +49,7 @@ Generated Benchmarks: - **Term Types**: 30 - **Taxonomic Relations**: 99 - **Non-taxonomic Relations**: 2 - - **Average Terms per Type**: 0.94 + - **Average Terms per Type**: 3.75 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/atomistic.rst b/docs/source/benchmarking/materials_science_&_engineering/atomistic.rst index eea992a..191feae 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/atomistic.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/atomistic.rst @@ -1,5 +1,5 @@ Atomistic Ontology (Atomistic) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/bmo.rst b/docs/source/benchmarking/materials_science_&_engineering/bmo.rst index 60f5c6b..7d8fa74 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/bmo.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/bmo.rst @@ -1,5 +1,5 @@ Building Material Ontology (BMO) -========================== +======================================================================================================================== Overview -------- @@ -48,7 +48,7 @@ Generated Benchmarks: - **Term Types**: 12 - **Taxonomic Relations**: 20 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 0.67 + - **Average Terms per Type**: 3.00 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/bvco.rst b/docs/source/benchmarking/materials_science_&_engineering/bvco.rst index 0af2e25..6fca3f9 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/bvco.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/bvco.rst @@ -1,5 +1,5 @@ Battery Value Chain Ontology (BVCO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/cdco.rst b/docs/source/benchmarking/materials_science_&_engineering/cdco.rst index fe87080..837c8f9 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/cdco.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/cdco.rst @@ -1,5 +1,5 @@ Crystallographic Defect Core Ontology (CDCO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/chameo.rst b/docs/source/benchmarking/materials_science_&_engineering/chameo.rst index cab9fa2..0949379 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/chameo.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/chameo.rst @@ -1,5 +1,5 @@ Characterisation Methodology Domain Ontology (CHAMEO) -========================== +======================================================================================================================== Overview -------- @@ -50,7 +50,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 397 - - **Non-taxonomic Relations**: 4 + - **Non-taxonomic Relations**: 2 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/materials_science_&_engineering/cifcore.rst b/docs/source/benchmarking/materials_science_&_engineering/cifcore.rst index 861adc2..87ca9d0 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/cifcore.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/cifcore.rst @@ -1,5 +1,5 @@ Crystallographic Information Framework (CIF) Core Dictionary (CIFCore) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/cmso.rst b/docs/source/benchmarking/materials_science_&_engineering/cmso.rst index 2ae2efe..5b0b6c3 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/cmso.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/cmso.rst @@ -1,5 +1,5 @@ Computational Material Sample Ontology (CMSO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/diso.rst b/docs/source/benchmarking/materials_science_&_engineering/diso.rst index 957c270..b8a33f9 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/diso.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/diso.rst @@ -1,5 +1,5 @@ Dislocation Ontology (DISO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/dsim.rst b/docs/source/benchmarking/materials_science_&_engineering/dsim.rst index 8da7999..bf9e6f3 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/dsim.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/dsim.rst @@ -1,5 +1,5 @@ Dislocation Simulation and Model Ontology (DSIM) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/emmo.rst b/docs/source/benchmarking/materials_science_&_engineering/emmo.rst index 9718e44..9ae833e 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/emmo.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/emmo.rst @@ -1,5 +1,5 @@ The Elementary Multiperspective Material Ontology (EMMO) -========================== +======================================================================================================================== Overview -------- @@ -50,8 +50,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 2 - **Taxonomic Relations**: 27873 - - **Non-taxonomic Relations**: 77 - - **Average Terms per Type**: 0.20 + - **Non-taxonomic Relations**: 52 + - **Average Terms per Type**: 2.00 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/emmocrystallography.rst b/docs/source/benchmarking/materials_science_&_engineering/emmocrystallography.rst index f327cb4..1d3b9df 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/emmocrystallography.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/emmocrystallography.rst @@ -1,5 +1,5 @@ Crystallography Ontology (EMMOCrystallography) -========================== +======================================================================================================================== Overview -------- @@ -46,7 +46,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 331 - - **Non-taxonomic Relations**: 2 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/materials_science_&_engineering/fso.rst b/docs/source/benchmarking/materials_science_&_engineering/fso.rst index e895e4e..202410d 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/fso.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/fso.rst @@ -1,5 +1,5 @@ Flow Systems Ontology (FSO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/gpo.rst b/docs/source/benchmarking/materials_science_&_engineering/gpo.rst index 29a8506..77d3486 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/gpo.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/gpo.rst @@ -1,5 +1,5 @@ General Process Ontology (GPO) -========================== +======================================================================================================================== Overview -------- @@ -49,7 +49,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 516 - - **Non-taxonomic Relations**: 2 + - **Non-taxonomic Relations**: 1 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/materials_science_&_engineering/hpont.rst b/docs/source/benchmarking/materials_science_&_engineering/hpont.rst index 1aac6a7..4098f5d 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/hpont.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/hpont.rst @@ -1,5 +1,5 @@ The Heat Pump Ontology (HPOnt) -========================== +======================================================================================================================== Overview -------- @@ -49,7 +49,7 @@ Generated Benchmarks: - **Term Types**: 5 - **Taxonomic Relations**: 4 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 0.23 + - **Average Terms per Type**: 2.50 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/ldo.rst b/docs/source/benchmarking/materials_science_&_engineering/ldo.rst index f5baccf..ca20648 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/ldo.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/ldo.rst @@ -1,5 +1,5 @@ Line Defect Ontology (LDO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/lpbfo.rst b/docs/source/benchmarking/materials_science_&_engineering/lpbfo.rst index e34a21f..48f06e6 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/lpbfo.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/lpbfo.rst @@ -1,5 +1,5 @@ Laser Powder Bed Fusion Ontology (LPBFO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/mambo.rst b/docs/source/benchmarking/materials_science_&_engineering/mambo.rst index e12e008..cebce61 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/mambo.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/mambo.rst @@ -1,5 +1,5 @@ Molecules And Materials Basic Ontology (MAMBO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/mat.rst b/docs/source/benchmarking/materials_science_&_engineering/mat.rst index 9dea60b..db334e4 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/mat.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/mat.rst @@ -1,5 +1,5 @@ Material Properties Ontology (MAT) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/materialinformation.rst b/docs/source/benchmarking/materials_science_&_engineering/materialinformation.rst index 08e2544..95218d4 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/materialinformation.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/materialinformation.rst @@ -1,5 +1,5 @@ Material Information Ontology (MaterialInformation) -========================== +======================================================================================================================== Overview -------- @@ -48,8 +48,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 410 - **Taxonomic Relations**: 611 - - **Non-taxonomic Relations**: 32 - - **Average Terms per Type**: 6.72 + - **Non-taxonomic Relations**: 30 + - **Average Terms per Type**: 1.03 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/matonto.rst b/docs/source/benchmarking/materials_science_&_engineering/matonto.rst index 7b89727..83d48fc 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/matonto.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/matonto.rst @@ -1,5 +1,5 @@ Material Ontology (MatOnto) -========================== +======================================================================================================================== Overview -------- @@ -46,8 +46,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 122 - **Taxonomic Relations**: 2228 - - **Non-taxonomic Relations**: 434 - - **Average Terms per Type**: 5.08 + - **Non-taxonomic Relations**: 167 + - **Average Terms per Type**: 1.94 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/matvoc.rst b/docs/source/benchmarking/materials_science_&_engineering/matvoc.rst index 9e8b8df..d63f551 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/matvoc.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/matvoc.rst @@ -1,5 +1,5 @@ Materials Vocabulary (MatVoc) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/matwerk.rst b/docs/source/benchmarking/materials_science_&_engineering/matwerk.rst index c6bb01a..891a5e3 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/matwerk.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/matwerk.rst @@ -1,5 +1,5 @@ NFDI MatWerk Ontology (MatWerk) -============================================================================== +======================================================================================================================== Overview -------- @@ -20,12 +20,12 @@ enhances data discoverability, reusability, and accelerates scientific exchange, and discoveries by optimizing research data management and accessibility. :Domain: Materials Science & Engineering -:Category: Materials Science +:Category: Research Data, Interoperability :Current Version: 3.0.0 -:Last Updated: 2024-01-30 +:Last Updated: 2025-03-01 :Creator: Hossein Beygi Nasrabadi, Jörg Waitelonis, Ebrahim Norouzi, Kostiantyn Hubaiev, Harald Sack -:License: Creative Commons 4.0 -:Format: OWL, TTL +:License: Creative Commons 1.0 +:Format: TTL :Download: `NFDI MatWerk Ontology (MatWerk) Homepage `_ Graph Metrics diff --git a/docs/source/benchmarking/materials_science_&_engineering/mdo.rst b/docs/source/benchmarking/materials_science_&_engineering/mdo.rst index 2752e86..9ea14c6 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/mdo.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/mdo.rst @@ -1,5 +1,5 @@ Materials Design Ontology (MDO) -========================== +======================================================================================================================== Overview -------- @@ -48,7 +48,7 @@ Generated Benchmarks: - **Term Types**: 2 - **Taxonomic Relations**: 8 - **Non-taxonomic Relations**: 1 - - **Average Terms per Type**: 0.50 + - **Average Terms per Type**: 2.00 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/mds.rst b/docs/source/benchmarking/materials_science_&_engineering/mds.rst index 1dd188c..f1f15e9 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/mds.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/mds.rst @@ -1,5 +1,5 @@ Materials Data Science Ontology (MDS) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/mechanicaltesting.rst b/docs/source/benchmarking/materials_science_&_engineering/mechanicaltesting.rst index 18967ec..c1660a3 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/mechanicaltesting.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/mechanicaltesting.rst @@ -1,5 +1,5 @@ Mechanical Testing Ontology (MechanicalTesting) -========================== +======================================================================================================================== Overview -------- @@ -46,7 +46,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 2745 - - **Non-taxonomic Relations**: 14 + - **Non-taxonomic Relations**: 3 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/materials_science_&_engineering/microstructures.rst b/docs/source/benchmarking/materials_science_&_engineering/microstructures.rst index e792415..fbfef19 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/microstructures.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/microstructures.rst @@ -1,5 +1,5 @@ EMMO-based ontology for microstructures (MicroStructures) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/mmo.rst b/docs/source/benchmarking/materials_science_&_engineering/mmo.rst index c493b78..e359e93 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/mmo.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/mmo.rst @@ -1,5 +1,5 @@ Materials Mechanics Ontology (MMO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/molbrinell.rst b/docs/source/benchmarking/materials_science_&_engineering/molbrinell.rst index c3e8765..6a89cf6 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/molbrinell.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/molbrinell.rst @@ -1,5 +1,5 @@ MatoLab Brinell Test Ontology (MOL_BRINELL) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Generated Benchmarks: - **Term Types**: 3053 - **Taxonomic Relations**: 14 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 82.51 + - **Average Terms per Type**: 105.28 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/moltensile.rst b/docs/source/benchmarking/materials_science_&_engineering/moltensile.rst index 95335e7..10526b6 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/moltensile.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/moltensile.rst @@ -1,5 +1,5 @@ Matolab Tensile Test Ontology (MOL_TENSILE) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Generated Benchmarks: - **Term Types**: 20 - **Taxonomic Relations**: 370 - **Non-taxonomic Relations**: 20 - - **Average Terms per Type**: 1.43 + - **Average Terms per Type**: 6.67 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/mseo.rst b/docs/source/benchmarking/materials_science_&_engineering/mseo.rst index 8c2804c..c3b1181 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/mseo.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/mseo.rst @@ -1,5 +1,5 @@ Materials Science and Engineering Ontology (MSEO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/msle.rst b/docs/source/benchmarking/materials_science_&_engineering/msle.rst index 1c4011a..31aea58 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/msle.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/msle.rst @@ -1,5 +1,5 @@ Material Science Lab Equipment Ontology (MSLE) -========================== +======================================================================================================================== Overview -------- @@ -46,8 +46,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 4 - **Taxonomic Relations**: 83 - - **Non-taxonomic Relations**: 229 - - **Average Terms per Type**: 0.16 + - **Non-taxonomic Relations**: 228 + - **Average Terms per Type**: 1.33 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/nanomine.rst b/docs/source/benchmarking/materials_science_&_engineering/nanomine.rst index 960bb9f..6f10a6b 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/nanomine.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/nanomine.rst @@ -1,5 +1,5 @@ NanoMine Ontology (NanoMine) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/oiemanufacturing.rst b/docs/source/benchmarking/materials_science_&_engineering/oiemanufacturing.rst index d4f4429..504c163 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/oiemanufacturing.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/oiemanufacturing.rst @@ -1,5 +1,5 @@ Open Innovation Environment (OIE) domain ontologies, Manufacturing module (OIEManufacturing) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 249 - - **Non-taxonomic Relations**: 2 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/materials_science_&_engineering/oiematerials.rst b/docs/source/benchmarking/materials_science_&_engineering/oiematerials.rst index 16b0f46..1fc4196 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/oiematerials.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/oiematerials.rst @@ -1,5 +1,5 @@ Open Innovation Environment (OIE) domain ontologies, Materials module (OIEMaterials) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 165 - - **Non-taxonomic Relations**: 3 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/materials_science_&_engineering/oiemodels.rst b/docs/source/benchmarking/materials_science_&_engineering/oiemodels.rst index 6fe6500..e1e5aab 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/oiemodels.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/oiemodels.rst @@ -1,5 +1,5 @@ Open Innovation Environment (OIE) domain ontologies, Models module (OIEModels) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 130 - - **Non-taxonomic Relations**: 1 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/materials_science_&_engineering/oiesoftware.rst b/docs/source/benchmarking/materials_science_&_engineering/oiesoftware.rst index 83d8271..874d553 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/oiesoftware.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/oiesoftware.rst @@ -1,5 +1,5 @@ Open Innovation Environment (OIE) domain ontologies, Software module (OIESoftware) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/ontocape.rst b/docs/source/benchmarking/materials_science_&_engineering/ontocape.rst index ad1336d..3b2edf1 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/ontocape.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/ontocape.rst @@ -1,5 +1,5 @@ Ontology of Computer-Aided Process Engineering (OntoCAPE) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/ontorule.rst b/docs/source/benchmarking/materials_science_&_engineering/ontorule.rst index 4fcf57e..09fe97a 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/ontorule.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/ontorule.rst @@ -1,5 +1,5 @@ Ontology for the Steel Domain (ONTORULE) -========================== +======================================================================================================================== Overview -------- @@ -51,7 +51,7 @@ Generated Benchmarks: - **Term Types**: 13 - **Taxonomic Relations**: 16 - **Non-taxonomic Relations**: 2 - - **Average Terms per Type**: 0.48 + - **Average Terms per Type**: 2.17 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/periodictable.rst b/docs/source/benchmarking/materials_science_&_engineering/periodictable.rst index 0790fb0..efe441d 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/periodictable.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/periodictable.rst @@ -1,5 +1,5 @@ Periodic Table of the Elements Ontology (PeriodicTable) -========================== +======================================================================================================================== Overview -------- @@ -48,7 +48,7 @@ Generated Benchmarks: - **Term Types**: 156 - **Taxonomic Relations**: 302 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 7.09 + - **Average Terms per Type**: 26.00 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/photovoltaics.rst b/docs/source/benchmarking/materials_science_&_engineering/photovoltaics.rst index 7ceb5f6..3386e2a 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/photovoltaics.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/photovoltaics.rst @@ -1,5 +1,5 @@ EMMO Domain Ontology for Photovoltaics (Photovoltaics) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/pldo.rst b/docs/source/benchmarking/materials_science_&_engineering/pldo.rst index 6ab5171..670cf6a 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/pldo.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/pldo.rst @@ -1,5 +1,5 @@ Planar Defects Ontology (PLDO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/pmdco.rst b/docs/source/benchmarking/materials_science_&_engineering/pmdco.rst index c1d0751..954da29 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/pmdco.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/pmdco.rst @@ -1,5 +1,5 @@ The Platform MaterialDigital core ontology (PMDco) -========================== +======================================================================================================================== Overview -------- @@ -50,7 +50,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 1126 - - **Non-taxonomic Relations**: 115 + - **Non-taxonomic Relations**: 19 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/materials_science_&_engineering/podo.rst b/docs/source/benchmarking/materials_science_&_engineering/podo.rst index 4a324e0..400240e 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/podo.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/podo.rst @@ -1,5 +1,5 @@ Point Defects Ontology (PODO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/ssn.rst b/docs/source/benchmarking/materials_science_&_engineering/ssn.rst index b5e366a..7af3366 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/ssn.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/ssn.rst @@ -1,5 +1,5 @@ Semantic Sensor Network Ontology (SSN) -========================== +======================================================================================================================== Overview -------- @@ -55,7 +55,7 @@ Generated Benchmarks: - **Term Types**: 7 - **Taxonomic Relations**: 7585 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 1.40 + - **Average Terms per Type**: 7.00 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/systemcapabilities.rst b/docs/source/benchmarking/materials_science_&_engineering/systemcapabilities.rst index 69cd275..bf2e236 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/systemcapabilities.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/systemcapabilities.rst @@ -1,5 +1,5 @@ System capabilities, operating ranges, and survival ranges ontology (SystemCapabilities) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Generated Benchmarks: - **Term Types**: 2 - **Taxonomic Relations**: 148 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 0.40 + - **Average Terms per Type**: 2.00 Usage Example ------------- diff --git a/docs/source/benchmarking/materials_science_&_engineering/vimmp.rst b/docs/source/benchmarking/materials_science_&_engineering/vimmp.rst index 26420de..3d2cb72 100644 --- a/docs/source/benchmarking/materials_science_&_engineering/vimmp.rst +++ b/docs/source/benchmarking/materials_science_&_engineering/vimmp.rst @@ -1,5 +1,5 @@ Virtual Materials Marketplace (VIMMP) Ontologies -========================== +======================================================================================================================== Overview -------- @@ -51,8 +51,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 1939 - **Taxonomic Relations**: 4077 - - **Non-taxonomic Relations**: 404 - - **Average Terms per Type**: 34.02 + - **Non-taxonomic Relations**: 298 + - **Average Terms per Type**: 5.42 Usage Example ------------- diff --git a/docs/source/benchmarking/medicine/bto.rst b/docs/source/benchmarking/medicine/bto.rst index 3c9b225..05fa97c 100644 --- a/docs/source/benchmarking/medicine/bto.rst +++ b/docs/source/benchmarking/medicine/bto.rst @@ -1,5 +1,5 @@ BRENDA Tissue Ontology (BTO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/medicine/deb.rst b/docs/source/benchmarking/medicine/deb.rst index 021d739..8e077cb 100644 --- a/docs/source/benchmarking/medicine/deb.rst +++ b/docs/source/benchmarking/medicine/deb.rst @@ -1,5 +1,5 @@ Devices, Experimental scaffolds and Biomaterials Ontology (DEB) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/medicine/doid.rst b/docs/source/benchmarking/medicine/doid.rst index 8e3794c..897bc49 100644 --- a/docs/source/benchmarking/medicine/doid.rst +++ b/docs/source/benchmarking/medicine/doid.rst @@ -1,5 +1,5 @@ Human Disease Ontology (DOID) -========================== +======================================================================================================================== Overview -------- @@ -49,7 +49,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 82264 - - **Non-taxonomic Relations**: 754 + - **Non-taxonomic Relations**: 25 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/medicine/enm.rst b/docs/source/benchmarking/medicine/enm.rst index bb4f824..5cd9c6f 100644 --- a/docs/source/benchmarking/medicine/enm.rst +++ b/docs/source/benchmarking/medicine/enm.rst @@ -1,5 +1,5 @@ Environmental Noise Measurement Ontology (ENM) -========================== +======================================================================================================================== Overview -------- @@ -49,9 +49,9 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 9 - - **Taxonomic Relations**: 37103 - - **Non-taxonomic Relations**: 426 - - **Average Terms per Type**: 0.39 + - **Taxonomic Relations**: 37099 + - **Non-taxonomic Relations**: 84 + - **Average Terms per Type**: 3.00 Usage Example ------------- diff --git a/docs/source/benchmarking/medicine/mfoem.rst b/docs/source/benchmarking/medicine/mfoem.rst index b12eeea..0173b2d 100644 --- a/docs/source/benchmarking/medicine/mfoem.rst +++ b/docs/source/benchmarking/medicine/mfoem.rst @@ -1,5 +1,5 @@ -Emotion Ontology -- Mental Functioning Ontology of Emotions -========================== +Mental Functioning Ontology of Emotions - Emotion Module (MFOEM) +======================================================================================================================== Overview -------- @@ -16,7 +16,7 @@ using default behavior. :Creator: Swiss Centre for Affective Sciences & University at Buffalo :License: Creative Commons 3.0 :Format: OWL -:Download: `Emotion Ontology -- Mental Functioning Ontology of Emotions Homepage `_ +:Download: `Mental Functioning Ontology of Emotions - Emotion Module (MFOEM) Homepage `_ Graph Metrics ------------- @@ -50,8 +50,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 19 - **Taxonomic Relations**: 1067 - - **Non-taxonomic Relations**: 29 - - **Average Terms per Type**: 1.06 + - **Non-taxonomic Relations**: 20 + - **Average Terms per Type**: 4.75 Usage Example ------------- diff --git a/docs/source/benchmarking/medicine/obi.rst b/docs/source/benchmarking/medicine/obi.rst index 791157c..e5baeff 100644 --- a/docs/source/benchmarking/medicine/obi.rst +++ b/docs/source/benchmarking/medicine/obi.rst @@ -1,5 +1,5 @@ Ontology for Biomedical Investigations (OBI) -========================== +======================================================================================================================== Overview -------- @@ -46,9 +46,9 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 288 - - **Taxonomic Relations**: 22953 - - **Non-taxonomic Relations**: 1121 - - **Average Terms per Type**: 6.70 + - **Taxonomic Relations**: 22933 + - **Non-taxonomic Relations**: 38 + - **Average Terms per Type**: 5.65 Usage Example ------------- diff --git a/docs/source/benchmarking/news_&_media/bbc.rst b/docs/source/benchmarking/news_&_media/bbc.rst index bcfc3c8..3d0d0f4 100644 --- a/docs/source/benchmarking/news_&_media/bbc.rst +++ b/docs/source/benchmarking/news_&_media/bbc.rst @@ -1,5 +1,5 @@ -BBC Ontology -========================== +BBC Ontology (BBC) +======================================================================================================================== Overview -------- @@ -15,7 +15,7 @@ for example Education propositions are part of the K&L (Knowledge and Learning) :Creator: LinkedData@bbc.co.uk :License: Creative Commons 4.0 :Format: TTL -:Download: `BBC Ontology Homepage `_ +:Download: `BBC Ontology (BBC) Homepage `_ Graph Metrics ------------- @@ -50,7 +50,7 @@ Generated Benchmarks: - **Term Types**: 10 - **Taxonomic Relations**: 35 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 0.91 + - **Average Terms per Type**: 5.00 Usage Example ------------- diff --git a/docs/source/benchmarking/news_&_media/bbcbusiness.rst b/docs/source/benchmarking/news_&_media/bbcbusiness.rst index 55a7393..074d0f7 100644 --- a/docs/source/benchmarking/news_&_media/bbcbusiness.rst +++ b/docs/source/benchmarking/news_&_media/bbcbusiness.rst @@ -1,5 +1,5 @@ -BBC Business News Ontology -========================== +BBC Business News Ontology (BBCBusiness) +======================================================================================================================== Overview -------- @@ -12,7 +12,7 @@ The Business News Ontology describes the concepts that occur in BBC business new :Creator: https://www.bbc.co.uk/blogs/internet/authors/Jeremy_Tarling, https://uk.linkedin.com/in/amaalmohamed :License: Creative Commons 4.0 :Format: TTL -:Download: `BBC Business News Ontology Homepage `_ +:Download: `BBC Business News Ontology (BBCBusiness) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/news_&_media/bbccms.rst b/docs/source/benchmarking/news_&_media/bbccms.rst index ff05d86..877c68a 100644 --- a/docs/source/benchmarking/news_&_media/bbccms.rst +++ b/docs/source/benchmarking/news_&_media/bbccms.rst @@ -1,5 +1,5 @@ -BBC CMS Ontology -========================== +BBC CMS Ontology (BBCCMS) +======================================================================================================================== Overview -------- @@ -14,7 +14,7 @@ The CMS ontology defines how these things and content are associated with other :Creator: LinkedData@bbc.co.uk :License: Creative Commons 4.0 :Format: TTL -:Download: `BBC CMS Ontology Homepage `_ +:Download: `BBC CMS Ontology (BBCCMS) Homepage `_ Graph Metrics ------------- @@ -49,7 +49,7 @@ Generated Benchmarks: - **Term Types**: 4 - **Taxonomic Relations**: 17 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 0.67 + - **Average Terms per Type**: 4.00 Usage Example ------------- diff --git a/docs/source/benchmarking/news_&_media/bbccoreconcepts.rst b/docs/source/benchmarking/news_&_media/bbccoreconcepts.rst index e2f60e8..51a7ebb 100644 --- a/docs/source/benchmarking/news_&_media/bbccoreconcepts.rst +++ b/docs/source/benchmarking/news_&_media/bbccoreconcepts.rst @@ -1,5 +1,5 @@ -BBC Core Concepts Ontology -========================== +BBC Core Concepts Ontology (BBCCoreConcepts) +======================================================================================================================== Overview -------- @@ -14,7 +14,7 @@ link their own concepts e.g., athletes or politicians using rdfs:sublClassOf the :Creator: jeremy.tarling@bbc.co.uk, tom.hodgkinson@bbc.co.uk :License: Creative Commons 4.0 :Format: TTL -:Download: `BBC Core Concepts Ontology Homepage `_ +:Download: `BBC Core Concepts Ontology (BBCCoreConcepts) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/news_&_media/bbccreativework.rst b/docs/source/benchmarking/news_&_media/bbccreativework.rst index 89fdf47..6168c74 100644 --- a/docs/source/benchmarking/news_&_media/bbccreativework.rst +++ b/docs/source/benchmarking/news_&_media/bbccreativework.rst @@ -1,5 +1,5 @@ -BBC Creative Work Ontology -========================== +BBC Creative Work Ontology (BBCCreativeWork) +======================================================================================================================== Overview -------- @@ -14,7 +14,7 @@ their more specific types (BlogPost, NewsItem, Programme) and audiences (audienc :Creator: LinkedData@bbc.co.uk :License: Creative Commons 4.0 :Format: TTL -:Download: `BBC Creative Work Ontology Homepage `_ +:Download: `BBC Creative Work Ontology (BBCCreativeWork) Homepage `_ Graph Metrics ------------- @@ -49,7 +49,7 @@ Generated Benchmarks: - **Term Types**: 15 - **Taxonomic Relations**: 17 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 0.79 + - **Average Terms per Type**: 5.00 Usage Example ------------- diff --git a/docs/source/benchmarking/news_&_media/bbcfood.rst b/docs/source/benchmarking/news_&_media/bbcfood.rst index 2474760..70af5e3 100644 --- a/docs/source/benchmarking/news_&_media/bbcfood.rst +++ b/docs/source/benchmarking/news_&_media/bbcfood.rst @@ -1,5 +1,5 @@ -BBC Food Ontology -========================== +BBC Food Ontology (BBCFood) +======================================================================================================================== Overview -------- @@ -15,7 +15,7 @@ the Food Ontology should be applicable to a wide range of recipe data publishing :Creator: None :License: Creative Commons 4.0 :Format: TTL -:Download: `BBC Food Ontology Homepage `_ +:Download: `BBC Food Ontology (BBCFood) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/news_&_media/bbcpolitics.rst b/docs/source/benchmarking/news_&_media/bbcpolitics.rst index 2d647d2..44d7611 100644 --- a/docs/source/benchmarking/news_&_media/bbcpolitics.rst +++ b/docs/source/benchmarking/news_&_media/bbcpolitics.rst @@ -1,5 +1,5 @@ -BBC Politics News Ontology -========================== +BBC Politics News Ontology (BBCPolitics) +======================================================================================================================== Overview -------- @@ -12,7 +12,7 @@ The Politics Ontology describes the concepts that occur in BBC politics news. :Creator: https://www.r4isstatic.com/ :License: Creative Commons 4.0 :Format: TTL -:Download: `BBC Politics News Ontology Homepage `_ +:Download: `BBC Politics News Ontology (BBCPolitics) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/news_&_media/bbcprogrammes.rst b/docs/source/benchmarking/news_&_media/bbcprogrammes.rst index bcbe716..deaf1a1 100644 --- a/docs/source/benchmarking/news_&_media/bbcprogrammes.rst +++ b/docs/source/benchmarking/news_&_media/bbcprogrammes.rst @@ -1,5 +1,5 @@ -BBC Programmes Ontology -========================== +BBC Programmes Ontology (BBCProgrammes) +======================================================================================================================== Overview -------- @@ -14,7 +14,7 @@ Its development was funded by the BBC, and is heavily grounded on previous progr :Creator: https://moustaki.org/foaf.rdf#moustaki :License: Creative Commons 4.0 :Format: TTL -:Download: `BBC Programmes Ontology Homepage `_ +:Download: `BBC Programmes Ontology (BBCProgrammes) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/news_&_media/bbcprovenance.rst b/docs/source/benchmarking/news_&_media/bbcprovenance.rst index c107145..9b7f4b3 100644 --- a/docs/source/benchmarking/news_&_media/bbcprovenance.rst +++ b/docs/source/benchmarking/news_&_media/bbcprovenance.rst @@ -1,5 +1,5 @@ -BBC Provenance News Ontology -========================== +BBC Provenance News Ontology (BBCProvenance) +======================================================================================================================== Overview -------- @@ -16,7 +16,7 @@ A named graph is, in effect, a 'fourth part' to a triple, hence the term 'quad s :Creator: LinkedData@bbc.co.uk :License: Creative Commons 4.0 :Format: TTL -:Download: `BBC Provenance News Ontology Homepage `_ +:Download: `BBC Provenance News Ontology (BBCProvenance) Homepage `_ Graph Metrics ------------- @@ -51,7 +51,7 @@ Generated Benchmarks: - **Term Types**: 1 - **Taxonomic Relations**: 6 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 0.14 + - **Average Terms per Type**: 1.00 Usage Example ------------- diff --git a/docs/source/benchmarking/news_&_media/bbcsport.rst b/docs/source/benchmarking/news_&_media/bbcsport.rst index d75626e..4d8c045 100644 --- a/docs/source/benchmarking/news_&_media/bbcsport.rst +++ b/docs/source/benchmarking/news_&_media/bbcsport.rst @@ -1,5 +1,5 @@ -BBC Sport Ontology -========================== +BBC Sport Ontology (BBCSport) +======================================================================================================================== Overview -------- @@ -19,7 +19,7 @@ In particular, it draws heavily upon the events ontology. :Creator: https://uk.linkedin.com/pub/jem-rayfield/27/b19/757, https://uk.linkedin.com/in/paulwilton, https://www.blockslabpillar.com, https://www.linkedin.com/in/tfgrahame, https://uk.linkedin.com/pub/stuart-williams/8/684/351, https://uk.linkedin.com/in/brianwmcbride :License: Creative Commons 4.0 :Format: TTL -:Download: `BBC Sport Ontology Homepage `_ +:Download: `BBC Sport Ontology (BBCSport) Homepage `_ Graph Metrics ------------- @@ -54,7 +54,7 @@ Generated Benchmarks: - **Term Types**: 40 - **Taxonomic Relations**: 25 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 2.35 + - **Average Terms per Type**: 13.33 Usage Example ------------- diff --git a/docs/source/benchmarking/news_&_media/bbcstoryline.rst b/docs/source/benchmarking/news_&_media/bbcstoryline.rst index 210e639..cd20836 100644 --- a/docs/source/benchmarking/news_&_media/bbcstoryline.rst +++ b/docs/source/benchmarking/news_&_media/bbcstoryline.rst @@ -1,5 +1,5 @@ -BBC Storyline Ontology -========================== +BBC Storyline Ontology (BBCStoryline) +======================================================================================================================== Overview -------- @@ -16,7 +16,7 @@ such as an article or news report. It can also be the editorial view on events o :Creator: http://uk.linkedin.com/in/paulwilton, http://www.bbc.co.uk/blogs/internet/authors/Jeremy_Tarling, http://uk.linkedin.com/in/jarredmcginnis :License: Creative Commons 4.0 :Format: TTL -:Download: `BBC Storyline Ontology Homepage `_ +:Download: `BBC Storyline Ontology (BBCStoryline) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/news_&_media/bbcwildlife.rst b/docs/source/benchmarking/news_&_media/bbcwildlife.rst index 59fa5d7..503aab4 100644 --- a/docs/source/benchmarking/news_&_media/bbcwildlife.rst +++ b/docs/source/benchmarking/news_&_media/bbcwildlife.rst @@ -1,5 +1,5 @@ -BBC Wildlife Ontology -========================== +BBC Wildlife Ontology (BBCWildlife) +======================================================================================================================== Overview -------- @@ -14,7 +14,7 @@ conservation status, and behavioural characteristics, etc. :Creator: https://www.ldodds.com#me, http://tomscott.name/ :License: Creative Commons 4.0 :Format: TTL -:Download: `BBC Wildlife Ontology Homepage `_ +:Download: `BBC Wildlife Ontology (BBCWildlife) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/scholarly_knowledge/aiiso.rst b/docs/source/benchmarking/scholarly_knowledge/aiiso.rst index 18b54f2..1e6bd7b 100644 --- a/docs/source/benchmarking/scholarly_knowledge/aiiso.rst +++ b/docs/source/benchmarking/scholarly_knowledge/aiiso.rst @@ -1,5 +1,5 @@ Academic Institution Internal Structure Ontology (AIISO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/scholarly_knowledge/cito.rst b/docs/source/benchmarking/scholarly_knowledge/cito.rst index a80157a..7dd7922 100644 --- a/docs/source/benchmarking/scholarly_knowledge/cito.rst +++ b/docs/source/benchmarking/scholarly_knowledge/cito.rst @@ -1,5 +1,5 @@ Citation Typing Ontology (CiTO) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 11 - - **Non-taxonomic Relations**: 1 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/scholarly_knowledge/cso.rst b/docs/source/benchmarking/scholarly_knowledge/cso.rst index f099a4b..c09f0ad 100644 --- a/docs/source/benchmarking/scholarly_knowledge/cso.rst +++ b/docs/source/benchmarking/scholarly_knowledge/cso.rst @@ -1,5 +1,5 @@ -Computer Science Ontology -========================== +Computer Science Ontology (CSO) +======================================================================================================================== Overview -------- @@ -18,7 +18,7 @@ This class processes the Computer Science Ontology (CSO) with custom hooks for: :Creator: Knowledge Media Institute, Open University :License: Creative Commons 4.0 :Format: OWL, TTL, CSV, NT -:Download: `Computer Science Ontology Homepage `_ +:Download: `Computer Science Ontology (CSO) Homepage `_ Graph Metrics ------------- @@ -52,7 +52,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 44204 - - **Non-taxonomic Relations**: 49085 + - **Non-taxonomic Relations**: 49081 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/scholarly_knowledge/datacite.rst b/docs/source/benchmarking/scholarly_knowledge/datacite.rst index 9eff341..8947c69 100644 --- a/docs/source/benchmarking/scholarly_knowledge/datacite.rst +++ b/docs/source/benchmarking/scholarly_knowledge/datacite.rst @@ -1,5 +1,5 @@ -DataCite -========================== +DataCite Ontology (DataCite) +======================================================================================================================== Overview -------- @@ -15,7 +15,7 @@ and retrieval purposes) to be described in RDF. :Creator: David Shotton, Silvio Peroni :License: Creative Commons 4.0 :Format: OWL, TTL, CSV, NT -:Download: `DataCite Homepage `_ +:Download: `DataCite Ontology (DataCite) Homepage `_ Graph Metrics ------------- @@ -50,7 +50,7 @@ Generated Benchmarks: - **Term Types**: 71 - **Taxonomic Relations**: 55 - **Non-taxonomic Relations**: 2 - - **Average Terms per Type**: 3.55 + - **Average Terms per Type**: 8.88 Usage Example ------------- diff --git a/docs/source/benchmarking/scholarly_knowledge/dcat.rst b/docs/source/benchmarking/scholarly_knowledge/dcat.rst index 5032c60..bbe6daa 100644 --- a/docs/source/benchmarking/scholarly_knowledge/dcat.rst +++ b/docs/source/benchmarking/scholarly_knowledge/dcat.rst @@ -1,5 +1,5 @@ Data Catalog Vocabulary (DCAT) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/scholarly_knowledge/duo.rst b/docs/source/benchmarking/scholarly_knowledge/duo.rst index 4243267..2f180c7 100644 --- a/docs/source/benchmarking/scholarly_knowledge/duo.rst +++ b/docs/source/benchmarking/scholarly_knowledge/duo.rst @@ -1,5 +1,5 @@ Data Use Ontology (DUO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/scholarly_knowledge/eurio.rst b/docs/source/benchmarking/scholarly_knowledge/eurio.rst index ac3921c..5ec5e57 100644 --- a/docs/source/benchmarking/scholarly_knowledge/eurio.rst +++ b/docs/source/benchmarking/scholarly_knowledge/eurio.rst @@ -1,5 +1,5 @@ -EUropean Research Information Ontology -========================== +EUropean Research Information Ontology (EURIO) +======================================================================================================================== Overview -------- @@ -14,7 +14,7 @@ framework programmes for research and innovation. :Creator: Publications Office of the European Commission :License: Creative Commons 4.0 :Format: RDF -:Download: `EUropean Research Information Ontology Homepage `_ +:Download: `EUropean Research Information Ontology (EURIO) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/scholarly_knowledge/expo.rst b/docs/source/benchmarking/scholarly_knowledge/expo.rst index 413d670..e1d2850 100644 --- a/docs/source/benchmarking/scholarly_knowledge/expo.rst +++ b/docs/source/benchmarking/scholarly_knowledge/expo.rst @@ -1,5 +1,5 @@ Ontology of Scientific Experiments (EXPO) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/scholarly_knowledge/frapo.rst b/docs/source/benchmarking/scholarly_knowledge/frapo.rst index c210ed0..46fa41e 100644 --- a/docs/source/benchmarking/scholarly_knowledge/frapo.rst +++ b/docs/source/benchmarking/scholarly_knowledge/frapo.rst @@ -1,5 +1,5 @@ Funding, Research Administration and Projects Ontology (FRAPO) -========================== +======================================================================================================================== Overview -------- @@ -49,7 +49,7 @@ Generated Benchmarks: - **Term Types**: 25 - **Taxonomic Relations**: 82 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 1.67 + - **Average Terms per Type**: 8.33 Usage Example ------------- diff --git a/docs/source/benchmarking/scholarly_knowledge/frbroo.rst b/docs/source/benchmarking/scholarly_knowledge/frbroo.rst index 4465347..169872d 100644 --- a/docs/source/benchmarking/scholarly_knowledge/frbroo.rst +++ b/docs/source/benchmarking/scholarly_knowledge/frbroo.rst @@ -1,5 +1,5 @@ Functional Requirements for Bibliographic Records - object-oriented (FRBRoo) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/scholarly_knowledge/lexinfo.rst b/docs/source/benchmarking/scholarly_knowledge/lexinfo.rst index 11d6bfd..06aca39 100644 --- a/docs/source/benchmarking/scholarly_knowledge/lexinfo.rst +++ b/docs/source/benchmarking/scholarly_knowledge/lexinfo.rst @@ -1,5 +1,5 @@ -LexInfo -========================== +LexInfo (LexInfo) +======================================================================================================================== Overview -------- @@ -14,7 +14,7 @@ and is available together with an API. :Creator: None :License: Apache 2.0 :Format: RDF -:Download: `LexInfo Homepage `_ +:Download: `LexInfo (LexInfo) Homepage `_ Graph Metrics ------------- @@ -48,8 +48,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 288 - **Taxonomic Relations**: 282 - - **Non-taxonomic Relations**: 75 - - **Average Terms per Type**: 11.52 + - **Non-taxonomic Relations**: 0 + - **Average Terms per Type**: 11.08 Usage Example ------------- diff --git a/docs/source/benchmarking/scholarly_knowledge/metadata4ing.rst b/docs/source/benchmarking/scholarly_knowledge/metadata4ing.rst index 17309e7..2a5ec65 100644 --- a/docs/source/benchmarking/scholarly_knowledge/metadata4ing.rst +++ b/docs/source/benchmarking/scholarly_knowledge/metadata4ing.rst @@ -1,5 +1,5 @@ Metadata for Intelligent Engineering (Metadata4Ing) -========================== +======================================================================================================================== Overview -------- @@ -51,7 +51,7 @@ Generated Benchmarks: - **Term Types**: 47 - **Taxonomic Relations**: 122 - **Non-taxonomic Relations**: 6 - - **Average Terms per Type**: 2.76 + - **Average Terms per Type**: 11.75 Usage Example ------------- diff --git a/docs/source/benchmarking/scholarly_knowledge/nfdicore.rst b/docs/source/benchmarking/scholarly_knowledge/nfdicore.rst index 8be50ad..aec4b6b 100644 --- a/docs/source/benchmarking/scholarly_knowledge/nfdicore.rst +++ b/docs/source/benchmarking/scholarly_knowledge/nfdicore.rst @@ -1,5 +1,5 @@ National Research Data Infrastructure Ontology (NFDIcore) -========================== +======================================================================================================================== Overview -------- @@ -50,7 +50,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 391 - - **Non-taxonomic Relations**: 33 + - **Non-taxonomic Relations**: 10 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/scholarly_knowledge/oboe.rst b/docs/source/benchmarking/scholarly_knowledge/oboe.rst index 79732b0..520fda7 100644 --- a/docs/source/benchmarking/scholarly_knowledge/oboe.rst +++ b/docs/source/benchmarking/scholarly_knowledge/oboe.rst @@ -1,5 +1,5 @@ Extensible Observation Ontology (OBOE) -========================== +======================================================================================================================== Overview -------- @@ -48,7 +48,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 3244 - - **Non-taxonomic Relations**: 62 + - **Non-taxonomic Relations**: 60 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/scholarly_knowledge/opmw.rst b/docs/source/benchmarking/scholarly_knowledge/opmw.rst index 824fb5e..15c55fe 100644 --- a/docs/source/benchmarking/scholarly_knowledge/opmw.rst +++ b/docs/source/benchmarking/scholarly_knowledge/opmw.rst @@ -1,5 +1,5 @@ Open Provenance Model for Workflows (OPMW) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/scholarly_knowledge/pplan.rst b/docs/source/benchmarking/scholarly_knowledge/pplan.rst index 993adcb..c8db518 100644 --- a/docs/source/benchmarking/scholarly_knowledge/pplan.rst +++ b/docs/source/benchmarking/scholarly_knowledge/pplan.rst @@ -1,5 +1,5 @@ Ontology for Provenance and Plans (P-Plan) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/scholarly_knowledge/premon.rst b/docs/source/benchmarking/scholarly_knowledge/premon.rst index 1700561..035946b 100644 --- a/docs/source/benchmarking/scholarly_knowledge/premon.rst +++ b/docs/source/benchmarking/scholarly_knowledge/premon.rst @@ -1,5 +1,5 @@ Pre-Modern Ontology (PreMOn) -========================== +======================================================================================================================== Overview -------- diff --git a/docs/source/benchmarking/scholarly_knowledge/sepio.rst b/docs/source/benchmarking/scholarly_knowledge/sepio.rst index 2803f93..68c8421 100644 --- a/docs/source/benchmarking/scholarly_knowledge/sepio.rst +++ b/docs/source/benchmarking/scholarly_knowledge/sepio.rst @@ -1,5 +1,5 @@ Scientific Evidence and Provenance Information Ontology (SEPIO) -========================== +======================================================================================================================== Overview -------- @@ -50,8 +50,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 21 - **Taxonomic Relations**: 223 - - **Non-taxonomic Relations**: 12 - - **Average Terms per Type**: 1.11 + - **Non-taxonomic Relations**: 6 + - **Average Terms per Type**: 4.20 Usage Example ------------- diff --git a/docs/source/benchmarking/scholarly_knowledge/spdocument.rst b/docs/source/benchmarking/scholarly_knowledge/spdocument.rst index 36c03f5..c905231 100644 --- a/docs/source/benchmarking/scholarly_knowledge/spdocument.rst +++ b/docs/source/benchmarking/scholarly_knowledge/spdocument.rst @@ -1,5 +1,5 @@ SMART Protocols Ontology: Document Module (SP-Document) -========================== +======================================================================================================================== Overview -------- @@ -47,8 +47,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 45 - **Taxonomic Relations**: 1194 - - **Non-taxonomic Relations**: 74 - - **Average Terms per Type**: 1.88 + - **Non-taxonomic Relations**: 73 + - **Average Terms per Type**: 2.65 Usage Example ------------- diff --git a/docs/source/benchmarking/scholarly_knowledge/spworkflow.rst b/docs/source/benchmarking/scholarly_knowledge/spworkflow.rst index 9dac1cc..c6375fa 100644 --- a/docs/source/benchmarking/scholarly_knowledge/spworkflow.rst +++ b/docs/source/benchmarking/scholarly_knowledge/spworkflow.rst @@ -1,5 +1,5 @@ SMART Protocols Ontology: Workflow Module (SP-Workflow) -========================== +======================================================================================================================== Overview -------- @@ -48,8 +48,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 5 - **Taxonomic Relations**: 1079 - - **Non-taxonomic Relations**: 24 - - **Average Terms per Type**: 0.24 + - **Non-taxonomic Relations**: 22 + - **Average Terms per Type**: 1.00 Usage Example ------------- diff --git a/docs/source/benchmarking/scholarly_knowledge/swo.rst b/docs/source/benchmarking/scholarly_knowledge/swo.rst index 7e41a72..dc8ed35 100644 --- a/docs/source/benchmarking/scholarly_knowledge/swo.rst +++ b/docs/source/benchmarking/scholarly_knowledge/swo.rst @@ -1,5 +1,5 @@ Software Ontology (SWO) -========================== +======================================================================================================================== Overview -------- @@ -48,8 +48,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 444 - **Taxonomic Relations**: 20936 - - **Non-taxonomic Relations**: 699 - - **Average Terms per Type**: 10.33 + - **Non-taxonomic Relations**: 644 + - **Average Terms per Type**: 8.38 Usage Example ------------- diff --git a/docs/source/benchmarking/scholarly_knowledge/tribain.rst b/docs/source/benchmarking/scholarly_knowledge/tribain.rst index fa6b9f3..9d3b63a 100644 --- a/docs/source/benchmarking/scholarly_knowledge/tribain.rst +++ b/docs/source/benchmarking/scholarly_knowledge/tribain.rst @@ -1,5 +1,5 @@ Tribology and Artificial Intelligence Ontology (TribAIn) -========================== +======================================================================================================================== Overview -------- @@ -49,7 +49,7 @@ Generated Benchmarks: - **Term Types**: 21 - **Taxonomic Relations**: 488 - **Non-taxonomic Relations**: 24 - - **Average Terms per Type**: 0.70 + - **Average Terms per Type**: 1.00 Usage Example ------------- diff --git a/docs/source/benchmarking/scholarly_knowledge/voaf.rst b/docs/source/benchmarking/scholarly_knowledge/voaf.rst index 828e6da..9317ba1 100644 --- a/docs/source/benchmarking/scholarly_knowledge/voaf.rst +++ b/docs/source/benchmarking/scholarly_knowledge/voaf.rst @@ -1,5 +1,5 @@ Vocabulary of a Friend (VOAF) -========================== +======================================================================================================================== Overview -------- @@ -48,7 +48,7 @@ Generated Benchmarks: - **Term Types**: 1 - **Taxonomic Relations**: 4 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 0.11 + - **Average Terms per Type**: 1.00 Usage Example ------------- diff --git a/docs/source/benchmarking/scholarly_knowledge/wild.rst b/docs/source/benchmarking/scholarly_knowledge/wild.rst index 13ac4ff..1419416 100644 --- a/docs/source/benchmarking/scholarly_knowledge/wild.rst +++ b/docs/source/benchmarking/scholarly_knowledge/wild.rst @@ -1,5 +1,5 @@ Workflows in Linked Data (WiLD) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Generated Benchmarks: - **Term Types**: 4 - **Taxonomic Relations**: 9 - **Non-taxonomic Relations**: 4 - - **Average Terms per Type**: 0.24 + - **Average Terms per Type**: 2.00 Usage Example ------------- diff --git a/docs/source/benchmarking/social_sciences/as2.rst b/docs/source/benchmarking/social_sciences/as2.rst index ac849b8..49b22f6 100644 --- a/docs/source/benchmarking/social_sciences/as2.rst +++ b/docs/source/benchmarking/social_sciences/as2.rst @@ -1,5 +1,5 @@ -Activity Streams 2.0 Ontology -========================== +Activity Streams 2.0 Ontology (AS2) +======================================================================================================================== Overview -------- @@ -14,7 +14,7 @@ for describing activities on the web. :Creator: None :License: W3C Document License :Format: OWL -:Download: `Activity Streams 2.0 Ontology Homepage `_ +:Download: `Activity Streams 2.0 Ontology (AS2) Homepage `_ Graph Metrics ------------- @@ -48,8 +48,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 1 - **Taxonomic Relations**: 59 - - **Non-taxonomic Relations**: 2 - - **Average Terms per Type**: 0.12 + - **Non-taxonomic Relations**: 1 + - **Average Terms per Type**: 1.00 Usage Example ------------- diff --git a/docs/source/benchmarking/social_sciences/bio.rst b/docs/source/benchmarking/social_sciences/bio.rst index 362e691..96d484d 100644 --- a/docs/source/benchmarking/social_sciences/bio.rst +++ b/docs/source/benchmarking/social_sciences/bio.rst @@ -1,5 +1,5 @@ -BIO: A vocabulary for biographical information -========================== +BIO: A vocabulary for biographical information (BIO) +======================================================================================================================== Overview -------- @@ -17,7 +17,7 @@ the Employment event puts the person being employed as the principal agent in th :Creator: Ian Davis and David Galbraith :License: Public Domain :Format: RDF, TTL, CSV, NT -:Download: `BIO: A vocabulary for biographical information Homepage `_ +:Download: `BIO: A vocabulary for biographical information (BIO) Homepage `_ Graph Metrics ------------- @@ -51,8 +51,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 1 - **Taxonomic Relations**: 62 - - **Non-taxonomic Relations**: 1 - - **Average Terms per Type**: 0.17 + - **Non-taxonomic Relations**: 0 + - **Average Terms per Type**: 1.00 Usage Example ------------- diff --git a/docs/source/benchmarking/social_sciences/contact.rst b/docs/source/benchmarking/social_sciences/contact.rst index 27ea604..50506da 100644 --- a/docs/source/benchmarking/social_sciences/contact.rst +++ b/docs/source/benchmarking/social_sciences/contact.rst @@ -1,5 +1,5 @@ -Contact Ontology -========================== +Contact Ontology (Contact) +======================================================================================================================== Overview -------- @@ -17,7 +17,7 @@ The Contact ontology also extends the definition of address to include an associ :Creator: Mark Fox, Megan Katsumi :License: None :Format: OWL, TTL, CSV, NT -:Download: `Contact Ontology Homepage `_ +:Download: `Contact Ontology (Contact) Homepage `_ Graph Metrics ------------- @@ -51,8 +51,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 1 - **Taxonomic Relations**: 610 - - **Non-taxonomic Relations**: 7 - - **Average Terms per Type**: 0.12 + - **Non-taxonomic Relations**: 0 + - **Average Terms per Type**: 1.00 Usage Example ------------- diff --git a/docs/source/benchmarking/social_sciences/foaf.rst b/docs/source/benchmarking/social_sciences/foaf.rst index 3bed024..e7d90cc 100644 --- a/docs/source/benchmarking/social_sciences/foaf.rst +++ b/docs/source/benchmarking/social_sciences/foaf.rst @@ -1,5 +1,5 @@ -Friend of a Friend (FOAF) Ontology -========================== +Friend of a Friend (FOAF) +======================================================================================================================== Overview -------- @@ -14,7 +14,7 @@ or in the form of factual data, it can be linked. :Creator: Dan Brickley, Libby Miller :License: Creative Commons :Format: RDF/XML -:Download: `Friend of a Friend (FOAF) Ontology Homepage `_ +:Download: `Friend of a Friend (FOAF) Homepage `_ Graph Metrics ------------- @@ -49,7 +49,7 @@ Generated Benchmarks: - **Term Types**: 13 - **Taxonomic Relations**: 11 - **Non-taxonomic Relations**: 21 - - **Average Terms per Type**: 3.25 + - **Average Terms per Type**: 13.00 Usage Example ------------- diff --git a/docs/source/benchmarking/social_sciences/sioc.rst b/docs/source/benchmarking/social_sciences/sioc.rst index 9b1df81..4355177 100644 --- a/docs/source/benchmarking/social_sciences/sioc.rst +++ b/docs/source/benchmarking/social_sciences/sioc.rst @@ -1,5 +1,5 @@ -Semantically-Interlinked Online Communities (SIOC) Ontology -========================== +Semantically-Interlinked Online Communities (SIOC) +======================================================================================================================== Overview -------- @@ -14,7 +14,7 @@ file sharing, photo sharing, social networking, etc. :Creator: Data Science Institute, NUI Galway :License: Creative Commons 3.0 :Format: RDF/XML -:Download: `Semantically-Interlinked Online Communities (SIOC) Ontology Homepage `_ +:Download: `Semantically-Interlinked Online Communities (SIOC) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/units_and_measurements/om.rst b/docs/source/benchmarking/units_and_measurements/om.rst index 5097e58..9225ae4 100644 --- a/docs/source/benchmarking/units_and_measurements/om.rst +++ b/docs/source/benchmarking/units_and_measurements/om.rst @@ -1,5 +1,5 @@ Ontology of Units of Measure (OM) -========================== +======================================================================================================================== Overview -------- @@ -54,8 +54,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 1953 - **Taxonomic Relations**: 2016 - - **Non-taxonomic Relations**: 230 - - **Average Terms per Type**: 55.80 + - **Non-taxonomic Relations**: 0 + - **Average Terms per Type**: 42.46 Usage Example ------------- diff --git a/docs/source/benchmarking/units_and_measurements/owltime.rst b/docs/source/benchmarking/units_and_measurements/owltime.rst index 881682f..0577bc6 100644 --- a/docs/source/benchmarking/units_and_measurements/owltime.rst +++ b/docs/source/benchmarking/units_and_measurements/owltime.rst @@ -1,5 +1,5 @@ Time Ontology in OWL (OWL-Time) -========================== +======================================================================================================================== Overview -------- @@ -52,7 +52,7 @@ Generated Benchmarks: - **Term Types**: 17 - **Taxonomic Relations**: 529 - **Non-taxonomic Relations**: 1 - - **Average Terms per Type**: 0.94 + - **Average Terms per Type**: 8.50 Usage Example ------------- diff --git a/docs/source/benchmarking/units_and_measurements/qudt.rst b/docs/source/benchmarking/units_and_measurements/qudt.rst index 5c6b99f..d8f760a 100644 --- a/docs/source/benchmarking/units_and_measurements/qudt.rst +++ b/docs/source/benchmarking/units_and_measurements/qudt.rst @@ -1,5 +1,5 @@ Quantities, Units, Dimensions and Data Types (QUDT) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Generated Benchmarks: - **Term Types**: 27 - **Taxonomic Relations**: 3252 - **Non-taxonomic Relations**: 12 - - **Average Terms per Type**: 0.96 + - **Average Terms per Type**: 2.45 Usage Example ------------- diff --git a/docs/source/benchmarking/units_and_measurements/qudv.rst b/docs/source/benchmarking/units_and_measurements/qudv.rst index 998b027..31fe8af 100644 --- a/docs/source/benchmarking/units_and_measurements/qudv.rst +++ b/docs/source/benchmarking/units_and_measurements/qudv.rst @@ -1,5 +1,5 @@ Quantities, Units, Dimensions and Values (QUDV) -========================== +======================================================================================================================== Overview -------- @@ -49,7 +49,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 9 - - **Non-taxonomic Relations**: 10 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/units_and_measurements/uo.rst b/docs/source/benchmarking/units_and_measurements/uo.rst index 90aec2c..f44059d 100644 --- a/docs/source/benchmarking/units_and_measurements/uo.rst +++ b/docs/source/benchmarking/units_and_measurements/uo.rst @@ -1,5 +1,5 @@ Units of Measurement Ontology (UO) -========================== +======================================================================================================================== Overview -------- @@ -46,7 +46,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 880 - - **Non-taxonomic Relations**: 356 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/upper_ontology/bfo.rst b/docs/source/benchmarking/upper_ontology/bfo.rst index 21c2e15..2238053 100644 --- a/docs/source/benchmarking/upper_ontology/bfo.rst +++ b/docs/source/benchmarking/upper_ontology/bfo.rst @@ -1,5 +1,5 @@ Basic Formal Ontology (BFO) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 162 - - **Non-taxonomic Relations**: 18 + - **Non-taxonomic Relations**: 5 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/upper_ontology/dolce.rst b/docs/source/benchmarking/upper_ontology/dolce.rst index 352cf0e..0509af4 100644 --- a/docs/source/benchmarking/upper_ontology/dolce.rst +++ b/docs/source/benchmarking/upper_ontology/dolce.rst @@ -1,5 +1,5 @@ Descriptive Ontology for Linguistic and Cognitive Engineering (DOLCE) -========================== +======================================================================================================================== Overview -------- @@ -47,7 +47,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 231 - - **Non-taxonomic Relations**: 24 + - **Non-taxonomic Relations**: 18 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/upper_ontology/fair.rst b/docs/source/benchmarking/upper_ontology/fair.rst index 6464ed2..3ae2d2a 100644 --- a/docs/source/benchmarking/upper_ontology/fair.rst +++ b/docs/source/benchmarking/upper_ontology/fair.rst @@ -1,5 +1,5 @@ FAIR Vocabulary (FAIR) -========================== +======================================================================================================================== Overview -------- @@ -46,8 +46,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 19 - **Taxonomic Relations**: 3 - - **Non-taxonomic Relations**: 5 - - **Average Terms per Type**: 1.19 + - **Non-taxonomic Relations**: 3 + - **Average Terms per Type**: 9.50 Usage Example ------------- diff --git a/docs/source/benchmarking/upper_ontology/gfo.rst b/docs/source/benchmarking/upper_ontology/gfo.rst index a3eb26c..726773c 100644 --- a/docs/source/benchmarking/upper_ontology/gfo.rst +++ b/docs/source/benchmarking/upper_ontology/gfo.rst @@ -1,5 +1,5 @@ General Formal Ontology (GFO) -========================== +======================================================================================================================== Overview -------- @@ -50,8 +50,8 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 1 - **Taxonomic Relations**: 203 - - **Non-taxonomic Relations**: 40 - - **Average Terms per Type**: 0.33 + - **Non-taxonomic Relations**: 34 + - **Average Terms per Type**: 1.00 Usage Example ------------- diff --git a/docs/source/benchmarking/upper_ontology/sio.rst b/docs/source/benchmarking/upper_ontology/sio.rst index 0049404..5b11b57 100644 --- a/docs/source/benchmarking/upper_ontology/sio.rst +++ b/docs/source/benchmarking/upper_ontology/sio.rst @@ -1,5 +1,5 @@ Semanticscience Integrated Ontology (SIO) -========================== +======================================================================================================================== Overview -------- @@ -48,7 +48,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 3006 - - **Non-taxonomic Relations**: 115 + - **Non-taxonomic Relations**: 65 - **Average Terms per Type**: 0.00 Usage Example diff --git a/docs/source/benchmarking/upper_ontology/sumo.rst b/docs/source/benchmarking/upper_ontology/sumo.rst index 2424aec..c8f0bd2 100644 --- a/docs/source/benchmarking/upper_ontology/sumo.rst +++ b/docs/source/benchmarking/upper_ontology/sumo.rst @@ -1,5 +1,5 @@ Suggested Upper Merged Ontology (SUMO) -========================== +======================================================================================================================== Overview -------- @@ -47,9 +47,9 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 80282 - - **Taxonomic Relations**: 7178 - - **Non-taxonomic Relations**: 311 - - **Average Terms per Type**: 1867.02 + - **Taxonomic Relations**: 7174 + - **Non-taxonomic Relations**: 310 + - **Average Terms per Type**: 165.53 Usage Example ------------- diff --git a/docs/source/benchmarking/web_&_internet/saref.rst b/docs/source/benchmarking/web_&_internet/saref.rst index b6c8cb7..2a9c1c4 100644 --- a/docs/source/benchmarking/web_&_internet/saref.rst +++ b/docs/source/benchmarking/web_&_internet/saref.rst @@ -1,5 +1,5 @@ Smart Applications REFerence ontology (SAREF) -========================== +======================================================================================================================== Overview -------- @@ -51,7 +51,7 @@ Generated Benchmarks: - **Term Types**: 10 - **Taxonomic Relations**: 224 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 2.50 + - **Average Terms per Type**: 10.00 Usage Example ------------- diff --git a/docs/source/conf.py b/docs/source/conf.py index c236a30..15e3b18 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -28,6 +28,7 @@ "sphinx.ext.linkcode", "sphinx_inline_tabs", "sphinxcontrib.mermaid", + 'sphinx_tabs.tabs', ] # autosummary_generate = True # Turn on sphinx.ext.autosummary diff --git a/ontolearner/__init__.py b/ontolearner/__init__.py index 2258fba..13429ca 100644 --- a/ontolearner/__init__.py +++ b/ontolearner/__init__.py @@ -9,8 +9,8 @@ logger = logging.getLogger("ontolearner") -from .pipeline import ProcessorPipeline from ontolearner import base, data_structure, ontology, text2onto, utils, tools +from .processor import Processor __all__ = [ "base", @@ -19,5 +19,5 @@ "text2onto", "tools", "utils", - "ProcessorPipeline" + "Processor" ] diff --git a/ontolearner/ontology/agricultural.py b/ontolearner/ontology/agricultural.py index 2d509d2..e623a31 100644 --- a/ontolearner/ontology/agricultural.py +++ b/ontolearner/ontology/agricultural.py @@ -29,7 +29,7 @@ class AGROVOC(BaseOntology): indexing processes and making searches more efficient. """ ontology_id = "AGROVOC" - ontology_full_name = "AGROVOC Multilingual Thesaurus" + ontology_full_name = "AGROVOC Multilingual Thesaurus (AGROVOC)" domain = "Agricultural" category = "Agricultural Knowledge" version = "2024-04" diff --git a/ontolearner/ontology/arts_humanities.py b/ontolearner/ontology/arts_humanities.py index 523cfed..d3e6f17 100644 --- a/ontolearner/ontology/arts_humanities.py +++ b/ontolearner/ontology/arts_humanities.py @@ -6,7 +6,7 @@ class ChordOntology(BaseOntology): The Chord Ontology is an ontology for describing chords in musical pieces. """ ontology_id = "ChordOntology" - ontology_full_name = "Chord Ontology" + ontology_full_name = "Chord Ontology (ChordOntology)" domain = "Arts & Humanities" category = "Musical Works" version = "1.0" @@ -42,7 +42,7 @@ class MusicOntology(BaseOntology): on the Semantic Web. """ ontology_id = "MusicOntology" - ontology_full_name = "Music Ontology" + ontology_full_name = "Music Ontology (MusicOntology)" domain = "Arts & Humanities" category = "Music Theory" version = "2.1.5" @@ -79,7 +79,7 @@ class TimelineOntology(BaseOntology): A timeline may support a signal, a video, a score, a work, etc. """ ontology_id = "TimelineOntology" - ontology_full_name = "Timeline Ontology" + ontology_full_name = "Timeline Ontology (TimelineOntology)" domain = "Arts & Humanities" category = "Music Theory" version = "1.0" diff --git a/ontolearner/ontology/chemistry.py b/ontolearner/ontology/chemistry.py index 4bdcf04..6ef18c1 100644 --- a/ontolearner/ontology/chemistry.py +++ b/ontolearner/ontology/chemistry.py @@ -189,7 +189,7 @@ class OntoKin(BaseOntology): OntoKin is an ontology developed for representing chemical kinetic reaction mechanisms. """ ontology_id = "OntoKin" - ontology_full_name = "OntoKin" + ontology_full_name = "Chemical Kinetics Ontology (OntoKin)" domain = "Chemistry" category = "Chemistry" version = "1.0" diff --git a/ontolearner/ontology/education.py b/ontolearner/ontology/education.py index 5e3ca7f..320c4e5 100644 --- a/ontolearner/ontology/education.py +++ b/ontolearner/ontology/education.py @@ -31,7 +31,7 @@ class Common(BaseOntology): Ontology for the representation of commons elements in the Trias ontology """ ontology_id = "Common" - ontology_full_name = "Common Ontology" + ontology_full_name = "Common Ontology (Common)" domain = "Education" category = "Computer Science" version = "0.1.0" diff --git a/ontolearner/ontology/general.py b/ontolearner/ontology/general.py index acb1ba2..33ada96 100644 --- a/ontolearner/ontology/general.py +++ b/ontolearner/ontology/general.py @@ -28,7 +28,7 @@ class DBpedia(BaseOntology): into a crowd-sourced effort, resulting in a shallow cross-domain ontology. """ ontology_id = "DBpedia" - ontology_full_name = "DBpedia Ontology" + ontology_full_name = "DBpedia Ontology (DBpedia)" domain = "General Knowledge" category = "Knowledge Graph" version = None diff --git a/ontolearner/ontology/geography.py b/ontolearner/ontology/geography.py index 4db8779..aa1a4ef 100644 --- a/ontolearner/ontology/geography.py +++ b/ontolearner/ontology/geography.py @@ -63,7 +63,7 @@ class Juso(BaseOntology): Juso Ontology is a Web vocabulary for describing geographical addresses and features. """ ontology_id = "Juso" - ontology_full_name = "Juso Ontology" + ontology_full_name = "Juso Ontology (Juso)" domain = "Geography" category = "geographical knowledge" version = "0.1.1" diff --git a/ontolearner/ontology/industry.py b/ontolearner/ontology/industry.py index c6c0b09..461f50e 100644 --- a/ontolearner/ontology/industry.py +++ b/ontolearner/ontology/industry.py @@ -103,7 +103,7 @@ class TUBES(BaseOntology): in a future semantic web of building data. It has a strong alignment to other ontologies within the W3C community. """ ontology_id = "TUBES" - ontology_full_name = "TUBES System Ontology" + ontology_full_name = "TUBES System Ontology (TUBES)" domain = "Industry" category = "Building Services" version = "0.3.0" diff --git a/ontolearner/ontology/law.py b/ontolearner/ontology/law.py index 73cdde3..ac57b87 100644 --- a/ontolearner/ontology/law.py +++ b/ontolearner/ontology/law.py @@ -9,7 +9,7 @@ class CopyrightOnto(BaseOntology): end-users permissions to consume content, like many rights languages and ontologies do. """ ontology_id = "CopyrightOnto" - ontology_full_name = "Copyright Ontology" + ontology_full_name = "Copyright Ontology (CopyrightOnto)" domain = "Law" category = "Legal Knowledge" version = None diff --git a/ontolearner/ontology/medicine.py b/ontolearner/ontology/medicine.py index 09ab7a8..370db0c 100644 --- a/ontolearner/ontology/medicine.py +++ b/ontolearner/ontology/medicine.py @@ -90,7 +90,7 @@ class MFOEM(BaseOntology): using default behavior. """ ontology_id = "MFOEM" - ontology_full_name = "Emotion Ontology -- Mental Functioning Ontology of Emotions" + ontology_full_name = "Mental Functioning Ontology of Emotions - Emotion Module (MFOEM)" domain = "Medicine" category = "Emotion" version = None diff --git a/ontolearner/ontology/news_media.py b/ontolearner/ontology/news_media.py index f092acc..0d9fb8a 100644 --- a/ontolearner/ontology/news_media.py +++ b/ontolearner/ontology/news_media.py @@ -9,7 +9,7 @@ class BBC(BaseOntology): for example Education propositions are part of the K&L (Knowledge and Learning) product portfolio. """ ontology_id = "BBC" - ontology_full_name = "BBC Ontology" + ontology_full_name = "BBC Ontology (BBC)" domain = "News & Media" category = "News" version = "1.37" @@ -25,7 +25,7 @@ class BBCBusiness(BaseOntology): The Business News Ontology describes the concepts that occur in BBC business news. """ ontology_id = "BBCBusiness" - ontology_full_name = "BBC Business News Ontology" + ontology_full_name = "BBC Business News Ontology (BBCBusiness)" domain = "News & Media" category = "Business News" version = "0.5" @@ -43,7 +43,7 @@ class BBCCMS(BaseOntology): The CMS ontology defines how these things and content are associated with other BBC instances of the same thing. """ ontology_id = "BBCCMS" - ontology_full_name = "BBC CMS Ontology" + ontology_full_name = "BBC CMS Ontology (BBCCMS)" domain = "News & Media" category = "Content Management Systems" version = "3.7" @@ -61,7 +61,7 @@ class BBCCoreConcepts(BaseOntology): link their own concepts e.g., athletes or politicians using rdfs:sublClassOf the particular concept. """ ontology_id = "BBCCoreConcepts" - ontology_full_name = "BBC Core Concepts Ontology" + ontology_full_name = "BBC Core Concepts Ontology (BBCCoreConcepts)" domain = "News & Media" category = "Core Concepts" version = "1.30" @@ -79,7 +79,7 @@ class BBCCreativeWork(BaseOntology): their more specific types (BlogPost, NewsItem, Programme) and audiences (audience). """ ontology_id = "BBCCreativeWork" - ontology_full_name = "BBC Creative Work Ontology" + ontology_full_name = "BBC Creative Work Ontology (BBCCreativeWork)" domain = "News & Media" category = "Creative Work" version = "1.19" @@ -99,7 +99,7 @@ class BBCStoryline(BaseOntology): such as an article or news report. It can also be the editorial view on events occurring in the world. """ ontology_id = "BBCStoryline" - ontology_full_name = "BBC Storyline Ontology" + ontology_full_name = "BBC Storyline Ontology (BBCStoryline)" domain = "News & Media" category = "Storyline" version = "0.3" @@ -118,7 +118,7 @@ class BBCFood(BaseOntology): the Food Ontology should be applicable to a wide range of recipe data publishing across the web. """ ontology_id = "BBCFood" - ontology_full_name = "BBC Food Ontology" + ontology_full_name = "BBC Food Ontology (BBCFood)" domain = "News & Media" category = "Food & Beverage" version = "0.1" @@ -134,7 +134,7 @@ class BBCPolitics(BaseOntology): The Politics Ontology describes the concepts that occur in BBC politics news. """ ontology_id = "BBCPolitics" - ontology_full_name = "BBC Politics News Ontology" + ontology_full_name = "BBC Politics News Ontology (BBCPolitics)" domain = "News & Media" category = "Politics" version = "0.9" @@ -152,7 +152,7 @@ class BBCProgrammes(BaseOntology): Its development was funded by the BBC, and is heavily grounded on previous programmes data modelling work done there. """ ontology_id = "BBCProgrammes" - ontology_full_name = "BBC Programmes Ontology" + ontology_full_name = "BBC Programmes Ontology (BBCProgrammes)" domain = "News & Media" category = "Programmes" version = "1.1" @@ -172,7 +172,7 @@ class BBCProvenance(BaseOntology): A named graph is, in effect, a 'fourth part' to a triple, hence the term 'quad store'. """ ontology_id = "BBCProvenance" - ontology_full_name = "BBC Provenance News Ontology" + ontology_full_name = "BBC Provenance News Ontology (BBCProvenance)" domain = "News & Media" category = "Provenance" version = "1.9" @@ -195,7 +195,7 @@ class BBCSport(BaseOntology): In particular, it draws heavily upon the events ontology. """ ontology_id = "BBCSport" - ontology_full_name = "BBC Sport Ontology" + ontology_full_name = "BBC Sport Ontology (BBCSport)" domain = "News & Media" category = "Sport" version = "3.2" @@ -213,7 +213,7 @@ class BBCWildlife(BaseOntology): conservation status, and behavioural characteristics, etc. """ ontology_id = "BBCWildlife" - ontology_full_name = "BBC Wildlife Ontology" + ontology_full_name = "BBC Wildlife Ontology (BBCWildlife)" domain = "News & Media" category = "Wildlife" version = "1.1" diff --git a/ontolearner/ontology/scholarly_knowledge.py b/ontolearner/ontology/scholarly_knowledge.py index 6dfb9fa..928ea36 100644 --- a/ontolearner/ontology/scholarly_knowledge.py +++ b/ontolearner/ontology/scholarly_knowledge.py @@ -53,7 +53,7 @@ class CSO(BaseOntology): - contributesTo relationships """ ontology_id = "CSO" - ontology_full_name = "Computer Science Ontology" + ontology_full_name = "Computer Science Ontology (CSO)" domain = "Scholarly Knowledge" category = "Computer Science" version = "3.4" @@ -116,7 +116,7 @@ class DataCite(BaseOntology): and retrieval purposes) to be described in RDF. """ ontology_id = "DataCite" - ontology_full_name = "DataCite" + ontology_full_name = "DataCite Ontology (DataCite)" domain = "Scholarly Knowledge" category = "Metadata" version = "3.1" @@ -173,7 +173,7 @@ class EURIO(BaseOntology): framework programmes for research and innovation. """ ontology_id = "EURIO" - ontology_full_name = "EUropean Research Information Ontology" + ontology_full_name = "EUropean Research Information Ontology (EURIO)" domain = "Scholarly Knowledge" category = "Research Information" version = "2.4" @@ -245,7 +245,7 @@ class LexInfo(BaseOntology): and is available together with an API. """ ontology_id = "LexInfo" - ontology_full_name = "LexInfo" + ontology_full_name = "LexInfo (LexInfo)" domain = "Scholarly Knowledge" category = "Linguistics" version = "3.0" diff --git a/ontolearner/ontology/social_sciences.py b/ontolearner/ontology/social_sciences.py index 92d5da4..eeb2a8d 100644 --- a/ontolearner/ontology/social_sciences.py +++ b/ontolearner/ontology/social_sciences.py @@ -8,7 +8,7 @@ class AS2(BaseOntology): for describing activities on the web. """ ontology_id = "AS2" - ontology_full_name = "Activity Streams 2.0 Ontology" + ontology_full_name = "Activity Streams 2.0 Ontology (AS2)" domain = "Social Sciences" category = "Social" version = "2.0" @@ -29,7 +29,7 @@ class BIO(BaseOntology): the Employment event puts the person being employed as the principal agent in the event rather than the employer. """ ontology_id = "BIO" - ontology_full_name = "BIO: A vocabulary for biographical information" + ontology_full_name = "BIO: A vocabulary for biographical information (BIO)" domain = "Social Sciences" category = "Biographical Information" version = "0.1" @@ -50,7 +50,7 @@ class Contact(BaseOntology): The Contact ontology also extends the definition of address to include an associated location. """ ontology_id = "Contact" - ontology_full_name = "Contact Ontology" + ontology_full_name = "Contact Ontology (Contact)" domain = "Social Sciences" category = "Social" version = "1.0" @@ -68,7 +68,7 @@ class FOAF(BaseOntology): or in the form of factual data, it can be linked. """ ontology_id = "FOAF" - ontology_full_name = "Friend of a Friend (FOAF) Ontology" + ontology_full_name = "Friend of a Friend (FOAF)" domain = "Social Sciences" category = "Social" version = "0.1" @@ -86,7 +86,7 @@ class SIOC(BaseOntology): file sharing, photo sharing, social networking, etc. """ ontology_id = "SIOC" - ontology_full_name = "Semantically-Interlinked Online Communities (SIOC) Ontology" + ontology_full_name = "Semantically-Interlinked Online Communities (SIOC)" domain = "Social Sciences" category = "Social Networks" version = "1.36" diff --git a/ontolearner/ontology/web.py b/ontolearner/ontology/web.py index 75498cd..98e445d 100644 --- a/ontolearner/ontology/web.py +++ b/ontolearner/ontology/web.py @@ -7,7 +7,7 @@ class Hydra(BaseOntology): commonly used in Web APIs it enables the creation of generic API clients. """ ontology_id = "Hydra" - ontology_full_name = "Hydra Ontology" + ontology_full_name = "Hydra Ontology (Hydra)" domain = "Web & Internet" category = "Web Development" version = None diff --git a/ontolearner/pipeline.py b/ontolearner/processor.py similarity index 57% rename from ontolearner/pipeline.py rename to ontolearner/processor.py index d4d3c2a..9f6563e 100644 --- a/ontolearner/pipeline.py +++ b/ontolearner/processor.py @@ -1,102 +1,35 @@ from pathlib import Path -from typing import Union +from typing import Union, Dict +import pandas as pd from jinja2 import Template from . import logger - from .base import BaseOntology from .data_structure import OntologyMetrics, OntologyData from .tools import Analyzer from .utils import io -DOC_TEMPLATE = Template('''\ -{{ ontology_name }} -============================================================================== - -Overview --------- -{{ description }} - -:Domain: {{ domain }} -:Category: {{ category }} -:Current Version: {{ version }} -:Last Updated: {{ last_updated }} -:Creator: {{ creator }} -:License: {{ license }} -:Format: {{ format }} -:Download: `{{ ontology_name }} Homepage <{{ download_url }}>`_ - -Graph Metrics -------------- - - **Total Nodes**: {{ total_nodes }} - - **Total Edges**: {{ total_edges }} - - **Root Nodes**: {{ root_nodes }} - - **Leaf Nodes**: {{ leaf_nodes }} - -Knowledge coverage ------------------- - - Classes: {{ num_classes }} - - Individuals: {{ num_individuals }} - - Properties: {{ num_properties }} - -Hierarchical metrics --------------------- - - **Maximum Depth**: {{ max_depth }} - - **Minimum Depth**: {{ min_depth }} - - **Average Depth**: {{ avg_depth }} - - **Depth Variance**: {{ depth_variance }} - -Breadth metrics ------------------- - - **Maximum Breadth**: {{ max_breadth }} - - **Minimum Breadth**: {{ min_breadth }} - - **Average Breadth**: {{ avg_breadth }} - - **Breadth Variance**: {{ breadth_variance }} - -Dataset Statistics ------------------- -Generated Benchmarks: - - **Term Types**: {{ num_term_types }} - - **Taxonomic Relations**: {{ num_taxonomic_relations }} - - **Non-taxonomic Relations**: {{ num_non_taxonomic_relations }} - - **Average Terms per Type**: {{ avg_terms_per_type }} - -Usage Example -------------- -.. code-block:: python - - from ontolearner.ontology import {{ class_name }} - - # Initialize and load ontology - ontology = {{ class_name }}() - ontology.load("path/to/ontology.owl") - - # Extract datasets - data = ontology.extract() - - # Access specific relations - term_types = data.term_typings - taxonomic_relations = data.type_taxonomies - non_taxonomic_relations = data.type_non_taxonomic_relations -''') - - -class ProcessorPipeline: +class Processor: """ Handles the complete ontology processing pipeline including: loading, extraction, analysis, and saving of results. """ - def __init__(self, datasets_dir: Path, docs_dir: Path, analyzer_class: type[Analyzer] = Analyzer): + def __init__(self, datasets_dir: Path, templates_dir: Path, benchmark_dir: Path, metrics_dir: Path, analyzer_class: type[Analyzer] = Analyzer): self.datasets_dir = datasets_dir - self.docs_dir = docs_dir + self.templates_dir = templates_dir + self.benchmark_dir = benchmark_dir + self.metrics_dir = metrics_dir self.analyzer_class = analyzer_class + self.all_metrics: Dict[str, dict] = {} + self.doc_template_path = templates_dir / "ontology.rst" + self.doc_template = Template(self.doc_template_path.read_text()) - def process_ontology(self, ontology: BaseOntology, ontology_path: Union[str, Path], ontology_identifier: str) \ + def process_ontology(self, ontology: BaseOntology, ontology_path: Union[str, Path]) \ -> OntologyMetrics: """Process a single ontology through the complete pipeline.""" try: - logger.info(f"Processing {ontology_identifier} ontology...") + logger.info(f"Processing {ontology.ontology_id} ontology...") if not Path(ontology_path).exists(): raise ValueError(f"Ontology file not found: {ontology_path}") @@ -111,20 +44,30 @@ def process_ontology(self, ontology: BaseOntology, ontology_path: Union[str, Pat metrics: OntologyMetrics = analyzer(ontology) - self._save_datasets(data, ontology_identifier) + self.all_metrics[ontology.ontology_id] = { + "metrics": metrics, + "ontology_id": ontology.ontology_id, + "ontology_full_name": ontology.ontology_full_name, + "domain": ontology.domain + } + + self._save_datasets(data, ontology) self._generate_documentation(ontology, metrics) - logger.info(f"Successfully processed {ontology_identifier} ontology") + logger.info(f"Successfully processed {ontology.ontology_id} ontology") return metrics except Exception as e: - logger.error(f"Error processing {ontology_identifier} ontology: {e}") + logger.error(f"Error processing {ontology.ontology_id} ontology: {e}") raise - def _save_datasets(self, data: OntologyData, ontology_identifier: str) -> None: + def _save_datasets(self, data: OntologyData, ontology: BaseOntology) -> None: """Save extracted datasets to files""" for dataset_type in ['term_typings', 'type_taxonomies', 'type_non_taxonomic_relations']: - save_path = self.datasets_dir / f"{ontology_identifier}_{dataset_type}_dataset.json" + domain_dir = self.datasets_dir / f"{ontology.domain.lower().replace(' ', '_')}" + domain_dir.mkdir(parents=True, exist_ok=True) + + save_path = domain_dir / f"{ontology.ontology_id.lower().replace(' ', '_')} / {dataset_type}.json" io.save_json(data.model_dump()[dataset_type], save_path) def _generate_documentation(self, ontology: BaseOntology, metrics: OntologyMetrics): @@ -173,12 +116,36 @@ def _generate_documentation(self, ontology: BaseOntology, metrics: OntologyMetri 'avg_terms_per_type': f"{metrics.dataset.avg_terms:.2f}" } - # Render - content = DOC_TEMPLATE.render(context) - # Save - domain_dir = self.docs_dir / f"{ontology.domain.lower().replace(' ', '_')}" + content = self.doc_template.render(context) + domain_dir = self.benchmark_dir / f"{ontology.domain.lower().replace(' ', '_')}" domain_dir.mkdir(parents=True, exist_ok=True) doc_path = domain_dir / f"{ontology.ontology_id.lower()}.rst" with open(doc_path, "w", encoding="utf-8") as f: f.write(content) logger.info(f"Generated documentation at {doc_path}") + + def export_metrics_to_excel(self): + """ + Export all collected metrics to an Excel file. + """ + if not self.all_metrics: + logger.warning("No metrics to export. Process at least one ontology first.") + return + + rows = [] + for ontology_id, data in self.all_metrics.items(): + metrics = data["metrics"] + row = { + "Ontology ID": data["ontology_id"], + "Ontology Full Name": data["ontology_full_name"], + "Domain": data["domain"], + "Ontology Name": metrics.name, # From OntologyMetrics + **metrics.topology.dict(), + **metrics.dataset.dict() + } + rows.append(row) + + df = pd.DataFrame(rows) + excel_path = self.metrics_dir / "metrics.xlsx" + df.to_excel(excel_path, index=False) + logger.info(f"Exported metrics to Excel file: {excel_path}") From 3a2f2c23e76944a4c6f8503a81e865614b81ccdc Mon Sep 17 00:00:00 2001 From: aioaneia Date: Thu, 24 Apr 2025 18:23:39 +0200 Subject: [PATCH 02/37] :sparkles: update ontology documentation, fixed ontology ids --- .../benchmarking/web_&_internet/hydra.rst | 4 +- main.py | 305 ----------------- scripts/add_new_ontology.py | 317 ++++++++++++++++++ 3 files changed, 319 insertions(+), 307 deletions(-) delete mode 100644 main.py create mode 100644 scripts/add_new_ontology.py diff --git a/docs/source/benchmarking/web_&_internet/hydra.rst b/docs/source/benchmarking/web_&_internet/hydra.rst index 579c3b9..71e9d32 100644 --- a/docs/source/benchmarking/web_&_internet/hydra.rst +++ b/docs/source/benchmarking/web_&_internet/hydra.rst @@ -1,5 +1,5 @@ Hydra Ontology -========================== +======================================================================================================================== Overview -------- @@ -48,7 +48,7 @@ Generated Benchmarks: - **Term Types**: 14 - **Taxonomic Relations**: 15 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 1.56 + - **Average Terms per Type**: 14.00 Usage Example ------------- diff --git a/main.py b/main.py deleted file mode 100644 index 28b9a31..0000000 --- a/main.py +++ /dev/null @@ -1,305 +0,0 @@ -import logging -from pathlib import Path - -from ontolearner import ProcessorPipeline -from ontolearner.data_structure import OntologyMetrics -from ontolearner.ontology import * # noqa - - -logging.basicConfig( - level=logging.INFO, - format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' -) -logger = logging.getLogger(__name__) - - -def main(): - try: - # Define paths - DATA_DIR = Path("data") - DOCS_DIR = Path("docs") - ONTOLOGY_DIR = DATA_DIR / "ontologies" - DATASET_DIR = DATA_DIR / "datasets" - BENCHMARK_DIR = DOCS_DIR / "source/benchmarking" - - # Initialize processor - processor = ProcessorPipeline(datasets_dir=DATASET_DIR, docs_dir=BENCHMARK_DIR) - - # Define ontologies to process - ontologies = [ - # # Agricultural Ontologies - # (FoodOn(), "agricultural/foodon.owl", "foodon ontology"), # noqa: F405 - # (AGROVOC(), "agricultural/AGROVOC.rdf", "agrovoc ontology"), # noqa: F405 - # (PO(), "agricultural/plant.owl", "plant ontology"), # noqa: F405 - - # # Arts and Humanities Ontologies - # (ChordOntology(), "arts_&_humanities/chord.rdf", "chord ontology"), # noqa: F405 - # (ICON(), "arts_&_humanities/icon.owl", "icon ontology"), # noqa: F405 - # (MusicOntology(), "arts_&_humanities/music.rdf", "music ontology"), # noqa: F405 - # (Nomisma(), "arts_&_humanities/nomisma.ttl", "nomisma ontology"), # noqa: F405 - # (TimelineOntology(), "arts_&_humanities/timeline.rdf", "timeline ontology"), # noqa: F405 - - # # Biology & Life Sciences Ontologies - # (BioPAX(), "biology_&_life_sciences/biopax.owl", "biopax ontology"), # noqa: F405 - # (EFO(), "biology_&_life_sciences/efo.owl", "efo ontology"), # noqa: F405 - # (GO(), "biology_&_life_sciences/gene.owl", "gene ontology"), # noqa: F405 - # (LIFO(), "biology_&_life_sciences/life.owl", "life ontology"), # noqa: F405 - # (MarineTLO(), "biology_&_life_sciences/marine_tlo.owl", "marinetlo ontology"), # noqa: F405 - # (MGED(), "biology_&_life_sciences/mged.owl", "mged ontology"), # noqa: F405 - # (Microscopy(), "biology_&_life_sciences/pmd_mo.ttl", "microscopy ontology"), # noqa: F405 - # (NPO(), "biology_&_life_sciences/npo_asserted.owl", "npo ontology"), # noqa: F405 - # (PATO(), "biology_&_life_sciences/pato.owl", "pato ontology"), # noqa: F405 - - # # Chemistry Ontologies - # (AFO(), "chemistry/afo.ttl", "afo ontology"), # noqa: F405 - # (ChEBI(), "chemistry/chebi.owl", "chebi ontology"), # noqa: F405 - # (CHEMINF(), "chemistry/cheminf.owl", "cheminf ontology"), # noqa: F405 - # (CHIRO(), "chemistry/chiro.owl", "chiro ontology"), # noqa: F405 - # (ChMO(), "chemistry/ChMO.owl", "chmo ontology"), # noqa: F405 - # (FIX(), "chemistry/fix.owl", "fix ontology"), # noqa: F405 - # (MassSpectrometry(), "chemistry/mass_spectrometry.owl", "mass spectrometry ontology"), # noqa: F405 - # (MOP(), "chemistry/mop.owl", "mop ontology"), # noqa: F405 - # (NMRCV(), "chemistry/NMRCV.owl", "nmrcv ontology"), # noqa: F405 - # (OntoKin(), "chemistry/ontokin.owl", "ontokin ontology"), # noqa: F405 - # (PROCO(), "chemistry/proco.owl", "proco ontology"), # noqa: F405 - # (PSIMOD(), "chemistry/psi-mod.owl", "psi-mod ontology"), # noqa: F405 - # (REX(), "chemistry/rex.owl", "rex ontology"), # noqa: F405 - # (RXNO(), "chemistry/rxno.owl", "rxno ontology"), # noqa: F405 - # (VIBSO(), "chemistry/vibso.owl", "vibso ontology"), # noqa: F405 - - # # Ecology & Environment Ontologies - # (ENVO(), "ecology_&_environment/envo.owl", "environment ontology"), # noqa: F405 - # (OEO(), "ecology_&_environment/oeo.owl", "oeo ontology"), # noqa: F405 - # (SWEET(), "ecology_&_environment/sweet.owl", "sweet ontology"), # noqa: F405 - - # # Education Ontologies - # (BIBFRAME(), "education/bibframe.rdf", "bibframe ontology"), # noqa: F405 - # (Common(), "education/common.rdf", "common ontology"), # noqa: F405 - # (DoCO(), "education/doco.rdf", "doco ontology"), # noqa: F405 - - # # Event Ontologies - # (ConferenceOntology(), "events/conference.owl", "conference ontology"), # noqa: F405 - # (iCalendar(), "events/icalendar.rdf", "icalendar ontology"), # noqa: F405 - # (LODE(), "events/lode.rdf", "lode ontology"), # noqa: F405 - - # # Finance Ontologies - # (GoodRelations(), "finance/good_relations.owl", "good relations ontology"), # noqa: F405 - - # # Food & Beverage Ontologies - # (Wine(), "food_&_beverage/wine.rdf", "wine ontology"), # noqa: F405 - - # # General Knowledge Ontologies - # (CCO(), "general_knowledge/cco.ttl", "cco ontology"), # noqa: F405 - # (DBpedia(), "general_knowledge/dbpedia.owl", "dbpedia ontology"), # noqa: F405 - # (DublinCore(), "general_knowledge/dublin_core.rdf", "dublin core ontology"), # noqa: F405 - # (EDAM(), "general_knowledge/edam.owl", "edam ontology"), # noqa: F405 - # (GIST(), "general_knowledge/gist.rdf", "gist ontology"), # noqa: F405 - # (IAO(), "general_knowledge/iao.owl", "iao ontology"), # noqa: F405 - # (PROV(), "general_knowledge/prov.owl", "prov ontology"), # noqa: F405 - # (RO(), "general_knowledge/ro.owl", "ro ontology"), # noqa: F405 - # (SchemaOrg(), "general_knowledge/schema_org.owl", "schema org ontology"), # noqa: F405 - # (UMBEL(), "general_knowledge/umbel.n3", "umbel ontology"), # noqa: F405 - # (YAGO(), "general_knowledge/yago_facts.ttl", "yago ontology"), # noqa: F405 # toto not working - - # # Geography Ontologies - # (GEO(), "geography/geo.owl", "geo ontology"), # noqa: F405 - # (GeoNames(), "geography/geonames.rdf", "geonames ontology"), # noqa: F405 - # (GTS(), "geography/gts.ttl", "gts ontology"), # noqa: F405 - # (Juso(), "geography/juso.ttl", "juso ontology"), # noqa: F405 - - # # Industry - # (AUTO(), "industry/auto.rdf", "auto ontology"), # noqa: F405 - # (DBO(), "industry/dbo.rdf", "dbo ontology"), # noqa: F405 - # (DOAP(), "industry/doap.rdf", "doap ontology"), # noqa: F405 - # (IOF(), "industry/iof.rdf", "iof ontology"), # noqa: F405 - # (PTO(), "industry/pto.rdf", "pto ontology"), # noqa: F405 - # (TUBES(), "industry/tubes.rdf", "tubes ontology"), # noqa: F405 - - # # Law Ontologies - # (CopyrightOnto(), "law/copyright.ttl", "copyright ontology"), # noqa: F405 - - # # Library & Cultural Heritage - # (GND(), "library_&_cultural_heritage/gnd.rdf", "gnd ontology"), # noqa: F405 - - # # Livestock Ontologies - # (ATOL(), "livestock/atol.owl", "atol ontology"), # noqa: F405 - - # # Materials Science & Engineering - # (AMOntology(), "materials_science_&_engineering/am_ontology.ttl", "AMO"), # noqa: F405 - # (ASMO(), "materials_science_&_engineering/asmo.owl", "asmo"), # noqa: F405 - # (Atomistic(), "materials_science_&_engineering/atomistic.ttl", "atomistic"), # noqa: F405 - # # (BattINFO(), "materials_science_&_engineering/battinfo.ttl", "battinfo"), # noqa: F405 # not done yet - # (BMO(), "materials_science_&_engineering/bmo.ttl", "bmo"), # noqa: F405 - # (BVCO(), "materials_science_&_engineering/bvco.ttl", "bvco"), # noqa: F405 - # (CDCO(), "materials_science_&_engineering/cdco.owl", "cdco"), # noqa: F405 - # (CHAMEO(), "materials_science_&_engineering/chameo.ttl", "chameo"), # noqa: F405 - # (CIFCore(), "materials_science_&_engineering/cif_core.ttl", "cif"), # noqa: F405 - # (CMSO(), "materials_science_&_engineering/cmso.owl", "cmso"), # noqa: F405 - # (EMMOCrystallography(), "materials_science_&_engineering/crystallography.ttl", "emmo_crystallography"), # noqa: F405 - # (DISO(), "materials_science_&_engineering/diso.owl", "diso"), # noqa: F405 - # (DSIM(), "materials_science_&_engineering/dsim.owl", "dsim"), # noqa: F405 - # (EMMO(), "materials_science_&_engineering/emmo.owl", "emmo"), # noqa: F405 - # (FSO(), "materials_science_&_engineering/fso.ttl", "fso"), # noqa: F405 - # (GPO(), "materials_science_&_engineering/gpo.ttl", "gpo"), # noqa: F405 - # (HPOnt(), "materials_science_&_engineering/heat_pump.owl", "hp_ontology"), # noqa: F405 - # (LDO(), "materials_science_&_engineering/ldo.owl", "ldo"), # noqa: F405 - # (LPBFO(), "materials_science_&_engineering/lpbfo.owl", "lpbfo"), # noqa: F405 - # (MAMBO(), "materials_science_&_engineering/mambo.owl", "mambo"), # noqa: F405 - # (MAT(), "materials_science_&_engineering/mat.rdf", "mat"), # noqa: F405 - # (MaterialInformation(), "materials_science_&_engineering/material_information.owl", "material_information"), # noqa: F405 - # (MMO(), "materials_science_&_engineering/mmo.rdf", "mmo"), # noqa: F405 - # (MatOnto(), "materials_science_&_engineering/materials_ontology.owl", "mat_ontology"), # noqa: F405 - # (MatVoc(), "materials_science_&_engineering/matvoc.rdf", "matvoc"), # noqa: F405 - # (MDO(), "materials_science_&_engineering/mdo.owl", "mdo"), # noqa: F405 - # (MDS(), "materials_science_&_engineering/mds.ttl", "mds"), # noqa: F405 - # (MechanicalTesting(), "materials_science_&_engineering/mechanical_testing.owl", "mechanical_testing"), # noqa: F405 - # (MicroStructures(), "materials_science_&_engineering/microstructure.owl", "micro_structures"), # noqa: F405 - # (MOLBRINELL(), "materials_science_&_engineering/molbrinell.ttl", "molbrinell"), # noqa: F405 - # (MOLTENSILE(), "materials_science_&_engineering/moltensile.rdf", "moltensile"), # noqa: F405 - # (MSEO(), "materials_science_&_engineering/mseo.ttl", "mseo"), # noqa: F405 - # (MSLE(), "materials_science_&_engineering/msle.ttl", "msle"), # noqa: F405 - # (NanoMine(), "materials_science_&_engineering/nanomine.ttl", "nanomine"), - # (OIEManufacturing(), "materials_science_&_engineering/oie-manufacturing.ttl", "oie-manufacturing"), # noqa: F405 - # (OIEMaterials(), "materials_science_&_engineering/oie-materials.ttl", "oie-materials"), # noqa: F405 - # (OIESoftware(), "materials_science_&_engineering/oie-software.ttl", "oie-software"), # noqa: F405 - # (OIEModels(), "materials_science_&_engineering/oie-models.ttl", "oie-models"), # noqa: F405 - # (OntoCAPE(language='en', base_dir=str(ONTOLOGY_DIR / "materials_science_&_engineering")), "materials_science_&_engineering/OntoCAPE/OntoCAPE.owl", "cape"), # noqa: F405 - # (ONTORULE(), "materials_science_&_engineering/ontorule.ttl", "ontorule"), # noqa: F405 - # (PeriodicTable(), "materials_science_&_engineering/periodic-table.owl", "periodic-table"), # noqa: F405 - # (Photovoltaics(), "materials_science_&_engineering/photovoltaics.ttl", "photovoltaics"), # noqa: F405 - # (PLDO(), "materials_science_&_engineering/pldo.owl", "pldo"), # noqa: F405 - # (PMDco(), "materials_science_&_engineering/pmdco.owl", "pmdco"), # noqa: F405 - # (PODO(), "materials_science_&_engineering/podo.owl", "podo"), # noqa: F405 - # # (PRIMA(), "materials_science_&_engineering/prima.ttl", "prima"), # noqa: F405 # not done yet # - # (SSN(), "materials_science_&_engineering/ssn.ttl", "ssn"), # noqa: F405 - # (SystemCapabilities(), "materials_science_&_engineering/system_capabilities.owl", "system_capabilities"), # noqa: F405 - # (VIMMP(), "materials_science_&_engineering/vimmp.owl", "vimmp"), # noqa: F405 - - # # Medicine Ontologies - # (BTO(), "medicine/bto.owl", "bto ontology"), # noqa: F405 - # (DEB(), "medicine/deb.owl", "deb ontology"), # noqa: F405 - # (DOID(), "medicine/doid.owl", "doid ontology"), # noqa: F405 - # (ENM(), "medicine/enm.owl", "enm ontology"), # noqa: F405 - # (MFOEM(), "medicine/mfoem.owl", "MFOEM ontology"), # noqa: F405 - # # (NCIt(), "medicine/ncit.owl", "ncit ontology"), # noqa: F405 # not done yet # - # (OBI(), "medicine/obi.owl", "obi ontology"), # noqa: F405 - # # (PRotein(), "medicine/protein.rdf", "protein ontology"), # noqa: F405 # not done yet # - - # # News & Media Ontologies - # (BBC(), "news_&_media/bbc.ttl", "bbc"), # noqa: F405 - # (BBCBusiness(), "news_&_media/business.ttl", "bbc business"), # noqa: F405 - # (BBCCMS(), "news_&_media/cms.ttl", "bbc_cms"), # noqa: F405 - # (BBCCoreConcepts(), "news_&_media/core_concepts.ttl", "bbc core concepts"), # noqa: F405 - # (BBCCreativeWork(), "news_&_media/creative_work.ttl", "bbc creative work"), # noqa: F405 - # (BBCFood(), "news_&_media/food.ttl", "bbc_food"), # noqa: F405 - # (BBCPolitics(), "news_&_media/politics.ttl", "bbc journalism"), # noqa: F405 - # (BBCProgrammes(), "news_&_media/programmes.ttl", "bbc programmes"), # noqa: F405 - # (BBCProvenance(), "news_&_media/provenance.ttl", "bbc provenance"), # noqa: F405 - # (BBCSport(), "news_&_media/sport.ttl", "bbc sport"), # noqa: F405 - # (BBCStoryline(), "news_&_media/storyline.ttl", "bbc storyline"), # noqa: F405 - # (BBCWildlife(), "news_&_media/wildlife.ttl", "bbc wildlife"), # noqa: F405 - # - # # Scholarly Knowledge Ontologies - # (AIISO(), "scholarly_knowledge/aiiso.rdf", "aiiso"), # noqa: F405 - # (CiTO(), "scholarly_knowledge/cito.owl", "cito"), # noqa: F405 - # (CSO(), "scholarly_knowledge/cso.owl", "cso"), # noqa: F405 - # (DataCite(), "scholarly_knowledge/datacite.rdf", "datacite"), # noqa: F405 - # (DCAT(), "scholarly_knowledge/dcat.rdf", "dcat"), # noqa: F405 - # (DUO(), "scholarly_knowledge/duo.owl", "duo"), # noqa: F405 - # (EURIO(), "scholarly_knowledge/eurio.rdf", "eurio"), # noqa: F405 - # (EXPO(), "scholarly_knowledge/expo.owl", "expo"), # noqa: F405 - # (FRAPO(), "scholarly_knowledge/frapo.rdf", "frapo"), # noqa: F405 - # (FRBRoo(), "scholarly_knowledge/frbroo.rdf", "frbroo"), # noqa: F405 - # (LexInfo(), "scholarly_knowledge/lexinfo.rdf", "lexinfo"), # noqa: F405 - # # (M4I(), "scholarly_knowledge/metadata4ing.ttl", "m4i"), # noqa: F405 - # (Metadata4Ing(), "scholarly_knowledge/metadata4ing.ttl", "metadata4ing"), # noqa: F405 - # (NFDIcore(), "scholarly_knowledge/nfdi.owl", "nfdi"), # noqa: F405 - # (OBOE(), "scholarly_knowledge/oboe.owl", "oboe"), # noqa: F405 - # (OPMW(), "scholarly_knowledge/opmw.owl", "opmw"), # noqa: F405 - # (PPlan(), "scholarly_knowledge/pplan.owl", "pplan"), # noqa: F405 - # (PreMOn(), "scholarly_knowledge/premon.owl", "premon"), # noqa: F405 - # (SEPIO(), "scholarly_knowledge/sepio.owl", "sepio"), # noqa: F405 - # (SPDocument(), "scholarly_knowledge/sp_document.owl", "sp document"), # noqa: F405 - # (SPWorkflow(), "scholarly_knowledge/sp_workflow.owl", "sp workflow"), # noqa: F405 - # (SWO(), "scholarly_knowledge/swo.owl", "swo"), # noqa: F405 - # (TribAIn(), "scholarly_knowledge/tribain.ttl", "tribain"), # noqa: F405 - # (VOAF(), "scholarly_knowledge/voaf.rdf", "voaf"), # noqa: F405 - # (WiLD(), "scholarly_knowledge/wild.ttl", "wild"), # noqa: F405 - - # # Social Sciences - # (AS2(), "social_sciences/as2.ttl", "as2"), # noqa: F405 - # (BIO(), "social_sciences/bio.rdf", "bio"), # noqa: F405 - # (Contact(), "social_sciences/contact.rdf", "contact"), # noqa: F405 - # (FOAF(), "social_sciences/foaf.rdf", "foaf"), # noqa: F405 - # (SIOC(), "social_sciences/sioc.rdf", "sioc"), # noqa: F405 - - # # Units and Measurements - # (OM(), "units_and_measurements/om.rdf", "om"), # noqa: F405 - # (OWLTime(), "units_and_measurements/owl_time.ttl", "time"), # noqa: F405 - # (QUDT(), "units_and_measurements/qudt.ttl", "qudt"), # noqa: F405 - # (QUDV(), "units_and_measurements/qudv.owl", "qudv"), # noqa: F405 - # (UO(), "units_and_measurements/uo.owl", "uo"), # noqa: F405 - - # # Upper Ontologies - # (BFO(), "upper_ontologies/bfo.owl", "bfo ontology"), # noqa: F405 - # (DOLCE(), "upper_ontologies/dolce.owl", "dolce ontology"), # noqa # noqa: F405 - # (FAIR(), "upper_ontologies/fair.owl", "fair ontology"), # noqa: F405 - # (GFO(), "upper_ontologies/gfo.owl", "gfo ontology"), # noqa: F405 - # (SIO(), "upper_ontologies/sio.owl", "sio ontology"), # noqa: F405 - # (SUMO(), "upper_ontologies/sumo.owl", "sumo ontology"), # noqa: F405 - - # # Web Ontologies - # (Hydra(), "web_&_internet/hydra.jsonld", "hydra ontology"), # noqa: F405 - # (SAREF(), "web_&_internet/saref.rdf", "saref ontology"), # noqa: F405 - ] - - # Process each ontology - for ontology, filename, identifier in ontologies: - ontology_path = ONTOLOGY_DIR / filename - - metrics: OntologyMetrics = processor.process_ontology( - ontology=ontology, - ontology_path=ontology_path, - ontology_identifier=identifier - ) - - if metrics: - logger.info(f"\n{'=' * 20} {identifier.upper()} Metrics {'=' * 20}") - - logger.info("Basic graph metrics:") - logger.info(f"Total nodes: {metrics.topology.total_nodes}") - logger.info(f"Total edges: {metrics.topology.total_edges}") - logger.info(f"Graph density: {metrics.topology.num_root_nodes}") - logger.info(f"Number of leaf nodes: {metrics.topology.num_leaf_nodes}") - - logger.info("Knowledge coverage:") - logger.info(f"Number of classes: {metrics.topology.num_classes}") - logger.info(f"Number of properties: {metrics.topology.num_properties}") - logger.info(f"Number of individuals: {metrics.topology.num_individuals}") - - logger.info("Hierarchical metrics:") - logger.info(f"Maximum depth: {metrics.topology.max_depth}") - logger.info(f"Minimum depth: {metrics.topology.min_depth}") - logger.info(f"Average depth: {metrics.topology.avg_depth:.2f}") - logger.info(f"Depth variance: {metrics.topology.depth_variance:.2f}") - - logger.info("Breadth metrics:") - logger.info(f"Maximum breadth: {metrics.topology.max_breadth}") - logger.info(f"Minimum breadth: {metrics.topology.min_breadth}") - logger.info(f"Average breadth: {metrics.topology.avg_breadth:.2f}") - logger.info(f"Breadth variance: {metrics.topology.breadth_variance:.2f}") - - logger.info("Dataset metrics:") - logger.info(f"Number of term types: {metrics.dataset.num_term_types}") - logger.info(f"Number of taxonomic relations: {metrics.dataset.num_taxonomic_relations}") - logger.info(f"Number of non-taxonomic relations: {metrics.dataset.num_non_taxonomic_relations}") - logger.info(f"Average terms per type: {metrics.dataset.avg_terms:.2f}") - - logger.info("=" * 60 + "\n") - - except Exception as e: - logger.error(f"Main execution failed: {e}") - raise - -if __name__ == "__main__": - main() diff --git a/scripts/add_new_ontology.py b/scripts/add_new_ontology.py new file mode 100644 index 0000000..3ef2264 --- /dev/null +++ b/scripts/add_new_ontology.py @@ -0,0 +1,317 @@ +import logging +from pathlib import Path + +from ontolearner import Processor +from ontolearner.data_structure import OntologyMetrics +from ontolearner.ontology import * # noqa + + +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' +) +logger = logging.getLogger(__name__) + + +def main(): + try: + DATA_DIR = Path("../data") + DOCS_DIR = Path("../docs") + ONTOLOGY_DIR = DATA_DIR / "ontologies" + DATASET_DIR = DATA_DIR / "datasets" + TEMPLATES_DIR = DOCS_DIR / "source/_templates" + BENCHMARK_DIR = DOCS_DIR / "source/benchmarking" + METRICS_DIR = DATA_DIR / "metrics" + + ONTOLOGY_DIR.mkdir(parents=True, exist_ok=True) + DATASET_DIR.mkdir(parents=True, exist_ok=True) + BENCHMARK_DIR.mkdir(parents=True, exist_ok=True) + METRICS_DIR.mkdir(parents=True, exist_ok=True) + + processor = Processor(datasets_dir=DATASET_DIR, templates_dir=TEMPLATES_DIR, benchmark_dir=BENCHMARK_DIR, metrics_dir=METRICS_DIR) + + large_ontologies = [ + # (YAGO(), "general_knowledge/yago_facts.ttl"), + # (BattINFO(), "materials_science_&_engineering/battinfo.ttl"), + # (PRIMA(), "materials_science_&_engineering/prima.ttl"), # large + # (NCIt(), "medicine/ncit.owl"), + # (PRotein(), "medicine/protein.rdf"), + ] + + # ontologies = [ + # # Agricultural Ontologies + # (FoodOn(), "agricultural/foodon.owl"), + # (AGROVOC(), "agricultural/AGROVOC.rdf"), + # (PO(), "agricultural/plant.owl"), + # + # # Arts and Humanities Ontologies + # (ChordOntology(), "arts_&_humanities/chord.rdf"), + # (ICON(), "arts_&_humanities/icon.owl"), + # (MusicOntology(), "arts_&_humanities/music.rdf"), + # (Nomisma(), "arts_&_humanities/nomisma.ttl"), + # (TimelineOntology(), "arts_&_humanities/timeline.rdf"), + # + # # # Biology & Life Sciences Ontologies + # (BioPAX(), "biology_&_life_sciences/biopax.owl"), + # (EFO(), "biology_&_life_sciences/efo.owl"), + # (GO(), "biology_&_life_sciences/gene.owl"), + # (LIFO(), "biology_&_life_sciences/life.owl"), + # (MarineTLO(), "biology_&_life_sciences/marine_tlo.owl"), + # (MGED(), "biology_&_life_sciences/mged.owl"), + # (Microscopy(), "biology_&_life_sciences/pmd_mo.ttl"), + # (NPO(), "biology_&_life_sciences/npo_asserted.owl"), + # (PATO(), "biology_&_life_sciences/pato.owl"), + # + # # # Chemistry Ontologies + # (AFO(), "chemistry/afo.ttl"), + # (ChEBI(), "chemistry/chebi.owl"), + # (CHEMINF(), "chemistry/cheminf.owl"), + # (CHIRO(), "chemistry/chiro.owl"), + # (ChMO(), "chemistry/ChMO.owl"), + # (FIX(), "chemistry/fix.owl"), + # (MassSpectrometry(), "chemistry/mass_spectrometry.owl"), + # (MOP(), "chemistry/mop.owl"), + # (NMRCV(), "chemistry/NMRCV.owl"), + # (OntoKin(), "chemistry/ontokin.owl"), + # (PROCO(), "chemistry/proco.owl"), + # (PSIMOD(), "chemistry/psi-mod.owl"), + # (REX(), "chemistry/rex.owl"), + # (RXNO(), "chemistry/rxno.owl"), + # (VIBSO(), "chemistry/vibso.owl"), + # + # # Ecology & Environment Ontologies + # (ENVO(), "ecology_&_environment/envo.owl"), + # (OEO(), "ecology_&_environment/oeo.owl"), + # (SWEET(), "ecology_&_environment/sweet.owl"), + # + # # Education Ontologies + # (BIBFRAME(), "education/bibframe.rdf"), + # (Common(), "education/common.rdf"), + # (DoCO(), "education/doco.rdf"), + # + # # # Event Ontologies + # (ConferenceOntology(), "events/conference.owl"), + # (iCalendar(), "events/icalendar.rdf"), + # (LODE(), "events/lode.rdf"), + # + # # Finance Ontologies + # (GoodRelations(), "finance/good_relations.owl"), + # + # # Food & Beverage Ontologies + # (Wine(), "food_&_beverage/wine.rdf"), + # + # # # General Knowledge Ontologies + # (CCO(), "general_knowledge/cco.ttl"), + # (DBpedia(), "general_knowledge/dbpedia.owl"), + # (DublinCore(), "general_knowledge/dublin_core.rdf"), + # (EDAM(), "general_knowledge/edam.owl"), + # (GIST(), "general_knowledge/gist.rdf"), + # (IAO(), "general_knowledge/iao.owl"), + # (PROV(), "general_knowledge/prov.owl"), + # (RO(), "general_knowledge/ro.owl"), + # (SchemaOrg(), "general_knowledge/schema_org.owl"), + # (UMBEL(), "general_knowledge/umbel.n3"), + # # (YAGO(), "general_knowledge/yago_facts.ttl"), # large + # + # # Geography Ontologies + # (GEO(), "geography/geo.owl"), + # (GeoNames(), "geography/geonames.rdf"), + # (GTS(), "geography/gts.ttl"), + # (Juso(), "geography/juso.ttl"), + # + # # Industry + # (AUTO(), "industry/auto.rdf"), + # (DBO(), "industry/dbo.rdf"), + # (DOAP(), "industry/doap.rdf"), + # (IOF(), "industry/iof.rdf"), + # (PTO(), "industry/pto.rdf"), + # (TUBES(), "industry/tubes.rdf"), + # + # # Law Ontologies + # (CopyrightOnto(), "law/copyright.ttl"), + # + # # Library & Cultural Heritage + # (GND(), "library_&_cultural_heritage/gnd.rdf"), + # + # # Livestock Ontologies + # (ATOL(), "livestock/atol.owl"), + # + # # Materials Science & Engineering + # (AMOntology(), "materials_science_&_engineering/am_ontology.ttl"), + # (ASMO(), "materials_science_&_engineering/asmo.owl"), + # (Atomistic(), "materials_science_&_engineering/atomistic.ttl"), + # # (BattINFO(), "materials_science_&_engineering/battinfo.ttl"), # large + # (BMO(), "materials_science_&_engineering/bmo.ttl"), + # (BVCO(), "materials_science_&_engineering/bvco.ttl"), + # (CDCO(), "materials_science_&_engineering/cdco.owl"), + # (CHAMEO(), "materials_science_&_engineering/chameo.ttl"), + # (CIFCore(), "materials_science_&_engineering/cif_core.ttl"), + # (CMSO(), "materials_science_&_engineering/cmso.owl"), + # (EMMOCrystallography(), "materials_science_&_engineering/crystallography.ttl"), + # (DISO(), "materials_science_&_engineering/diso.owl"), + # (DSIM(), "materials_science_&_engineering/dsim.owl"), + # (EMMO(), "materials_science_&_engineering/emmo.owl"), + # (FSO(), "materials_science_&_engineering/fso.ttl"), + # (GPO(), "materials_science_&_engineering/gpo.ttl"), + # (HPOnt(), "materials_science_&_engineering/heat_pump.owl"), + # (LDO(), "materials_science_&_engineering/ldo.owl"), + # (LPBFO(), "materials_science_&_engineering/lpbfo.owl"), + # (MAMBO(), "materials_science_&_engineering/mambo.owl"), + # (MAT(), "materials_science_&_engineering/mat.rdf"), + # (MaterialInformation(), "materials_science_&_engineering/material_information.owl"), + # (MMO(), "materials_science_&_engineering/mmo.rdf"), + # (MatOnto(), "materials_science_&_engineering/materials_ontology.owl"), + # (MatVoc(), "materials_science_&_engineering/matvoc.rdf"), + # (MatWerk(), "materials_science_&_engineering/mwo.ttl"), + # (MDO(), "materials_science_&_engineering/mdo.owl"), + # (MDS(), "materials_science_&_engineering/mds.ttl"), + # (MechanicalTesting(), "materials_science_&_engineering/mechanical_testing.owl"), + # (MicroStructures(), "materials_science_&_engineering/microstructure.owl"), + # (MOLBRINELL(), "materials_science_&_engineering/molbrinell.ttl"), + # (MOLTENSILE(), "materials_science_&_engineering/moltensile.rdf"), + # (MSEO(), "materials_science_&_engineering/mseo.ttl"), + # (MSLE(), "materials_science_&_engineering/msle.ttl"), + # (NanoMine(), "materials_science_&_engineering/nanomine.ttl"), + # (OIEManufacturing(), "materials_science_&_engineering/oie-manufacturing.ttl"), + # (OIEMaterials(), "materials_science_&_engineering/oie-materials.ttl"), + # (OIESoftware(), "materials_science_&_engineering/oie-software.ttl"), + # (OIEModels(), "materials_science_&_engineering/oie-models.ttl"), + # (OntoCAPE(language='en', base_dir=str(ONTOLOGY_DIR / "materials_science_&_engineering")), "materials_science_&_engineering/OntoCAPE/OntoCAPE.owl"), + # (ONTORULE(), "materials_science_&_engineering/ontorule.ttl"), + # (PeriodicTable(), "materials_science_&_engineering/periodic-table.owl"), + # (Photovoltaics(), "materials_science_&_engineering/photovoltaics.ttl"), + # (PLDO(), "materials_science_&_engineering/pldo.owl"), + # (PMDco(), "materials_science_&_engineering/pmdco.owl"), + # (PODO(), "materials_science_&_engineering/podo.owl"), + # # (PRIMA(), "materials_science_&_engineering/prima.ttl"), # large + # (SSN(), "materials_science_&_engineering/ssn.ttl"), + # (SystemCapabilities(), "materials_science_&_engineering/system_capabilities.owl"), + # (VIMMP(), "materials_science_&_engineering/vimmp.owl"), + # + # # Medicine Ontologies + # (BTO(), "medicine/bto.owl"), + # (DEB(), "medicine/deb.owl"), + # (DOID(), "medicine/doid.owl"), + # (ENM(), "medicine/enm.owl"), + # (MFOEM(), "medicine/mfoem.owl"), + # # (NCIt(), "medicine/ncit.owl"), # large + # (OBI(), "medicine/obi.owl"), + # # (PRotein(), "medicine/protein.rdf"), # large + # + # # News & Media Ontologies + # (BBC(), "news_&_media/bbc.ttl"), + # (BBCBusiness(), "news_&_media/business.ttl"), + # (BBCCMS(), "news_&_media/cms.ttl"), + # (BBCCoreConcepts(), "news_&_media/core_concepts.ttl"), + # (BBCCreativeWork(), "news_&_media/creative_work.ttl"), + # (BBCFood(), "news_&_media/food.ttl"), + # (BBCPolitics(), "news_&_media/politics.ttl"), + # (BBCProgrammes(), "news_&_media/programmes.ttl"), + # (BBCProvenance(), "news_&_media/provenance.ttl"), + # (BBCSport(), "news_&_media/sport.ttl"), + # (BBCStoryline(), "news_&_media/storyline.ttl"), + # (BBCWildlife(), "news_&_media/wildlife.ttl"), + # + # # Scholarly Knowledge Ontologies + # (AIISO(), "scholarly_knowledge/aiiso.rdf"), + # (CiTO(), "scholarly_knowledge/cito.owl"), + # (CSO(), "scholarly_knowledge/cso.owl"), + # (DataCite(), "scholarly_knowledge/datacite.rdf"), + # (DCAT(), "scholarly_knowledge/dcat.rdf"), + # (DUO(), "scholarly_knowledge/duo.owl"), + # (EURIO(), "scholarly_knowledge/eurio.rdf"), + # (EXPO(), "scholarly_knowledge/expo.owl"), + # (FRAPO(), "scholarly_knowledge/frapo.rdf"), + # (FRBRoo(), "scholarly_knowledge/frbroo.rdf"), + # (LexInfo(), "scholarly_knowledge/lexinfo.rdf"), + # # (M4I(), "scholarly_knowledge/metadata4ing.ttl"), + # (Metadata4Ing(), "scholarly_knowledge/metadata4ing.ttl"), + # (NFDIcore(), "scholarly_knowledge/nfdi.owl"), + # (OBOE(), "scholarly_knowledge/oboe.owl"), + # (OPMW(), "scholarly_knowledge/opmw.owl"), + # (PPlan(), "scholarly_knowledge/pplan.owl"), + # (PreMOn(), "scholarly_knowledge/premon.owl"), + # (SEPIO(), "scholarly_knowledge/sepio.owl"), + # (SPDocument(), "scholarly_knowledge/sp_document.owl"), + # (SPWorkflow(), "scholarly_knowledge/sp_workflow.owl"), + # (SWO(), "scholarly_knowledge/swo.owl"), + # (TribAIn(), "scholarly_knowledge/tribain.ttl"), + # (VOAF(), "scholarly_knowledge/voaf.rdf"), + # (WiLD(), "scholarly_knowledge/wild.ttl"), + # + # # Social Sciences + # (AS2(), "social_sciences/as2.ttl"), + # (BIO(), "social_sciences/bio.rdf",), + # (Contact(), "social_sciences/contact.rdf"), + # (FOAF(), "social_sciences/foaf.rdf"), + # (SIOC(), "social_sciences/sioc.rdf"), + # + # # # Units and Measurements + # (OM(), "units_and_measurements/om.rdf"), + # (OWLTime(), "units_and_measurements/owl_time.ttl"), + # (QUDT(), "units_and_measurements/qudt.ttl"), + # (QUDV(), "units_and_measurements/qudv.owl"), + # (UO(), "units_and_measurements/uo.owl"), + # + # # Upper Ontologies + # (BFO(), "upper_ontologies/bfo.owl"), + # (DOLCE(), "upper_ontologies/dolce.owl"), + # (FAIR(), "upper_ontologies/fair.owl"), + # (GFO(), "upper_ontologies/gfo.owl"), + # (SIO(), "upper_ontologies/sio.owl"), + # (SUMO(), "upper_ontologies/sumo.owl"), + # + # # Web Ontologies + # (Hydra(), "web_&_internet/hydra.jsonld"), + # (SAREF(), "web_&_internet/saref.rdf"), + # ] + + # Process each ontology + for ontology, filename in large_ontologies: + ontology_path = ONTOLOGY_DIR / filename + + metrics: OntologyMetrics = processor.process_ontology( + ontology=ontology, + ontology_path=ontology_path + ) + + if metrics: + logger.info(f"\n{'=' * 20} {ontology.ontology_id} Metrics {'=' * 20}") + logger.info("Basic graph metrics:") + logger.info(f"Total nodes: {metrics.topology.total_nodes}") + logger.info(f"Total edges: {metrics.topology.total_edges}") + logger.info(f"Graph density: {metrics.topology.num_root_nodes}") + logger.info(f"Number of leaf nodes: {metrics.topology.num_leaf_nodes}") + + logger.info("Knowledge coverage:") + logger.info(f"Number of classes: {metrics.topology.num_classes}") + logger.info(f"Number of properties: {metrics.topology.num_properties}") + logger.info(f"Number of individuals: {metrics.topology.num_individuals}") + + logger.info("Hierarchical metrics:") + logger.info(f"Maximum depth: {metrics.topology.max_depth}") + logger.info(f"Minimum depth: {metrics.topology.min_depth}") + logger.info(f"Average depth: {metrics.topology.avg_depth:.2f}") + logger.info(f"Depth variance: {metrics.topology.depth_variance:.2f}") + + logger.info("Breadth metrics:") + logger.info(f"Maximum breadth: {metrics.topology.max_breadth}") + logger.info(f"Minimum breadth: {metrics.topology.min_breadth}") + logger.info(f"Average breadth: {metrics.topology.avg_breadth:.2f}") + logger.info(f"Breadth variance: {metrics.topology.breadth_variance:.2f}") + + logger.info("Dataset metrics:") + logger.info(f"Number of term types: {metrics.dataset.num_term_types}") + logger.info(f"Number of taxonomic relations: {metrics.dataset.num_taxonomic_relations}") + logger.info(f"Number of non-taxonomic relations: {metrics.dataset.num_non_taxonomic_relations}") + logger.info(f"Average terms per type: {metrics.dataset.avg_terms:.2f}") + logger.info("=" * 60 + "\n") + + processor.export_metrics_to_excel() + + except Exception as e: + logger.error(f"Main execution failed: {e}") + raise + +if __name__ == "__main__": + main() From e9572c5535d8a223edc0b38b6cd5dc622d2fd1ed Mon Sep 17 00:00:00 2001 From: aioaneia Date: Fri, 25 Apr 2025 12:07:15 +0200 Subject: [PATCH 03/37] :sparkles: added battinfo ontology. fixed GEO ontology --- docs/source/benchmarking/benchmark.rst | 1 + .../battinfo.rst | 71 +++++++++++++++++++ ontolearner/ontology/geography.py | 4 -- requirements.txt | 2 + 4 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 docs/source/benchmarking/materials_science_&_engineering/battinfo.rst diff --git a/docs/source/benchmarking/benchmark.rst b/docs/source/benchmarking/benchmark.rst index 8692667..0ea6a63 100644 --- a/docs/source/benchmarking/benchmark.rst +++ b/docs/source/benchmarking/benchmark.rst @@ -209,6 +209,7 @@ Ontologies related to materials, their structure, properties, processing, and en materials_science_&_engineering/amontology.rst materials_science_&_engineering/asmo.rst materials_science_&_engineering/atomistic.rst + materials_science_&_engineering/battinfo.rst materials_science_&_engineering/bmo.rst materials_science_&_engineering/bvco.rst materials_science_&_engineering/cdco.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/battinfo.rst b/docs/source/benchmarking/materials_science_&_engineering/battinfo.rst new file mode 100644 index 0000000..0ff899f --- /dev/null +++ b/docs/source/benchmarking/materials_science_&_engineering/battinfo.rst @@ -0,0 +1,71 @@ +Battery Interface Ontology (BattINFO) +======================================================================================================================== + +Overview +-------- +BattINFO is a foundational resource for harmonizing battery knowledge representation +and enhancing data interoperability. The primary objective is to provide the necessary tools +to create FAIR (Findable, Accessible, Interoperable, Reusable) battery data +that can be integrated into the Semantic Web. + +:Domain: Materials Science & Engineering +:Category: Materials Science +:Current Version: None +:Last Updated: None +:Creator: None +:License: None +:Format: TTL +:Download: `Battery Interface Ontology (BattINFO) Homepage `_ + +Graph Metrics +------------- + - **Total Nodes**: 27319 + - **Total Edges**: 50787 + - **Root Nodes**: 2855 + - **Leaf Nodes**: 16852 + +Knowledge coverage +------------------ + - Classes: 4431 + - Individuals: 7 + - Properties: 304 + +Hierarchical metrics +-------------------- + - **Maximum Depth**: 27 + - **Minimum Depth**: 0 + - **Average Depth**: 2.09 + - **Depth Variance**: 7.40 + +Breadth metrics +------------------ + - **Maximum Breadth**: 10695 + - **Minimum Breadth**: 7 + - **Average Breadth**: 827.86 + - **Breadth Variance**: 4644992.84 + +Dataset Statistics +------------------ +Generated Benchmarks: + - **Term Types**: 12 + - **Taxonomic Relations**: 23611 + - **Non-taxonomic Relations**: 66 + - **Average Terms per Type**: 6.00 + +Usage Example +------------- +.. code-block:: python + + from ontolearner.ontology import BattINFO + + # Initialize and load ontology + ontology = BattINFO() + ontology.load("path/to/ontology.owl") + + # Extract datasets + data = ontology.extract() + + # Access specific relations + term_types = data.term_typings + taxonomic_relations = data.type_taxonomies + non_taxonomic_relations = data.type_non_taxonomic_relations diff --git a/ontolearner/ontology/geography.py b/ontolearner/ontology/geography.py index aa1a4ef..b27845f 100644 --- a/ontolearner/ontology/geography.py +++ b/ontolearner/ontology/geography.py @@ -18,10 +18,6 @@ class GEO(BaseOntology): format = "OWL" download_url = "http://purl.obolibrary.org/obo/geo.owl" - def contains_imports(self) -> bool: - """Hook: Check if the ontology contains imports.""" - return True - class GeoNames(BaseOntology): """ diff --git a/requirements.txt b/requirements.txt index 4a251de..fdb3e19 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,3 +10,5 @@ tqdm~=4.67.1 pydantic~=2.11.3 pathlib~=1.0.1 setuptools~=78.1.0 +python-dotenv~=1.1.0 +huggingface-hub~=0.27.1 From b8f1312936822f22ae5cd7fa0a9e1fecd1b9e5d8 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Tue, 29 Apr 2025 10:33:32 +0200 Subject: [PATCH 04/37] :sparkles: added HF integration, added PRIMA ontology --- .../materials_science_&_engineering/prima.rst | 68 ++++++ requirements.txt | 1 + scripts/add_new_ontology.py | 2 +- scripts/hf_integration.py | 193 ++++++++++++++++++ 4 files changed, 263 insertions(+), 1 deletion(-) create mode 100644 docs/source/benchmarking/materials_science_&_engineering/prima.rst create mode 100644 scripts/hf_integration.py diff --git a/docs/source/benchmarking/materials_science_&_engineering/prima.rst b/docs/source/benchmarking/materials_science_&_engineering/prima.rst new file mode 100644 index 0000000..fbb534d --- /dev/null +++ b/docs/source/benchmarking/materials_science_&_engineering/prima.rst @@ -0,0 +1,68 @@ +PRovenance Information in MAterials science (PRIMA) +======================================================================================================================== + +Overview +-------- +An ontology that captures the provenance information in the materials science domain. + +:Domain: Materials Science & Engineering +:Category: Materials Science +:Current Version: 2.0 +:Last Updated: 2024-01-29 +:Creator: Ahmad Zainul Ihsan, Mehrdad Jalali, Rossella Aversa +:License: Creative Commons Attribution 3.0 Unported (CC BY 3.0) +:Format: TTL, OWL +:Download: `PRovenance Information in MAterials science (PRIMA) Homepage `_ + +Graph Metrics +------------- + - **Total Nodes**: 444 + - **Total Edges**: 1073 + - **Root Nodes**: 18 + - **Leaf Nodes**: 135 + +Knowledge coverage +------------------ + - Classes: 67 + - Individuals: 0 + - Properties: 67 + +Hierarchical metrics +-------------------- + - **Maximum Depth**: 14 + - **Minimum Depth**: 0 + - **Average Depth**: 4.39 + - **Depth Variance**: 16.39 + +Breadth metrics +------------------ + - **Maximum Breadth**: 27 + - **Minimum Breadth**: 2 + - **Average Breadth**: 7.80 + - **Breadth Variance**: 48.56 + +Dataset Statistics +------------------ +Generated Benchmarks: + - **Term Types**: 0 + - **Taxonomic Relations**: 1117 + - **Non-taxonomic Relations**: 1 + - **Average Terms per Type**: 0.00 + +Usage Example +------------- +.. code-block:: python + + from ontolearner.ontology import PRIMA + + # Initialize and load ontology + ontology = PRIMA() + ontology.load("path/to/ontology.owl") + + # Extract datasets + data = ontology.extract() + + # Access specific relations + term_types = data.term_typings + taxonomic_relations = data.type_taxonomies + non_taxonomic_relations = data.type_non_taxonomic_relations diff --git a/requirements.txt b/requirements.txt index fdb3e19..ee240e2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,3 +12,4 @@ pathlib~=1.0.1 setuptools~=78.1.0 python-dotenv~=1.1.0 huggingface-hub~=0.27.1 +pygit2~=1.18.0 diff --git a/scripts/add_new_ontology.py b/scripts/add_new_ontology.py index 3ef2264..28892ad 100644 --- a/scripts/add_new_ontology.py +++ b/scripts/add_new_ontology.py @@ -95,7 +95,7 @@ def main(): # (LODE(), "events/lode.rdf"), # # # Finance Ontologies - # (GoodRelations(), "finance/good_relations.owl"), + # (GoodRelations(), "finance/goodrelations.owl"), # # # Food & Beverage Ontologies # (Wine(), "food_&_beverage/wine.rdf"), diff --git a/scripts/hf_integration.py b/scripts/hf_integration.py new file mode 100644 index 0000000..84db18e --- /dev/null +++ b/scripts/hf_integration.py @@ -0,0 +1,193 @@ +import logging +from pathlib import Path +from typing import Union +import shutil +import json +from huggingface_hub import HfApi, Repository, login +from huggingface_hub.errors import RepositoryNotFoundError + +from ontolearner.ontology import * # noqa +from ontolearner.base import BaseOntology + +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' +) +logger = logging.getLogger(__name__) + +# Local directories +DATA_DIR = Path("../data") +DOCS_DIR = Path("../docs") +ONTOLOGY_DIR = DATA_DIR / "ontologies" +DATASET_DIR = DATA_DIR / "datasets" + +# Hugging Face +TMP_DIR = Path("./tmp") +HF_TOKEN = "hf_token" + + +def create_readme(ontology: BaseOntology) -> str: + """ + Generate a README file with ontology information and metrics. + """ + doc_string = ontology.__doc__.strip() if ontology.__doc__ else "No description available" + + readme = f"""# {ontology.ontology_full_name} Ontology Dataset + +## Description +{doc_string} + +## Metadata +- **Ontology ID:** {ontology.ontology_id} +- **Domain:** {ontology.domain} +- **Category:** {ontology.category} +- **Version:** {ontology.version} +- **Last Updated:** {ontology.last_updated} +- **Creator:** {ontology.creator} +- **License:** {ontology.license} +- **Format:** {ontology.format} +- **Download URL:** {ontology.download_url} + +## Dataset Files +This repository contains the following files: +1. `{ontology.ontology_id.lower()}.{ontology.format.lower()}` - The original ontology file +2. `term_typings.json` - Dataset of term to type mappings +3. `taxonomies.json` - Dataset of taxonomic relations +4. `non_taxonomic_relations.json` - Dataset of non-taxonomic relations + +## Usage +These datasets will be used for ontology learning. +""" + return readme + + +def push_to_huggingface(ontology: BaseOntology, ontology_path: Union[str, Path], dataset_dir: Path) \ + -> tuple[bool, str]: + """Returns (success_status, repo_name)""" + api = HfApi() + login(token=HF_TOKEN) + + repo_name = f"ontology-{ontology.ontology_id.lower().replace(' ', '-')}" + local_dir = TMP_DIR / repo_name + + try: + # Cleanup and prepare + if local_dir.exists(): + shutil.rmtree(local_dir) + local_dir.mkdir(parents=True) + + # Check/Create repo + try: + api.repo_info(repo_id=repo_name, repo_type="dataset") + logger.info(f"Repository {repo_name} exists. Cloning...") + repo = Repository(local_dir=local_dir, clone_from=repo_name, repo_type="dataset") + repo.git_pull() + except RepositoryNotFoundError: + logger.info(f"Creating new repository {repo_name}") + api.create_repo(repo_id=repo_name, repo_type="dataset", private=False) + repo = Repository(local_dir=local_dir, clone_from=repo_name, repo_type="dataset") + + # --- File Validation --- + required_files = [ + ontology_path, + dataset_dir / f"{ontology.domain.lower().replace(' ', '_')}" / + f"{ontology.ontology_id.lower().replace(' ', '_')}" / "term_typings.json", + ] + if not all(f.exists() for f in required_files): + logger.error(f"Missing files for {ontology.ontology_id}") + return False, repo_name + + # --- Copy Files --- + # README + readme_content = create_readme(ontology) # Your existing function + (local_dir / "README.md").write_text(readme_content) + + # Ontology file + ontology_filename = f"{ontology.ontology_id}.{ontology.format}" + shutil.copy2(ontology_path, local_dir / ontology_filename) + + # Datasets + domain_dir = dataset_dir / f"{ontology.domain.lower().replace(' ', '_')}" + ontology_dataset_dir = domain_dir / f"{ontology.ontology_id.lower().replace(' ', '_')}" + for f in ontology_dataset_dir.glob("*.json"): + shutil.copy2(f, local_dir) + + # Create dataset card (metadata.json) + metadata = { + "name": f"Ontology: {ontology.ontology_full_name}", + "description": ontology.__doc__.strip() if ontology.__doc__ else f"Dataset for {ontology.ontology_full_name} ontology", + "license": ontology.license if ontology.license else "unknown", + "tags": [ + "ontology", + ontology.domain.lower().replace("&", "and").replace(" ", "-"), + "knowledge-graph" + ] + } + with open(local_dir / "dataset_infos.json", "w", encoding="utf-8") as f: + json.dump(metadata, f, indent=2) + + # --- Push --- + repo.git_add(auto_lfs_track=True) + repo.git_commit("Update datasets and ontology") + repo.git_push() + logger.info(f"Pushed to https://huggingface.co/datasets/{repo_name}") + return True, repo_name + + except Exception as e: + logger.error(f"Failed to process {ontology.ontology_id}: {str(e)}", exc_info=True) + return False, repo_name + finally: + if local_dir.exists(): + shutil.rmtree(local_dir) + + +def main(): + try: + ontologies = [ + # Agricultural Ontologies + # (FoodOn(), "agricultural/foodon.owl"), + # (AGROVOC(), "agricultural/AGROVOC.rdf"), + # (PO(), "agricultural/plant.owl"), + # + # # Arts and Humanities Ontologies + # (ChordOntology(), "arts_&_humanities/chord.rdf"), + # (ICON(), "arts_&_humanities/icon.owl"), + # (MusicOntology(), "arts_&_humanities/music.rdf"), + # # Add all other ontologies here... + # + # # Large ontologies + # (BattINFO(), "materials_science_&_engineering/battinfo.ttl"), + # (PRIMA(), "materials_science_&_engineering/prima.ttl"), + # (NCIt(), "medicine/ncit.owl"), + # (PRotein(), "medicine/protein.rdf"), + ] + + successes = 0 + failures = 0 + + for ontology, filename in ontologies: + ontology_path = ONTOLOGY_DIR / filename + + if not ontology_path.exists(): + logger.warning(f"Ontology file not found: {ontology_path}. Skipping.") + continue + + success, _ = push_to_huggingface( + ontology=ontology, + ontology_path=ontology_path, + dataset_dir=DATASET_DIR + ) + + if success: + successes += 1 + else: + failures += 1 + + logger.info(f"Completed processing all ontologies. Successes: {successes}, Failures: {failures}") + except Exception as e: + logger.error(f"Main execution failed: {e}", exc_info=True) + raise + + +if __name__ == "__main__": + main() From 349db1b4a9a3b26327fbd617c3e10baa15d06174 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Tue, 29 Apr 2025 10:34:38 +0200 Subject: [PATCH 05/37] :sparkles: added plots --- scripts/plots.py | 293 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 293 insertions(+) create mode 100644 scripts/plots.py diff --git a/scripts/plots.py b/scripts/plots.py new file mode 100644 index 0000000..15522a4 --- /dev/null +++ b/scripts/plots.py @@ -0,0 +1,293 @@ +import pandas as pd +import matplotlib.pyplot as plt +from matplotlib.ticker import ScalarFormatter +import seaborn as sns +import numpy as np +from pathlib import Path + + +# Set the style +plt.style.use('fivethirtyeight') +sns.set_palette("viridis") + +# Read the Excel file +file_path = Path("../data/metrics/metrics copy.xlsx") +df = pd.read_excel(file_path) + +# Display basic information about the dataset +print(f"Dataset shape: {df.shape}") +print("\nColumn names:") +for col in df.columns: + print(f"- {col}") + +print("\nFirst few rows:") +print(df.head()) + +# Create a directory for saving plots +output_dir = Path("ontology_plots") +output_dir.mkdir(exist_ok=True) + + +# Plot 1: Distribution of ontologies by domain +plt.figure(figsize=(12, 8)) +domain_counts = df['Domain'].value_counts() +sns.barplot(x=domain_counts.index, y=domain_counts.values) +plt.title('Number of Ontologies by Domain', fontsize=16) +plt.xlabel('Domain', fontsize=14) +plt.ylabel('Count', fontsize=14) +plt.xticks(rotation=45, ha='right') +plt.tight_layout() +plt.savefig(output_dir / "ontologies_by_domain.png", dpi=300) +plt.close() + +print("Created visualization: Distribution of ontologies by domain") + +# Plot 3: Size comparison of ontologies (by total nodes and edges) +plt.figure(figsize=(16, 10)) +df_sorted = df.sort_values('total_nodes', ascending=False) +top_n = min(20, len(df_sorted)) # Show top 20 or all if fewer + +x = np.arange(top_n) +width = 0.4 + +ax = plt.subplot(111) +bar1 = ax.bar(x - width/2, df_sorted['total_nodes'].head(top_n), width, label='Total Nodes') +bar2 = ax.bar(x + width/2, df_sorted['total_edges'].head(top_n), width, label='Total Edges') + +plt.xlabel('Ontology', fontsize=14) +plt.ylabel('Count', fontsize=14) +plt.title('Ontology Size Comparison (Top 20)', fontsize=16) +plt.xticks(x, df_sorted['Ontology ID'].head(top_n), rotation=45, ha='right') +plt.legend() +plt.tight_layout() +plt.savefig(output_dir / "ontology_size_comparison.png", dpi=300) +plt.close() + +print("Created visualization: Size comparison of ontologies") + +# Plot 4: Depth vs. Breadth analysis +plt.figure(figsize=(12, 10)) +scatter = plt.scatter(df['max_depth'], df['max_breadth'], + s=df['total_nodes']/10, # Size points by number of nodes + alpha=0.6, + c=pd.factorize(df['Domain'])[0], # Color by domain + cmap='viridis') + +# Add ontology IDs as labels for the largest ontologies +threshold = df['total_nodes'].quantile(0.75) # Label top 25% by size +for i, row in df[df['total_nodes'] > threshold].iterrows(): + plt.annotate(row['Ontology ID'], + (row['max_depth'], row['max_breadth']), + xytext=(5, 5), textcoords='offset points') + +plt.title('Ontology Structure: Max Depth vs. Max Breadth', fontsize=16) +plt.xlabel('Maximum Depth', fontsize=14) +plt.ylabel('Maximum Breadth', fontsize=14) +plt.colorbar(scatter, label='Domain') +plt.grid(True, alpha=0.3) +plt.tight_layout() +plt.savefig(output_dir / "depth_vs_breadth.png", dpi=300) +plt.close() + +print("Created visualization: Depth vs. Breadth analysis") + +# Plot 5: Distribution of classes, properties, and individuals +plt.figure(figsize=(16, 10)) +df_sorted = df.sort_values('num_classes', ascending=False) +top_n = min(15, len(df_sorted)) # Show top 15 or all if fewer + +# Create the grouped bar chart +x = np.arange(top_n) +width = 0.25 + +fig, ax = plt.subplots(figsize=(16, 10)) +bar1 = ax.bar(x - width, df_sorted['num_classes'].head(top_n), width, label='Classes') +bar2 = ax.bar(x, df_sorted['num_properties'].head(top_n), width, label='Properties') +bar3 = ax.bar(x + width, df_sorted['num_individuals'].head(top_n), width, label='Individuals') + +ax.set_xlabel('Ontology', fontsize=14) +ax.set_ylabel('Count', fontsize=14) +ax.set_title('Knowledge Component Distribution (Top 15 Ontologies)', fontsize=16) +ax.set_xticks(x) +ax.set_xticklabels(df_sorted['Ontology ID'].head(top_n), rotation=45, ha='right') +ax.legend() + +plt.tight_layout() +plt.savefig(output_dir / "knowledge_component_distribution.png", dpi=300) +plt.close() + +print("Created visualization: Knowledge component distribution") + + +# Plot 6: Hierarchical structure analysis - comparing depth metrics +plt.figure(figsize=(14, 8)) + +# Create box plots for depth metrics grouped by domain +top_domains = df['Domain'].value_counts().index.tolist() +df_filtered = df[df['Domain'].isin(top_domains)] + +sns.boxplot(x='Domain', y='avg_depth', data=df_filtered) +plt.title('Average Depth Distribution by Domain', fontsize=16) +plt.xlabel('Domain', fontsize=14) +plt.ylabel('Average Depth', fontsize=14) +plt.xticks(rotation=45, ha='right') +plt.tight_layout() +plt.savefig(output_dir / "depth_by_domain.png", dpi=300) +plt.close() + +print("Created visualization: Hierarchical structure analysis") + + +# Plot 7: Relationship analysis - taxonomic vs. non-taxonomic relations +plt.figure(figsize=(12, 8)) + +# Calculate the ratio of taxonomic to non-taxonomic relations +df['taxonomic_ratio'] = df['num_taxonomic_relations'] / (df['num_non_taxonomic_relations'] + 1) # Add 1 to avoid division by zero + +# Create a scatter plot +plt.scatter(df['num_taxonomic_relations'], df['num_non_taxonomic_relations'], + s=df['total_nodes']/10, alpha=0.7, + c=df['taxonomic_ratio'], cmap='plasma') + +plt.title('Taxonomic vs. Non-Taxonomic Relations', fontsize=16) +plt.xlabel('Taxonomic Relations', fontsize=14) +plt.ylabel('Non-Taxonomic Relations', fontsize=14) +plt.xscale('log') +plt.yscale('log') +plt.colorbar(label='Taxonomic Ratio (higher = more taxonomic)') +plt.grid(True, alpha=0.3) + +# Add ontology IDs as labels for interesting cases +# Label ontologies with high counts in either dimension +threshold_tax = df['num_taxonomic_relations'].quantile(0.9) +threshold_nontax = df['num_non_taxonomic_relations'].quantile(0.9) +for i, row in df[(df['num_taxonomic_relations'] > threshold_tax) | + (df['num_non_taxonomic_relations'] > threshold_nontax)].iterrows(): + plt.annotate(row['Ontology ID'], + (row['num_taxonomic_relations'], row['num_non_taxonomic_relations']), + xytext=(5, 5), textcoords='offset points') + +plt.tight_layout() +plt.savefig(output_dir / "relation_type_analysis.png", dpi=300) +plt.close() + +print("Created visualization: Relationship type analysis") + + +plt.figure(figsize=(10, 6)) +plt.scatter(df['num_taxonomic_relations'], df['num_non_taxonomic_relations'], + s=df['total_nodes']/1000, c=df['avg_depth'], cmap='coolwarm') +plt.colorbar(label='Average Depth') +plt.xlabel('Taxonomic Relations') +plt.ylabel('Non-taxonomic Relations') +plt.title('Relationship Type Distribution\n(Size = Total Nodes/1000, Color = Avg Depth)') +plt.grid(True) +plt.xscale('log') +plt.yscale('log') +plt.show() + + +def improved_relationship_scatter(df, min_size=20, max_size=1500, save_path=None): + """ + Create an enhanced scatter plot showing the distribution of taxonomic vs non-taxonomic + relations in ontologies, with node count represented by marker size and depth by color. + """ + # Create a new figure with a specific size and higher DPI for better resolution + plt.figure(figsize=(14, 10), dpi=120) + + # Add a small constant to avoid log(0) issues + epsilon = 0.1 + tax_relations = df['num_taxonomic_relations'] + epsilon + nontax_relations = df['num_non_taxonomic_relations'] + epsilon + + # Create a ratio metric to identify interesting outliers + df['relation_ratio'] = tax_relations / nontax_relations + + # Calculate sizes with better scaling - using square root scaling for more perceptual accuracy + # and clamping to avoid extremely small or large points + sizes = np.sqrt(df['total_nodes']) + sizes = sizes / sizes.max() * max_size + sizes = sizes.clip(min_size, max_size) + + # Create the scatter plot + scatter = plt.scatter( + tax_relations, + nontax_relations, + s=sizes, + c=df['avg_depth'], + cmap='viridis', # Changed to viridis which is better for continuous data + alpha=0.7, # Add some transparency + edgecolors='white', # Add white edge for better visibility + linewidths=0.5 + ) + + # Add a colorbar with a more descriptive label and better formatting + cbar = plt.colorbar(scatter) + cbar.set_label('Average Hierarchical Depth', fontsize=12) + cbar.ax.tick_params(labelsize=10) + + # Add diagonal reference lines + # max_val = max(tax_relations.max(), nontax_relations.max()) + + # Diagonal line where taxonomic = non-taxonomic + # plt.plot([epsilon, max_val], [epsilon, max_val], 'k--', alpha=0.3, label='Equal Relations') + # plt.plot([epsilon, max_val], [epsilon*10, max_val*10], 'r--', alpha=0.3, label='10x Non-taxonomic') + # plt.plot([epsilon*10, max_val*10], [epsilon, max_val], 'g--', alpha=0.3, label='10x Taxonomic') + + # Add a legend for the reference lines + plt.legend(loc='upper left', frameon=True, fontsize=10) + + # Annotate notable ontologies + # 1. Ontologies with the highest total nodes + top_by_size = df.nlargest(3, 'total_nodes') + + # 2. Ontologies with extreme ratios of taxonomic:non-taxonomic + top_tax_ratio = df.nlargest(2, 'relation_ratio') + top_nontax_ratio = df.nsmallest(2, 'relation_ratio') + + # Combine and remove duplicates + to_annotate = pd.concat([top_by_size, top_tax_ratio, top_nontax_ratio]).drop_duplicates() + + for _, row in to_annotate.iterrows(): + plt.annotate( + row['Ontology ID'], # Text label (assumes you have an ontology_id column) + (row['num_taxonomic_relations'] + epsilon, row['num_non_taxonomic_relations'] + epsilon), + xytext=(5, 5), # Small offset for text + textcoords='offset points', + fontsize=9, + fontweight='bold', + bbox=dict(boxstyle="round,pad=0.3", fc="white", ec="gray", alpha=0.8) + ) + + # Set axis scales to logarithmic, but with better formatting + plt.xscale('log') + plt.yscale('log') + + # Use ScalarFormatter to display actual values rather than powers of 10 + for axis in [plt.gca().xaxis, plt.gca().yaxis]: + axis.set_major_formatter(ScalarFormatter()) + + # Customize grid + plt.grid(True, linestyle='--', alpha=0.6) + + # Add labels and title with more context and information + plt.xlabel('Taxonomic Relations (log scale)', fontsize=12) + plt.ylabel('Non-taxonomic Relations (log scale)', fontsize=12) + plt.title('Ontology Relationship Type Distribution', fontsize=16, fontweight='bold') + + # Improve tick label readability + plt.xticks(fontsize=10) + plt.yticks(fontsize=10) + + # Adjust layout to make room for the title and subtitle + plt.tight_layout(rect=[0, 0, 1, 0.9]) + + # Save the figure if a path is provided + if save_path: + plt.savefig(save_path, dpi=300, bbox_inches='tight') + + return plt.gcf() # Return the figure object + +# Example usage: +fig = improved_relationship_scatter(df, save_path="ontology_relationships.png") +plt.show() From b44e94f0b3b422d0d69189b582db6ce13bc98522 Mon Sep 17 00:00:00 2001 From: Andrei Aioanei <87855404+aioaneia@users.noreply.github.com> Date: Wed, 30 Apr 2025 15:12:53 +0200 Subject: [PATCH 06/37] :sparkles: add functions to load ontologies and datasets from Hugging Face --- scripts/hf_integration.py | 88 ++++++++++++++++++++++++++++++++++----- 1 file changed, 78 insertions(+), 10 deletions(-) diff --git a/scripts/hf_integration.py b/scripts/hf_integration.py index 84db18e..6e12ada 100644 --- a/scripts/hf_integration.py +++ b/scripts/hf_integration.py @@ -1,11 +1,12 @@ import logging from pathlib import Path -from typing import Union +from typing import Union, Any import shutil import json -from huggingface_hub import HfApi, Repository, login +from huggingface_hub import HfApi, Repository, login, hf_hub_download from huggingface_hub.errors import RepositoryNotFoundError +from ontolearner.data_structure import OntologyData from ontolearner.ontology import * # noqa from ontolearner.base import BaseOntology @@ -24,7 +25,7 @@ # Hugging Face TMP_DIR = Path("./tmp") HF_TOKEN = "hf_token" - +ORGANIZATION = "SciKnowOrg/OntoLearner" def create_readme(ontology: BaseOntology) -> str: """ @@ -87,7 +88,7 @@ def push_to_huggingface(ontology: BaseOntology, ontology_path: Union[str, Path], api.create_repo(repo_id=repo_name, repo_type="dataset", private=False) repo = Repository(local_dir=local_dir, clone_from=repo_name, repo_type="dataset") - # --- File Validation --- + # File Validation required_files = [ ontology_path, dataset_dir / f"{ontology.domain.lower().replace(' ', '_')}" / @@ -97,7 +98,7 @@ def push_to_huggingface(ontology: BaseOntology, ontology_path: Union[str, Path], logger.error(f"Missing files for {ontology.ontology_id}") return False, repo_name - # --- Copy Files --- + # Copy Files # README readme_content = create_readme(ontology) # Your existing function (local_dir / "README.md").write_text(readme_content) @@ -126,7 +127,7 @@ def push_to_huggingface(ontology: BaseOntology, ontology_path: Union[str, Path], with open(local_dir / "dataset_infos.json", "w", encoding="utf-8") as f: json.dump(metadata, f, indent=2) - # --- Push --- + # Push repo.git_add(auto_lfs_track=True) repo.git_commit("Update datasets and ontology") repo.git_push() @@ -141,14 +142,81 @@ def push_to_huggingface(ontology: BaseOntology, ontology_path: Union[str, Path], shutil.rmtree(local_dir) +def load_from_huggingface(ontology_id: str) -> Tuple[BaseOntology, OntologyData]: + """Load ontology and datasets from Hugging Face""" + repo_name = f"ontology-{ontology_id.lower().replace(' ', '-')}" + local_dir = TMP_DIR / repo_name + + # Clone repository + try: + repo = Repository(local_dir=local_dir, clone_from=repo_name, repo_type="dataset") + + # Load ontology file + ontology_files = list(local_dir.glob("*.owl")) + list(local_dir.glob("*.rdf")) + list(local_dir.glob("*.ttl")) + + if not ontology_files: + raise FileNotFoundError("No ontology file found") + + # Instantiate the correct ontology class based on ID + ontology_class = get_ontology_class_by_id(ontology_id) + ontology = ontology_class() + + # Load datasets + datasets = OntologyData( + term_typings=json.loads((local_dir / "term_typings.json").read_text()), + type_taxonomies=json.loads((local_dir / "type_taxonomies.json").read_text()), + type_non_taxonomic_relations=json.loads((local_dir / "non_taxonomic_relations.json").read_text()) + ) + + return ontology, datasets + finally: + if local_dir.exists(): + shutil.rmtree(local_dir) + + +def load_ontology_from_hf(ontology_id: str, cache_dir: Path) -> tuple[Path, dict[Any, Any]]: + repo_id = f"ontology-{ontology_id.lower().replace(' ', '-')}" + + # Download ontology file (you'll need to know the format) + ontology_file = hf_hub_download( + repo_id=repo_id, + filename=f"{ontology_id}.owl", # or other format + repo_type="dataset", + cache_dir=cache_dir + ) + + # Download datasets if needed + datasets = {} + for dataset_file in ["term_typings.json", "taxonomies.json", "non_taxonomic_relations.json"]: + try: + datasets[dataset_file] = hf_hub_download( + repo_id=repo_id, + filename=dataset_file, + repo_type="dataset", + cache_dir=cache_dir + ) + except: + logger.warning(f"Dataset file {dataset_file} not found in repository") + + return Path(ontology_file), datasets + + +def get_ontology_class_by_id(ontology_id: str) -> type[BaseOntology]: + """Returns the ontology class based on the ontology ID""" + for cls in BaseOntology.__subclasses__(): + if cls.ontology_id == ontology_id: + return cls + raise ValueError(f"No ontology class found for ID: {ontology_id}") + + def main(): try: ontologies = [ # Agricultural Ontologies - # (FoodOn(), "agricultural/foodon.owl"), - # (AGROVOC(), "agricultural/AGROVOC.rdf"), - # (PO(), "agricultural/plant.owl"), - # + (FoodOn(), "agricultural/foodon.owl"), + (AGROVOC(), "agricultural/agrovoc.rdf"), + (PO(), "agricultural/po.owl"), + # # Arts and Humanities Ontologies # (ChordOntology(), "arts_&_humanities/chord.rdf"), # (ICON(), "arts_&_humanities/icon.owl"), From 31c3a769ab8d14e2446fae10d69bff98311db076 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Fri, 2 May 2025 15:09:52 +0200 Subject: [PATCH 07/37] :sparkles: refactor Hugging Face integration for domain-based --- scripts/hf_integration.py | 324 +++++++++++++++++++++++++++----------- 1 file changed, 232 insertions(+), 92 deletions(-) diff --git a/scripts/hf_integration.py b/scripts/hf_integration.py index 84db18e..111cb5f 100644 --- a/scripts/hf_integration.py +++ b/scripts/hf_integration.py @@ -1,73 +1,155 @@ -import logging from pathlib import Path -from typing import Union +from typing import Dict, List, Tuple +import os +import pandas as pd +from dotenv import find_dotenv, load_dotenv +import logging import shutil import json from huggingface_hub import HfApi, Repository, login from huggingface_hub.errors import RepositoryNotFoundError +from ontolearner.data_structure import OntologyMetrics, TopologyMetrics, DatasetMetrics from ontolearner.ontology import * # noqa from ontolearner.base import BaseOntology + logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) +_ = load_dotenv(find_dotenv()) + +huggingface_key = os.environ['HUGGINGFACE_ACCESS_TOKEN'] + # Local directories -DATA_DIR = Path("../data") -DOCS_DIR = Path("../docs") -ONTOLOGY_DIR = DATA_DIR / "ontologies" -DATASET_DIR = DATA_DIR / "datasets" +# Handle both cases: running from project root or from scripts directory +script_dir = Path(__file__).parent.absolute() +project_root = script_dir.parent + +# Check if data directory exists at project root or one level up +if (project_root / "data").exists(): + DATA_DIR = project_root / "data" + DOCS_DIR = project_root / "docs" +else: + # Fallback to original paths (for running from scripts directory) + DATA_DIR = Path("../data") + DOCS_DIR = Path("../docs") + +ONTOLOGIES_DIR = DATA_DIR / "ontologies" +DATASETS_DIR = DATA_DIR / "datasets" +BENCHMARK_DIR = DOCS_DIR / "source/benchmarking" +METRICS_FILE = DATA_DIR / "metrics" / "metrics.xlsx" # Hugging Face TMP_DIR = Path("./tmp") -HF_TOKEN = "hf_token" +ORGANIZATION = "SciKnowOrg/OntoLearner" -def create_readme(ontology: BaseOntology) -> str: +def copy_ontology_files(ontology: BaseOntology, domain_dir: Path, format: str): """ - Generate a README file with ontology information and metrics. + Copy ontology file and documentation to the domain directory. """ - doc_string = ontology.__doc__.strip() if ontology.__doc__ else "No description available" - - readme = f"""# {ontology.ontology_full_name} Ontology Dataset - -## Description -{doc_string} - -## Metadata -- **Ontology ID:** {ontology.ontology_id} -- **Domain:** {ontology.domain} -- **Category:** {ontology.category} -- **Version:** {ontology.version} -- **Last Updated:** {ontology.last_updated} -- **Creator:** {ontology.creator} -- **License:** {ontology.license} -- **Format:** {ontology.format} -- **Download URL:** {ontology.download_url} + # Create ontology-specific directory within the domain directory + ontology_dir = domain_dir / ontology.ontology_id.lower() + ontology_dir.mkdir(parents=True, exist_ok=True) + + # Copy ontology file from source to domain directory + source_file = ONTOLOGIES_DIR / ontology.domain.lower() / f"{ontology.ontology_id.lower()}.{format}" + if source_file.exists(): + shutil.copy2(source_file, ontology_dir / f"{ontology.ontology_id.lower()}.{format}") + logger.info(f"Copied ontology file: {source_file}") + else: + logger.warning(f"Ontology file not found at {source_file}. Skipping.") + + # Copy documentation file + doc_file = BENCHMARK_DIR / ontology.domain.lower() / f"{ontology.ontology_id.lower()}.rst" + if doc_file.exists(): + shutil.copy2(doc_file, ontology_dir / f"{ontology.ontology_id.lower()}.rst") + logger.info(f"Copied documentation file: {doc_file}") + else: + logger.warning(f"Documentation file not found at {doc_file}. Skipping.") + + # Copy dataset files + dataset_paths = [ + DATASETS_DIR / ontology.domain.lower() / ontology.ontology_id.lower() / "term_typings.json", + DATASETS_DIR / ontology.domain.lower() / ontology.ontology_id.lower() / "type_taxonomies.json", + DATASETS_DIR / ontology.domain.lower() / ontology.ontology_id.lower() / "type_non_taxonomic_relations.json" + ] + for path in dataset_paths: + if path.exists(): + shutil.copy2(path, ontology_dir / path.name) + logger.info(f"Copied dataset file: {path}") + else: + logger.warning(f"Dataset file not found at {path}. Skipping.") + + # dataset_path = DATASETS_DIR / ontology.domain.lower() / ontology.ontology_id.lower() + # if dataset_path.is_dir(): + # for file in dataset_path.glob("*.json"): + # shutil.copy2(file, ontology_dir) + # logger.info(f"Copied dataset file: {file}") + # else: + # logger.warning(f"Dataset path not found at {dataset_path}. Skipping.") + + +def create_domain_readme(domain: str, ontologies: List[BaseOntology], metrics: Dict[str, OntologyMetrics]) -> str: + """Generate a README file for a domain with a table of ontologies and their metrics.""" + # Convert domain name to proper title format + domain_title = domain.replace('_', ' ').title() + + readme = f""" +# {domain_title} Ontologies Dataset + +## Overview +This repository contains ontologies and their processed datasets for the {domain_title} domain. + +## Ontologies +| Ontology ID | Full Name | Classes | Properties | Terms | Last Updated | License | +|-------------|-----------|---------|------------|-------|--------------|---------| +""" + # Add a row for each ontology + for ontology in ontologies: + metrics_data = metrics.get(ontology.ontology_id) + if metrics_data: + num_classes = metrics_data.topology.num_classes + num_properties = metrics_data.topology.num_properties + num_terms = metrics_data.dataset.num_term_types + else: + num_classes = "N/A" + num_properties = "N/A" + num_terms = "N/A" + + readme += f"| {ontology.ontology_id} | {ontology.ontology_full_name} | {num_classes} | {num_properties} | {num_terms} | {ontology.last_updated} | {ontology.license} |\n" + + readme += """ ## Dataset Files -This repository contains the following files: -1. `{ontology.ontology_id.lower()}.{ontology.format.lower()}` - The original ontology file +Each ontology directory contains the following files: +1. `.` - The original ontology file 2. `term_typings.json` - Dataset of term to type mappings 3. `taxonomies.json` - Dataset of taxonomic relations 4. `non_taxonomic_relations.json` - Dataset of non-taxonomic relations +5. `.rst` - Documentation describing the ontology ## Usage -These datasets will be used for ontology learning. -""" +These datasets are intended for ontology learning research and applications. + """ + return readme -def push_to_huggingface(ontology: BaseOntology, ontology_path: Union[str, Path], dataset_dir: Path) \ - -> tuple[bool, str]: - """Returns (success_status, repo_name)""" +def push_domain_to_huggingface(domain: str, ontologies: List[BaseOntology], + metrics: Dict[str, OntologyMetrics]) -> Tuple[bool, str]: + """ + Push a domain with all its ontologies to Hugging Face as a single repository + """ api = HfApi() - login(token=HF_TOKEN) + login(token=huggingface_key) - repo_name = f"ontology-{ontology.ontology_id.lower().replace(' ', '-')}" + # Create repository name from domain + repo_name = f"SciKnowOrg/ontology-domain-{domain.lower().replace(' ', '-').replace('&', 'and')}" local_dir = TMP_DIR / repo_name try: @@ -87,95 +169,153 @@ def push_to_huggingface(ontology: BaseOntology, ontology_path: Union[str, Path], api.create_repo(repo_id=repo_name, repo_type="dataset", private=False) repo = Repository(local_dir=local_dir, clone_from=repo_name, repo_type="dataset") - # --- File Validation --- - required_files = [ - ontology_path, - dataset_dir / f"{ontology.domain.lower().replace(' ', '_')}" / - f"{ontology.ontology_id.lower().replace(' ', '_')}" / "term_typings.json", - ] - if not all(f.exists() for f in required_files): - logger.error(f"Missing files for {ontology.ontology_id}") - return False, repo_name + # Copy files for each ontology + for ontology in ontologies: + copy_ontology_files( + ontology=ontology, + domain_dir=local_dir, + format=ontology.format.lower() + ) - # --- Copy Files --- - # README - readme_content = create_readme(ontology) # Your existing function + # Create domain README + readme_content = create_domain_readme(domain, ontologies, metrics) (local_dir / "README.md").write_text(readme_content) - # Ontology file - ontology_filename = f"{ontology.ontology_id}.{ontology.format}" - shutil.copy2(ontology_path, local_dir / ontology_filename) - - # Datasets - domain_dir = dataset_dir / f"{ontology.domain.lower().replace(' ', '_')}" - ontology_dataset_dir = domain_dir / f"{ontology.ontology_id.lower().replace(' ', '_')}" - for f in ontology_dataset_dir.glob("*.json"): - shutil.copy2(f, local_dir) - # Create dataset card (metadata.json) metadata = { - "name": f"Ontology: {ontology.ontology_full_name}", - "description": ontology.__doc__.strip() if ontology.__doc__ else f"Dataset for {ontology.ontology_full_name} ontology", - "license": ontology.license if ontology.license else "unknown", + "name": f"Ontology Domain: {domain.replace('_', ' ').title()}", + "description": f"Dataset containing ontologies and processed data for the {domain.replace('_', ' ').title()} domain", + "license": "mixed", "tags": [ "ontology", - ontology.domain.lower().replace("&", "and").replace(" ", "-"), + domain.lower().replace("&", "and").replace(" ", "-"), "knowledge-graph" ] } with open(local_dir / "dataset_infos.json", "w", encoding="utf-8") as f: json.dump(metadata, f, indent=2) - # --- Push --- + # Push repo.git_add(auto_lfs_track=True) - repo.git_commit("Update datasets and ontology") + repo.git_commit(f"Update {domain} domain with {len(ontologies)} ontologies") repo.git_push() logger.info(f"Pushed to https://huggingface.co/datasets/{repo_name}") return True, repo_name except Exception as e: - logger.error(f"Failed to process {ontology.ontology_id}: {str(e)}", exc_info=True) + logger.error(f"Failed to process {domain} domain: {str(e)}", exc_info=True) return False, repo_name finally: if local_dir.exists(): shutil.rmtree(local_dir) +def get_ontology_class_by_id(ontology_id: str) -> type[BaseOntology]: + """Returns the ontology class based on the ontology ID""" + for cls in BaseOntology.__subclasses__(): + if cls.ontology_id == ontology_id: + return cls + raise ValueError(f"No ontology class found for ID: {ontology_id}") + + +def group_ontologies_by_domain(ontologies: List[Tuple[BaseOntology, str]]) -> Dict[str, List[BaseOntology]]: + """Group ontologies by their domain.""" + domain_groups = {} + + for ontology, _ in ontologies: + domain = ontology.domain.lower().replace(' ', '_') + if domain not in domain_groups: + domain_groups[domain] = [] + domain_groups[domain].append(ontology) + + return domain_groups + + +def load_metrics_from_excel(metrics_file: Path) -> Dict[str, OntologyMetrics]: + """Load metrics for all ontologies from the Excel file generated by processor.""" + if not metrics_file.exists(): + logger.warning(f"Metrics file not found: {metrics_file}") + return {} + + metrics = {} + try: + df = pd.read_excel(metrics_file) + for _, row in df.iterrows(): + # Create topology metrics + topology_metrics = TopologyMetrics( + total_nodes=row.get("total_nodes", 0), + total_edges=row.get("total_edges", 0), + num_classes=row.get("num_classes", 0), + num_properties=row.get("num_properties", 0), + num_individuals=row.get("num_individuals", 0), + max_depth=row.get("max_depth", 0), + min_depth=row.get("min_depth", 0), + avg_depth=row.get("avg_depth", 0), + depth_variance=row.get("depth_variance", 0), + max_breadth=row.get("max_breadth", 0), + min_breadth=row.get("min_breadth", 0), + avg_breadth=row.get("avg_breadth", 0), + breadth_variance=row.get("breadth_variance", 0), + num_root_nodes=row.get("num_root_nodes", 0), + num_leaf_nodes=row.get("num_leaf_nodes", 0) + ) + + # Create dataset metrics + dataset_metrics = DatasetMetrics( + num_term_types=row.get("num_term_types", 0), + num_taxonomic_relations=row.get("num_taxonomic_relations", 0), + num_non_taxonomic_relations=row.get("num_non_taxonomic_relations", 0), + avg_terms=row.get("avg_terms", 0) + ) + + # Create ontology metrics + ontology_metrics = OntologyMetrics( + name=row.get("Ontology Name", ""), + topology=topology_metrics, + dataset=dataset_metrics + ) + + # Add to metrics dictionary + metrics[row.get("Ontology ID")] = ontology_metrics + + logger.info(f"Loaded metrics for {len(metrics)} ontologies from Excel file") + return metrics + except Exception as e: + logger.error(f"Error loading metrics from Excel file: {e}") + return {} + + def main(): try: - ontologies = [ - # Agricultural Ontologies - # (FoodOn(), "agricultural/foodon.owl"), - # (AGROVOC(), "agricultural/AGROVOC.rdf"), - # (PO(), "agricultural/plant.owl"), - # + ontologies: list[tuple[BaseOntology, str]] = [ + # # Agricultural Ontologies + # (FoodOn(), "owl"), + # (AGROVOC(), "rdf"), + # (PO(), "owl"), + # # Arts and Humanities Ontologies - # (ChordOntology(), "arts_&_humanities/chord.rdf"), - # (ICON(), "arts_&_humanities/icon.owl"), - # (MusicOntology(), "arts_&_humanities/music.rdf"), - # # Add all other ontologies here... - # - # # Large ontologies - # (BattINFO(), "materials_science_&_engineering/battinfo.ttl"), - # (PRIMA(), "materials_science_&_engineering/prima.ttl"), - # (NCIt(), "medicine/ncit.owl"), - # (PRotein(), "medicine/protein.rdf"), + # (ChordOntology(), "rdf"), + # (ICON(), "icon.owl"), + # (MusicOntology(), "music.rdf"), + # (Nomisma(), "nomisma.ttl"), + # (TimelineOntology(), "timeline.rdf"), ] - successes = 0 - failures = 0 + # Group ontologies by domain + domain_groups = group_ontologies_by_domain(ontologies) - for ontology, filename in ontologies: - ontology_path = ONTOLOGY_DIR / filename + # Load metrics for all ontologies + metrics = load_metrics_from_excel(METRICS_FILE) - if not ontology_path.exists(): - logger.warning(f"Ontology file not found: {ontology_path}. Skipping.") - continue + # Push each domain as a separate repository + successes = 0 + failures = 0 - success, _ = push_to_huggingface( - ontology=ontology, - ontology_path=ontology_path, - dataset_dir=DATASET_DIR + for domain, domain_ontologies in domain_groups.items(): + success, _ = push_domain_to_huggingface( + domain=domain, + ontologies=domain_ontologies, + metrics=metrics ) if success: @@ -183,7 +323,7 @@ def main(): else: failures += 1 - logger.info(f"Completed processing all ontologies. Successes: {successes}, Failures: {failures}") + logger.info(f"Completed processing all domains. Successes: {successes}, Failures: {failures}") except Exception as e: logger.error(f"Main execution failed: {e}", exc_info=True) raise From 23f01b92e0924b023b8f9a007599238abdac0274 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Fri, 2 May 2025 15:12:07 +0200 Subject: [PATCH 08/37] :sparkles: refactor Hugging Face integration for domain-based --- scripts/hf_integration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/hf_integration.py b/scripts/hf_integration.py index 111cb5f..4b06f68 100644 --- a/scripts/hf_integration.py +++ b/scripts/hf_integration.py @@ -288,7 +288,7 @@ def load_metrics_from_excel(metrics_file: Path) -> Dict[str, OntologyMetrics]: def main(): try: ontologies: list[tuple[BaseOntology, str]] = [ - # # Agricultural Ontologies + # Agricultural Ontologies # (FoodOn(), "owl"), # (AGROVOC(), "rdf"), # (PO(), "owl"), From 1b2d507b8a304531296742cb5cfbb887f5f2e4b8 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Fri, 2 May 2025 15:44:01 +0200 Subject: [PATCH 09/37] :sparkles: refactor Hugging Face integration for domain-based --- scripts/hf_integration.py | 42 ++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/scripts/hf_integration.py b/scripts/hf_integration.py index 4b06f68..b57af34 100644 --- a/scripts/hf_integration.py +++ b/scripts/hf_integration.py @@ -48,6 +48,17 @@ ORGANIZATION = "SciKnowOrg/OntoLearner" +DOMAINS_DEFINITIONS = { + "agricultural": "Agricultural ontologies encompass formal knowledge representations of farming systems, crops, food production, and agricultural vocabularies, providing structured taxonomies and semantic relationships that model the complex interactions within agricultural domains. These ontologies capture critical concepts including crop varieties, growth cycles, farming practices, soil properties, irrigation methods, pest management, harvest techniques, food processing chains, nutritional values, agricultural economics, and regional farming terminologies. By standardizing agricultural knowledge in machine-readable formats, these ontologies enable interoperability between agricultural information systems and enhance data integration for agricultural research. The OntoLearner library's collection of these domain-specific resources promotes ontology reuse, standardization, and benchmarking for automated ontology learning applications in agricultural contexts.", + "arts_&_humanities": "Arts and Humanities Ontologies", + "biology_&_life_sciences": "Biology & Life Sciences Ontologies", + "computer_science": "Computer Science Ontologies", + "education": "Education Ontologies", + "engineering": "Engineering Ontologies", + "environment": "Environment Ontologies", +} + + def copy_ontology_files(ontology: BaseOntology, domain_dir: Path, format: str): """ Copy ontology file and documentation to the domain directory. @@ -100,14 +111,28 @@ def create_domain_readme(domain: str, ontologies: List[BaseOntology], metrics: D domain_title = domain.replace('_', ' ').title() readme = f""" -# {domain_title} Ontologies Dataset +--- +license: mit +language: +- en +tags: +- OntoLearner +- ontology-learning +- {domain} +pretty_name: Agricultural +--- +
+ OntoLearner +

{domain_title} Domain Ontologies

+
## Overview -This repository contains ontologies and their processed datasets for the {domain_title} domain. +{DOMAINS_DEFINITIONS[domain]} ## Ontologies -| Ontology ID | Full Name | Classes | Properties | Terms | Last Updated | License | -|-------------|-----------|---------|------------|-------|--------------|---------| +| Ontology ID | Full Name | Classes | Properties | Last Updated | +|-------------|-----------|---------|------------|--------------| """ # Add a row for each ontology @@ -116,13 +141,11 @@ def create_domain_readme(domain: str, ontologies: List[BaseOntology], metrics: D if metrics_data: num_classes = metrics_data.topology.num_classes num_properties = metrics_data.topology.num_properties - num_terms = metrics_data.dataset.num_term_types else: num_classes = "N/A" num_properties = "N/A" - num_terms = "N/A" - readme += f"| {ontology.ontology_id} | {ontology.ontology_full_name} | {num_classes} | {num_properties} | {num_terms} | {ontology.last_updated} | {ontology.license} |\n" + readme += f"| {ontology.ontology_id} | {ontology.ontology_full_name} | {num_classes} | {num_properties} | {ontology.last_updated}|\n" readme += """ ## Dataset Files @@ -149,7 +172,7 @@ def push_domain_to_huggingface(domain: str, ontologies: List[BaseOntology], login(token=huggingface_key) # Create repository name from domain - repo_name = f"SciKnowOrg/ontology-domain-{domain.lower().replace(' ', '-').replace('&', 'and')}" + repo_name = f"SciKnowOrg/ontolearner-{domain.lower()}" local_dir = TMP_DIR / repo_name try: @@ -190,7 +213,8 @@ def push_domain_to_huggingface(domain: str, ontologies: List[BaseOntology], "ontology", domain.lower().replace("&", "and").replace(" ", "-"), "knowledge-graph" - ] + ], + "ontologies": [ontology.ontology_id for ontology in ontologies] } with open(local_dir / "dataset_infos.json", "w", encoding="utf-8") as f: json.dump(metadata, f, indent=2) From e0cd19b779c0e3b1a86037d69356b0faefed9105 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Sat, 3 May 2025 13:08:21 +0200 Subject: [PATCH 10/37] :sparkles: refactor Hugging Face integration for domain-based --- ontolearner/ontology/agricultural.py | 40 +-- ontolearner/ontology/arts_humanities.py | 8 +- ontolearner/ontology/biology.py | 12 +- ontolearner/ontology/chemistry.py | 6 +- ontolearner/ontology/ecology_environment.py | 4 +- ontolearner/ontology/education.py | 6 +- ontolearner/ontology/events.py | 2 +- ontolearner/ontology/finance.py | 2 +- ontolearner/ontology/food_beverage.py | 2 +- ontolearner/ontology/general.py | 6 +- ontolearner/ontology/geography.py | 4 +- ontolearner/ontology/industry.py | 8 +- ontolearner/ontology/law.py | 2 +- ontolearner/ontology/livestock.py | 2 +- .../ontology/material_science_engineering.py | 78 ++-- ontolearner/ontology/medicine.py | 8 +- ontolearner/ontology/scholarly_knowledge.py | 48 +-- ontolearner/ontology/social_sciences.py | 10 +- ontolearner/ontology/units_measurements.py | 6 +- ontolearner/ontology/upper_ontologies.py | 6 +- ontolearner/ontology/web.py | 4 +- scripts/add_new_ontology.py | 1 - scripts/hf_integration.py | 334 ++++++++++++++++-- 23 files changed, 431 insertions(+), 168 deletions(-) diff --git a/ontolearner/ontology/agricultural.py b/ontolearner/ontology/agricultural.py index e623a31..ca62dac 100644 --- a/ontolearner/ontology/agricultural.py +++ b/ontolearner/ontology/agricultural.py @@ -1,6 +1,25 @@ from ..base.ontology import BaseOntology +class AGROVOC(BaseOntology): + """ + AGROVOC is a relevant Linked Open Data set about agriculture available for public use and facilitates + access and visibility of data across domains and languages. It offers a structured collection of agricultural concepts, + terms, definitions and relationships which are used to unambiguously identify resources, allowing standardized + indexing processes and making searches more efficient. + """ + ontology_id = "AGROVOC" + ontology_full_name = "AGROVOC Multilingual Thesaurus (AGROVOC)" + domain = "Agricultural" + category = "Agricultural Knowledge" + version = "2024-04" + last_updated = "August 12, 2024" + creator = "Food and Agriculture Organization of the United Nations" + license = "Creative Commons 4.0" + format = "RDF" + download_url = "https://agroportal.lirmm.fr/ontologies/AGROVOC" + + class FoodOn(BaseOntology): """ FoodOn, the food ontology, contains vocabulary for naming food materials and their anatomical and taxonomic origins, @@ -21,25 +40,6 @@ class FoodOn(BaseOntology): download_url = "http://purl.obolibrary.org/obo/foodon.owl" -class AGROVOC(BaseOntology): - """ - AGROVOC is a relevant Linked Open Data set about agriculture available for public use and facilitates - access and visibility of data across domains and languages. It offers a structured collection of agricultural concepts, - terms, definitions and relationships which are used to unambiguously identify resources, allowing standardized - indexing processes and making searches more efficient. - """ - ontology_id = "AGROVOC" - ontology_full_name = "AGROVOC Multilingual Thesaurus (AGROVOC)" - domain = "Agricultural" - category = "Agricultural Knowledge" - version = "2024-04" - last_updated = "August 12, 2024" - creator = "Food and Agriculture Organization of the United Nations" - license = "Creative Commons 4.0" - format = "RDF, SKOS" - download_url = "https://agroportal.lirmm.fr/ontologies/AGROVOC" - - class PO(BaseOntology): """ The Plant Ontology (PO) is a structured vocabulary and database resource that links plant anatomy, @@ -53,5 +53,5 @@ class PO(BaseOntology): last_updated = None creator = None license = "Creative Commons 4.0" - format = "OWL, TTL, CSV, NT" + format = "OWL" download_url = "https://github.com/Planteome/plant-ontology" diff --git a/ontolearner/ontology/arts_humanities.py b/ontolearner/ontology/arts_humanities.py index d3e6f17..c552f3f 100644 --- a/ontolearner/ontology/arts_humanities.py +++ b/ontolearner/ontology/arts_humanities.py @@ -13,7 +13,7 @@ class ChordOntology(BaseOntology): last_updated = "2007-10-25" creator = "Yves Raimond, Samer Abdallah, Centre for Digital Music, Queen Mary, University of London" license = "Creative Commons 3.0" - format = "RDF/XML" + format = "RDF" download_url = "https://github.com/motools/chordontology" @@ -49,7 +49,7 @@ class MusicOntology(BaseOntology): last_updated = "2013/07/22" creator = "Knowledge Media Institute, Open University" license = "Creative Commons 4.0" - format = "RDF/XML" + format = "RDF" download_url = "https://github.com/motools/musicontology" @@ -68,7 +68,7 @@ class Nomisma(BaseOntology): last_updated = "2025-01-22" creator = "American Numismatic Society, Institute for the Study of the Ancient World" license = "Creative Commons 4.0" - format = "RDF, TTL" + format = "TTL" download_url = "https://www.dainst.org/forschung/projekte/noslug/2098" @@ -86,5 +86,5 @@ class TimelineOntology(BaseOntology): last_updated = "25th October 2007" creator = "Christopher Sutton, Yves Raimond, Matthias Mauch" license = "Creative Commons 1.0" - format = "RDF/XML" + format = "RDF" download_url = "https://github.com/motools/timelineontology" diff --git a/ontolearner/ontology/biology.py b/ontolearner/ontology/biology.py index 0cd600d..88eb593 100644 --- a/ontolearner/ontology/biology.py +++ b/ontolearner/ontology/biology.py @@ -36,7 +36,7 @@ class EFO(BaseOntology): last_updated = "2025-02-17" creator = None license = "Apache 2.0" - format = "OWL, TTL, CSV, NT" + format = "OWL" download_url = "https://www.ebi.ac.uk/efo" @@ -53,7 +53,7 @@ class GO(BaseOntology): last_updated = "2024-11-03" creator = None license = "Creative Commons 4.0" - format = "OWL, OBO, JSON" + format = "OWL" download_url = "https://geneontology.org/docs/download-ontology/" @@ -97,7 +97,7 @@ class MarineTLO(BaseOntology): last_updated = "2017-01-05" creator = "Information System Laboratory (ISL), Institute of Computer Science (ICS), Foundation for Research and Technology - Hellas (FORTH)" license = "Creative Commons 4.0" - format = "OWL, TTL, CSV, NT" + format = "OWL" download_url = "https://projects.ics.forth.gr/isl/MarineTLO/" @@ -121,13 +121,13 @@ class MGED(BaseOntology): download_url = "https://mged.sourceforge.net/ontologies/MGEDontology.php/" -class Microscopy(BaseOntology): +class MO(BaseOntology): """ The Microscopy Ontology (MO) extends the ontological framework of the PMDco. The MO facilitates semantic integration and the interoperable connection of diverse data sources from the fields of microscopy and microanalysis. Consequently, the MO paves the way for new, adaptable data applications and analyses across various experiments and studies """ - ontology_id = "Microscopy" + ontology_id = "MO" ontology_full_name = "Microscopy Ontology (MO)" domain = "Biology & Life Sciences" category = "Microscopy" @@ -135,7 +135,7 @@ class Microscopy(BaseOntology): last_updated = None creator = "https://orcid.org/0000-0002-3717-7104,https://orcid.org/0000-0002-7094-5371" license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" - format = "Turtle" + format = "TTL" download_url = "https://github.com/materialdigital/microscopy-ontology?tab=readme-ov-file" def contains_imports(self) -> bool: diff --git a/ontolearner/ontology/chemistry.py b/ontolearner/ontology/chemistry.py index 6ef18c1..4207656 100644 --- a/ontolearner/ontology/chemistry.py +++ b/ontolearner/ontology/chemistry.py @@ -39,7 +39,7 @@ class ChEBI(BaseOntology): last_updated = "01/01/2025" creator = None license = "Creative Commons 4.0" - format = "OWL, OBO, JSON" + format = "OWL" download_url = "https://www.ebi.ac.uk/chebi/" @@ -101,7 +101,7 @@ class ChMO(BaseOntology): last_updated = "2022-04-19" creator = None license = "Creative Commons 4.0" - format = "OWL, TTL, CSV, NT" + format = "OWL" download_url = "https://github.com/rsc-ontologies/rsc-cmo" @@ -251,7 +251,7 @@ class REX(BaseOntology): last_updated = "2025-03-11" creator = "University of Warsaw" license = "Creative Commons 4.0" - format = "OWL, RDF" + format = "OWL" download_url = "https://terminology.tib.eu/ts/ontologies/REX" diff --git a/ontolearner/ontology/ecology_environment.py b/ontolearner/ontology/ecology_environment.py index 03ffc28..46e33f4 100644 --- a/ontolearner/ontology/ecology_environment.py +++ b/ontolearner/ontology/ecology_environment.py @@ -16,7 +16,7 @@ class ENVO(BaseOntology): last_updated = "2024-07-01" creator = "Pier Luigi Buttigieg (https://orcid.org/0000-0002-4366-3088)" license = "Creative Commons 1.0" - format = "OWL, OBO, JSON" + format = "OWL" download_url = "https://obofoundry.org/ontology/envo.html" @@ -37,7 +37,7 @@ class OEO(BaseOntology): last_updated = "03/2025" creator = None license = "Creative Commons Attribution 1.0 Generic (CC BY 1.0)" - format = "OWL/XML" + format = "OWL" download_url = "https://github.com/OpenEnergyPlatform/ontology?tab=readme-ov-file" diff --git a/ontolearner/ontology/education.py b/ontolearner/ontology/education.py index 320c4e5..38c03fa 100644 --- a/ontolearner/ontology/education.py +++ b/ontolearner/ontology/education.py @@ -22,7 +22,7 @@ class BIBFRAME(BaseOntology): last_updated = "2022-10-03" creator = "United States, Library of Congress" license = "Creative Commons 1.0" - format = "RDF/XML" + format = "RDF" download_url = "https://id.loc.gov/ontologies/bflc.html" @@ -38,7 +38,7 @@ class Common(BaseOntology): last_updated = None creator = "Jhon Toledo, Miguel Angel García, Oscar Corcho" license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" - format = "RDF/XML" + format = "RDF" download_url = "https://w3id.org/mobility/trias/common/0.1.0" @@ -57,5 +57,5 @@ class DoCO(BaseOntology): last_updated = "2015-07-03" creator = "David Shotton and Silvio Peroni" license = "Creative Commons 4.0" - format = "OWL, TTL, CSV, NT" + format = "RDF" download_url = "http://www.sparontologies.net/ontologies/doco" diff --git a/ontolearner/ontology/events.py b/ontolearner/ontology/events.py index a27f317..be21ad4 100644 --- a/ontolearner/ontology/events.py +++ b/ontolearner/ontology/events.py @@ -60,5 +60,5 @@ class LODE(BaseOntology): last_updated = "2020-10-31" creator = "Ryan Shaw" license = "Creative Commons Attribution 3.0" - format = "RDF, TTL" + format = "RDF" download_url = "https://linkedevents.org/ontology/" diff --git a/ontolearner/ontology/finance.py b/ontolearner/ontology/finance.py index bca38d4..c5be7ee 100644 --- a/ontolearner/ontology/finance.py +++ b/ontolearner/ontology/finance.py @@ -17,5 +17,5 @@ class GoodRelations(BaseOntology): last_updated = "2011-10-01" creator = "Martin Hepp" license = "Creative Commons 3.0" - format = "RDF/XML" + format = "OWL" download_url = "https://www.heppnetz.de/ontologies/goodrelations/v1" diff --git a/ontolearner/ontology/food_beverage.py b/ontolearner/ontology/food_beverage.py index 76f6d6b..a539f56 100644 --- a/ontolearner/ontology/food_beverage.py +++ b/ontolearner/ontology/food_beverage.py @@ -13,5 +13,5 @@ class Wine(BaseOntology): last_updated = None creator = None license = None - format = "RDF/XML" + format = "RDF" download_url = "https://github.com/UCDavisLibrary/wine-ontology" diff --git a/ontolearner/ontology/general.py b/ontolearner/ontology/general.py index 33ada96..99c0dc7 100644 --- a/ontolearner/ontology/general.py +++ b/ontolearner/ontology/general.py @@ -67,7 +67,7 @@ class DublinCore(BaseOntology): last_updated = "February 17, 2017" creator = "The Dublin Core Metadata Initiative" license = "Public Domain" - format = "RDF, OWL, TTL, CSV, NT" + format = "RDF" download_url = "https://bioportal.bioontology.org/ontologies/DC" @@ -85,7 +85,7 @@ class EDAM(BaseOntology): last_updated = "24.09.2024" creator = "Federico Bianchini, Hervé Ménager, Jon Ison, Matúš Kalaš" license = "Creative Commons 4.0" - format = "owl" + format = "OWL" download_url = "https://terminology.tib.eu/ts/ontologies/edam" @@ -103,7 +103,7 @@ class GIST(BaseOntology): last_updated = "2024-Feb-27" creator = "Semantic Arts" license = "Creative Commons 4.0" - format = "OWL" + format = "RDF" download_url = "https://semanticarts.com/gist" diff --git a/ontolearner/ontology/geography.py b/ontolearner/ontology/geography.py index b27845f..f99fd75 100644 --- a/ontolearner/ontology/geography.py +++ b/ontolearner/ontology/geography.py @@ -32,7 +32,7 @@ class GeoNames(BaseOntology): last_updated = "2022-01-30" creator = "Bernard Vatant" license = "Creative Commons 3.0" - format = "RDF/XML, Turtle, JSON-LD" + format = "RDF" download_url = "https://www.geonames.org/ontology" @@ -50,7 +50,7 @@ class GTS(BaseOntology): last_updated = "2020-05-31" creator = "Simon J D Cox (simon.cox@csiro.au) of CSIRO" license = "Creative Commons 1.0" - format = "OWL, TTL" + format = "TTL" download_url = "https://raw.githack.com/CGI-IUGS/timescale-ont/master/html/gts.html" diff --git a/ontolearner/ontology/industry.py b/ontolearner/ontology/industry.py index 461f50e..82b85a6 100644 --- a/ontolearner/ontology/industry.py +++ b/ontolearner/ontology/industry.py @@ -37,7 +37,7 @@ class DBO(BaseOntology): last_updated = "02/23/2023" creator = "Google" license = "Apache 2.0" - format = "OWL, CSV, RDF/XML" + format = "RDF" download_url = "https://github.com/google/digitalbuildings?tab=readme-ov-file" @@ -74,7 +74,7 @@ class IOF(BaseOntology): last_updated = "2020" creator = "IOF Core Working Group" license = "MIT" - format = "RDF, OWL, TTL, CSV, NT" + format = "RDF" download_url = "https://oagi.org/pages/Released-Ontologies" @@ -91,7 +91,7 @@ class PTO(BaseOntology): last_updated = "2025-02-21" creator = "Martin Hepp" license = "Creative Commons 3.0" - format = "RDF, OWL, TTL, CSV, NT" + format = "RDF" download_url = "http://www.productontology.org/" @@ -110,5 +110,5 @@ class TUBES(BaseOntology): last_updated = "2022-02-01" creator = "Nicolas Pauen" license = "Creative Commons 4.0" - format = "RDF/XML, Turtle, JSON-LD" + format = "RDF" download_url = "https://rwth-e3d.github.io/tso/" diff --git a/ontolearner/ontology/law.py b/ontolearner/ontology/law.py index ac57b87..3a0d9ba 100644 --- a/ontolearner/ontology/law.py +++ b/ontolearner/ontology/law.py @@ -16,5 +16,5 @@ class CopyrightOnto(BaseOntology): last_updated = "2019-09" creator = "Rhizomik" license = "Creative Commons 4.0" - format = "RDF" + format = "TTL" download_url = "https://rhizomik.net/ontologies/copyrightonto/" diff --git a/ontolearner/ontology/livestock.py b/ontolearner/ontology/livestock.py index f6de171..6de3c2f 100644 --- a/ontolearner/ontology/livestock.py +++ b/ontolearner/ontology/livestock.py @@ -21,5 +21,5 @@ class ATOL(BaseOntology): last_updated = "May 11, 2020" creator = "INRAE, France" license = "Creative Commons 4.0" - format = "OWL, TTL, CSV, NT" + format = "OWL" download_url = "https://bioportal.bioontology.org/ontologies/ATOL" diff --git a/ontolearner/ontology/material_science_engineering.py b/ontolearner/ontology/material_science_engineering.py index 155a82d..e319e01 100644 --- a/ontolearner/ontology/material_science_engineering.py +++ b/ontolearner/ontology/material_science_engineering.py @@ -56,7 +56,7 @@ class Atomistic(BaseOntology): last_updated = None creator = "Francesca L. Bleken, Jesper Friis" license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" - format = "Turtle" + format = "TTL" download_url = "https://github.com/emmo-repo/domain-atomistic" @@ -96,7 +96,7 @@ class BMO(BaseOntology): last_updated = "2019-12-10" creator = "Janakiram Karlapudi, Prathap Valluru" license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" - format = "TTL, OWL, RDF/XML" + format = "TTL" download_url = "https://matportal.org/ontologies/BUILDMAT" @@ -242,22 +242,6 @@ class CMSO(BaseOntology): download_url = "https://github.com/OCDO/cmso/tree/main" -class EMMOCrystallography(BaseOntology): - """ - A crystallography domain ontology based on EMMO and the CIF core dictionary. It is implemented as a formal language. - """ - ontology_id = "EMMOCrystallography" - ontology_full_name = "Crystallography Ontology (EMMOCrystallography)" - domain = "Materials Science & Engineering" - category = "Crystallography" - version = "0.0.1" - last_updated = None - creator = None - license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" - format = "Turtle" - download_url = "https://github.com/emmo-repo/domain-crystallography" - - class DISO(BaseOntology): """ DISO is an ontology that defines the linear defect, in particular dislocation concepts @@ -271,7 +255,7 @@ class DISO(BaseOntology): last_updated = "21.03.202" creator = "Ahmad Zainul Ihsan" license = "Creative Commons Attribution 3.0 International (CC BY 3.0)" - format = "OWL/XML, RDF/XML, Turtle" + format = "OWL" download_url = "https://github.com/Materials-Data-Science-and-Informatics/dislocation-ontology" @@ -291,7 +275,7 @@ class DSIM(BaseOntology): last_updated = "17.08.2023" creator = "Ahmad Zainul Ihsan" license = "Creative Commons Attribution 3.0 Unported (CC BY 3.0)" - format = "OWL/XML" + format = "OWL" download_url = "https://github.com/OCDO/DSIM" @@ -311,10 +295,26 @@ class EMMO(BaseOntology): last_updated = "2024-03" creator = "European Materials Modelling Council (EMMC)" license = "Creative Commons 4.0" - format = "OWL, RDF/XML, TTL, JSON-LD" + format = "OWL" download_url = "https://emmo-repo.github.io/" +class EMMOCrystallography(BaseOntology): + """ + A crystallography domain ontology based on EMMO and the CIF core dictionary. It is implemented as a formal language. + """ + ontology_id = "EMMOCrystallography" + ontology_full_name = "Crystallography Ontology (EMMOCrystallography)" + domain = "Materials Science & Engineering" + category = "Crystallography" + version = "0.0.1" + last_updated = None + creator = None + license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" + format = "TTL" + download_url = "https://github.com/emmo-repo/domain-crystallography" + + class FSO(BaseOntology): """ The Flow Systems Ontology (FSO) is an ontology for describing interconnected systems @@ -365,7 +365,7 @@ class HPOnt(BaseOntology): last_updated = None creator = "REACT project team" license = "Creative Commons 4.0" - format = "OWL, TTL, CSV, NT" + format = "OWL" download_url = "https://react2020.github.io/REACT-ONTOLOGY/HPOnt/index-en.html/" @@ -402,7 +402,7 @@ class LPBFO(BaseOntology): last_updated = "2022-09-20" creator = "Fraunhofer IWM" license = "Creative Commons 4.0" - format = "OWL, RDF/XML, Turtle" + format = "OWL" download_url = "https://matportal.org/ontologies/LPBFO" def contains_imports(self) -> bool: @@ -426,7 +426,7 @@ class MAMBO(BaseOntology): last_updated = None creator = None license = "General Public License v3.0 (GPL-3.0)" - format = "OWL, TTL" + format = "OWL" download_url = "https://github.com/daimoners/MAMBO" @@ -445,7 +445,7 @@ class MAT(BaseOntology): last_updated = None creator = "María Poveda-Villalón, Serge Chávez-Feria" license = "Creative Commons 4.0" - format = "RDF/XML, TTL, N-Triples" + format = "RDF" download_url = "https://bimerr.iot.linkeddata.es/def/material-properties/" @@ -463,7 +463,7 @@ class MaterialInformation(BaseOntology): last_updated = None creator = "Toshihiro Ashino" license = None - format = "OWL, RDF/XML" + format = "OWL" download_url = "https://github.com/EngyNasr/MSE-Benchmark/blob/main/testCases/secondTestCase/MaterialInformation.owl" @@ -479,7 +479,7 @@ class MatOnto(BaseOntology): last_updated = None creator = None license = None - format = "OWL, TTL" + format = "OWL" download_url = "https://github.com/EngyNasr/MSE-Benchmark/blob/main/testCases/secondTestCase/MatOnto.owl" @@ -495,7 +495,7 @@ class MatVoc(BaseOntology): last_updated = "2022-12-12" creator = "Tatyana Sheveleva, Javad Chamanara" license = "MIT License" - format = "RDF/XML,TTL" + format = "RDF" download_url = "https://stream-project.github.io/#overv" @@ -542,7 +542,7 @@ class MDO(BaseOntology): last_updated = "2022-08-02" creator = "Materials Design Division, National Institute for Materials Science (NIMS)" license = "Creative Commons 4.0" - format = "OWL, RDF/XML, TTL, JSON-LD" + format = "OWL" download_url = "https://github.com/LiUSemWeb/Materials-Design-Ontology/tree/master/" @@ -560,7 +560,7 @@ class MDS(BaseOntology): last_updated = "03/24/2024" creator = "SDLE Research Center" license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" - format = "OWL/XML" + format = "TTL" download_url = "https://matportal.org/ontologies/MDS" @@ -576,7 +576,7 @@ class MechanicalTesting(BaseOntology): last_updated = None creator = "Fraunhofer IWM" license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" - format = "OWL/XML" + format = "OWL" download_url = "https://github.com/emmo-repo/domain-mechanical-testing" @@ -595,7 +595,7 @@ class MicroStructures(BaseOntology): last_updated = None creator = None license = None - format = "OWL/XML" + format = "OWL" download_url = "https://github.com/jesper-friis/emmo-microstructure" @@ -615,7 +615,7 @@ class MMO(BaseOntology): last_updated = "2024-01-30" creator = "Akhil Thomas, Ali Riza Durmaz" license = "Creative Commons 4.0" - format = "OWL, TTL" + format = "RDF" download_url = "https://iwm-micro-mechanics-public.pages.fraunhofer.de/ontologies/materials-mechanics-ontology/index-en.html" @@ -631,7 +631,7 @@ class MOLBRINELL(BaseOntology): last_updated = "05/05/2022" creator = "Birgit Skrotzki, Hossein Beygi Nasrabadi, Philipp von Hartrott, Vinicius Carrillo Beber, Yue Chen" license = None - format = "TTL, RDF/XML, OWL" + format = "TTL" download_url = "https://matportal.org/ontologies/MOL_BRINELL" @@ -647,7 +647,7 @@ class MOLTENSILE(BaseOntology): last_updated = "04/16/2021" creator = "Markus Schilling, markus.schilling@bam.de; Philipp von Hartrott, philipp.von.hartrott@iwm.fraunhofer.de" license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" - format = "OWL, RDF/XML" + format = "RDF" download_url = "https://matportal.org/ontologies/MOL_TENSILE" @@ -667,7 +667,7 @@ class MSEO(BaseOntology): last_updated = None creator = "Thomas Hanke, Fraunhofer IWM" license = "MIT License" - format = "TTL, OWL" + format = "TTL" download_url = "https://github.com/Mat-O-Lab/MSEO" @@ -858,7 +858,7 @@ class PMDco(BaseOntology): last_updated = "2025-03-20" creator = "Jannis Grundmann" license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" - format = "OWL/XML" + format = "OWL" download_url = "https://github.com/materialdigital/core-ontology?tab=readme-ov-file" @@ -890,7 +890,7 @@ class PRIMA(BaseOntology): last_updated = "2024-01-29" creator = "Ahmad Zainul Ihsan, Mehrdad Jalali, Rossella Aversa" license = "Creative Commons Attribution 3.0 Unported (CC BY 3.0)" - format = "TTL, OWL" + format = "TTL" download_url = "https://materials-data-science-and-informatics.github.io/MDMC-NEP-top-level-ontology/PRIMA/complete/ver_2_0/index.html" def contains_imports(self) -> bool: @@ -918,7 +918,7 @@ class SSN(BaseOntology): last_updated = "2017-04-17" creator = "W3C/OGC Spatial Data on the Web Working Group" license = "http://www.w3.org/Consortium/Legal/2015/copyright-software-and-document" - format = "RDF/XML, TTL" + format = "TTL" download_url = "https://github.com/w3c/sdw-sosa-ssn/tree/482484fe2edc1ba8aa7f19214a72bdb77123e833" def contains_imports(self) -> bool: diff --git a/ontolearner/ontology/medicine.py b/ontolearner/ontology/medicine.py index 370db0c..29bf85a 100644 --- a/ontolearner/ontology/medicine.py +++ b/ontolearner/ontology/medicine.py @@ -14,7 +14,7 @@ class BTO(BaseOntology): last_updated = "2021-10-26" creator = None license = "Creative Commons 4.0" - format = "owl" + format = "OWL" download_url = "https://terminology.tib.eu/ts/ontologies/BTO" @@ -34,7 +34,7 @@ class DEB(BaseOntology): last_updated = "Jun 2, 2021" creator = "Osnat Hakimi" license = "GPL-3.0" - format = "OWL/XML" + format = "OWL" download_url = "https://github.com/ProjectDebbie/Ontology_DEB" @@ -115,7 +115,7 @@ class NCIt(BaseOntology): last_updated = "2023-10-19" creator = None license = "Creative Commons 4.0" - format = "owl" + format = "OWL" download_url = "https://terminology.tib.eu/ts/ontologies/NCIT" @@ -132,7 +132,7 @@ class OBI(BaseOntology): last_updated = "2025-01-09" creator = None license = "Creative Commons 4.0" - format = "OWL, TTL, CSV, NT" + format = "OWL" download_url = "https://github.com/obi-ontology/obi/tree/master" diff --git a/ontolearner/ontology/scholarly_knowledge.py b/ontolearner/ontology/scholarly_knowledge.py index 928ea36..9275375 100644 --- a/ontolearner/ontology/scholarly_knowledge.py +++ b/ontolearner/ontology/scholarly_knowledge.py @@ -21,7 +21,7 @@ class AIISO(BaseOntology): last_updated = "2008-05-14" creator = "Open University" license = "Creative Commons 4.0" - format = "RDF/XML" + format = "RDF" download_url = "https://vocab.org/aiiso/" @@ -38,7 +38,7 @@ class CiTO(BaseOntology): last_updated = "2018-02-16" creator = "Silvio Peroni, David Shotton" license = "Creative Commons 4.0" - format = "OWL, TTL, CSV, NT" + format = "OWL" download_url = "https://github.com/SPAROntologies/cito/tree/master/docs/current" @@ -60,7 +60,7 @@ class CSO(BaseOntology): last_updated = None creator = "Knowledge Media Institute, Open University" license = "Creative Commons 4.0" - format = "OWL, TTL, CSV, NT" + format = "OWL" download_url = "https://cso.kmi.open.ac.uk/home" # CSO-specific URIs CSO_TOPIC = URIRef("http://cso.kmi.open.ac.uk/schema/cso#Topic") @@ -123,7 +123,7 @@ class DataCite(BaseOntology): last_updated = "15/09/2022" creator = "David Shotton, Silvio Peroni" license = "Creative Commons 4.0" - format = "OWL, TTL, CSV, NT" + format = "RDF" download_url = "https://schema.datacite.org/" @@ -146,7 +146,7 @@ class DCAT(BaseOntology): last_updated = "22 August 2024" creator = "Digital Enterprise Research Institute (DERI)" license = "W3C Document License" - format = "RDF/XML, Turtle, JSON-LD" + format = "RDF" download_url = "https://www.w3.org/TR/vocab-dcat-3/" @@ -214,7 +214,7 @@ class FRAPO(BaseOntology): last_updated = None creator = "David Shotton" license = "Creative Commons 4.0" - format = "OWL, TTL, NT" + format = "RDF" download_url = "http://www.sparontologies.net/ontologies/frapo" @@ -234,7 +234,7 @@ class FRBRoo(BaseOntology): last_updated = "November 2015" creator = None license = "Creative Commons 4.0" - format = "OWL, RDF" + format = "RDF" download_url = "https://ontome.net/namespace/6#summary" @@ -256,24 +256,6 @@ class LexInfo(BaseOntology): download_url = "https://lexinfo.net/index.html" -class M4I(BaseOntology): - """ - Metadata4Ing is an ontology for describing engineering results and their corresponding workflow. - The ontology is maintained by the Metadata4Ing working group, a subgroup of the Special Interest Group (SIG) - Metadata & Ontologies within NFDI4Ing. - """ - ontology_id = "M4I" - ontology_full_name = "Metadata for Engineering (M4I)" - domain = "Scholarly Knowledge" - category = "Materials Science" - version = "1.3.1" - last_updated = "2025-03-10" - creator = "Metadata4Ing Workgroup" - license = "Creative Commons 4.0" - format = "OWL, TTL" - download_url = "https://git.rwth-aachen.de/nfdi4ing/metadata4ing/metadata4ing" - - class Metadata4Ing(BaseOntology): """ The ontology Metadata4Ing provides a framework for the semantic description of research data @@ -286,12 +268,12 @@ class Metadata4Ing(BaseOntology): ontology_full_name = "Metadata for Intelligent Engineering (Metadata4Ing)" domain = "Scholarly Knowledge" category = "Materials Science" - version = "1.3.0" - last_updated = "2024-09-20" + version = "1.3.1" + last_updated = "2025-03-10" creator = "Metadata4Ing Workgroup" license = "Creative Commons 4.0" - format = "TTL, OWL" - download_url = "https://nfdi4ing.pages.rwth-aachen.de/metadata4ing/metadata4ing/" + format = "TTL" + download_url = "https://git.rwth-aachen.de/nfdi4ing/metadata4ing/metadata4ing" class NFDIcore(BaseOntology): @@ -310,7 +292,7 @@ class NFDIcore(BaseOntology): last_updated = "2025-02-07" creator = "Jörg Waitelonis, Oleksandra Bruns, Tabea Tietz, Etienne Posthumus, Hossein Beygi Nasrabadi, Harald Sack" license = "Creative Commons 1.0" - format = "RDF/XML, TTL, JSON-LD" + format = "OWL" download_url = "https://ise-fizkarlsruhe.github.io/nfdicore/" @@ -391,7 +373,7 @@ class PreMOn(BaseOntology): last_updated = "2018-02-15" creator = "Francesco Corcoglioniti, Marco Rospocher " license = "Creative Commons 4.0" - format = "OWL, TTL, CSV, NT" + format = "OWL" download_url = "https://premon.fbk.eu/ontology/core#" @@ -432,7 +414,7 @@ class SPDocument(BaseOntology): last_updated = "2013-07-01" creator = "http://oxgiraldo.wordpress.com" license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" - format = "OWL/XML" + format = "OWL" download_url = "https://github.com/SMARTProtocols/SMART-Protocols" @@ -503,7 +485,7 @@ class VOAF(BaseOntology): last_updated = "2013-05-24" creator = "Bernard Vatant" license = "Creative Commons 3.0" - format = "RDF/XML" + format = "RDF" download_url = "https://lov.linkeddata.es/vocommons/voaf/v2.3/" diff --git a/ontolearner/ontology/social_sciences.py b/ontolearner/ontology/social_sciences.py index eeb2a8d..cf2a78f 100644 --- a/ontolearner/ontology/social_sciences.py +++ b/ontolearner/ontology/social_sciences.py @@ -15,7 +15,7 @@ class AS2(BaseOntology): last_updated = "23 May 2017" creator = None license = "W3C Document License" - format = "OWL" + format = "TTL" download_url = "https://github.com/w3c/activitystreams?tab=License-1-ov-file#readme" @@ -36,7 +36,7 @@ class BIO(BaseOntology): last_updated = "2010-05-10" creator = "Ian Davis and David Galbraith" license = "Public Domain" - format = "RDF, TTL, CSV, NT" + format = "RDF" download_url = "https://vocab.org/bio/" @@ -57,7 +57,7 @@ class Contact(BaseOntology): last_updated = "2018-07-06" creator = "Mark Fox, Megan Katsumi" license = None - format = "OWL, TTL, CSV, NT" + format = "RDF" download_url = "https://enterpriseintegrationlab.github.io/icity/Contact/Contact_1.0/doc/index-en.html" @@ -75,7 +75,7 @@ class FOAF(BaseOntology): last_updated = "14 January 2014" creator = "Dan Brickley, Libby Miller" license = "Creative Commons" - format = "RDF/XML" + format = "RDF" download_url = "http://xmlns.com/foaf/0.1/" @@ -93,5 +93,5 @@ class SIOC(BaseOntology): last_updated = "2018/02/28" creator = "Data Science Institute, NUI Galway" license = "Creative Commons 3.0" - format = "RDF/XML" + format = "RDF" download_url = "http://rdfs.org/sioc/spec/" diff --git a/ontolearner/ontology/units_measurements.py b/ontolearner/ontology/units_measurements.py index 29fa672..f0d547c 100644 --- a/ontolearner/ontology/units_measurements.py +++ b/ontolearner/ontology/units_measurements.py @@ -21,7 +21,7 @@ class OM(BaseOntology): last_updated = "June 28, 2024" creator = "Hajo Rijgersberg, Don Willems, Jan Top" license = "Creative Commons 4.0" - format = "OWL, TTL, CSV, NT" + format = "RDF" download_url = "https://bioportal.bioontology.org/ontologies/OM" @@ -42,7 +42,7 @@ class OWLTime(BaseOntology): last_updated = "15 November 2022" creator = "World Wide Web Consortium" license = "W3C Software Notice and Document License" - format = "TTL, OWL" + format = "TTL" download_url = "https://www.w3.org/TR/owl-time/" @@ -93,5 +93,5 @@ class UO(BaseOntology): last_updated = "2023-05-25" creator = "KAUST" license = "Creative Commons 3.0" - format = "owl" + format = "OWL" download_url = "https://bioportal.bioontology.org/ontologies/UO" diff --git a/ontolearner/ontology/upper_ontologies.py b/ontolearner/ontology/upper_ontologies.py index 4bc762e..a71d1b0 100644 --- a/ontolearner/ontology/upper_ontologies.py +++ b/ontolearner/ontology/upper_ontologies.py @@ -14,7 +14,7 @@ class BFO(BaseOntology): last_updated = "2020" creator = "University at Buffalo" license = "Creative Commons 4.0" - format = "OWL, TTL" + format = "OWL" download_url = "https://github.com/BFO-ontology/BFO-2020/" @@ -31,7 +31,7 @@ class DOLCE(BaseOntology): last_updated = None creator = "Laboratory for Applied Ontology, ISTC-CNR" license = "Creative Commons 4.0" - format = "OWL, RDF/XML, TTL" + format = "OWL" download_url = "https://www.loa.istc.cnr.it/index.php/dolce/" @@ -85,7 +85,7 @@ class SIO(BaseOntology): last_updated = "03/25/2024" creator = "M. Dumontier" license = "Creative Commons 4.0" - format = "OWL, RDF, CSV" + format = "OWL" download_url = "https://bioportal.bioontology.org/ontologies/SIO" diff --git a/ontolearner/ontology/web.py b/ontolearner/ontology/web.py index 98e445d..ad78cbc 100644 --- a/ontolearner/ontology/web.py +++ b/ontolearner/ontology/web.py @@ -14,7 +14,7 @@ class Hydra(BaseOntology): last_updated = "13 July 2021" creator = "Hydra W3C Community Group" license = "Creative Commons 4.0" - format = "JSON-LD, RDF, TTL" + format = "JSONLD" download_url = "https://www.hydra-cg.com/spec/latest/core/#references" @@ -34,5 +34,5 @@ class SAREF(BaseOntology): last_updated = "2020-12-31" creator = "ETSI Technical Committee Smart Machine-to-Machine communications (SmartM2M)" license = None - format = "OWL, RDF/XML, TTL, JSON-LD" + format = "RDF" download_url = "https://saref.etsi.org/core/v3.2.1/" diff --git a/scripts/add_new_ontology.py b/scripts/add_new_ontology.py index 28892ad..ec584c9 100644 --- a/scripts/add_new_ontology.py +++ b/scripts/add_new_ontology.py @@ -224,7 +224,6 @@ def main(): # (FRAPO(), "scholarly_knowledge/frapo.rdf"), # (FRBRoo(), "scholarly_knowledge/frbroo.rdf"), # (LexInfo(), "scholarly_knowledge/lexinfo.rdf"), - # # (M4I(), "scholarly_knowledge/metadata4ing.ttl"), # (Metadata4Ing(), "scholarly_knowledge/metadata4ing.ttl"), # (NFDIcore(), "scholarly_knowledge/nfdi.owl"), # (OBOE(), "scholarly_knowledge/oboe.owl"), diff --git a/scripts/hf_integration.py b/scripts/hf_integration.py index b57af34..5a6a4e6 100644 --- a/scripts/hf_integration.py +++ b/scripts/hf_integration.py @@ -9,6 +9,10 @@ from huggingface_hub import HfApi, Repository, login from huggingface_hub.errors import RepositoryNotFoundError +from langchain_core.output_parsers import StrOutputParser +from langchain_openai import ChatOpenAI +from langchain.prompts import PromptTemplate + from ontolearner.data_structure import OntologyMetrics, TopologyMetrics, DatasetMetrics from ontolearner.ontology import * # noqa from ontolearner.base import BaseOntology @@ -49,15 +53,71 @@ DOMAINS_DEFINITIONS = { - "agricultural": "Agricultural ontologies encompass formal knowledge representations of farming systems, crops, food production, and agricultural vocabularies, providing structured taxonomies and semantic relationships that model the complex interactions within agricultural domains. These ontologies capture critical concepts including crop varieties, growth cycles, farming practices, soil properties, irrigation methods, pest management, harvest techniques, food processing chains, nutritional values, agricultural economics, and regional farming terminologies. By standardizing agricultural knowledge in machine-readable formats, these ontologies enable interoperability between agricultural information systems and enhance data integration for agricultural research. The OntoLearner library's collection of these domain-specific resources promotes ontology reuse, standardization, and benchmarking for automated ontology learning applications in agricultural contexts.", - "arts_&_humanities": "Arts and Humanities Ontologies", - "biology_&_life_sciences": "Biology & Life Sciences Ontologies", - "computer_science": "Computer Science Ontologies", - "education": "Education Ontologies", - "engineering": "Engineering Ontologies", - "environment": "Environment Ontologies", + "agricultural": "Ontologies about farming systems, crops, food production, and agricultural vocabularies.", + "arts_&_humanities": "Ontologies that describe music, iconography, cultural artifacts, and humanistic content.", + "biology_&_life_sciences": "Ontologies about biological entities, systems, organisms, and molecular biology.", + "chemistry": "Ontologies describing chemical entities, reactions, methods, and computational chemistry models.", + "ecology_&_environment": "Ontologies about ecological systems, environments, biomes, and sustainability science.", + "education": "Ontologies describing learning content, educational programs, competencies, and teaching resources.", + "events": "Ontologies for representing events, time, schedules, and calendar-based occurrences.", + "finance": "Ontologies describing economic indicators, e-commerce, trade, and financial instruments.", + "food_&_beverage": "Ontologies related to food, beverages, ingredients, and culinary products.", + "general_knowledge": "Broad-scope ontologies and upper vocabularies used across disciplines for general-purpose semantic modeling.", + "geography": "Ontologies for modeling spatial and geopolitical entities, locations, and place names.", + "industry": "Ontologies describing industrial processes, smart buildings, manufacturing systems, and equipment.", + "law": "Ontologies dealing with legal processes, regulations, and rights (e.g., copyright).", + "library_&_cultural_heritage": "Ontologies used in cataloging, archiving, and authority control of cultural and scholarly resources.", + "livestock": "Ontologies about traits, breeding, and management of domesticated animals for agriculture.", + "materials_science_&_engineering": "Ontologies related to materials, their structure, properties, processing, and engineering applications.", + "medicine": "Ontologies covering clinical knowledge, diseases, drugs, treatments, and biomedical data.", + "news_&_media": "Ontologies that model journalism, broadcasting, creative works, and media metadata.", + "scholarly_knowledge": "Ontologies modeling the structure, process, and administration of scholarly research, publications, and infrastructure.", + "social_sciences": "Ontologies for modeling societal structures, behavior, identity, and social interaction.", + "units_and_measurements": "Ontologies defining scientific units, quantities, dimensions, and observational models.", + "upper_ontology": "Foundational ontologies that provide abstract concepts like objects, processes, and relations.", + "web_&_internet": "Ontologies that model web semantics, linked data, APIs, and online communication standards.", } +SYSTEM_PROMPT = """ +As an ontology domain expert, enhance this domain definition with precision and academic clarity. + +Domain: {domain} +Current definition: {domain_definition} + +The OntoLearner library includes these ontologies in this domain (for context only): +{ontologies} + +Create a concise, enhanced domain definition (2-3 sentences) that: +- Accurately describes the domain's scope and technical focus +- Highlights its significance in knowledge representation +- Avoids any reference to specific ontologies in the definition + +Enhanced definition: +""" +gpt_4o_llm = ChatOpenAI( + api_key = os.environ['OPENAI_API_KEY'], + model = "gpt-4o", + temperature = 0, +) +prompt = PromptTemplate(input_variables=["domain", "domain_definition", "ontologies"], template=SYSTEM_PROMPT) +chain = prompt | gpt_4o_llm | StrOutputParser() + + +def improve_domain_definition(domain: str, domain_definition: str, ontologies: List[BaseOntology]) -> str: + """Improve the domain definition using GPT-4o""" + try: + result = chain.invoke( + { + "domain": domain, + "domain_definition": domain_definition, + "ontologies": "\n".join([f"- {ontology.ontology_full_name}" for ontology in ontologies]) + } + ) + return result + except Exception as e: + logger.error(f"Failed to improve domain definition: {str(e)}", exc_info=True) + return domain_definition + def copy_ontology_files(ontology: BaseOntology, domain_dir: Path, format: str): """ @@ -105,11 +165,12 @@ def copy_ontology_files(ontology: BaseOntology, domain_dir: Path, format: str): # logger.warning(f"Dataset path not found at {dataset_path}. Skipping.") -def create_domain_readme(domain: str, ontologies: List[BaseOntology], metrics: Dict[str, OntologyMetrics]) -> str: +def create_domain_readme(domain: str, + domain_definition: str, + ontologies: List[BaseOntology], + metrics: Dict[str, OntologyMetrics]) -> str: """Generate a README file for a domain with a table of ontologies and their metrics.""" - # Convert domain name to proper title format domain_title = domain.replace('_', ' ').title() - readme = f""" --- license: mit @@ -128,7 +189,7 @@ def create_domain_readme(domain: str, ontologies: List[BaseOntology], metrics: D ## Overview -{DOMAINS_DEFINITIONS[domain]} +{domain_definition} ## Ontologies | Ontology ID | Full Name | Classes | Properties | Last Updated | @@ -163,7 +224,8 @@ def create_domain_readme(domain: str, ontologies: List[BaseOntology], metrics: D return readme -def push_domain_to_huggingface(domain: str, ontologies: List[BaseOntology], +def push_domain_to_huggingface(domain: str, domain_definition: str, + ontologies: List[BaseOntology], metrics: Dict[str, OntologyMetrics]) -> Tuple[bool, str]: """ Push a domain with all its ontologies to Hugging Face as a single repository @@ -201,7 +263,7 @@ def push_domain_to_huggingface(domain: str, ontologies: List[BaseOntology], ) # Create domain README - readme_content = create_domain_readme(domain, ontologies, metrics) + readme_content = create_domain_readme(domain, domain_definition, ontologies, metrics) (local_dir / "README.md").write_text(readme_content) # Create dataset card (metadata.json) @@ -242,11 +304,11 @@ def get_ontology_class_by_id(ontology_id: str) -> type[BaseOntology]: raise ValueError(f"No ontology class found for ID: {ontology_id}") -def group_ontologies_by_domain(ontologies: List[Tuple[BaseOntology, str]]) -> Dict[str, List[BaseOntology]]: +def group_ontologies_by_domain(ontologies: List[BaseOntology]) -> Dict[str, List[BaseOntology]]: """Group ontologies by their domain.""" domain_groups = {} - for ontology, _ in ontologies: + for ontology in ontologies: domain = ontology.domain.lower().replace(' ', '_') if domain not in domain_groups: domain_groups[domain] = [] @@ -311,18 +373,231 @@ def load_metrics_from_excel(metrics_file: Path) -> Dict[str, OntologyMetrics]: def main(): try: - ontologies: list[tuple[BaseOntology, str]] = [ - # Agricultural Ontologies - # (FoodOn(), "owl"), - # (AGROVOC(), "rdf"), - # (PO(), "owl"), - + ontologies: list[BaseOntology] = [ + # # Agricultural Ontologies + # FoodOn(), + # AGROVOC(), + # PO(), + # # # Arts and Humanities Ontologies - # (ChordOntology(), "rdf"), - # (ICON(), "icon.owl"), - # (MusicOntology(), "music.rdf"), - # (Nomisma(), "nomisma.ttl"), - # (TimelineOntology(), "timeline.rdf"), + # ChordOntology(), + # ICON(), + # MusicOntology(), + # Nomisma(), + # TimelineOntology(), + # + # # Biology & Life Sciences Ontologies + # BioPAX(), + # EFO(), + # GO(), + # LIFO(), + # MarineTLO(), + # MGED(), + # MO(), + # NPO(), + # PATO(), + # + # # Chemistry Ontologies + # AFO(), + # ChEBI(), + # CHEMINF(), + # CHIRO(), + # ChMO(), + # FIX(), + # MassSpectrometry(), + # MOP(), + # NMRCV(), + # OntoKin(), + # PROCO(), + # PSIMOD(), + # REX(), + # RXNO(), + # VIBSO(), + # + # # Ecology & Environment Ontologies + # ENVO(), + # OEO(), + # SWEET(), + # + # # Education Ontologies + # BIBFRAME(), + # Common(), + # DoCO(), + # + # # # Event Ontologies + # ConferenceOntology(), + # iCalendar(), + # LODE(), + # + # # Finance Ontologies + # GoodRelations(), + # + # # Food & Beverage Ontologies + # Wine(), + # + # # General Knowledge Ontologies + # CCO(), + # DBpedia(), + # DublinCore(), + # EDAM(), + # GIST(), + # IAO(), + # PROV(), + # RO(), + # SchemaOrg(), + # UMBEL(), + # YAGO(), + # + # # Geography Ontologies + # GEO(), + # GeoNames(), + # GTS(), + # Juso(), + # + # # Industry + # AUTO(), + # DBO(), + # DOAP(), + # IOF(), + # PTO(), + # TUBES(), + # + # # Law Ontologies + # CopyrightOnto(), + # + # # Library & Cultural Heritage + # GND(), + # + # # Livestock Ontologies + # ATOL(), + # + # # Materials Science & Engineering + # AMOntology(), + # ASMO(), + # Atomistic(), + # BattINFO(), + # BMO(), + # BVCO(), + # CDCO(), + # CHAMEO(), + # CIFCore(), + # CMSO(), + # DISO(), + # DSIM(), + # EMMO(), + # EMMOCrystallography(), + # FSO(), + # GPO(), + # HPOnt(), + # LDO(), + # LPBFO(), + # MAMBO(), + # MAT(), + # MaterialInformation(), + # MatOnto(), + # MatVoc(), + # MatWerk(), + # MDO(), + # MDS(), + # MechanicalTesting(), + # MicroStructures(), + # MMO(), + # MOLBRINELL(), + # MOLTENSILE(), + # MSEO(), + # MSLE(), + # NanoMine(), + # OIEManufacturing(), + # OIEMaterials(), + # OIEModels(), + # OIESoftware(), + # #(OntoCAPE(language='en', base_dir=str(ONTOLOGIES_DIR / "materials_science_&_engineering")), "materials_science_&_engineering/OntoCAPE/OntoCAPE.owl"), + # ONTORULE(), + # PeriodicTable(), + # Photovoltaics(), + # PLDO(), + # PMDco(), + # PODO(), + # PRIMA(), + # SSN(), + # SystemCapabilities(), + # VIMMP(), + # + # # Medicine Ontologies + # BTO(), + # DEB(), + # DOID(), + # ENM(), + # MFOEM(), + # NCIt(), + # OBI(), + # PRotein(), # large + # + # # News & Media Ontologies + # BBC(), + # BBCBusiness(), + # BBCCMS(), + # BBCCoreConcepts(), + # BBCCreativeWork(), + # BBCFood(), + # BBCPolitics(), + # BBCProgrammes(), + # BBCProvenance(), + # BBCSport(), + # BBCStoryline(), + # BBCWildlife(), + # + # # Scholarly Knowledge Ontologies + # AIISO(), + # CiTO(), + # CSO(), + # DataCite(), + # DCAT(), + # DUO(), + # EURIO(), + # EXPO(), + # FRAPO(), + # FRBRoo(), + # LexInfo(), + # Metadata4Ing(), + # NFDIcore(), + # OBOE(), + # OPMW(), + # PPlan(), + # PreMOn(), + # SEPIO(), + # SPDocument(), + # SPWorkflow(), + # SWO(), + # TribAIn(), + # VOAF(), + # WiLD(), + # + # # Social Sciences + # AS2(), + # BIO(), + # Contact(), + # FOAF(), + # SIOC(), + # + # # Units and Measurements + # OM(), + # OWLTime(), + # QUDT(), + # QUDV(), + # UO(), + # + # # Upper Ontologies + # BFO(), + # DOLCE(), + # FAIR(), + # GFO(), + # SIO(), + # SUMO(), + # + # # Web Ontologies + # Hydra(), + # SAREF(), ] # Group ontologies by domain @@ -336,8 +611,15 @@ def main(): failures = 0 for domain, domain_ontologies in domain_groups.items(): + logger.info(f"Processing {domain} domain with {len(domain_ontologies)} ontologies") + + extended_definition = improve_domain_definition(domain, DOMAINS_DEFINITIONS[domain], domain_ontologies) + + logger.info(f"Extended domain definition: {extended_definition}") + success, _ = push_domain_to_huggingface( domain=domain, + domain_definition=extended_definition, ontologies=domain_ontologies, metrics=metrics ) From 7f9e633ff7fd60850f3ab45eb59f61a9294f52fa Mon Sep 17 00:00:00 2001 From: aioaneia Date: Sat, 3 May 2025 13:46:15 +0200 Subject: [PATCH 11/37] :bug: fix save path formatting for ontology datasets --- ontolearner/processor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ontolearner/processor.py b/ontolearner/processor.py index 9f6563e..7aa83cc 100644 --- a/ontolearner/processor.py +++ b/ontolearner/processor.py @@ -67,7 +67,7 @@ def _save_datasets(self, data: OntologyData, ontology: BaseOntology) -> None: domain_dir = self.datasets_dir / f"{ontology.domain.lower().replace(' ', '_')}" domain_dir.mkdir(parents=True, exist_ok=True) - save_path = domain_dir / f"{ontology.ontology_id.lower().replace(' ', '_')} / {dataset_type}.json" + save_path = domain_dir / f"{ontology.ontology_id.lower().replace(' ', '_')}/{dataset_type}.json" io.save_json(data.model_dump()[dataset_type], save_path) def _generate_documentation(self, ontology: BaseOntology, metrics: OntologyMetrics): From 212ae0ce2c128250a1e15623fcf73c07db67930b Mon Sep 17 00:00:00 2001 From: aioaneia Date: Sat, 3 May 2025 14:15:47 +0200 Subject: [PATCH 12/37] :sparkles: replaced '&' with 'and' in the ontology domain names --- .../chordontology.rst | 0 .../icon.rst | 0 .../musicontology.rst | 0 .../nomisma.rst | 0 .../timelineontology.rst | 0 .../biopax.rst | 0 .../efo.rst | 0 .../go.rst | 0 .../lifo.rst | 0 .../marinetlo.rst | 0 .../mged.rst | 0 .../microscopy.rst | 0 .../npo.rst | 0 .../pato.rst | 0 .../envo.rst | 0 .../oeo.rst | 0 .../sweet.rst | 0 .../wine.rst | 0 .../gnd.rst | 0 .../amontology.rst | 0 .../asmo.rst | 0 .../atomistic.rst | 0 .../battinfo.rst | 0 .../bmo.rst | 0 .../bvco.rst | 0 .../cdco.rst | 0 .../chameo.rst | 0 .../cifcore.rst | 0 .../cmso.rst | 0 .../diso.rst | 0 .../dsim.rst | 0 .../emmo.rst | 0 .../emmocrystallography.rst | 0 .../fso.rst | 0 .../gpo.rst | 0 .../hpont.rst | 0 .../ldo.rst | 0 .../lpbfo.rst | 0 .../mambo.rst | 0 .../mat.rst | 0 .../materialinformation.rst | 0 .../matonto.rst | 0 .../matvoc.rst | 0 .../matwerk.rst | 0 .../mdo.rst | 0 .../mds.rst | 0 .../mechanicaltesting.rst | 0 .../microstructures.rst | 0 .../mmo.rst | 0 .../molbrinell.rst | 0 .../moltensile.rst | 0 .../mseo.rst | 0 .../msle.rst | 0 .../nanomine.rst | 0 .../oiemanufacturing.rst | 0 .../oiematerials.rst | 0 .../oiemodels.rst | 0 .../oiesoftware.rst | 0 .../ontocape.rst | 0 .../ontorule.rst | 0 .../periodictable.rst | 0 .../photovoltaics.rst | 0 .../pldo.rst | 0 .../pmdco.rst | 0 .../podo.rst | 0 .../prima.rst | 0 .../ssn.rst | 0 .../systemcapabilities.rst | 0 .../vimmp.rst | 0 .../{news_&_media => news_and_media}/bbc.rst | 0 .../bbcbusiness.rst | 0 .../bbccms.rst | 0 .../bbccoreconcepts.rst | 0 .../bbccreativework.rst | 0 .../bbcfood.rst | 0 .../bbcpolitics.rst | 0 .../bbcprogrammes.rst | 0 .../bbcprovenance.rst | 0 .../bbcsport.rst | 0 .../bbcstoryline.rst | 0 .../bbcwildlife.rst | 0 .../hydra.rst | 0 .../saref.rst | 0 ontolearner/ontology/arts_humanities.py | 10 +- ontolearner/ontology/biology.py | 18 ++-- ontolearner/ontology/ecology_environment.py | 6 +- ontolearner/ontology/food_beverage.py | 2 +- .../ontology/library_cultural_heritage.py | 2 +- .../ontology/material_science_engineering.py | 100 +++++++++--------- ontolearner/ontology/news_media.py | 26 ++--- ontolearner/ontology/web.py | 4 +- 91 files changed, 84 insertions(+), 84 deletions(-) rename docs/source/benchmarking/{arts_&_humanities => arts_and_humanities}/chordontology.rst (100%) rename docs/source/benchmarking/{arts_&_humanities => arts_and_humanities}/icon.rst (100%) rename docs/source/benchmarking/{arts_&_humanities => arts_and_humanities}/musicontology.rst (100%) rename docs/source/benchmarking/{arts_&_humanities => arts_and_humanities}/nomisma.rst (100%) rename docs/source/benchmarking/{arts_&_humanities => arts_and_humanities}/timelineontology.rst (100%) rename docs/source/benchmarking/{biology_&_life_sciences => biology_and_life_sciences}/biopax.rst (100%) rename docs/source/benchmarking/{biology_&_life_sciences => biology_and_life_sciences}/efo.rst (100%) rename docs/source/benchmarking/{biology_&_life_sciences => biology_and_life_sciences}/go.rst (100%) rename docs/source/benchmarking/{biology_&_life_sciences => biology_and_life_sciences}/lifo.rst (100%) rename docs/source/benchmarking/{biology_&_life_sciences => biology_and_life_sciences}/marinetlo.rst (100%) rename docs/source/benchmarking/{biology_&_life_sciences => biology_and_life_sciences}/mged.rst (100%) rename docs/source/benchmarking/{biology_&_life_sciences => biology_and_life_sciences}/microscopy.rst (100%) rename docs/source/benchmarking/{biology_&_life_sciences => biology_and_life_sciences}/npo.rst (100%) rename docs/source/benchmarking/{biology_&_life_sciences => biology_and_life_sciences}/pato.rst (100%) rename docs/source/benchmarking/{ecology_&_environment => ecology_and_environment}/envo.rst (100%) rename docs/source/benchmarking/{ecology_&_environment => ecology_and_environment}/oeo.rst (100%) rename docs/source/benchmarking/{ecology_&_environment => ecology_and_environment}/sweet.rst (100%) rename docs/source/benchmarking/{food_&_beverage => food_and_beverage}/wine.rst (100%) rename docs/source/benchmarking/{library_&_cultural_heritage => library_and_cultural_heritage}/gnd.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/amontology.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/asmo.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/atomistic.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/battinfo.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/bmo.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/bvco.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/cdco.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/chameo.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/cifcore.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/cmso.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/diso.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/dsim.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/emmo.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/emmocrystallography.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/fso.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/gpo.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/hpont.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/ldo.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/lpbfo.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/mambo.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/mat.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/materialinformation.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/matonto.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/matvoc.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/matwerk.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/mdo.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/mds.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/mechanicaltesting.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/microstructures.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/mmo.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/molbrinell.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/moltensile.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/mseo.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/msle.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/nanomine.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/oiemanufacturing.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/oiematerials.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/oiemodels.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/oiesoftware.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/ontocape.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/ontorule.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/periodictable.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/photovoltaics.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/pldo.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/pmdco.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/podo.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/prima.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/ssn.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/systemcapabilities.rst (100%) rename docs/source/benchmarking/{materials_science_&_engineering => materials_science_and_engineering}/vimmp.rst (100%) rename docs/source/benchmarking/{news_&_media => news_and_media}/bbc.rst (100%) rename docs/source/benchmarking/{news_&_media => news_and_media}/bbcbusiness.rst (100%) rename docs/source/benchmarking/{news_&_media => news_and_media}/bbccms.rst (100%) rename docs/source/benchmarking/{news_&_media => news_and_media}/bbccoreconcepts.rst (100%) rename docs/source/benchmarking/{news_&_media => news_and_media}/bbccreativework.rst (100%) rename docs/source/benchmarking/{news_&_media => news_and_media}/bbcfood.rst (100%) rename docs/source/benchmarking/{news_&_media => news_and_media}/bbcpolitics.rst (100%) rename docs/source/benchmarking/{news_&_media => news_and_media}/bbcprogrammes.rst (100%) rename docs/source/benchmarking/{news_&_media => news_and_media}/bbcprovenance.rst (100%) rename docs/source/benchmarking/{news_&_media => news_and_media}/bbcsport.rst (100%) rename docs/source/benchmarking/{news_&_media => news_and_media}/bbcstoryline.rst (100%) rename docs/source/benchmarking/{news_&_media => news_and_media}/bbcwildlife.rst (100%) rename docs/source/benchmarking/{web_&_internet => web_and_internet}/hydra.rst (100%) rename docs/source/benchmarking/{web_&_internet => web_and_internet}/saref.rst (100%) diff --git a/docs/source/benchmarking/arts_&_humanities/chordontology.rst b/docs/source/benchmarking/arts_and_humanities/chordontology.rst similarity index 100% rename from docs/source/benchmarking/arts_&_humanities/chordontology.rst rename to docs/source/benchmarking/arts_and_humanities/chordontology.rst diff --git a/docs/source/benchmarking/arts_&_humanities/icon.rst b/docs/source/benchmarking/arts_and_humanities/icon.rst similarity index 100% rename from docs/source/benchmarking/arts_&_humanities/icon.rst rename to docs/source/benchmarking/arts_and_humanities/icon.rst diff --git a/docs/source/benchmarking/arts_&_humanities/musicontology.rst b/docs/source/benchmarking/arts_and_humanities/musicontology.rst similarity index 100% rename from docs/source/benchmarking/arts_&_humanities/musicontology.rst rename to docs/source/benchmarking/arts_and_humanities/musicontology.rst diff --git a/docs/source/benchmarking/arts_&_humanities/nomisma.rst b/docs/source/benchmarking/arts_and_humanities/nomisma.rst similarity index 100% rename from docs/source/benchmarking/arts_&_humanities/nomisma.rst rename to docs/source/benchmarking/arts_and_humanities/nomisma.rst diff --git a/docs/source/benchmarking/arts_&_humanities/timelineontology.rst b/docs/source/benchmarking/arts_and_humanities/timelineontology.rst similarity index 100% rename from docs/source/benchmarking/arts_&_humanities/timelineontology.rst rename to docs/source/benchmarking/arts_and_humanities/timelineontology.rst diff --git a/docs/source/benchmarking/biology_&_life_sciences/biopax.rst b/docs/source/benchmarking/biology_and_life_sciences/biopax.rst similarity index 100% rename from docs/source/benchmarking/biology_&_life_sciences/biopax.rst rename to docs/source/benchmarking/biology_and_life_sciences/biopax.rst diff --git a/docs/source/benchmarking/biology_&_life_sciences/efo.rst b/docs/source/benchmarking/biology_and_life_sciences/efo.rst similarity index 100% rename from docs/source/benchmarking/biology_&_life_sciences/efo.rst rename to docs/source/benchmarking/biology_and_life_sciences/efo.rst diff --git a/docs/source/benchmarking/biology_&_life_sciences/go.rst b/docs/source/benchmarking/biology_and_life_sciences/go.rst similarity index 100% rename from docs/source/benchmarking/biology_&_life_sciences/go.rst rename to docs/source/benchmarking/biology_and_life_sciences/go.rst diff --git a/docs/source/benchmarking/biology_&_life_sciences/lifo.rst b/docs/source/benchmarking/biology_and_life_sciences/lifo.rst similarity index 100% rename from docs/source/benchmarking/biology_&_life_sciences/lifo.rst rename to docs/source/benchmarking/biology_and_life_sciences/lifo.rst diff --git a/docs/source/benchmarking/biology_&_life_sciences/marinetlo.rst b/docs/source/benchmarking/biology_and_life_sciences/marinetlo.rst similarity index 100% rename from docs/source/benchmarking/biology_&_life_sciences/marinetlo.rst rename to docs/source/benchmarking/biology_and_life_sciences/marinetlo.rst diff --git a/docs/source/benchmarking/biology_&_life_sciences/mged.rst b/docs/source/benchmarking/biology_and_life_sciences/mged.rst similarity index 100% rename from docs/source/benchmarking/biology_&_life_sciences/mged.rst rename to docs/source/benchmarking/biology_and_life_sciences/mged.rst diff --git a/docs/source/benchmarking/biology_&_life_sciences/microscopy.rst b/docs/source/benchmarking/biology_and_life_sciences/microscopy.rst similarity index 100% rename from docs/source/benchmarking/biology_&_life_sciences/microscopy.rst rename to docs/source/benchmarking/biology_and_life_sciences/microscopy.rst diff --git a/docs/source/benchmarking/biology_&_life_sciences/npo.rst b/docs/source/benchmarking/biology_and_life_sciences/npo.rst similarity index 100% rename from docs/source/benchmarking/biology_&_life_sciences/npo.rst rename to docs/source/benchmarking/biology_and_life_sciences/npo.rst diff --git a/docs/source/benchmarking/biology_&_life_sciences/pato.rst b/docs/source/benchmarking/biology_and_life_sciences/pato.rst similarity index 100% rename from docs/source/benchmarking/biology_&_life_sciences/pato.rst rename to docs/source/benchmarking/biology_and_life_sciences/pato.rst diff --git a/docs/source/benchmarking/ecology_&_environment/envo.rst b/docs/source/benchmarking/ecology_and_environment/envo.rst similarity index 100% rename from docs/source/benchmarking/ecology_&_environment/envo.rst rename to docs/source/benchmarking/ecology_and_environment/envo.rst diff --git a/docs/source/benchmarking/ecology_&_environment/oeo.rst b/docs/source/benchmarking/ecology_and_environment/oeo.rst similarity index 100% rename from docs/source/benchmarking/ecology_&_environment/oeo.rst rename to docs/source/benchmarking/ecology_and_environment/oeo.rst diff --git a/docs/source/benchmarking/ecology_&_environment/sweet.rst b/docs/source/benchmarking/ecology_and_environment/sweet.rst similarity index 100% rename from docs/source/benchmarking/ecology_&_environment/sweet.rst rename to docs/source/benchmarking/ecology_and_environment/sweet.rst diff --git a/docs/source/benchmarking/food_&_beverage/wine.rst b/docs/source/benchmarking/food_and_beverage/wine.rst similarity index 100% rename from docs/source/benchmarking/food_&_beverage/wine.rst rename to docs/source/benchmarking/food_and_beverage/wine.rst diff --git a/docs/source/benchmarking/library_&_cultural_heritage/gnd.rst b/docs/source/benchmarking/library_and_cultural_heritage/gnd.rst similarity index 100% rename from docs/source/benchmarking/library_&_cultural_heritage/gnd.rst rename to docs/source/benchmarking/library_and_cultural_heritage/gnd.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/amontology.rst b/docs/source/benchmarking/materials_science_and_engineering/amontology.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/amontology.rst rename to docs/source/benchmarking/materials_science_and_engineering/amontology.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/asmo.rst b/docs/source/benchmarking/materials_science_and_engineering/asmo.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/asmo.rst rename to docs/source/benchmarking/materials_science_and_engineering/asmo.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/atomistic.rst b/docs/source/benchmarking/materials_science_and_engineering/atomistic.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/atomistic.rst rename to docs/source/benchmarking/materials_science_and_engineering/atomistic.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/battinfo.rst b/docs/source/benchmarking/materials_science_and_engineering/battinfo.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/battinfo.rst rename to docs/source/benchmarking/materials_science_and_engineering/battinfo.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/bmo.rst b/docs/source/benchmarking/materials_science_and_engineering/bmo.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/bmo.rst rename to docs/source/benchmarking/materials_science_and_engineering/bmo.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/bvco.rst b/docs/source/benchmarking/materials_science_and_engineering/bvco.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/bvco.rst rename to docs/source/benchmarking/materials_science_and_engineering/bvco.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/cdco.rst b/docs/source/benchmarking/materials_science_and_engineering/cdco.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/cdco.rst rename to docs/source/benchmarking/materials_science_and_engineering/cdco.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/chameo.rst b/docs/source/benchmarking/materials_science_and_engineering/chameo.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/chameo.rst rename to docs/source/benchmarking/materials_science_and_engineering/chameo.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/cifcore.rst b/docs/source/benchmarking/materials_science_and_engineering/cifcore.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/cifcore.rst rename to docs/source/benchmarking/materials_science_and_engineering/cifcore.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/cmso.rst b/docs/source/benchmarking/materials_science_and_engineering/cmso.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/cmso.rst rename to docs/source/benchmarking/materials_science_and_engineering/cmso.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/diso.rst b/docs/source/benchmarking/materials_science_and_engineering/diso.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/diso.rst rename to docs/source/benchmarking/materials_science_and_engineering/diso.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/dsim.rst b/docs/source/benchmarking/materials_science_and_engineering/dsim.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/dsim.rst rename to docs/source/benchmarking/materials_science_and_engineering/dsim.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/emmo.rst b/docs/source/benchmarking/materials_science_and_engineering/emmo.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/emmo.rst rename to docs/source/benchmarking/materials_science_and_engineering/emmo.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/emmocrystallography.rst b/docs/source/benchmarking/materials_science_and_engineering/emmocrystallography.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/emmocrystallography.rst rename to docs/source/benchmarking/materials_science_and_engineering/emmocrystallography.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/fso.rst b/docs/source/benchmarking/materials_science_and_engineering/fso.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/fso.rst rename to docs/source/benchmarking/materials_science_and_engineering/fso.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/gpo.rst b/docs/source/benchmarking/materials_science_and_engineering/gpo.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/gpo.rst rename to docs/source/benchmarking/materials_science_and_engineering/gpo.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/hpont.rst b/docs/source/benchmarking/materials_science_and_engineering/hpont.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/hpont.rst rename to docs/source/benchmarking/materials_science_and_engineering/hpont.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/ldo.rst b/docs/source/benchmarking/materials_science_and_engineering/ldo.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/ldo.rst rename to docs/source/benchmarking/materials_science_and_engineering/ldo.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/lpbfo.rst b/docs/source/benchmarking/materials_science_and_engineering/lpbfo.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/lpbfo.rst rename to docs/source/benchmarking/materials_science_and_engineering/lpbfo.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/mambo.rst b/docs/source/benchmarking/materials_science_and_engineering/mambo.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/mambo.rst rename to docs/source/benchmarking/materials_science_and_engineering/mambo.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/mat.rst b/docs/source/benchmarking/materials_science_and_engineering/mat.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/mat.rst rename to docs/source/benchmarking/materials_science_and_engineering/mat.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/materialinformation.rst b/docs/source/benchmarking/materials_science_and_engineering/materialinformation.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/materialinformation.rst rename to docs/source/benchmarking/materials_science_and_engineering/materialinformation.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/matonto.rst b/docs/source/benchmarking/materials_science_and_engineering/matonto.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/matonto.rst rename to docs/source/benchmarking/materials_science_and_engineering/matonto.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/matvoc.rst b/docs/source/benchmarking/materials_science_and_engineering/matvoc.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/matvoc.rst rename to docs/source/benchmarking/materials_science_and_engineering/matvoc.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/matwerk.rst b/docs/source/benchmarking/materials_science_and_engineering/matwerk.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/matwerk.rst rename to docs/source/benchmarking/materials_science_and_engineering/matwerk.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/mdo.rst b/docs/source/benchmarking/materials_science_and_engineering/mdo.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/mdo.rst rename to docs/source/benchmarking/materials_science_and_engineering/mdo.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/mds.rst b/docs/source/benchmarking/materials_science_and_engineering/mds.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/mds.rst rename to docs/source/benchmarking/materials_science_and_engineering/mds.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/mechanicaltesting.rst b/docs/source/benchmarking/materials_science_and_engineering/mechanicaltesting.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/mechanicaltesting.rst rename to docs/source/benchmarking/materials_science_and_engineering/mechanicaltesting.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/microstructures.rst b/docs/source/benchmarking/materials_science_and_engineering/microstructures.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/microstructures.rst rename to docs/source/benchmarking/materials_science_and_engineering/microstructures.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/mmo.rst b/docs/source/benchmarking/materials_science_and_engineering/mmo.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/mmo.rst rename to docs/source/benchmarking/materials_science_and_engineering/mmo.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/molbrinell.rst b/docs/source/benchmarking/materials_science_and_engineering/molbrinell.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/molbrinell.rst rename to docs/source/benchmarking/materials_science_and_engineering/molbrinell.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/moltensile.rst b/docs/source/benchmarking/materials_science_and_engineering/moltensile.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/moltensile.rst rename to docs/source/benchmarking/materials_science_and_engineering/moltensile.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/mseo.rst b/docs/source/benchmarking/materials_science_and_engineering/mseo.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/mseo.rst rename to docs/source/benchmarking/materials_science_and_engineering/mseo.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/msle.rst b/docs/source/benchmarking/materials_science_and_engineering/msle.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/msle.rst rename to docs/source/benchmarking/materials_science_and_engineering/msle.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/nanomine.rst b/docs/source/benchmarking/materials_science_and_engineering/nanomine.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/nanomine.rst rename to docs/source/benchmarking/materials_science_and_engineering/nanomine.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/oiemanufacturing.rst b/docs/source/benchmarking/materials_science_and_engineering/oiemanufacturing.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/oiemanufacturing.rst rename to docs/source/benchmarking/materials_science_and_engineering/oiemanufacturing.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/oiematerials.rst b/docs/source/benchmarking/materials_science_and_engineering/oiematerials.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/oiematerials.rst rename to docs/source/benchmarking/materials_science_and_engineering/oiematerials.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/oiemodels.rst b/docs/source/benchmarking/materials_science_and_engineering/oiemodels.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/oiemodels.rst rename to docs/source/benchmarking/materials_science_and_engineering/oiemodels.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/oiesoftware.rst b/docs/source/benchmarking/materials_science_and_engineering/oiesoftware.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/oiesoftware.rst rename to docs/source/benchmarking/materials_science_and_engineering/oiesoftware.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/ontocape.rst b/docs/source/benchmarking/materials_science_and_engineering/ontocape.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/ontocape.rst rename to docs/source/benchmarking/materials_science_and_engineering/ontocape.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/ontorule.rst b/docs/source/benchmarking/materials_science_and_engineering/ontorule.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/ontorule.rst rename to docs/source/benchmarking/materials_science_and_engineering/ontorule.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/periodictable.rst b/docs/source/benchmarking/materials_science_and_engineering/periodictable.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/periodictable.rst rename to docs/source/benchmarking/materials_science_and_engineering/periodictable.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/photovoltaics.rst b/docs/source/benchmarking/materials_science_and_engineering/photovoltaics.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/photovoltaics.rst rename to docs/source/benchmarking/materials_science_and_engineering/photovoltaics.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/pldo.rst b/docs/source/benchmarking/materials_science_and_engineering/pldo.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/pldo.rst rename to docs/source/benchmarking/materials_science_and_engineering/pldo.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/pmdco.rst b/docs/source/benchmarking/materials_science_and_engineering/pmdco.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/pmdco.rst rename to docs/source/benchmarking/materials_science_and_engineering/pmdco.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/podo.rst b/docs/source/benchmarking/materials_science_and_engineering/podo.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/podo.rst rename to docs/source/benchmarking/materials_science_and_engineering/podo.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/prima.rst b/docs/source/benchmarking/materials_science_and_engineering/prima.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/prima.rst rename to docs/source/benchmarking/materials_science_and_engineering/prima.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/ssn.rst b/docs/source/benchmarking/materials_science_and_engineering/ssn.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/ssn.rst rename to docs/source/benchmarking/materials_science_and_engineering/ssn.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/systemcapabilities.rst b/docs/source/benchmarking/materials_science_and_engineering/systemcapabilities.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/systemcapabilities.rst rename to docs/source/benchmarking/materials_science_and_engineering/systemcapabilities.rst diff --git a/docs/source/benchmarking/materials_science_&_engineering/vimmp.rst b/docs/source/benchmarking/materials_science_and_engineering/vimmp.rst similarity index 100% rename from docs/source/benchmarking/materials_science_&_engineering/vimmp.rst rename to docs/source/benchmarking/materials_science_and_engineering/vimmp.rst diff --git a/docs/source/benchmarking/news_&_media/bbc.rst b/docs/source/benchmarking/news_and_media/bbc.rst similarity index 100% rename from docs/source/benchmarking/news_&_media/bbc.rst rename to docs/source/benchmarking/news_and_media/bbc.rst diff --git a/docs/source/benchmarking/news_&_media/bbcbusiness.rst b/docs/source/benchmarking/news_and_media/bbcbusiness.rst similarity index 100% rename from docs/source/benchmarking/news_&_media/bbcbusiness.rst rename to docs/source/benchmarking/news_and_media/bbcbusiness.rst diff --git a/docs/source/benchmarking/news_&_media/bbccms.rst b/docs/source/benchmarking/news_and_media/bbccms.rst similarity index 100% rename from docs/source/benchmarking/news_&_media/bbccms.rst rename to docs/source/benchmarking/news_and_media/bbccms.rst diff --git a/docs/source/benchmarking/news_&_media/bbccoreconcepts.rst b/docs/source/benchmarking/news_and_media/bbccoreconcepts.rst similarity index 100% rename from docs/source/benchmarking/news_&_media/bbccoreconcepts.rst rename to docs/source/benchmarking/news_and_media/bbccoreconcepts.rst diff --git a/docs/source/benchmarking/news_&_media/bbccreativework.rst b/docs/source/benchmarking/news_and_media/bbccreativework.rst similarity index 100% rename from docs/source/benchmarking/news_&_media/bbccreativework.rst rename to docs/source/benchmarking/news_and_media/bbccreativework.rst diff --git a/docs/source/benchmarking/news_&_media/bbcfood.rst b/docs/source/benchmarking/news_and_media/bbcfood.rst similarity index 100% rename from docs/source/benchmarking/news_&_media/bbcfood.rst rename to docs/source/benchmarking/news_and_media/bbcfood.rst diff --git a/docs/source/benchmarking/news_&_media/bbcpolitics.rst b/docs/source/benchmarking/news_and_media/bbcpolitics.rst similarity index 100% rename from docs/source/benchmarking/news_&_media/bbcpolitics.rst rename to docs/source/benchmarking/news_and_media/bbcpolitics.rst diff --git a/docs/source/benchmarking/news_&_media/bbcprogrammes.rst b/docs/source/benchmarking/news_and_media/bbcprogrammes.rst similarity index 100% rename from docs/source/benchmarking/news_&_media/bbcprogrammes.rst rename to docs/source/benchmarking/news_and_media/bbcprogrammes.rst diff --git a/docs/source/benchmarking/news_&_media/bbcprovenance.rst b/docs/source/benchmarking/news_and_media/bbcprovenance.rst similarity index 100% rename from docs/source/benchmarking/news_&_media/bbcprovenance.rst rename to docs/source/benchmarking/news_and_media/bbcprovenance.rst diff --git a/docs/source/benchmarking/news_&_media/bbcsport.rst b/docs/source/benchmarking/news_and_media/bbcsport.rst similarity index 100% rename from docs/source/benchmarking/news_&_media/bbcsport.rst rename to docs/source/benchmarking/news_and_media/bbcsport.rst diff --git a/docs/source/benchmarking/news_&_media/bbcstoryline.rst b/docs/source/benchmarking/news_and_media/bbcstoryline.rst similarity index 100% rename from docs/source/benchmarking/news_&_media/bbcstoryline.rst rename to docs/source/benchmarking/news_and_media/bbcstoryline.rst diff --git a/docs/source/benchmarking/news_&_media/bbcwildlife.rst b/docs/source/benchmarking/news_and_media/bbcwildlife.rst similarity index 100% rename from docs/source/benchmarking/news_&_media/bbcwildlife.rst rename to docs/source/benchmarking/news_and_media/bbcwildlife.rst diff --git a/docs/source/benchmarking/web_&_internet/hydra.rst b/docs/source/benchmarking/web_and_internet/hydra.rst similarity index 100% rename from docs/source/benchmarking/web_&_internet/hydra.rst rename to docs/source/benchmarking/web_and_internet/hydra.rst diff --git a/docs/source/benchmarking/web_&_internet/saref.rst b/docs/source/benchmarking/web_and_internet/saref.rst similarity index 100% rename from docs/source/benchmarking/web_&_internet/saref.rst rename to docs/source/benchmarking/web_and_internet/saref.rst diff --git a/ontolearner/ontology/arts_humanities.py b/ontolearner/ontology/arts_humanities.py index c552f3f..761492f 100644 --- a/ontolearner/ontology/arts_humanities.py +++ b/ontolearner/ontology/arts_humanities.py @@ -7,7 +7,7 @@ class ChordOntology(BaseOntology): """ ontology_id = "ChordOntology" ontology_full_name = "Chord Ontology (ChordOntology)" - domain = "Arts & Humanities" + domain = "Arts and Humanities" category = "Musical Works" version = "1.0" last_updated = "2007-10-25" @@ -25,7 +25,7 @@ class ICON(BaseOntology): """ ontology_id = "ICON" ontology_full_name = "Icon Ontology (ICON)" - domain = "Arts & Humanities" + domain = "Arts and Humanities" category = "Art History, Cultural Heritage" version = "2.1.0" last_updated = "April 26th, 2024" @@ -43,7 +43,7 @@ class MusicOntology(BaseOntology): """ ontology_id = "MusicOntology" ontology_full_name = "Music Ontology (MusicOntology)" - domain = "Arts & Humanities" + domain = "Arts and Humanities" category = "Music Theory" version = "2.1.5" last_updated = "2013/07/22" @@ -62,7 +62,7 @@ class Nomisma(BaseOntology): """ ontology_id = "Nomisma" ontology_full_name = "Nomisma Ontology (Nomisma)" - domain = "Arts & Humanities" + domain = "Arts and Humanities" category = "Numismatics" version = None last_updated = "2025-01-22" @@ -80,7 +80,7 @@ class TimelineOntology(BaseOntology): """ ontology_id = "TimelineOntology" ontology_full_name = "Timeline Ontology (TimelineOntology)" - domain = "Arts & Humanities" + domain = "Arts and Humanities" category = "Music Theory" version = "1.0" last_updated = "25th October 2007" diff --git a/ontolearner/ontology/biology.py b/ontolearner/ontology/biology.py index 88eb593..b2d7379 100644 --- a/ontolearner/ontology/biology.py +++ b/ontolearner/ontology/biology.py @@ -10,7 +10,7 @@ class BioPAX(BaseOntology): """ ontology_id = "BioPAX" ontology_full_name = "Biological Pathways Exchange (BioPAX)" - domain = "Biology & Life Sciences" + domain = "Biology and Life Sciences" category = "Bioinformatics" version = "1.0" last_updated = "16 April 2015" @@ -30,7 +30,7 @@ class EFO(BaseOntology): """ ontology_id = "EFO" ontology_full_name = "Experimental Factor Ontology (EFO)" - domain = "Biology & Life Sciences" + domain = "Biology and Life Sciences" category = "Biology" version = "3.75.0" last_updated = "2025-02-17" @@ -47,7 +47,7 @@ class GO(BaseOntology): """ ontology_id = "GO" ontology_full_name = "Gene Ontology (GO)" - domain = "Biology & Life Sciences" + domain = "Biology and Life Sciences" category = "Molecular Biology, Genetics" version = None last_updated = "2024-11-03" @@ -66,7 +66,7 @@ class LIFO(BaseOntology): """ ontology_id = "LIFO" ontology_full_name = "Life Ontology (LifO)" - domain = "Biology & Life Sciences" + domain = "Biology and Life Sciences" category = "General Purpose" version = "1.0.17" last_updated = "March 11, 2018" @@ -91,7 +91,7 @@ class MarineTLO(BaseOntology): """ ontology_id = "MarineTLO" ontology_full_name = "Marine Taxonomy and Life Ontology (MarineTLO)" - domain = "Biology & Life Sciences" + domain = "Biology and Life Sciences" category = "Marine Science, Oceanography" version = "1.0" last_updated = "2017-01-05" @@ -111,7 +111,7 @@ class MGED(BaseOntology): """ ontology_id = "MGED" ontology_full_name = "MGED Ontology (MGED)" - domain = "Biology & Life Sciences" + domain = "Biology and Life Sciences" category = "Domain Ontology" version = "1.3.1.1" last_updated = "Feb. 9, 2007" @@ -129,7 +129,7 @@ class MO(BaseOntology): """ ontology_id = "MO" ontology_full_name = "Microscopy Ontology (MO)" - domain = "Biology & Life Sciences" + domain = "Biology and Life Sciences" category = "Microscopy" version = "2.0" last_updated = None @@ -155,7 +155,7 @@ class NPO(BaseOntology): """ ontology_id = "NPO" ontology_full_name = "NanoParticle Ontology (NPO)" - domain = "Biology & Life Sciences" + domain = "Biology and Life Sciences" category = "Materials Science" version = "2013-05-31" last_updated = "2013-05-31" @@ -171,7 +171,7 @@ class PATO(BaseOntology): """ ontology_id = "PATO" ontology_full_name = "Phenotype and Trait Ontology (PATO)" - domain = "Biology & Life Sciences" + domain = "Biology and Life Sciences" category = "Biology" version = "1.2" last_updated = "2025-02-01" diff --git a/ontolearner/ontology/ecology_environment.py b/ontolearner/ontology/ecology_environment.py index 46e33f4..002aae7 100644 --- a/ontolearner/ontology/ecology_environment.py +++ b/ontolearner/ontology/ecology_environment.py @@ -10,7 +10,7 @@ class ENVO(BaseOntology): """ ontology_id = "ENVO" ontology_full_name = "Environment Ontology (ENVO)" - domain = "Ecology & Environment" + domain = "Ecology and Environment" category = "Environment, Ecosystems, Habitats" version = "2024-07-01" last_updated = "2024-07-01" @@ -31,7 +31,7 @@ class OEO(BaseOntology): """ ontology_id = "OEO" ontology_full_name = "The Open Energy Ontology (OEO)" - domain = "Ecology & Environment" + domain = "Ecology and Environment" category = "Energy" version = "2.7.0" last_updated = "03/2025" @@ -51,7 +51,7 @@ class SWEET(BaseOntology): """ ontology_id = "SWEET" ontology_full_name = "Semantic Web for Earth and Environment Technology Ontology (SWEET)" - domain = "Ecology & Environment" + domain = "Ecology and Environment" category = "Earth Science, Geoscience" version = "3.6.0" last_updated = "July 14, 2022" diff --git a/ontolearner/ontology/food_beverage.py b/ontolearner/ontology/food_beverage.py index a539f56..50f4e6c 100644 --- a/ontolearner/ontology/food_beverage.py +++ b/ontolearner/ontology/food_beverage.py @@ -7,7 +7,7 @@ class Wine(BaseOntology): """ ontology_id = "Wine" ontology_full_name = "Wine Ontology (Wine)" - domain = "Food & Beverage" + domain = "Food and Beverage" category = "Wine" version = None last_updated = None diff --git a/ontolearner/ontology/library_cultural_heritage.py b/ontolearner/ontology/library_cultural_heritage.py index 36b20ee..1c834d9 100644 --- a/ontolearner/ontology/library_cultural_heritage.py +++ b/ontolearner/ontology/library_cultural_heritage.py @@ -9,7 +9,7 @@ class GND(BaseOntology): """ ontology_id = "GND" ontology_full_name = "Gemeinsame Normdatei (GND)" - domain = "Library & Cultural Heritage" + domain = "Library and Cultural Heritage" category = "Authority Files" version = "1.2.0" last_updated = "2024-08-26" diff --git a/ontolearner/ontology/material_science_engineering.py b/ontolearner/ontology/material_science_engineering.py index e319e01..c18f9f8 100644 --- a/ontolearner/ontology/material_science_engineering.py +++ b/ontolearner/ontology/material_science_engineering.py @@ -16,7 +16,7 @@ class AMOntology(BaseOntology): """ ontology_id = "AMOntology" ontology_full_name = "Additive Manufacturing Ontology (AMOntology)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Manufacturing" version = "1.0" last_updated = "2023-05-10" @@ -34,7 +34,7 @@ class ASMO(BaseOntology): """ ontology_id = "ASMO" ontology_full_name = "Atomistic Simulation Methods Ontology (ASMO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "1.0.0" last_updated = None @@ -50,7 +50,7 @@ class Atomistic(BaseOntology): """ ontology_id = "Atomistic" ontology_full_name = "Atomistic Ontology (Atomistic)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "0.0.2" last_updated = None @@ -69,7 +69,7 @@ class BattINFO(BaseOntology): """ ontology_id = "BattINFO" ontology_full_name = "Battery Interface Ontology (BattINFO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = None last_updated = None @@ -90,7 +90,7 @@ class BMO(BaseOntology): """ ontology_id = "BMO" ontology_full_name = "Building Material Ontology (BMO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials" version = "0.1" last_updated = "2019-12-10" @@ -109,7 +109,7 @@ class BVCO(BaseOntology): """ ontology_id = "BVCO" ontology_full_name = "Battery Value Chain Ontology (BVCO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "0.4.3" last_updated = None @@ -131,7 +131,7 @@ class OntoCAPE(BaseOntology): """ ontology_id = "OntoCAPE" ontology_full_name = "Ontology of Computer-Aided Process Engineering (OntoCAPE)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Manufacturing" version = "2.0" last_updated = None @@ -177,7 +177,7 @@ class CDCO(BaseOntology): """ ontology_id = "CDCO" ontology_full_name = "Crystallographic Defect Core Ontology (CDCO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "1.0.0" last_updated = None @@ -197,7 +197,7 @@ class CHAMEO(BaseOntology): """ ontology_id = "CHAMEO" ontology_full_name = "Characterisation Methodology Domain Ontology (CHAMEO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "1.0.0" last_updated = "2024-04-12" @@ -215,7 +215,7 @@ class CIFCore(BaseOntology): """ ontology_id = "CIFCore" ontology_full_name = "Crystallographic Information Framework (CIF) Core Dictionary (CIFCore)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "0.1.0" last_updated = "May 24, 2023" @@ -232,7 +232,7 @@ class CMSO(BaseOntology): """ ontology_id = "CMSO" ontology_full_name = "Computational Material Sample Ontology (CMSO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "0.0.1" last_updated = None @@ -249,7 +249,7 @@ class DISO(BaseOntology): """ ontology_id = "DISO" ontology_full_name = "Dislocation Ontology (DISO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "1.0" last_updated = "21.03.202" @@ -269,7 +269,7 @@ class DSIM(BaseOntology): """ ontology_id = "DSIM" ontology_full_name = "Dislocation Simulation and Model Ontology (DSIM)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "1.0" last_updated = "17.08.2023" @@ -289,7 +289,7 @@ class EMMO(BaseOntology): """ ontology_id = "EMMO" ontology_full_name = "The Elementary Multiperspective Material Ontology (EMMO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Modelling" version = "1.0.0-rc3" last_updated = "2024-03" @@ -305,7 +305,7 @@ class EMMOCrystallography(BaseOntology): """ ontology_id = "EMMOCrystallography" ontology_full_name = "Crystallography Ontology (EMMOCrystallography)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Crystallography" version = "0.0.1" last_updated = None @@ -322,7 +322,7 @@ class FSO(BaseOntology): """ ontology_id = "FSO" ontology_full_name = "Flow Systems Ontology (FSO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "0.1.0" last_updated = "2020-08-06" @@ -341,7 +341,7 @@ class GPO(BaseOntology): """ ontology_id = "GPO" ontology_full_name = "General Process Ontology (GPO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = None last_updated = None @@ -359,7 +359,7 @@ class HPOnt(BaseOntology): """ ontology_id = "HPOnt" ontology_full_name = "The Heat Pump Ontology (HPOnt)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "0.2" last_updated = None @@ -376,7 +376,7 @@ class LDO(BaseOntology): """ ontology_id = "LDO" ontology_full_name = "Line Defect Ontology (LDO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Defects" version = "1.0.0" last_updated = None @@ -396,7 +396,7 @@ class LPBFO(BaseOntology): """ ontology_id = "LPBFO" ontology_full_name = "Laser Powder Bed Fusion Ontology (LPBFO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "1.1.9" last_updated = "2022-09-20" @@ -420,7 +420,7 @@ class MAMBO(BaseOntology): """ ontology_id = "MAMBO" ontology_full_name = "Molecules And Materials Basic Ontology (MAMBO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = None last_updated = None @@ -439,7 +439,7 @@ class MAT(BaseOntology): """ ontology_id = "MAT" ontology_full_name = "Material Properties Ontology (MAT)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Properties" version = "0.0.8" last_updated = None @@ -457,7 +457,7 @@ class MaterialInformation(BaseOntology): """ ontology_id = "MaterialInformation" ontology_full_name = "Material Information Ontology (MaterialInformation)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = None last_updated = None @@ -473,7 +473,7 @@ class MatOnto(BaseOntology): """ ontology_id = "MatOnto" ontology_full_name = "Material Ontology (MatOnto)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Scholarly Knowledge" version = None last_updated = None @@ -489,7 +489,7 @@ class MatVoc(BaseOntology): """ ontology_id = "MatVoc" ontology_full_name = "Materials Vocabulary (MatVoc)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "1.0.0" last_updated = "2022-12-12" @@ -519,7 +519,7 @@ class MatWerk(BaseOntology): """ ontology_id = "MatWerk" ontology_full_name = "NFDI MatWerk Ontology (MatWerk)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Research Data, Interoperability" version = "3.0.0" last_updated = "2025-03-01" @@ -536,7 +536,7 @@ class MDO(BaseOntology): """ ontology_id = "MDO" ontology_full_name = "Materials Design Ontology (MDO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Design" version = "1.1" last_updated = "2022-08-02" @@ -554,7 +554,7 @@ class MDS(BaseOntology): """ ontology_id = "MDS" ontology_full_name = "Materials Data Science Ontology (MDS)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "0.3.0.0" last_updated = "03/24/2024" @@ -570,7 +570,7 @@ class MechanicalTesting(BaseOntology): """ ontology_id = "MechanicalTesting" ontology_full_name = "Mechanical Testing Ontology (MechanicalTesting)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Mechanical Testing" version = "1.0.0" last_updated = None @@ -589,7 +589,7 @@ class MicroStructures(BaseOntology): """ ontology_id = "MicroStructures" ontology_full_name = "EMMO-based ontology for microstructures (MicroStructures)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Microstructure" version = None last_updated = None @@ -609,7 +609,7 @@ class MMO(BaseOntology): """ ontology_id = "MMO" ontology_full_name = "Materials Mechanics Ontology (MMO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Scholarly Knowledge" version = "1.0.1" last_updated = "2024-01-30" @@ -625,7 +625,7 @@ class MOLBRINELL(BaseOntology): """ ontology_id = "MOLBRINELL" ontology_full_name = "MatoLab Brinell Test Ontology (MOL_BRINELL)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Testing" version = "0.1" last_updated = "05/05/2022" @@ -641,7 +641,7 @@ class MOLTENSILE(BaseOntology): """ ontology_id = "MOLTENSILE" ontology_full_name = "Matolab Tensile Test Ontology (MOL_TENSILE)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Testings" version = "0.4" last_updated = "04/16/2021" @@ -661,7 +661,7 @@ class MSEO(BaseOntology): """ ontology_id = "MSEO" ontology_full_name = "Materials Science and Engineering Ontology (MSEO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = None last_updated = None @@ -677,7 +677,7 @@ class MSLE(BaseOntology): """ ontology_id = "MSLE" ontology_full_name = "Material Science Lab Equipment Ontology (MSLE)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "1.1" last_updated = "Sep 15, 2022" @@ -695,7 +695,7 @@ class NanoMine(BaseOntology): """ ontology_id = "NanoMine" ontology_full_name = "NanoMine Ontology (NanoMine)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = None last_updated = None @@ -712,7 +712,7 @@ class OIEManufacturing(BaseOntology): """ ontology_id = "OIEManufacturing" ontology_full_name = "Open Innovation Environment (OIE) domain ontologies, Manufacturing module (OIEManufacturing)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials" version = None last_updated = None @@ -729,7 +729,7 @@ class OIEMaterials(BaseOntology): """ ontology_id = "OIEMaterials" ontology_full_name = "Open Innovation Environment (OIE) domain ontologies, Materials module (OIEMaterials)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials" version = None last_updated = None @@ -746,7 +746,7 @@ class OIEModels(BaseOntology): """ ontology_id = "OIEModels" ontology_full_name = "Open Innovation Environment (OIE) domain ontologies, Models module (OIEModels)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials" version = None last_updated = None @@ -762,7 +762,7 @@ class OIESoftware(BaseOntology): """ ontology_id = "OIESoftware" ontology_full_name = "Open Innovation Environment (OIE) domain ontologies, Software module (OIESoftware)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials" version = "0.1" last_updated = None @@ -782,7 +782,7 @@ class ONTORULE(BaseOntology): """ ontology_id = "ONTORULE" ontology_full_name = "Ontology for the Steel Domain (ONTORULE)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = None last_updated = "2010-05-31" @@ -799,7 +799,7 @@ class PeriodicTable(BaseOntology): """ ontology_id = "PeriodicTable" ontology_full_name = "Periodic Table of the Elements Ontology (PeriodicTable)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Periodic Table of Elements" version = "1.10" last_updated = "2004/02/05" @@ -815,7 +815,7 @@ class Photovoltaics(BaseOntology): """ ontology_id = "Photovoltaics" ontology_full_name = "EMMO Domain Ontology for Photovoltaics (Photovoltaics)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "0.0.1" last_updated = None @@ -832,7 +832,7 @@ class PLDO(BaseOntology): """ ontology_id = "PLDO" ontology_full_name = "Planar Defects Ontology (PLDO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Defects" version = "1.0.0" last_updated = None @@ -852,7 +852,7 @@ class PMDco(BaseOntology): """ ontology_id = "PMDco" ontology_full_name = "The Platform MaterialDigital core ontology (PMDco)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "3.0.0-alpha1" last_updated = "2025-03-20" @@ -868,7 +868,7 @@ class PODO(BaseOntology): """ ontology_id = "PODO" ontology_full_name = "Point Defects Ontology (PODO)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "1.0.0" last_updated = None @@ -884,7 +884,7 @@ class PRIMA(BaseOntology): """ ontology_id = "PRIMA" ontology_full_name = "PRovenance Information in MAterials science (PRIMA)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science" version = "2.0" last_updated = "2024-01-29" @@ -912,7 +912,7 @@ class SSN(BaseOntology): """ ontology_id = "SSN" ontology_full_name = "Semantic Sensor Network Ontology (SSN)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Sensor Networks" version = "1.0" last_updated = "2017-04-17" @@ -932,7 +932,7 @@ class SystemCapabilities(BaseOntology): """ ontology_id = "SystemCapabilities" ontology_full_name = "System capabilities, operating ranges, and survival ranges ontology (SystemCapabilities)" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Science, Engineering, Systems" version = None last_updated = "2017-05-14" @@ -953,7 +953,7 @@ class VIMMP(BaseOntology): """ ontology_id = "VIMMP" ontology_full_name = "Virtual Materials Marketplace (VIMMP) Ontologies" - domain = "Materials Science & Engineering" + domain = "Materials Science and Engineering" category = "Materials Modeling" version = None last_updated = "2021-01-02" diff --git a/ontolearner/ontology/news_media.py b/ontolearner/ontology/news_media.py index 0d9fb8a..4bc42a9 100644 --- a/ontolearner/ontology/news_media.py +++ b/ontolearner/ontology/news_media.py @@ -10,7 +10,7 @@ class BBC(BaseOntology): """ ontology_id = "BBC" ontology_full_name = "BBC Ontology (BBC)" - domain = "News & Media" + domain = "News and Media" category = "News" version = "1.37" last_updated = "2012-12-01" @@ -26,7 +26,7 @@ class BBCBusiness(BaseOntology): """ ontology_id = "BBCBusiness" ontology_full_name = "BBC Business News Ontology (BBCBusiness)" - domain = "News & Media" + domain = "News and Media" category = "Business News" version = "0.5" last_updated = "2014-11-09" @@ -44,7 +44,7 @@ class BBCCMS(BaseOntology): """ ontology_id = "BBCCMS" ontology_full_name = "BBC CMS Ontology (BBCCMS)" - domain = "News & Media" + domain = "News and Media" category = "Content Management Systems" version = "3.7" last_updated = "2012-12-01" @@ -62,7 +62,7 @@ class BBCCoreConcepts(BaseOntology): """ ontology_id = "BBCCoreConcepts" ontology_full_name = "BBC Core Concepts Ontology (BBCCoreConcepts)" - domain = "News & Media" + domain = "News and Media" category = "Core Concepts" version = "1.30" last_updated = "2019-11-21" @@ -80,7 +80,7 @@ class BBCCreativeWork(BaseOntology): """ ontology_id = "BBCCreativeWork" ontology_full_name = "BBC Creative Work Ontology (BBCCreativeWork)" - domain = "News & Media" + domain = "News and Media" category = "Creative Work" version = "1.19" last_updated = "2012-12-01" @@ -100,7 +100,7 @@ class BBCStoryline(BaseOntology): """ ontology_id = "BBCStoryline" ontology_full_name = "BBC Storyline Ontology (BBCStoryline)" - domain = "News & Media" + domain = "News and Media" category = "Storyline" version = "0.3" last_updated = "2013-05-01" @@ -119,8 +119,8 @@ class BBCFood(BaseOntology): """ ontology_id = "BBCFood" ontology_full_name = "BBC Food Ontology (BBCFood)" - domain = "News & Media" - category = "Food & Beverage" + domain = "News and Media" + category = "Food and Beverage" version = "0.1" last_updated = "2014/03/18" creator = None @@ -135,7 +135,7 @@ class BBCPolitics(BaseOntology): """ ontology_id = "BBCPolitics" ontology_full_name = "BBC Politics News Ontology (BBCPolitics)" - domain = "News & Media" + domain = "News and Media" category = "Politics" version = "0.9" last_updated = "2014-01-06" @@ -153,7 +153,7 @@ class BBCProgrammes(BaseOntology): """ ontology_id = "BBCProgrammes" ontology_full_name = "BBC Programmes Ontology (BBCProgrammes)" - domain = "News & Media" + domain = "News and Media" category = "Programmes" version = "1.1" last_updated = "2009/02/20" @@ -173,7 +173,7 @@ class BBCProvenance(BaseOntology): """ ontology_id = "BBCProvenance" ontology_full_name = "BBC Provenance News Ontology (BBCProvenance)" - domain = "News & Media" + domain = "News and Media" category = "Provenance" version = "1.9" last_updated = "2012-12-01" @@ -196,7 +196,7 @@ class BBCSport(BaseOntology): """ ontology_id = "BBCSport" ontology_full_name = "BBC Sport Ontology (BBCSport)" - domain = "News & Media" + domain = "News and Media" category = "Sport" version = "3.2" last_updated = None @@ -214,7 +214,7 @@ class BBCWildlife(BaseOntology): """ ontology_id = "BBCWildlife" ontology_full_name = "BBC Wildlife Ontology (BBCWildlife)" - domain = "News & Media" + domain = "News and Media" category = "Wildlife" version = "1.1" last_updated = "2013/12/18" diff --git a/ontolearner/ontology/web.py b/ontolearner/ontology/web.py index ad78cbc..888cffc 100644 --- a/ontolearner/ontology/web.py +++ b/ontolearner/ontology/web.py @@ -8,7 +8,7 @@ class Hydra(BaseOntology): """ ontology_id = "Hydra" ontology_full_name = "Hydra Ontology (Hydra)" - domain = "Web & Internet" + domain = "Web and Internet" category = "Web Development" version = None last_updated = "13 July 2021" @@ -28,7 +28,7 @@ class SAREF(BaseOntology): """ ontology_id = "SAREF" ontology_full_name = "Smart Applications REFerence ontology (SAREF)" - domain = "Web & Internet" + domain = "Web and Internet" category = "interoperability" version = "3.2.1" last_updated = "2020-12-31" From 16004e8d84840b3837d01e62280adccfb853bb9c Mon Sep 17 00:00:00 2001 From: aioaneia Date: Sat, 3 May 2025 15:22:01 +0200 Subject: [PATCH 13/37] :sparkles: refactored _is_valid_non_taxonomic_triple --- ontolearner/base/ontology.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/ontolearner/base/ontology.py b/ontolearner/base/ontology.py index 2033787..cfc5401 100644 --- a/ontolearner/base/ontology.py +++ b/ontolearner/base/ontology.py @@ -270,8 +270,6 @@ def extract_type_non_taxonomic_relations(self) -> Tuple[List[str], List[str], Li def _is_valid_non_taxonomic_triple(self, s: URIRef, p: URIRef, o: URIRef) -> bool: """Validate non-taxonomic relations between named classes (URIRefs only).""" return ( - isinstance(s, URIRef) and # Exclude BNodes - isinstance(o, URIRef) and # Exclude BNodes self.check_if_class(s) and self.check_if_class(o) and p != RDFS.subClassOf From 68398cc213dc4ca46bac70a65ab0c5133e935f52 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Sat, 3 May 2025 15:24:31 +0200 Subject: [PATCH 14/37] :sparkles: updated documentation --- docs/source/benchmarking/geography/geo.rst | 4 ++-- .../materials_science_and_engineering/matonto.rst | 6 +++--- ontolearner/ontology/geography.py | 6 +++++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/source/benchmarking/geography/geo.rst b/docs/source/benchmarking/geography/geo.rst index 72a9e1d..b1a3f19 100644 --- a/docs/source/benchmarking/geography/geo.rst +++ b/docs/source/benchmarking/geography/geo.rst @@ -14,7 +14,7 @@ to the specific ones over which the governments have jurisdiction) :Creator: William R Hogan :License: Creative Commons 4.0 :Format: OWL -:Download: `Geographical Entities Ontology (GEO) Homepage `_ +:Download: `Geographical Entities Ontology (GEO) Homepage `_ Graph Metrics ------------- @@ -48,7 +48,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 46949 - **Taxonomic Relations**: 664 - - **Non-taxonomic Relations**: 19 + - **Non-taxonomic Relations**: 65 - **Average Terms per Type**: 1805.73 Usage Example diff --git a/docs/source/benchmarking/materials_science_and_engineering/matonto.rst b/docs/source/benchmarking/materials_science_and_engineering/matonto.rst index 83d48fc..a9f7b2a 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/matonto.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/matonto.rst @@ -5,13 +5,13 @@ Overview -------- The Material Ontology (MatOnto) is based on the upper level ontology, the BFO. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Scholarly Knowledge :Current Version: None :Last Updated: None :Creator: None :License: None -:Format: OWL, TTL +:Format: OWL :Download: `Material Ontology (MatOnto) Homepage `_ Graph Metrics @@ -46,7 +46,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 122 - **Taxonomic Relations**: 2228 - - **Non-taxonomic Relations**: 167 + - **Non-taxonomic Relations**: 434 - **Average Terms per Type**: 1.94 Usage Example diff --git a/ontolearner/ontology/geography.py b/ontolearner/ontology/geography.py index f99fd75..74ba89b 100644 --- a/ontolearner/ontology/geography.py +++ b/ontolearner/ontology/geography.py @@ -16,7 +16,11 @@ class GEO(BaseOntology): creator = "William R Hogan" license = "Creative Commons 4.0" format = "OWL" - download_url = "http://purl.obolibrary.org/obo/geo.owl" + download_url = "https://github.com/mcwdsi/geographical-entity-ontology/blob/master/geo-all.owl" + + def contains_imports(self) -> bool: + """Hook: Check if the ontology contains imports.""" + return True class GeoNames(BaseOntology): From 3a48a94df3cb435285353d98c9b8c3f2e52ca2eb Mon Sep 17 00:00:00 2001 From: aioaneia Date: Sat, 3 May 2025 16:01:22 +0200 Subject: [PATCH 15/37] :sparkles: refactor ontology directory handling --- requirements.txt | 4 + scripts/add_new_ontology.py | 472 ++++++++++++++++++------------------ scripts/hf_integration.py | 36 ++- 3 files changed, 253 insertions(+), 259 deletions(-) diff --git a/requirements.txt b/requirements.txt index ee240e2..2351f17 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,3 +13,7 @@ setuptools~=78.1.0 python-dotenv~=1.1.0 huggingface-hub~=0.27.1 pygit2~=1.18.0 + +langchain-core~=0.3.51 +langchain-openai~=0.3.12 +langchain~=0.3.23 diff --git a/scripts/add_new_ontology.py b/scripts/add_new_ontology.py index ec584c9..ca3bc94 100644 --- a/scripts/add_new_ontology.py +++ b/scripts/add_new_ontology.py @@ -17,257 +17,255 @@ def main(): try: DATA_DIR = Path("../data") DOCS_DIR = Path("../docs") - ONTOLOGY_DIR = DATA_DIR / "ontologies" + ONTOLOGIES_DIR = DATA_DIR / "ontologies" DATASET_DIR = DATA_DIR / "datasets" TEMPLATES_DIR = DOCS_DIR / "source/_templates" BENCHMARK_DIR = DOCS_DIR / "source/benchmarking" METRICS_DIR = DATA_DIR / "metrics" - ONTOLOGY_DIR.mkdir(parents=True, exist_ok=True) + ONTOLOGIES_DIR.mkdir(parents=True, exist_ok=True) DATASET_DIR.mkdir(parents=True, exist_ok=True) BENCHMARK_DIR.mkdir(parents=True, exist_ok=True) METRICS_DIR.mkdir(parents=True, exist_ok=True) processor = Processor(datasets_dir=DATASET_DIR, templates_dir=TEMPLATES_DIR, benchmark_dir=BENCHMARK_DIR, metrics_dir=METRICS_DIR) - large_ontologies = [ - # (YAGO(), "general_knowledge/yago_facts.ttl"), - # (BattINFO(), "materials_science_&_engineering/battinfo.ttl"), - # (PRIMA(), "materials_science_&_engineering/prima.ttl"), # large - # (NCIt(), "medicine/ncit.owl"), - # (PRotein(), "medicine/protein.rdf"), - ] - - # ontologies = [ - # # Agricultural Ontologies - # (FoodOn(), "agricultural/foodon.owl"), - # (AGROVOC(), "agricultural/AGROVOC.rdf"), - # (PO(), "agricultural/plant.owl"), - # - # # Arts and Humanities Ontologies - # (ChordOntology(), "arts_&_humanities/chord.rdf"), - # (ICON(), "arts_&_humanities/icon.owl"), - # (MusicOntology(), "arts_&_humanities/music.rdf"), - # (Nomisma(), "arts_&_humanities/nomisma.ttl"), - # (TimelineOntology(), "arts_&_humanities/timeline.rdf"), - # - # # # Biology & Life Sciences Ontologies - # (BioPAX(), "biology_&_life_sciences/biopax.owl"), - # (EFO(), "biology_&_life_sciences/efo.owl"), - # (GO(), "biology_&_life_sciences/gene.owl"), - # (LIFO(), "biology_&_life_sciences/life.owl"), - # (MarineTLO(), "biology_&_life_sciences/marine_tlo.owl"), - # (MGED(), "biology_&_life_sciences/mged.owl"), - # (Microscopy(), "biology_&_life_sciences/pmd_mo.ttl"), - # (NPO(), "biology_&_life_sciences/npo_asserted.owl"), - # (PATO(), "biology_&_life_sciences/pato.owl"), - # - # # # Chemistry Ontologies - # (AFO(), "chemistry/afo.ttl"), - # (ChEBI(), "chemistry/chebi.owl"), - # (CHEMINF(), "chemistry/cheminf.owl"), - # (CHIRO(), "chemistry/chiro.owl"), - # (ChMO(), "chemistry/ChMO.owl"), - # (FIX(), "chemistry/fix.owl"), - # (MassSpectrometry(), "chemistry/mass_spectrometry.owl"), - # (MOP(), "chemistry/mop.owl"), - # (NMRCV(), "chemistry/NMRCV.owl"), - # (OntoKin(), "chemistry/ontokin.owl"), - # (PROCO(), "chemistry/proco.owl"), - # (PSIMOD(), "chemistry/psi-mod.owl"), - # (REX(), "chemistry/rex.owl"), - # (RXNO(), "chemistry/rxno.owl"), - # (VIBSO(), "chemistry/vibso.owl"), - # - # # Ecology & Environment Ontologies - # (ENVO(), "ecology_&_environment/envo.owl"), - # (OEO(), "ecology_&_environment/oeo.owl"), - # (SWEET(), "ecology_&_environment/sweet.owl"), - # - # # Education Ontologies - # (BIBFRAME(), "education/bibframe.rdf"), - # (Common(), "education/common.rdf"), - # (DoCO(), "education/doco.rdf"), - # - # # # Event Ontologies - # (ConferenceOntology(), "events/conference.owl"), - # (iCalendar(), "events/icalendar.rdf"), - # (LODE(), "events/lode.rdf"), - # - # # Finance Ontologies - # (GoodRelations(), "finance/goodrelations.owl"), - # - # # Food & Beverage Ontologies - # (Wine(), "food_&_beverage/wine.rdf"), - # - # # # General Knowledge Ontologies - # (CCO(), "general_knowledge/cco.ttl"), - # (DBpedia(), "general_knowledge/dbpedia.owl"), - # (DublinCore(), "general_knowledge/dublin_core.rdf"), - # (EDAM(), "general_knowledge/edam.owl"), - # (GIST(), "general_knowledge/gist.rdf"), - # (IAO(), "general_knowledge/iao.owl"), - # (PROV(), "general_knowledge/prov.owl"), - # (RO(), "general_knowledge/ro.owl"), - # (SchemaOrg(), "general_knowledge/schema_org.owl"), - # (UMBEL(), "general_knowledge/umbel.n3"), - # # (YAGO(), "general_knowledge/yago_facts.ttl"), # large - # - # # Geography Ontologies - # (GEO(), "geography/geo.owl"), - # (GeoNames(), "geography/geonames.rdf"), - # (GTS(), "geography/gts.ttl"), - # (Juso(), "geography/juso.ttl"), - # - # # Industry - # (AUTO(), "industry/auto.rdf"), - # (DBO(), "industry/dbo.rdf"), - # (DOAP(), "industry/doap.rdf"), - # (IOF(), "industry/iof.rdf"), - # (PTO(), "industry/pto.rdf"), - # (TUBES(), "industry/tubes.rdf"), - # - # # Law Ontologies - # (CopyrightOnto(), "law/copyright.ttl"), - # - # # Library & Cultural Heritage - # (GND(), "library_&_cultural_heritage/gnd.rdf"), - # - # # Livestock Ontologies - # (ATOL(), "livestock/atol.owl"), - # - # # Materials Science & Engineering - # (AMOntology(), "materials_science_&_engineering/am_ontology.ttl"), - # (ASMO(), "materials_science_&_engineering/asmo.owl"), - # (Atomistic(), "materials_science_&_engineering/atomistic.ttl"), - # # (BattINFO(), "materials_science_&_engineering/battinfo.ttl"), # large - # (BMO(), "materials_science_&_engineering/bmo.ttl"), - # (BVCO(), "materials_science_&_engineering/bvco.ttl"), - # (CDCO(), "materials_science_&_engineering/cdco.owl"), - # (CHAMEO(), "materials_science_&_engineering/chameo.ttl"), - # (CIFCore(), "materials_science_&_engineering/cif_core.ttl"), - # (CMSO(), "materials_science_&_engineering/cmso.owl"), - # (EMMOCrystallography(), "materials_science_&_engineering/crystallography.ttl"), - # (DISO(), "materials_science_&_engineering/diso.owl"), - # (DSIM(), "materials_science_&_engineering/dsim.owl"), - # (EMMO(), "materials_science_&_engineering/emmo.owl"), - # (FSO(), "materials_science_&_engineering/fso.ttl"), - # (GPO(), "materials_science_&_engineering/gpo.ttl"), - # (HPOnt(), "materials_science_&_engineering/heat_pump.owl"), - # (LDO(), "materials_science_&_engineering/ldo.owl"), - # (LPBFO(), "materials_science_&_engineering/lpbfo.owl"), - # (MAMBO(), "materials_science_&_engineering/mambo.owl"), - # (MAT(), "materials_science_&_engineering/mat.rdf"), - # (MaterialInformation(), "materials_science_&_engineering/material_information.owl"), - # (MMO(), "materials_science_&_engineering/mmo.rdf"), - # (MatOnto(), "materials_science_&_engineering/materials_ontology.owl"), - # (MatVoc(), "materials_science_&_engineering/matvoc.rdf"), - # (MatWerk(), "materials_science_&_engineering/mwo.ttl"), - # (MDO(), "materials_science_&_engineering/mdo.owl"), - # (MDS(), "materials_science_&_engineering/mds.ttl"), - # (MechanicalTesting(), "materials_science_&_engineering/mechanical_testing.owl"), - # (MicroStructures(), "materials_science_&_engineering/microstructure.owl"), - # (MOLBRINELL(), "materials_science_&_engineering/molbrinell.ttl"), - # (MOLTENSILE(), "materials_science_&_engineering/moltensile.rdf"), - # (MSEO(), "materials_science_&_engineering/mseo.ttl"), - # (MSLE(), "materials_science_&_engineering/msle.ttl"), - # (NanoMine(), "materials_science_&_engineering/nanomine.ttl"), - # (OIEManufacturing(), "materials_science_&_engineering/oie-manufacturing.ttl"), - # (OIEMaterials(), "materials_science_&_engineering/oie-materials.ttl"), - # (OIESoftware(), "materials_science_&_engineering/oie-software.ttl"), - # (OIEModels(), "materials_science_&_engineering/oie-models.ttl"), - # (OntoCAPE(language='en', base_dir=str(ONTOLOGY_DIR / "materials_science_&_engineering")), "materials_science_&_engineering/OntoCAPE/OntoCAPE.owl"), - # (ONTORULE(), "materials_science_&_engineering/ontorule.ttl"), - # (PeriodicTable(), "materials_science_&_engineering/periodic-table.owl"), - # (Photovoltaics(), "materials_science_&_engineering/photovoltaics.ttl"), - # (PLDO(), "materials_science_&_engineering/pldo.owl"), - # (PMDco(), "materials_science_&_engineering/pmdco.owl"), - # (PODO(), "materials_science_&_engineering/podo.owl"), - # # (PRIMA(), "materials_science_&_engineering/prima.ttl"), # large - # (SSN(), "materials_science_&_engineering/ssn.ttl"), - # (SystemCapabilities(), "materials_science_&_engineering/system_capabilities.owl"), - # (VIMMP(), "materials_science_&_engineering/vimmp.owl"), - # - # # Medicine Ontologies - # (BTO(), "medicine/bto.owl"), - # (DEB(), "medicine/deb.owl"), - # (DOID(), "medicine/doid.owl"), - # (ENM(), "medicine/enm.owl"), - # (MFOEM(), "medicine/mfoem.owl"), - # # (NCIt(), "medicine/ncit.owl"), # large - # (OBI(), "medicine/obi.owl"), - # # (PRotein(), "medicine/protein.rdf"), # large - # - # # News & Media Ontologies - # (BBC(), "news_&_media/bbc.ttl"), - # (BBCBusiness(), "news_&_media/business.ttl"), - # (BBCCMS(), "news_&_media/cms.ttl"), - # (BBCCoreConcepts(), "news_&_media/core_concepts.ttl"), - # (BBCCreativeWork(), "news_&_media/creative_work.ttl"), - # (BBCFood(), "news_&_media/food.ttl"), - # (BBCPolitics(), "news_&_media/politics.ttl"), - # (BBCProgrammes(), "news_&_media/programmes.ttl"), - # (BBCProvenance(), "news_&_media/provenance.ttl"), - # (BBCSport(), "news_&_media/sport.ttl"), - # (BBCStoryline(), "news_&_media/storyline.ttl"), - # (BBCWildlife(), "news_&_media/wildlife.ttl"), - # - # # Scholarly Knowledge Ontologies - # (AIISO(), "scholarly_knowledge/aiiso.rdf"), - # (CiTO(), "scholarly_knowledge/cito.owl"), - # (CSO(), "scholarly_knowledge/cso.owl"), - # (DataCite(), "scholarly_knowledge/datacite.rdf"), - # (DCAT(), "scholarly_knowledge/dcat.rdf"), - # (DUO(), "scholarly_knowledge/duo.owl"), - # (EURIO(), "scholarly_knowledge/eurio.rdf"), - # (EXPO(), "scholarly_knowledge/expo.owl"), - # (FRAPO(), "scholarly_knowledge/frapo.rdf"), - # (FRBRoo(), "scholarly_knowledge/frbroo.rdf"), - # (LexInfo(), "scholarly_knowledge/lexinfo.rdf"), - # (Metadata4Ing(), "scholarly_knowledge/metadata4ing.ttl"), - # (NFDIcore(), "scholarly_knowledge/nfdi.owl"), - # (OBOE(), "scholarly_knowledge/oboe.owl"), - # (OPMW(), "scholarly_knowledge/opmw.owl"), - # (PPlan(), "scholarly_knowledge/pplan.owl"), - # (PreMOn(), "scholarly_knowledge/premon.owl"), - # (SEPIO(), "scholarly_knowledge/sepio.owl"), - # (SPDocument(), "scholarly_knowledge/sp_document.owl"), - # (SPWorkflow(), "scholarly_knowledge/sp_workflow.owl"), - # (SWO(), "scholarly_knowledge/swo.owl"), - # (TribAIn(), "scholarly_knowledge/tribain.ttl"), - # (VOAF(), "scholarly_knowledge/voaf.rdf"), - # (WiLD(), "scholarly_knowledge/wild.ttl"), - # - # # Social Sciences - # (AS2(), "social_sciences/as2.ttl"), - # (BIO(), "social_sciences/bio.rdf",), - # (Contact(), "social_sciences/contact.rdf"), - # (FOAF(), "social_sciences/foaf.rdf"), - # (SIOC(), "social_sciences/sioc.rdf"), - # - # # # Units and Measurements - # (OM(), "units_and_measurements/om.rdf"), - # (OWLTime(), "units_and_measurements/owl_time.ttl"), - # (QUDT(), "units_and_measurements/qudt.ttl"), - # (QUDV(), "units_and_measurements/qudv.owl"), - # (UO(), "units_and_measurements/uo.owl"), - # - # # Upper Ontologies - # (BFO(), "upper_ontologies/bfo.owl"), - # (DOLCE(), "upper_ontologies/dolce.owl"), - # (FAIR(), "upper_ontologies/fair.owl"), - # (GFO(), "upper_ontologies/gfo.owl"), - # (SIO(), "upper_ontologies/sio.owl"), - # (SUMO(), "upper_ontologies/sumo.owl"), - # - # # Web Ontologies - # (Hydra(), "web_&_internet/hydra.jsonld"), - # (SAREF(), "web_&_internet/saref.rdf"), + # todo_ontologies = [ + # # (YAGO(), "general_knowledge/yago.ttl"), + # # (NCIt(), "medicine/ncit.owl"), + # # (PRotein(), "medicine/protein.rdf"), # ] + ontologies = [ + # # Agricultural Ontologies + # AGROVOC(), + # FoodOn(), + # PO(), + # + # # Arts and Humanities Ontologies + # ChordOntology(), + # ICON(), + # MusicOntology(), + # Nomisma(), + # TimelineOntology(), + # + # # Biology & Life Sciences Ontologies + # BioPAX(), + # EFO(), + # GO(), + # LIFO(), + # MarineTLO(), + # MGED(), + # MO(), + # NPO(), + # PATO(), + # + # # Chemistry Ontologies + # AFO(), + # ChEBI(), + # CHEMINF(), + # CHIRO(), + # ChMO(), + # FIX(), + # MassSpectrometry(), + # MOP(), + # NMRCV(), + # OntoKin(), + # PROCO(), + # PSIMOD(), + # REX(), + # RXNO(), + # VIBSO(), + # + # # Ecology & Environment Ontologies + # ENVO(), + # OEO(), + # SWEET(), + # + # # Education Ontologies + # BIBFRAME(), + # Common(), + # DoCO(), + # + # # #Event Ontologies + # ConferenceOntology(), + # iCalendar(), + # LODE(), + # + # # Finance Ontologies + # GoodRelations(), + # + # # Food & Beverage Ontologies + # Wine(), + # + # # General Knowledge Ontologies + # CCO(), + # DBpedia(), + # DublinCore(), + # EDAM(), + # GIST(), + # IAO(), + # PROV(), + # RO(), + # SchemaOrg(), + # UMBEL(), + # # (YAGO(), "general_knowledge/yago_facts.ttl"), # large + # + # # Geography Ontologies + # GEO(), + # GeoNames(), + # GTS(), + # Juso(), + # + # # Industry + # AUTO(), + # DBO(), + # DOAP(), + # IOF(), + # PTO(), + # TUBES(), + # + # # Law Ontologies + # CopyrightOnto(), + # + # # Library & Cultural Heritage + # GND(), + # + # # Livestock Ontologies + # ATOL(), + # + # # Materials Science & Engineering + # AMOntology(), + # ASMO(), + # Atomistic(), + # BattINFO(), + # BMO(), + # BVCO(), + # CDCO(), + # CHAMEO(), + # CIFCore(), + # CMSO(), + # DISO(), + # DSIM(), + # EMMO(), + # EMMOCrystallography(), + # FSO(), + # GPO(), + # HPOnt(), + # LDO(), + # LPBFO(), + # MAMBO(), + # MAT(), + # MaterialInformation(), + # MMO(), + # MatOnto(), + # MatVoc(), + # MatWerk(), + # MDO(), + # MDS(), + # MechanicalTesting(), + # MicroStructures(), + # MOLBRINELL(), + # MOLTENSILE(), + # MSEO(), + # MSLE(), + # NanoMine(), + # OIEManufacturing(), + # OIEMaterials(), + # OIEModels(), + # OIESoftware(), + # # OntoCAPE(language='en', base_dir=str(ONTOLOGIES_DIR / "materials_science_&_engineering")), "materials_science_and_engineering/OntoCAPE/OntoCAPE.owl"), + # ONTORULE(), + # PeriodicTable(), + # Photovoltaics(), + # PLDO(), + # PMDco(), + # PODO(), + # PRIMA(), + # SSN(), + # SystemCapabilities(), + # VIMMP(), + # + # # Medicine Ontologies + # BTO(), + # DEB(), + # DOID(), + # ENM(), + # MFOEM(), + # # (NCIt(), #large + # OBI(), + # # (PRotein(), #large + # + # # News & Media Ontologies + # BBC(), + # BBCBusiness(), + # BBCCMS(), + # BBCCoreConcepts(), + # BBCCreativeWork(), + # BBCFood(), + # BBCPolitics(), + # BBCProgrammes(), + # BBCProvenance(), + # BBCSport(), + # BBCStoryline(), + # BBCWildlife(), + # + # # Scholarly Knowledge Ontologies + # AIISO(), + # CiTO(), + # CSO(), + # DataCite(), + # DCAT(), + # DUO(), + # EURIO(), + # EXPO(), + # FRAPO(), + # FRBRoo(), + # LexInfo(), + # Metadata4Ing(), + # NFDIcore(), + # OBOE(), + # OPMW(), + # PPlan(), + # PreMOn(), + # SEPIO(), + # SPDocument(), + # SPWorkflow(), + # SWO(), + # TribAIn(), + # VOAF(), + # WiLD(), + # + # # Social Sciences + # AS2(), + # BIO(), + # Contact(), + # FOAF(), + # SIOC(), + # + # # Units and Measurements + # OM(), + # OWLTime(), + # QUDT(), + # QUDV(), + # UO(), + # + # # Upper Ontologies + # BFO(), + # DOLCE(), + # FAIR(), + # GFO(), + # SIO(), + # SUMO(), + # + # # Web Ontologies + # Hydra(), + # SAREF(), + ] + # Process each ontology - for ontology, filename in large_ontologies: - ontology_path = ONTOLOGY_DIR / filename + for ontology in ontologies: + ontology_path = ONTOLOGIES_DIR / ontology.domain.lower().replace(' ', '_') / f"{ontology.ontology_id.lower()}.{ontology.format.lower()}" metrics: OntologyMetrics = processor.process_ontology( ontology=ontology, diff --git a/scripts/hf_integration.py b/scripts/hf_integration.py index 5a6a4e6..5238068 100644 --- a/scripts/hf_integration.py +++ b/scripts/hf_integration.py @@ -1,3 +1,4 @@ +import time from pathlib import Path from typing import Dict, List, Tuple import os @@ -128,7 +129,7 @@ def copy_ontology_files(ontology: BaseOntology, domain_dir: Path, format: str): ontology_dir.mkdir(parents=True, exist_ok=True) # Copy ontology file from source to domain directory - source_file = ONTOLOGIES_DIR / ontology.domain.lower() / f"{ontology.ontology_id.lower()}.{format}" + source_file = ONTOLOGIES_DIR / ontology.domain.lower().replace(' ', '_') / f"{ontology.ontology_id.lower()}.{format}" if source_file.exists(): shutil.copy2(source_file, ontology_dir / f"{ontology.ontology_id.lower()}.{format}") logger.info(f"Copied ontology file: {source_file}") @@ -136,7 +137,7 @@ def copy_ontology_files(ontology: BaseOntology, domain_dir: Path, format: str): logger.warning(f"Ontology file not found at {source_file}. Skipping.") # Copy documentation file - doc_file = BENCHMARK_DIR / ontology.domain.lower() / f"{ontology.ontology_id.lower()}.rst" + doc_file = BENCHMARK_DIR / ontology.domain.lower().replace(' ', '_') / f"{ontology.ontology_id.lower()}.rst" if doc_file.exists(): shutil.copy2(doc_file, ontology_dir / f"{ontology.ontology_id.lower()}.rst") logger.info(f"Copied documentation file: {doc_file}") @@ -144,25 +145,13 @@ def copy_ontology_files(ontology: BaseOntology, domain_dir: Path, format: str): logger.warning(f"Documentation file not found at {doc_file}. Skipping.") # Copy dataset files - dataset_paths = [ - DATASETS_DIR / ontology.domain.lower() / ontology.ontology_id.lower() / "term_typings.json", - DATASETS_DIR / ontology.domain.lower() / ontology.ontology_id.lower() / "type_taxonomies.json", - DATASETS_DIR / ontology.domain.lower() / ontology.ontology_id.lower() / "type_non_taxonomic_relations.json" - ] - for path in dataset_paths: - if path.exists(): - shutil.copy2(path, ontology_dir / path.name) - logger.info(f"Copied dataset file: {path}") - else: - logger.warning(f"Dataset file not found at {path}. Skipping.") - - # dataset_path = DATASETS_DIR / ontology.domain.lower() / ontology.ontology_id.lower() - # if dataset_path.is_dir(): - # for file in dataset_path.glob("*.json"): - # shutil.copy2(file, ontology_dir) - # logger.info(f"Copied dataset file: {file}") - # else: - # logger.warning(f"Dataset path not found at {dataset_path}. Skipping.") + dataset_path = DATASETS_DIR / ontology.domain.lower().replace(' ', '_') / ontology.ontology_id.lower() + if dataset_path.is_dir(): + for file in dataset_path.glob("*.json"): + shutil.copy2(file, ontology_dir) + logger.info(f"Copied dataset file: {file}") + else: + logger.warning(f"Dataset path not found at {dataset_path}. Skipping.") def create_domain_readme(domain: str, @@ -273,7 +262,7 @@ def push_domain_to_huggingface(domain: str, domain_definition: str, "license": "mixed", "tags": [ "ontology", - domain.lower().replace("&", "and").replace(" ", "-"), + domain.lower().replace(" ", "-"), "knowledge-graph" ], "ontologies": [ontology.ontology_id for ontology in ontologies] @@ -629,6 +618,9 @@ def main(): else: failures += 1 + logger.info("Waiting 30 seconds before processing next domain...") + time.sleep(30) + logger.info(f"Completed processing all domains. Successes: {successes}, Failures: {failures}") except Exception as e: logger.error(f"Main execution failed: {e}", exc_info=True) From 9f641f11b07e027edaf3b80c0c06743ce47c8056 Mon Sep 17 00:00:00 2001 From: Hamed Babaei Giglou Date: Sat, 3 May 2025 16:39:16 +0200 Subject: [PATCH 16/37] :memo: Update requirements.txt --- docs/requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/requirements.txt b/docs/requirements.txt index ecd9c27..cc8d85e 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -8,3 +8,4 @@ sphinxcontrib-mermaid sphinx-panels sphinx-design sphinx-tabs +sphinx-inline-tabs From f48c75a732097964128698d9260d2de1abdd2043 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Sat, 3 May 2025 17:36:33 +0200 Subject: [PATCH 17/37] :sparkles: enhance blank node validation in ontology.py --- ontolearner/base/ontology.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ontolearner/base/ontology.py b/ontolearner/base/ontology.py index cfc5401..7416c3a 100644 --- a/ontolearner/base/ontology.py +++ b/ontolearner/base/ontology.py @@ -291,9 +291,13 @@ def _is_anonymous_id(label: str) -> bool: # Check for common blank node patterns if label.startswith('N') and label[1:].isdigit(): # N followed by numbers return True + if re.match(r'^N[0-9a-f]{32}$', label): + return True if label.startswith('_:'): # Standard RDF blank node notation return True - if label.startswith('genid-'): # common format + if label.startswith('GO_'): + return True + if label.startswith('genid-'): return True if re.match(r'^b[0-9a-f]+$', label): # bnode format sometimes used return True From 64944025d4476ef0d6895248291fd5581ad5975c Mon Sep 17 00:00:00 2001 From: aioaneia Date: Sat, 3 May 2025 17:36:52 +0200 Subject: [PATCH 18/37] :sparkles: update ontology loading path to support dynamic format --- docs/source/_templates/ontology.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/_templates/ontology.rst b/docs/source/_templates/ontology.rst index 53db768..9a50464 100644 --- a/docs/source/_templates/ontology.rst +++ b/docs/source/_templates/ontology.rst @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = {{ class_name }}() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.{{ format }}") # Extract datasets data = ontology.extract() From 0b77cd4637017008140b12e9549b71d5b3701ef9 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Sat, 3 May 2025 21:20:11 +0200 Subject: [PATCH 19/37] :sparkles: enhance blank node validation for GO-specific patterns in biology.py and ontology.py --- ontolearner/base/ontology.py | 38 +++++++++++++++++++++++++++------ ontolearner/ontology/biology.py | 13 +++++++++++ 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/ontolearner/base/ontology.py b/ontolearner/base/ontology.py index 7416c3a..a98aea5 100644 --- a/ontolearner/base/ontology.py +++ b/ontolearner/base/ontology.py @@ -288,18 +288,42 @@ def _is_anonymous_id(label: str) -> bool: if not label: return True - # Check for common blank node patterns - if label.startswith('N') and label[1:].isdigit(): # N followed by numbers + # Common RDF/OWL blank node patterns + if label.startswith('_:'): # Standard RDF blank node notation return True - if re.match(r'^N[0-9a-f]{32}$', label): + if label.startswith('genid-'): # Common OWL tools like Protégé return True - if label.startswith('_:'): # Standard RDF blank node notation + if label.startswith('nodeID://'): # Some RDF serializers + return True + + # Numeric patterns + if re.match(r'^N[0-9]+$', label): # N followed by numbers + return True + if re.match(r'^_[0-9]+$', label): # Underscore followed by numbers + return True + + # Hexadecimal patterns + if re.match(r'^N[0-9a-f]{32}$', label, re.IGNORECASE): return True - if label.startswith('GO_'): + if re.match(r'^b[0-9a-f]+$', label, re.IGNORECASE): + return True + if re.match(r'^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$', label, re.IGNORECASE): # UUID pattern + return True + + # Auto-generated node patterns + if re.match(r'^node_[0-9a-f_]+$', label, re.IGNORECASE): + return True + if re.match(r'^auto_gen_[0-9a-zA-Z]+$', label): + return True + if re.match(r'^blank[0-9]+$', label): + return True + + # Tool-specific patterns + if label.startswith('ARQ'): # Apache Jena ARQ return True - if label.startswith('genid-'): + if label.startswith('jena-'): # Apache Jena return True - if re.match(r'^b[0-9a-f]+$', label): # bnode format sometimes used + if label.startswith('bnode'): # Some RDF tools return True return False diff --git a/ontolearner/ontology/biology.py b/ontolearner/ontology/biology.py index b2d7379..45a02b4 100644 --- a/ontolearner/ontology/biology.py +++ b/ontolearner/ontology/biology.py @@ -56,6 +56,19 @@ class GO(BaseOntology): format = "OWL" download_url = "https://geneontology.org/docs/download-ontology/" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle GO-specific blank nodes.""" + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + # GO-specific patterns + if label.startswith('GO_'): + return True + + return False + class LIFO(BaseOntology): """ From 0afb84ded159c36a2f750fa0a3e040254956b186 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Mon, 5 May 2025 15:34:41 +0200 Subject: [PATCH 20/37] :sparkles: update ontology documentation and datasets for agricultural domain --- .../benchmarking/agricultural/agrovoc.rst | 10 +++---- .../benchmarking/agricultural/foodon.rst | 4 +-- docs/source/benchmarking/agricultural/po.rst | 6 ++-- ontolearner/base/ontology.py | 29 +++++++++++++++++-- 4 files changed, 37 insertions(+), 12 deletions(-) diff --git a/docs/source/benchmarking/agricultural/agrovoc.rst b/docs/source/benchmarking/agricultural/agrovoc.rst index c9524d8..88a43e1 100644 --- a/docs/source/benchmarking/agricultural/agrovoc.rst +++ b/docs/source/benchmarking/agricultural/agrovoc.rst @@ -14,7 +14,7 @@ indexing processes and making searches more efficient. :Last Updated: August 12, 2024 :Creator: Food and Agriculture Organization of the United Nations :License: Creative Commons 4.0 -:Format: RDF, SKOS +:Format: RDF :Download: `AGROVOC Multilingual Thesaurus (AGROVOC) Homepage `_ Graph Metrics @@ -47,10 +47,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 1234769 - - **Taxonomic Relations**: 13 + - **Term Types**: 12 + - **Taxonomic Relations**: 11 - **Non-taxonomic Relations**: 7 - - **Average Terms per Type**: 137196.56 + - **Average Terms per Type**: 3.00 Usage Example ------------- @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = AGROVOC() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/agricultural/foodon.rst b/docs/source/benchmarking/agricultural/foodon.rst index ce53f59..1d2549a 100644 --- a/docs/source/benchmarking/agricultural/foodon.rst +++ b/docs/source/benchmarking/agricultural/foodon.rst @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 16 - - **Taxonomic Relations**: 98513 + - **Taxonomic Relations**: 76235 - **Non-taxonomic Relations**: 2072 - **Average Terms per Type**: 8.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = FoodOn() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/agricultural/po.rst b/docs/source/benchmarking/agricultural/po.rst index 4d30e3c..ad68e0b 100644 --- a/docs/source/benchmarking/agricultural/po.rst +++ b/docs/source/benchmarking/agricultural/po.rst @@ -12,7 +12,7 @@ morphology and growth and development to plant genomics data. :Last Updated: None :Creator: None :License: Creative Commons 4.0 -:Format: OWL, TTL, CSV, NT +:Format: OWL :Download: `Plant Ontology (PO) Homepage `_ Graph Metrics @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 5288 + - **Taxonomic Relations**: 2866 - **Non-taxonomic Relations**: 36 - **Average Terms per Type**: 0.00 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = PO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/ontolearner/base/ontology.py b/ontolearner/base/ontology.py index a98aea5..5a87fd5 100644 --- a/ontolearner/base/ontology.py +++ b/ontolearner/base/ontology.py @@ -201,7 +201,10 @@ def extract_term_typings(self) -> List[TermTyping]: for instance in self._get_instances_for_class(class_uri): term = self.get_label(uri=str(instance)) types = self.get_label(uri=str(class_uri)) - if term and types: + # Filter out anonymous class identifiers + if (term and types and + not self._is_anonymous_id(term) and + not self._is_anonymous_id(types)): term_typings.append(TermTyping(term=term, types=[types])) logger.debug(f"Extracted {len(term_typings)} term typings for the Ontology.") return term_typings @@ -301,13 +304,19 @@ def _is_anonymous_id(label: str) -> bool: return True if re.match(r'^_[0-9]+$', label): # Underscore followed by numbers return True + if re.match(r'^c_[0-9]+$', label): # c_ followed by numbers + return True # Hexadecimal patterns if re.match(r'^N[0-9a-f]{32}$', label, re.IGNORECASE): return True if re.match(r'^b[0-9a-f]+$', label, re.IGNORECASE): return True - if re.match(r'^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$', label, re.IGNORECASE): # UUID pattern + if re.match(r'^c_[0-9a-f]+$', label, re.IGNORECASE): + return True + + # UUID patterns + if re.match(r'^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$', label, re.IGNORECASE): return True # Auto-generated node patterns @@ -326,4 +335,20 @@ def _is_anonymous_id(label: str) -> bool: if label.startswith('bnode'): # Some RDF tools return True + # AGROVOC-specific patterns + if re.match(r'^c_[0-9]+$', label): # c_ followed by numbers (e.g., c_26382) + return True + + # Image and label patterns + if re.match(r'^img_', label): # Any string starting with img_ + return True + if re.match(r'^xl_', label): # Any string starting with xl_ + return True + if re.match(r'^xl-', label): # Any string starting with xl- + return True + + # SKOS Collection patterns + if re.match(r'^skosCollection_[0-9a-f]+$', label): + return True + return False From 5c103cd7abcaf7c6960b89099690b7a17354cf19 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Mon, 5 May 2025 18:47:49 +0200 Subject: [PATCH 21/37] :sparkles: update ontology documentation and datasets for arts humanitites and biology domains --- .../arts_and_humanities/chordontology.rst | 10 +-- .../benchmarking/arts_and_humanities/icon.rst | 6 +- .../arts_and_humanities/musicontology.rst | 6 +- .../arts_and_humanities/nomisma.rst | 6 +- .../arts_and_humanities/timelineontology.rst | 8 +- .../biology_and_life_sciences/biopax.rst | 6 +- .../biology_and_life_sciences/efo.rst | 8 +- .../biology_and_life_sciences/go.rst | 10 +-- .../biology_and_life_sciences/lifo.rst | 6 +- .../biology_and_life_sciences/marinetlo.rst | 6 +- .../biology_and_life_sciences/mged.rst | 10 +-- .../biology_and_life_sciences/mo.rst | 70 ++++++++++++++++++ .../biology_and_life_sciences/npo.rst | 6 +- .../biology_and_life_sciences/pato.rst | 6 +- ontolearner/base/ontology.py | 9 ++- ontolearner/ontology/biology.py | 6 +- ontolearner/processor.py | 42 +++++++++-- scripts/metrics/metrics.xlsx | Bin 0 -> 30798 bytes 18 files changed, 162 insertions(+), 59 deletions(-) create mode 100644 docs/source/benchmarking/biology_and_life_sciences/mo.rst create mode 100644 scripts/metrics/metrics.xlsx diff --git a/docs/source/benchmarking/arts_and_humanities/chordontology.rst b/docs/source/benchmarking/arts_and_humanities/chordontology.rst index 1351fab..cb0f1c6 100644 --- a/docs/source/benchmarking/arts_and_humanities/chordontology.rst +++ b/docs/source/benchmarking/arts_and_humanities/chordontology.rst @@ -5,13 +5,13 @@ Overview -------- The Chord Ontology is an ontology for describing chords in musical pieces. -:Domain: Arts & Humanities +:Domain: Arts and Humanities :Category: Musical Works :Current Version: 1.0 :Last Updated: 2007-10-25 :Creator: Yves Raimond, Samer Abdallah, Centre for Digital Music, Queen Mary, University of London :License: Creative Commons 3.0 -:Format: RDF/XML +:Format: RDF :Download: `Chord Ontology (ChordOntology) Homepage `_ Graph Metrics @@ -44,10 +44,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 108 + - **Term Types**: 42 - **Taxonomic Relations**: 4 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 21.60 + - **Average Terms per Type**: 10.50 Usage Example ------------- @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = ChordOntology() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/arts_and_humanities/icon.rst b/docs/source/benchmarking/arts_and_humanities/icon.rst index c8e2aaa..c2fb5a8 100644 --- a/docs/source/benchmarking/arts_and_humanities/icon.rst +++ b/docs/source/benchmarking/arts_and_humanities/icon.rst @@ -7,7 +7,7 @@ The ICON ontology deals with high granularity art interpretation. It was develop Panofsky's theory of levels of interpretation, therefore artworks can be described according to Pre-iconographical, Iconographical and Iconological information. -:Domain: Arts & Humanities +:Domain: Arts and Humanities :Category: Art History, Cultural Heritage :Current Version: 2.1.0 :Last Updated: April 26th, 2024 @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 126 + - **Taxonomic Relations**: 65 - **Non-taxonomic Relations**: 4 - **Average Terms per Type**: 0.00 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = ICON() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/arts_and_humanities/musicontology.rst b/docs/source/benchmarking/arts_and_humanities/musicontology.rst index 866c48f..13de3e5 100644 --- a/docs/source/benchmarking/arts_and_humanities/musicontology.rst +++ b/docs/source/benchmarking/arts_and_humanities/musicontology.rst @@ -7,13 +7,13 @@ The Music Ontology Specification provides main concepts and properties fo describing music (i.e. artists, albums and tracks) on the Semantic Web. -:Domain: Arts & Humanities +:Domain: Arts and Humanities :Category: Music Theory :Current Version: 2.1.5 :Last Updated: 2013/07/22 :Creator: Knowledge Media Institute, Open University :License: Creative Commons 4.0 -:Format: RDF/XML +:Format: RDF :Download: `Music Ontology (MusicOntology) Homepage `_ Graph Metrics @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = MusicOntology() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/arts_and_humanities/nomisma.rst b/docs/source/benchmarking/arts_and_humanities/nomisma.rst index afd0953..33cfcc1 100644 --- a/docs/source/benchmarking/arts_and_humanities/nomisma.rst +++ b/docs/source/benchmarking/arts_and_humanities/nomisma.rst @@ -8,13 +8,13 @@ to the principles of Linked Open Data. These take the form of http URIs that pro about a concept in various formats. The project is a collaborative effort of the American Numismatic Society and the Institute for the Study of the Ancient World at New York University. -:Domain: Arts & Humanities +:Domain: Arts and Humanities :Category: Numismatics :Current Version: None :Last Updated: 2025-01-22 :Creator: American Numismatic Society, Institute for the Study of the Ancient World :License: Creative Commons 4.0 -:Format: RDF, TTL +:Format: TTL :Download: `Nomisma Ontology (Nomisma) Homepage `_ Graph Metrics @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = Nomisma() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/arts_and_humanities/timelineontology.rst b/docs/source/benchmarking/arts_and_humanities/timelineontology.rst index b5a1a07..2c7c60d 100644 --- a/docs/source/benchmarking/arts_and_humanities/timelineontology.rst +++ b/docs/source/benchmarking/arts_and_humanities/timelineontology.rst @@ -7,13 +7,13 @@ The Timeline Ontology is centered around the notion of timeline, seen here as a way to identify a temporal backbone. A timeline may support a signal, a video, a score, a work, etc. -:Domain: Arts & Humanities +:Domain: Arts and Humanities :Category: Music Theory :Current Version: 1.0 :Last Updated: 25th October 2007 :Creator: Christopher Sutton, Yves Raimond, Matthias Mauch :License: Creative Commons 1.0 -:Format: RDF/XML +:Format: RDF :Download: `Timeline Ontology (TimelineOntology) Homepage `_ Graph Metrics @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 2 - - **Taxonomic Relations**: 106 + - **Taxonomic Relations**: 28 - **Non-taxonomic Relations**: 10 - **Average Terms per Type**: 1.00 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = TimelineOntology() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/biology_and_life_sciences/biopax.rst b/docs/source/benchmarking/biology_and_life_sciences/biopax.rst index c613347..dcd8c3e 100644 --- a/docs/source/benchmarking/biology_and_life_sciences/biopax.rst +++ b/docs/source/benchmarking/biology_and_life_sciences/biopax.rst @@ -8,7 +8,7 @@ of biological pathway data. Specifically, BioPAX supports data exchange between groups and thus reduces the complexity of interchange between data formats by providing an accepted standard format for pathway data. -:Domain: Biology & Life Sciences +:Domain: Biology and Life Sciences :Category: Bioinformatics :Current Version: 1.0 :Last Updated: 16 April 2015 @@ -48,7 +48,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 292 + - **Taxonomic Relations**: 126 - **Non-taxonomic Relations**: 446 - **Average Terms per Type**: 0.00 @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = BioPAX() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/biology_and_life_sciences/efo.rst b/docs/source/benchmarking/biology_and_life_sciences/efo.rst index 8ca3959..571ff40 100644 --- a/docs/source/benchmarking/biology_and_life_sciences/efo.rst +++ b/docs/source/benchmarking/biology_and_life_sciences/efo.rst @@ -9,13 +9,13 @@ such as UBERON anatomy, ChEBI chemical compounds, and Cell Ontology. The scope o analysis and visualization of data handled by many groups at the EBI and as the core ontology for Open Targets. EFO is developed by the EMBL-EBI Samples, Phenotypes and Ontologies Team (SPOT). -:Domain: Biology & Life Sciences +:Domain: Biology and Life Sciences :Category: Biology :Current Version: 3.75.0 :Last Updated: 2025-02-17 :Creator: None :License: Apache 2.0 -:Format: OWL, TTL, CSV, NT +:Format: OWL :Download: `Experimental Factor Ontology (EFO) Homepage `_ Graph Metrics @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 280844 + - **Taxonomic Relations**: 162600 - **Non-taxonomic Relations**: 10335 - **Average Terms per Type**: 0.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = EFO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/biology_and_life_sciences/go.rst b/docs/source/benchmarking/biology_and_life_sciences/go.rst index 279aa05..73109f6 100644 --- a/docs/source/benchmarking/biology_and_life_sciences/go.rst +++ b/docs/source/benchmarking/biology_and_life_sciences/go.rst @@ -6,13 +6,13 @@ Overview The Gene Ontology (GO) Provides structured controlled vocabularies for the annotation of gene products with respect to their molecular function, cellular component, and biological role. -:Domain: Biology & Life Sciences +:Domain: Biology and Life Sciences :Category: Molecular Biology, Genetics :Current Version: None :Last Updated: 2024-11-03 :Creator: None :License: Creative Commons 4.0 -:Format: OWL, OBO, JSON +:Format: OWL :Download: `Gene Ontology (GO) Homepage `_ Graph Metrics @@ -46,8 +46,8 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 206031 - - **Non-taxonomic Relations**: 3676 + - **Taxonomic Relations**: 156430 + - **Non-taxonomic Relations**: 30 - **Average Terms per Type**: 0.00 Usage Example @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = GO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/biology_and_life_sciences/lifo.rst b/docs/source/benchmarking/biology_and_life_sciences/lifo.rst index 8268175..0f6fd5b 100644 --- a/docs/source/benchmarking/biology_and_life_sciences/lifo.rst +++ b/docs/source/benchmarking/biology_and_life_sciences/lifo.rst @@ -8,7 +8,7 @@ life processes of organisms and related entities and relations. LifO is a genera purpose ontology that covers the common features associated with different organisms such as unicellular prokaryotes (e.g., E. coli) and multicellular organisms (e.g., human). -:Domain: Biology & Life Sciences +:Domain: Biology and Life Sciences :Category: General Purpose :Current Version: 1.0.17 :Last Updated: March 11, 2018 @@ -48,7 +48,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 9 - - **Taxonomic Relations**: 581 + - **Taxonomic Relations**: 321 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 9.00 @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = LIFO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/biology_and_life_sciences/marinetlo.rst b/docs/source/benchmarking/biology_and_life_sciences/marinetlo.rst index 17ea299..d1ab7bf 100644 --- a/docs/source/benchmarking/biology_and_life_sciences/marinetlo.rst +++ b/docs/source/benchmarking/biology_and_life_sciences/marinetlo.rst @@ -14,13 +14,13 @@ adopted an iterative and incremental methodology where a new version is released months. For the implementation we use OWL 2, and to evaluate it we use a set of competency queries, formulating the domain requirements provided by the related communities. -:Domain: Biology & Life Sciences +:Domain: Biology and Life Sciences :Category: Marine Science, Oceanography :Current Version: 1.0 :Last Updated: 2017-01-05 :Creator: Information System Laboratory (ISL), Institute of Computer Science (ICS), Foundation for Research and Technology - Hellas (FORTH) :License: Creative Commons 4.0 -:Format: OWL, TTL, CSV, NT +:Format: OWL :Download: `Marine Taxonomy and Life Ontology (MarineTLO) Homepage `_ Graph Metrics @@ -66,7 +66,7 @@ Usage Example # Initialize and load ontology ontology = MarineTLO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/biology_and_life_sciences/mged.rst b/docs/source/benchmarking/biology_and_life_sciences/mged.rst index 26b0893..949c75a 100644 --- a/docs/source/benchmarking/biology_and_life_sciences/mged.rst +++ b/docs/source/benchmarking/biology_and_life_sciences/mged.rst @@ -9,7 +9,7 @@ The MGED ontology is divided into the MGED Core ontology which is intended to be in synch with MAGE v.1; and the MGED Extended ontology which adds further associations and classes not found in MAGE v.1 -:Domain: Biology & Life Sciences +:Domain: Biology and Life Sciences :Category: Domain Ontology :Current Version: 1.3.1.1 :Last Updated: Feb. 9, 2007 @@ -48,10 +48,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 744 - - **Taxonomic Relations**: 1536 + - **Term Types**: 743 + - **Taxonomic Relations**: 541 - **Non-taxonomic Relations**: 6 - - **Average Terms per Type**: 7.83 + - **Average Terms per Type**: 7.82 Usage Example ------------- @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = MGED() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/biology_and_life_sciences/mo.rst b/docs/source/benchmarking/biology_and_life_sciences/mo.rst new file mode 100644 index 0000000..e3e88ec --- /dev/null +++ b/docs/source/benchmarking/biology_and_life_sciences/mo.rst @@ -0,0 +1,70 @@ +Microscopy Ontology (MO) +======================================================================================================================== + +Overview +-------- +The Microscopy Ontology (MO) extends the ontological framework of the PMDco. The MO facilitates semantic integration +and the interoperable connection of diverse data sources from the fields of microscopy and microanalysis. Consequently, +the MO paves the way for new, adaptable data applications and analyses across various experiments and studies + +:Domain: Biology and Life Sciences +:Category: Microscopy +:Current Version: 2.0 +:Last Updated: None +:Creator: https://orcid.org/0000-0002-3717-7104,https://orcid.org/0000-0002-7094-5371 +:License: Creative Commons Attribution 4.0 International (CC BY 4.0) +:Format: TTL +:Download: `Microscopy Ontology (MO) Homepage `_ + +Graph Metrics +------------- + - **Total Nodes**: 4853 + - **Total Edges**: 9727 + - **Root Nodes**: 97 + - **Leaf Nodes**: 2884 + +Knowledge coverage +------------------ + - Classes: 1066 + - Individuals: 1 + - Properties: 70 + +Hierarchical metrics +-------------------- + - **Maximum Depth**: 23 + - **Minimum Depth**: 0 + - **Average Depth**: 4.20 + - **Depth Variance**: 13.95 + +Breadth metrics +------------------ + - **Maximum Breadth**: 178 + - **Minimum Breadth**: 1 + - **Average Breadth**: 41.33 + - **Breadth Variance**: 2660.81 + +Dataset Statistics +------------------ +Generated Benchmarks: + - **Term Types**: 0 + - **Taxonomic Relations**: 953 + - **Non-taxonomic Relations**: 20 + - **Average Terms per Type**: 0.00 + +Usage Example +------------- +.. code-block:: python + + from ontolearner.ontology import MO + + # Initialize and load ontology + ontology = MO() + ontology.load("path/to/ontology.TTL") + + # Extract datasets + data = ontology.extract() + + # Access specific relations + term_types = data.term_typings + taxonomic_relations = data.type_taxonomies + non_taxonomic_relations = data.type_non_taxonomic_relations diff --git a/docs/source/benchmarking/biology_and_life_sciences/npo.rst b/docs/source/benchmarking/biology_and_life_sciences/npo.rst index f3ef733..5fd4b46 100644 --- a/docs/source/benchmarking/biology_and_life_sciences/npo.rst +++ b/docs/source/benchmarking/biology_and_life_sciences/npo.rst @@ -11,7 +11,7 @@ are available through BioPortal website, maintained by the National Center for B Mechanisms for editorial and governance processes are being developed for the maintenance, review, and growth of the NPO. -:Domain: Biology & Life Sciences +:Domain: Biology and Life Sciences :Category: Materials Science :Current Version: 2013-05-31 :Last Updated: 2013-05-31 @@ -51,7 +51,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 6895 + - **Taxonomic Relations**: 2733 - **Non-taxonomic Relations**: 12277 - **Average Terms per Type**: 0.00 @@ -63,7 +63,7 @@ Usage Example # Initialize and load ontology ontology = NPO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/biology_and_life_sciences/pato.rst b/docs/source/benchmarking/biology_and_life_sciences/pato.rst index 2299aa7..921b7f0 100644 --- a/docs/source/benchmarking/biology_and_life_sciences/pato.rst +++ b/docs/source/benchmarking/biology_and_life_sciences/pato.rst @@ -5,7 +5,7 @@ Overview -------- An ontology of phenotypic qualities (properties, attributes or characteristics). -:Domain: Biology & Life Sciences +:Domain: Biology and Life Sciences :Category: Biology :Current Version: 1.2 :Last Updated: 2025-02-01 @@ -45,7 +45,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 62605 + - **Taxonomic Relations**: 32440 - **Non-taxonomic Relations**: 752 - **Average Terms per Type**: 0.00 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = PATO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/ontolearner/base/ontology.py b/ontolearner/base/ontology.py index 5a87fd5..8d55c87 100644 --- a/ontolearner/base/ontology.py +++ b/ontolearner/base/ontology.py @@ -310,6 +310,8 @@ def _is_anonymous_id(label: str) -> bool: # Hexadecimal patterns if re.match(r'^N[0-9a-f]{32}$', label, re.IGNORECASE): return True + if re.match(r'^n[0-9a-f]+$', label, re.IGNORECASE): + return True if re.match(r'^b[0-9a-f]+$', label, re.IGNORECASE): return True if re.match(r'^c_[0-9a-f]+$', label, re.IGNORECASE): @@ -335,10 +337,6 @@ def _is_anonymous_id(label: str) -> bool: if label.startswith('bnode'): # Some RDF tools return True - # AGROVOC-specific patterns - if re.match(r'^c_[0-9]+$', label): # c_ followed by numbers (e.g., c_26382) - return True - # Image and label patterns if re.match(r'^img_', label): # Any string starting with img_ return True @@ -351,4 +349,7 @@ def _is_anonymous_id(label: str) -> bool: if re.match(r'^skosCollection_[0-9a-f]+$', label): return True + if re.match(r'^PMD_[0-9]+$', label): + return True + return False diff --git a/ontolearner/ontology/biology.py b/ontolearner/ontology/biology.py index 45a02b4..bd8c194 100644 --- a/ontolearner/ontology/biology.py +++ b/ontolearner/ontology/biology.py @@ -60,13 +60,13 @@ class GO(BaseOntology): def _is_anonymous_id(label: str) -> bool: """Override to handle GO-specific blank nodes.""" # Check the general patterns from the parent class - if BaseOntology._is_anonymous_id(label): - return True - # GO-specific patterns if label.startswith('GO_'): return True + if BaseOntology._is_anonymous_id(label): + return True + return False diff --git a/ontolearner/processor.py b/ontolearner/processor.py index 7aa83cc..c9cd9c9 100644 --- a/ontolearner/processor.py +++ b/ontolearner/processor.py @@ -127,12 +127,26 @@ def _generate_documentation(self, ontology: BaseOntology, metrics: OntologyMetri def export_metrics_to_excel(self): """ Export all collected metrics to an Excel file. + If the Excel file already exists, read it, update with new metrics, and write it back. + This preserves metrics for ontologies not processed in the current run. """ if not self.all_metrics: logger.warning("No metrics to export. Process at least one ontology first.") return - rows = [] + excel_path = self.metrics_dir / "metrics.xlsx" + + # Try to read existing Excel file if it exists + existing_df = None + if excel_path.exists(): + try: + existing_df = pd.read_excel(excel_path) + logger.info(f"Read existing metrics from {excel_path}") + except Exception as e: + logger.warning(f"Could not read existing metrics file: {e}. Creating a new file.") + + # Create DataFrame from current metrics + current_rows = [] for ontology_id, data in self.all_metrics.items(): metrics = data["metrics"] row = { @@ -143,9 +157,27 @@ def export_metrics_to_excel(self): **metrics.topology.dict(), **metrics.dataset.dict() } - rows.append(row) + current_rows.append(row) - df = pd.DataFrame(rows) - excel_path = self.metrics_dir / "metrics.xlsx" - df.to_excel(excel_path, index=False) + current_df = pd.DataFrame(current_rows) + + # Merge existing and current metrics + if existing_df is not None and not existing_df.empty: + # Remove rows for ontologies that are in the current metrics (to be updated) + current_ontology_ids = current_df["Ontology ID"].tolist() + existing_df = existing_df[~existing_df["Ontology ID"].isin(current_ontology_ids)] + + # Concatenate existing (minus updated ones) with current + final_df = pd.concat([existing_df, current_df], ignore_index=True) + + # Sort by Ontology ID for consistency + final_df = final_df.sort_values("Ontology ID").reset_index(drop=True) + + logger.info(f"Updated metrics for {len(current_ontology_ids)} ontologies, preserved metrics for {len(existing_df)} ontologies") + else: + final_df = current_df + logger.info(f"Created new metrics file with {len(current_rows)} ontologies") + + # Write to Excel + final_df.to_excel(excel_path, index=False) logger.info(f"Exported metrics to Excel file: {excel_path}") diff --git a/scripts/metrics/metrics.xlsx b/scripts/metrics/metrics.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..08160afbf5be1998b17ccf86fd2dc5f7a4d15ce5 GIT binary patch literal 30798 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 literal 0 HcmV?d00001 From 001eb741b733fdeab3bec0e9ede81c78b436233f Mon Sep 17 00:00:00 2001 From: aioaneia Date: Mon, 5 May 2025 18:48:59 +0200 Subject: [PATCH 22/37] :sparkles: update ontology metrics --- scripts/metrics/metrics copy 2.xlsx | Bin 0 -> 9878 bytes scripts/metrics/metrics copy.xlsx | Bin 0 -> 30798 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 scripts/metrics/metrics copy 2.xlsx create mode 100644 scripts/metrics/metrics copy.xlsx diff --git a/scripts/metrics/metrics copy 2.xlsx b/scripts/metrics/metrics copy 2.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e02730720ef6e107d8ece1650b02cf17e12552b5 GIT binary patch literal 9878 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 literal 0 HcmV?d00001 From 6fdad36394d6321c3ea1b18c324236572519b0b8 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Mon, 5 May 2025 20:43:19 +0200 Subject: [PATCH 23/37] :pencil2: update ontology metrics for chemistry domain --- docs/source/benchmarking/chemistry/afo.rst | 8 +- docs/source/benchmarking/chemistry/chebi.rst | 8 +- .../source/benchmarking/chemistry/cheminf.rst | 4 +- docs/source/benchmarking/chemistry/chiro.rst | 4 +- docs/source/benchmarking/chemistry/chmo.rst | 8 +- docs/source/benchmarking/chemistry/fix.rst | 4 +- .../chemistry/massspectrometry.rst | 6 +- docs/source/benchmarking/chemistry/mop.rst | 6 +- docs/source/benchmarking/chemistry/nmrcv.rst | 2 +- .../source/benchmarking/chemistry/ontokin.rst | 4 +- docs/source/benchmarking/chemistry/proco.rst | 4 +- docs/source/benchmarking/chemistry/psimod.rst | 4 +- docs/source/benchmarking/chemistry/rex.rst | 6 +- docs/source/benchmarking/chemistry/rxno.rst | 6 +- docs/source/benchmarking/chemistry/vibso.rst | 4 +- ontolearner/ontology/chemistry.py | 88 +++++++++++++++++++ 16 files changed, 127 insertions(+), 39 deletions(-) diff --git a/docs/source/benchmarking/chemistry/afo.rst b/docs/source/benchmarking/chemistry/afo.rst index dc61751..26aa953 100644 --- a/docs/source/benchmarking/chemistry/afo.rst +++ b/docs/source/benchmarking/chemistry/afo.rst @@ -48,10 +48,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 38 - - **Taxonomic Relations**: 9889 + - **Term Types**: 37 + - **Taxonomic Relations**: 6904 - **Non-taxonomic Relations**: 34 - - **Average Terms per Type**: 3.45 + - **Average Terms per Type**: 3.36 Usage Example ------------- @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = AFO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/chemistry/chebi.rst b/docs/source/benchmarking/chemistry/chebi.rst index 67ef2bf..91b35e6 100644 --- a/docs/source/benchmarking/chemistry/chebi.rst +++ b/docs/source/benchmarking/chemistry/chebi.rst @@ -17,7 +17,7 @@ or classes of entities and their parents and/or children are specified. :Last Updated: 01/01/2025 :Creator: None :License: Creative Commons 4.0 -:Format: OWL, OBO, JSON +:Format: OWL :Download: `Chemical Entities of Biological Interest (ChEBI) Homepage `_ Graph Metrics @@ -51,8 +51,8 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 1200620 - - **Non-taxonomic Relations**: 18607 + - **Taxonomic Relations**: 739967 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example @@ -63,7 +63,7 @@ Usage Example # Initialize and load ontology ontology = ChEBI() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/chemistry/cheminf.rst b/docs/source/benchmarking/chemistry/cheminf.rst index ef886d3..251e47f 100644 --- a/docs/source/benchmarking/chemistry/cheminf.rst +++ b/docs/source/benchmarking/chemistry/cheminf.rst @@ -48,7 +48,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 594 + - **Taxonomic Relations**: 95 - **Non-taxonomic Relations**: 1 - **Average Terms per Type**: 0.00 @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = CHEMINF() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/chemistry/chiro.rst b/docs/source/benchmarking/chemistry/chiro.rst index 7049b6d..130eafe 100644 --- a/docs/source/benchmarking/chemistry/chiro.rst +++ b/docs/source/benchmarking/chemistry/chiro.rst @@ -48,7 +48,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 27299 + - **Taxonomic Relations**: 25262 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = CHIRO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/chemistry/chmo.rst b/docs/source/benchmarking/chemistry/chmo.rst index 6271751..c185994 100644 --- a/docs/source/benchmarking/chemistry/chmo.rst +++ b/docs/source/benchmarking/chemistry/chmo.rst @@ -15,7 +15,7 @@ The Chemical Methods Ontology contains more than 3000 classes and describes meth :Last Updated: 2022-04-19 :Creator: None :License: Creative Commons 4.0 -:Format: OWL, TTL, CSV, NT +:Format: OWL :Download: `Chemical Methods Ontology (ChMO) Homepage `_ Graph Metrics @@ -49,8 +49,8 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 4268 - - **Non-taxonomic Relations**: 114 + - **Taxonomic Relations**: 3601 + - **Non-taxonomic Relations**: 1 - **Average Terms per Type**: 0.00 Usage Example @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = ChMO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/chemistry/fix.rst b/docs/source/benchmarking/chemistry/fix.rst index 5ee1afd..79010b9 100644 --- a/docs/source/benchmarking/chemistry/fix.rst +++ b/docs/source/benchmarking/chemistry/fix.rst @@ -45,7 +45,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 2978 + - **Taxonomic Relations**: 2751 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = FIX() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/chemistry/massspectrometry.rst b/docs/source/benchmarking/chemistry/massspectrometry.rst index 8a207bb..f9434bc 100644 --- a/docs/source/benchmarking/chemistry/massspectrometry.rst +++ b/docs/source/benchmarking/chemistry/massspectrometry.rst @@ -45,8 +45,8 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 16046 - - **Non-taxonomic Relations**: 2 + - **Taxonomic Relations**: 7016 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = MassSpectrometry() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/chemistry/mop.rst b/docs/source/benchmarking/chemistry/mop.rst index f6cafb4..d8b6136 100644 --- a/docs/source/benchmarking/chemistry/mop.rst +++ b/docs/source/benchmarking/chemistry/mop.rst @@ -46,8 +46,8 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 4171 - - **Non-taxonomic Relations**: 47 + - **Taxonomic Relations**: 3840 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = MOP() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/chemistry/nmrcv.rst b/docs/source/benchmarking/chemistry/nmrcv.rst index 320b6cf..10cc084 100644 --- a/docs/source/benchmarking/chemistry/nmrcv.rst +++ b/docs/source/benchmarking/chemistry/nmrcv.rst @@ -71,7 +71,7 @@ Usage Example # Initialize and load ontology ontology = NMRCV() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/chemistry/ontokin.rst b/docs/source/benchmarking/chemistry/ontokin.rst index 2b449da..7263e25 100644 --- a/docs/source/benchmarking/chemistry/ontokin.rst +++ b/docs/source/benchmarking/chemistry/ontokin.rst @@ -45,7 +45,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 138 + - **Taxonomic Relations**: 51 - **Non-taxonomic Relations**: 1 - **Average Terms per Type**: 0.00 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = OntoKin() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/chemistry/proco.rst b/docs/source/benchmarking/chemistry/proco.rst index 6a348d1..9aa4622 100644 --- a/docs/source/benchmarking/chemistry/proco.rst +++ b/docs/source/benchmarking/chemistry/proco.rst @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 14 - - **Taxonomic Relations**: 2975 + - **Taxonomic Relations**: 1757 - **Non-taxonomic Relations**: 1 - **Average Terms per Type**: 7.00 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = PROCO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/chemistry/psimod.rst b/docs/source/benchmarking/chemistry/psimod.rst index eb21e1f..6065a89 100644 --- a/docs/source/benchmarking/chemistry/psimod.rst +++ b/docs/source/benchmarking/chemistry/psimod.rst @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 8347 + - **Taxonomic Relations**: 7913 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = PSIMOD() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/chemistry/rex.rst b/docs/source/benchmarking/chemistry/rex.rst index 9bdae0c..0e47e94 100644 --- a/docs/source/benchmarking/chemistry/rex.rst +++ b/docs/source/benchmarking/chemistry/rex.rst @@ -13,7 +13,7 @@ Some biochemical processes from Gene Ontology (GO Biological process) can be des :Last Updated: 2025-03-11 :Creator: University of Warsaw :License: Creative Commons 4.0 -:Format: OWL, RDF +:Format: OWL :Download: `Physico-chemical process ontology (REX) Homepage `_ Graph Metrics @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 1126 + - **Taxonomic Relations**: 953 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = REX() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/chemistry/rxno.rst b/docs/source/benchmarking/chemistry/rxno.rst index 241d967..d87e670 100644 --- a/docs/source/benchmarking/chemistry/rxno.rst +++ b/docs/source/benchmarking/chemistry/rxno.rst @@ -46,8 +46,8 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 3757 - - **Non-taxonomic Relations**: 16 + - **Taxonomic Relations**: 1990 + - **Non-taxonomic Relations**: 2 - **Average Terms per Type**: 0.00 Usage Example @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = RXNO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/chemistry/vibso.rst b/docs/source/benchmarking/chemistry/vibso.rst index 13efba8..be38103 100644 --- a/docs/source/benchmarking/chemistry/vibso.rst +++ b/docs/source/benchmarking/chemistry/vibso.rst @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 40 - - **Taxonomic Relations**: 856 + - **Taxonomic Relations**: 599 - **Non-taxonomic Relations**: 23 - **Average Terms per Type**: 2.35 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = VIBSO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/ontolearner/ontology/chemistry.py b/ontolearner/ontology/chemistry.py index 4207656..cfb1d52 100644 --- a/ontolearner/ontology/chemistry.py +++ b/ontolearner/ontology/chemistry.py @@ -1,3 +1,4 @@ +import re from ..base import BaseOntology @@ -42,6 +43,19 @@ class ChEBI(BaseOntology): format = "OWL" download_url = "https://www.ebi.ac.uk/chebi/" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle ChEBI-specific blank nodes.""" + # ChEBI-specific patterns + if re.match(r'^CHEBI_[0-9]+$', label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class CHEMINF(BaseOntology): """ @@ -61,6 +75,19 @@ class CHEMINF(BaseOntology): format = "OWL" download_url = "https://terminology.tib.eu/ts/ontologies/CHEMINF" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle CHEMINF-specific blank nodes.""" + # ChEBI-specific patterns + if re.match(r'^CHEMINF_[0-9]+$', label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class CHIRO(BaseOntology): """ @@ -104,6 +131,19 @@ class ChMO(BaseOntology): format = "OWL" download_url = "https://github.com/rsc-ontologies/rsc-cmo" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle ChMO-specific blank nodes.""" + # ChEBI-specific patterns + if re.match(r'^CHMO_[0-9]+$', label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class FIX(BaseOntology): """ @@ -136,6 +176,19 @@ class MassSpectrometry(BaseOntology): format = "OWL" download_url = "https://terminology.tib.eu/ts/ontologies/MS" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle MOP-specific blank nodes.""" + # MassSpectrometry-specific patterns + if re.match(r'^PEFF_[0-9]+$', label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class MOP(BaseOntology): """ @@ -153,6 +206,25 @@ class MOP(BaseOntology): format = "OWL" download_url = "https://terminology.tib.eu/ts/ontologies/MOP" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle MOP-specific blank nodes.""" + # MOP-specific patterns + if re.match(r'^MOP_[0-9]+$', label): + return True + # ChEBI-specific patterns in MOP + if re.match(r'^CHEBI_[0-9]+$', label): + return True + # RXNO-specific patterns in MOP + if re.match(r'^RXNO_[0-9]+$', label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class NMRCV(BaseOntology): """ @@ -271,6 +343,22 @@ class RXNO(BaseOntology): format = "OWL" download_url = "https://github.com/rsc-ontologies/rxno" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle RXNO-specific blank nodes.""" + # RXNO-specific patterns + if re.match(r'^RXNO_[0-9]+$', label): + return True + # MOP-specific patterns in RXNO + if re.match(r'^MOP_[0-9]+$', label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class VIBSO(BaseOntology): """ From ed10ffcc7cadb3f3bfd822a9da8122356d4fbb60 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Mon, 5 May 2025 20:44:50 +0200 Subject: [PATCH 24/37] :pencil2: update ontology metrics for chemistry domain --- ontolearner/ontology/chemistry.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ontolearner/ontology/chemistry.py b/ontolearner/ontology/chemistry.py index cfb1d52..28f0704 100644 --- a/ontolearner/ontology/chemistry.py +++ b/ontolearner/ontology/chemistry.py @@ -178,7 +178,7 @@ class MassSpectrometry(BaseOntology): @staticmethod def _is_anonymous_id(label: str) -> bool: - """Override to handle MOP-specific blank nodes.""" + """Override to handle MassSpectrometry-specific blank nodes.""" # MassSpectrometry-specific patterns if re.match(r'^PEFF_[0-9]+$', label): return True From 1cec6c0967f8490329f58351431493aa04e1502a Mon Sep 17 00:00:00 2001 From: aioaneia Date: Mon, 5 May 2025 21:14:52 +0200 Subject: [PATCH 25/37] :pencil2: update ontology metrics for ecology, education events, finance domains --- .../benchmarking/ecology_and_environment/envo.rst | 10 +++++----- .../benchmarking/ecology_and_environment/oeo.rst | 6 +++--- .../ecology_and_environment/sweet.rst | 10 +++++----- docs/source/benchmarking/education/bibframe.rst | 4 ++-- docs/source/benchmarking/education/common.rst | 6 +++--- docs/source/benchmarking/education/doco.rst | 6 +++--- docs/source/benchmarking/events/conference.rst | 4 ++-- docs/source/benchmarking/events/icalendar.rst | 4 ++-- docs/source/benchmarking/events/lode.rst | 4 ++-- .../source/benchmarking/finance/goodrelations.rst | 8 ++++---- .../benchmarking/food_and_beverage/wine.rst | 8 ++++---- ontolearner/ontology/ecology_environment.py | 15 +++++++++++++++ 12 files changed, 50 insertions(+), 35 deletions(-) diff --git a/docs/source/benchmarking/ecology_and_environment/envo.rst b/docs/source/benchmarking/ecology_and_environment/envo.rst index 5f4388c..52513a2 100644 --- a/docs/source/benchmarking/ecology_and_environment/envo.rst +++ b/docs/source/benchmarking/ecology_and_environment/envo.rst @@ -8,13 +8,13 @@ and semantic web applications understand environmental entities of all kinds, from microscopic to intergalactic scales. As a FAIR-compliant resource, it promotes interoperability through the concise, controlled description of all things environmental. -:Domain: Ecology & Environment +:Domain: Ecology and Environment :Category: Environment, Ecosystems, Habitats :Current Version: 2024-07-01 :Last Updated: 2024-07-01 :Creator: Pier Luigi Buttigieg (https://orcid.org/0000-0002-4366-3088) :License: Creative Commons 1.0 -:Format: OWL, OBO, JSON +:Format: OWL :Download: `Environment Ontology (ENVO) Homepage `_ Graph Metrics @@ -48,8 +48,8 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 46 - - **Taxonomic Relations**: 28876 - - **Non-taxonomic Relations**: 148 + - **Taxonomic Relations**: 16175 + - **Non-taxonomic Relations**: 147 - **Average Terms per Type**: 5.75 Usage Example @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = ENVO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/ecology_and_environment/oeo.rst b/docs/source/benchmarking/ecology_and_environment/oeo.rst index 9974eb0..9a4007e 100644 --- a/docs/source/benchmarking/ecology_and_environment/oeo.rst +++ b/docs/source/benchmarking/ecology_and_environment/oeo.rst @@ -10,13 +10,13 @@ because it is user-friendly for editing and viewing differences of edited files. being extended. The first version of the OEO has been released on June 11th 2020. A Steering Committee (OEO-SC) was created to accompany the development, increase awareness of the ontology and include it in current projects. -:Domain: Ecology & Environment +:Domain: Ecology and Environment :Category: Energy :Current Version: 2.7.0 :Last Updated: 03/2025 :Creator: None :License: Creative Commons Attribution 1.0 Generic (CC BY 1.0) -:Format: OWL/XML +:Format: OWL :Download: `The Open Energy Ontology (OEO) Homepage `_ Graph Metrics @@ -62,7 +62,7 @@ Usage Example # Initialize and load ontology ontology = OEO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/ecology_and_environment/sweet.rst b/docs/source/benchmarking/ecology_and_environment/sweet.rst index b30fbac..eb8c6a5 100644 --- a/docs/source/benchmarking/ecology_and_environment/sweet.rst +++ b/docs/source/benchmarking/ecology_and_environment/sweet.rst @@ -9,7 +9,7 @@ SWEET is a collection of ontologies conceptualizing a knowledge space for Earth represented using the web ontology language (OWL). It includes both orthogonal concepts (space, time, Earth realms, physical quantities, etc.) and integrative science knowledge concepts (phenomena, events, etc.). -:Domain: Ecology & Environment +:Domain: Ecology and Environment :Category: Earth Science, Geoscience :Current Version: 3.6.0 :Last Updated: July 14, 2022 @@ -48,10 +48,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 2439 - - **Taxonomic Relations**: 18839 + - **Term Types**: 2219 + - **Taxonomic Relations**: 16111 - **Non-taxonomic Relations**: 515 - - **Average Terms per Type**: 11.67 + - **Average Terms per Type**: 11.50 Usage Example ------------- @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = SWEET() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/education/bibframe.rst b/docs/source/benchmarking/education/bibframe.rst index b063f50..62e2352 100644 --- a/docs/source/benchmarking/education/bibframe.rst +++ b/docs/source/benchmarking/education/bibframe.rst @@ -20,7 +20,7 @@ attribute of an Instance. :Last Updated: 2022-10-03 :Creator: United States, Library of Congress :License: Creative Commons 1.0 -:Format: RDF/XML +:Format: RDF :Download: `Bibliographic Framework Ontology (BIBFRAME) Homepage `_ Graph Metrics @@ -66,7 +66,7 @@ Usage Example # Initialize and load ontology ontology = BIBFRAME() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/education/common.rst b/docs/source/benchmarking/education/common.rst index c71fae5..9e6b748 100644 --- a/docs/source/benchmarking/education/common.rst +++ b/docs/source/benchmarking/education/common.rst @@ -11,7 +11,7 @@ Ontology for the representation of commons elements in the Trias ontology :Last Updated: None :Creator: Jhon Toledo, Miguel Angel García, Oscar Corcho :License: Creative Commons Attribution 4.0 International (CC BY 4.0) -:Format: RDF/XML +:Format: RDF :Download: `Common Ontology (Common) Homepage `_ Graph Metrics @@ -45,7 +45,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 26 + - **Taxonomic Relations**: 0 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = Common() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/education/doco.rst b/docs/source/benchmarking/education/doco.rst index 7f4ba1c..bc879f4 100644 --- a/docs/source/benchmarking/education/doco.rst +++ b/docs/source/benchmarking/education/doco.rst @@ -14,7 +14,7 @@ and shareability of academic documents (and related services) when multiple form :Last Updated: 2015-07-03 :Creator: David Shotton and Silvio Peroni :License: Creative Commons 4.0 -:Format: OWL, TTL, CSV, NT +:Format: RDF :Download: `Document Components Ontology (DoCO) Homepage `_ Graph Metrics @@ -48,7 +48,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 156 + - **Taxonomic Relations**: 59 - **Non-taxonomic Relations**: 7 - **Average Terms per Type**: 0.00 @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = DoCO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/events/conference.rst b/docs/source/benchmarking/events/conference.rst index 92e4faa..d30d1f0 100644 --- a/docs/source/benchmarking/events/conference.rst +++ b/docs/source/benchmarking/events/conference.rst @@ -48,7 +48,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 32 - - **Taxonomic Relations**: 184 + - **Taxonomic Relations**: 49 - **Non-taxonomic Relations**: 3 - **Average Terms per Type**: 10.67 @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = ConferenceOntology() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/events/icalendar.rst b/docs/source/benchmarking/events/icalendar.rst index 06a5cf5..4f5a2c6 100644 --- a/docs/source/benchmarking/events/icalendar.rst +++ b/docs/source/benchmarking/events/icalendar.rst @@ -50,7 +50,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 2994 + - **Taxonomic Relations**: 0 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -62,7 +62,7 @@ Usage Example # Initialize and load ontology ontology = iCalendar() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/events/lode.rst b/docs/source/benchmarking/events/lode.rst index 67d8db6..565e829 100644 --- a/docs/source/benchmarking/events/lode.rst +++ b/docs/source/benchmarking/events/lode.rst @@ -18,7 +18,7 @@ provide RDFS+OWL descriptions and link to related resources. :Last Updated: 2020-10-31 :Creator: Ryan Shaw :License: Creative Commons Attribution 3.0 -:Format: RDF, TTL +:Format: RDF :Download: `Linking Open Descriptions of Events (LODE) Homepage `_ Graph Metrics @@ -64,7 +64,7 @@ Usage Example # Initialize and load ontology ontology = LODE() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/finance/goodrelations.rst b/docs/source/benchmarking/finance/goodrelations.rst index 84824f0..d4372a2 100644 --- a/docs/source/benchmarking/finance/goodrelations.rst +++ b/docs/source/benchmarking/finance/goodrelations.rst @@ -15,7 +15,7 @@ of search engines, recommender systems, and other novel applications. :Last Updated: 2011-10-01 :Creator: Martin Hepp :License: Creative Commons 3.0 -:Format: RDF/XML +:Format: OWL :Download: `Good Relations Language Reference (GoodRelations) Homepage `_ Graph Metrics @@ -48,10 +48,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 47 + - **Term Types**: 46 - **Taxonomic Relations**: 25 - **Non-taxonomic Relations**: 264 - - **Average Terms per Type**: 5.22 + - **Average Terms per Type**: 5.75 Usage Example ------------- @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = GoodRelations() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/food_and_beverage/wine.rst b/docs/source/benchmarking/food_and_beverage/wine.rst index d5a45b3..6ca48b6 100644 --- a/docs/source/benchmarking/food_and_beverage/wine.rst +++ b/docs/source/benchmarking/food_and_beverage/wine.rst @@ -5,13 +5,13 @@ Overview -------- A project to define an RDF style ontology for wines and the wine-industry -:Domain: Food & Beverage +:Domain: Food and Beverage :Category: Wine :Current Version: None :Last Updated: None :Creator: None :License: None -:Format: RDF/XML +:Format: RDF :Download: `Wine Ontology (Wine) Homepage `_ Graph Metrics @@ -45,7 +45,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 161 - - **Taxonomic Relations**: 504 + - **Taxonomic Relations**: 47 - **Non-taxonomic Relations**: 1 - **Average Terms per Type**: 4.13 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = Wine() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/ontolearner/ontology/ecology_environment.py b/ontolearner/ontology/ecology_environment.py index 002aae7..c1c265a 100644 --- a/ontolearner/ontology/ecology_environment.py +++ b/ontolearner/ontology/ecology_environment.py @@ -1,3 +1,5 @@ +import re + from ..base import BaseOntology @@ -19,6 +21,19 @@ class ENVO(BaseOntology): format = "OWL" download_url = "https://obofoundry.org/ontology/envo.html" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle ENVO-specific blank nodes.""" + # ENVO-specific patterns + if re.match(r'^PATO_[0-9]+$', label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class OEO(BaseOntology): """ From 23093ce65afeb4582f3036aa91db092f6e578d98 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Mon, 5 May 2025 21:28:52 +0200 Subject: [PATCH 26/37] :pencil2: update ontology metrics for general knowledge domain --- .../benchmarking/general_knowledge/cco.rst | 4 +-- .../general_knowledge/dbpedia.rst | 4 +-- .../general_knowledge/dublincore.rst | 4 +-- .../benchmarking/general_knowledge/edam.rst | 6 ++--- .../benchmarking/general_knowledge/gist.rst | 6 ++--- .../benchmarking/general_knowledge/iao.rst | 4 +-- .../benchmarking/general_knowledge/prov.rst | 4 +-- .../benchmarking/general_knowledge/ro.rst | 4 +-- .../general_knowledge/schemaorg.rst | 2 +- .../benchmarking/general_knowledge/umbel.rst | 4 +-- ontolearner/ontology/general.py | 27 +++++++++++++++++++ 11 files changed, 48 insertions(+), 21 deletions(-) diff --git a/docs/source/benchmarking/general_knowledge/cco.rst b/docs/source/benchmarking/general_knowledge/cco.rst index 543c61c..e77ab4f 100644 --- a/docs/source/benchmarking/general_knowledge/cco.rst +++ b/docs/source/benchmarking/general_knowledge/cco.rst @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 362 - - **Taxonomic Relations**: 1806 + - **Taxonomic Relations**: 1532 - **Non-taxonomic Relations**: 21 - **Average Terms per Type**: 10.06 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = CCO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/general_knowledge/dbpedia.rst b/docs/source/benchmarking/general_knowledge/dbpedia.rst index 7d01218..a32d61e 100644 --- a/docs/source/benchmarking/general_knowledge/dbpedia.rst +++ b/docs/source/benchmarking/general_knowledge/dbpedia.rst @@ -49,7 +49,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 799 - - **Non-taxonomic Relations**: 2007 + - **Non-taxonomic Relations**: 1665 - **Average Terms per Type**: 0.00 Usage Example @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = DBpedia() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/general_knowledge/dublincore.rst b/docs/source/benchmarking/general_knowledge/dublincore.rst index 898a898..217e20d 100644 --- a/docs/source/benchmarking/general_knowledge/dublincore.rst +++ b/docs/source/benchmarking/general_knowledge/dublincore.rst @@ -14,7 +14,7 @@ for metadata vocabularies in the Linked Data cloud and Semantic Web implementati :Last Updated: February 17, 2017 :Creator: The Dublin Core Metadata Initiative :License: Public Domain -:Format: RDF, OWL, TTL, CSV, NT +:Format: RDF :Download: `Dublin Core Vocabulary (DublinCore) Homepage `_ Graph Metrics @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = DublinCore() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/general_knowledge/edam.rst b/docs/source/benchmarking/general_knowledge/edam.rst index a5d2825..6389f5b 100644 --- a/docs/source/benchmarking/general_knowledge/edam.rst +++ b/docs/source/benchmarking/general_knowledge/edam.rst @@ -13,7 +13,7 @@ the structure of EDAM is relatively simple, divided into 4 main sections: Topic, :Last Updated: 24.09.2024 :Creator: Federico Bianchini, Hervé Ménager, Jon Ison, Matúš Kalaš :License: Creative Commons 4.0 -:Format: owl +:Format: OWL :Download: `The ontology of data analysis and management (EDAM) Homepage `_ Graph Metrics @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 9745 + - **Taxonomic Relations**: 7916 - **Non-taxonomic Relations**: 1314 - **Average Terms per Type**: 0.00 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = EDAM() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/general_knowledge/gist.rst b/docs/source/benchmarking/general_knowledge/gist.rst index 2cbfe11..164efbb 100644 --- a/docs/source/benchmarking/general_knowledge/gist.rst +++ b/docs/source/benchmarking/general_knowledge/gist.rst @@ -13,7 +13,7 @@ with the fewest number of primitives and the least amount of ambiguity. :Last Updated: 2024-Feb-27 :Creator: Semantic Arts :License: Creative Commons 4.0 -:Format: OWL +:Format: RDF :Download: `GIST Upper Ontology (GIST) Homepage `_ Graph Metrics @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 8 - - **Taxonomic Relations**: 78 + - **Taxonomic Relations**: 39 - **Non-taxonomic Relations**: 56 - **Average Terms per Type**: 8.00 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = GIST() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/general_knowledge/iao.rst b/docs/source/benchmarking/general_knowledge/iao.rst index 8250ae4..bb2fe15 100644 --- a/docs/source/benchmarking/general_knowledge/iao.rst +++ b/docs/source/benchmarking/general_knowledge/iao.rst @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 18 - - **Taxonomic Relations**: 567 + - **Taxonomic Relations**: 347 - **Non-taxonomic Relations**: 19 - **Average Terms per Type**: 6.00 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = IAO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/general_knowledge/prov.rst b/docs/source/benchmarking/general_knowledge/prov.rst index f5c9eab..7a45527 100644 --- a/docs/source/benchmarking/general_knowledge/prov.rst +++ b/docs/source/benchmarking/general_knowledge/prov.rst @@ -50,7 +50,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 41 + - **Taxonomic Relations**: 39 - **Non-taxonomic Relations**: 4 - **Average Terms per Type**: 0.00 @@ -62,7 +62,7 @@ Usage Example # Initialize and load ontology ontology = PROV() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/general_knowledge/ro.rst b/docs/source/benchmarking/general_knowledge/ro.rst index 35e3040..4991461 100644 --- a/docs/source/benchmarking/general_knowledge/ro.rst +++ b/docs/source/benchmarking/general_knowledge/ro.rst @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 2 - - **Taxonomic Relations**: 98 + - **Taxonomic Relations**: 65 - **Non-taxonomic Relations**: 10 - **Average Terms per Type**: 2.00 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = RO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/general_knowledge/schemaorg.rst b/docs/source/benchmarking/general_knowledge/schemaorg.rst index e167506..383d03e 100644 --- a/docs/source/benchmarking/general_knowledge/schemaorg.rst +++ b/docs/source/benchmarking/general_knowledge/schemaorg.rst @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = SchemaOrg() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/general_knowledge/umbel.rst b/docs/source/benchmarking/general_knowledge/umbel.rst index c2eb93e..5aee8a4 100644 --- a/docs/source/benchmarking/general_knowledge/umbel.rst +++ b/docs/source/benchmarking/general_knowledge/umbel.rst @@ -50,7 +50,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 10 - **Taxonomic Relations**: 64 - - **Non-taxonomic Relations**: 0 + - **Non-taxonomic Relations**: 33 - **Average Terms per Type**: 10.00 Usage Example @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = UMBEL() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.n3") # Extract datasets data = ontology.extract() diff --git a/ontolearner/ontology/general.py b/ontolearner/ontology/general.py index 99c0dc7..4ce75d1 100644 --- a/ontolearner/ontology/general.py +++ b/ontolearner/ontology/general.py @@ -1,3 +1,4 @@ +import re from rdflib import URIRef, RDF, RDFS from ..base import BaseOntology @@ -38,6 +39,19 @@ class DBpedia(BaseOntology): format = "OWL" download_url = "https://wiki.dbpedia.org/" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle DBpedia/Wikidata-specific blank nodes.""" + # DBpedia/Wikidata-specific patterns + if re.match(r'^Q[0-9]+$', label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + def _is_valid_non_taxonomic_triple(self, s: URIRef, p: URIRef, o: URIRef) -> bool: # Include datatype properties and validate domain/range domain = self.rdf_graph.value(p, RDFS.domain) @@ -198,6 +212,19 @@ class UMBEL(BaseOntology): format = "n3" download_url = "https://github.com/structureddynamics/UMBEL/tree/master/Ontology" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle UMBEL-specific blank nodes.""" + # UMBEL-specific patterns + if re.match(r'^f5295f96ac3e649dcb1740b0d93d3e6c2b[0-9a-f]+$', label): # Long hexadecimal identifiers + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class YAGO(BaseOntology): """ From cdc831c3d9e5bacc18ba89246eca5dcb0c586d16 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Mon, 5 May 2025 21:39:59 +0200 Subject: [PATCH 27/37] :pencil2: update ontology metrics for geography, industry, library and cultural heritage, law domain --- docs/source/benchmarking/geography/geo.rst | 10 +++++----- docs/source/benchmarking/geography/geonames.rst | 6 +++--- docs/source/benchmarking/geography/gts.rst | 6 +++--- docs/source/benchmarking/geography/juso.rst | 2 +- docs/source/benchmarking/industry/auto.rst | 4 ++-- docs/source/benchmarking/industry/dbo.rst | 6 +++--- docs/source/benchmarking/industry/doap.rst | 2 +- docs/source/benchmarking/industry/iof.rst | 6 +++--- docs/source/benchmarking/industry/pto.rst | 10 +++++----- docs/source/benchmarking/industry/tubes.rst | 4 ++-- docs/source/benchmarking/law/copyrightonto.rst | 6 +++--- .../benchmarking/library_and_cultural_heritage/gnd.rst | 4 ++-- docs/source/benchmarking/livestock/atol.rst | 4 ++-- 13 files changed, 35 insertions(+), 35 deletions(-) diff --git a/docs/source/benchmarking/geography/geo.rst b/docs/source/benchmarking/geography/geo.rst index b1a3f19..4cfbf9a 100644 --- a/docs/source/benchmarking/geography/geo.rst +++ b/docs/source/benchmarking/geography/geo.rst @@ -46,10 +46,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 46949 - - **Taxonomic Relations**: 664 - - **Non-taxonomic Relations**: 65 - - **Average Terms per Type**: 1805.73 + - **Term Types**: 34653 + - **Taxonomic Relations**: 430 + - **Non-taxonomic Relations**: 19 + - **Average Terms per Type**: 1386.12 Usage Example ------------- @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = GEO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/geography/geonames.rst b/docs/source/benchmarking/geography/geonames.rst index 2992e8f..ad1206b 100644 --- a/docs/source/benchmarking/geography/geonames.rst +++ b/docs/source/benchmarking/geography/geonames.rst @@ -12,7 +12,7 @@ in particular those defined in the geonames.org database. :Last Updated: 2022-01-30 :Creator: Bernard Vatant :License: Creative Commons 3.0 -:Format: RDF/XML, Turtle, JSON-LD +:Format: RDF :Download: `GeoNames Ontology (GeoNames) Homepage `_ Graph Metrics @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 699 - - **Taxonomic Relations**: 150 + - **Taxonomic Relations**: 18 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 349.50 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = GeoNames() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/geography/gts.rst b/docs/source/benchmarking/geography/gts.rst index 2fbedd9..b375fe1 100644 --- a/docs/source/benchmarking/geography/gts.rst +++ b/docs/source/benchmarking/geography/gts.rst @@ -13,7 +13,7 @@ compatible with geospatial information transfer standards, Geosphere, Geological :Last Updated: 2020-05-31 :Creator: Simon J D Cox (simon.cox@csiro.au) of CSIRO :License: Creative Commons 1.0 -:Format: OWL, TTL +:Format: TTL :Download: `Geologic Timescale model (GTS) Homepage `_ Graph Metrics @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 7 - - **Taxonomic Relations**: 549 + - **Taxonomic Relations**: 77 - **Non-taxonomic Relations**: 2 - **Average Terms per Type**: 7.00 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = GTS() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/geography/juso.rst b/docs/source/benchmarking/geography/juso.rst index df6443b..4f4532e 100644 --- a/docs/source/benchmarking/geography/juso.rst +++ b/docs/source/benchmarking/geography/juso.rst @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = Juso() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/industry/auto.rst b/docs/source/benchmarking/industry/auto.rst index 7eb2f62..57e3dff 100644 --- a/docs/source/benchmarking/industry/auto.rst +++ b/docs/source/benchmarking/industry/auto.rst @@ -48,7 +48,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 58 - - **Taxonomic Relations**: 13439 + - **Taxonomic Relations**: 2731 - **Non-taxonomic Relations**: 42 - **Average Terms per Type**: 3.62 @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = AUTO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/industry/dbo.rst b/docs/source/benchmarking/industry/dbo.rst index 1310697..a138cf0 100644 --- a/docs/source/benchmarking/industry/dbo.rst +++ b/docs/source/benchmarking/industry/dbo.rst @@ -12,7 +12,7 @@ about buildings and building-installed equipment. :Last Updated: 02/23/2023 :Creator: Google :License: Apache 2.0 -:Format: OWL, CSV, RDF/XML +:Format: RDF :Download: `Digital Buildings Ontology (DBO) Homepage `_ Graph Metrics @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 35 - - **Taxonomic Relations**: 37016 + - **Taxonomic Relations**: 18738 - **Non-taxonomic Relations**: 12 - **Average Terms per Type**: 2.06 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = DBO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/industry/doap.rst b/docs/source/benchmarking/industry/doap.rst index 34102cc..042f854 100644 --- a/docs/source/benchmarking/industry/doap.rst +++ b/docs/source/benchmarking/industry/doap.rst @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = DOAP() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/industry/iof.rst b/docs/source/benchmarking/industry/iof.rst index c776d49..738a52d 100644 --- a/docs/source/benchmarking/industry/iof.rst +++ b/docs/source/benchmarking/industry/iof.rst @@ -15,7 +15,7 @@ and interoperability across various domain-specific reference ontologies the IOF :Last Updated: 2020 :Creator: IOF Core Working Group :License: MIT -:Format: RDF, OWL, TTL, CSV, NT +:Format: RDF :Download: `Industrial Ontology Foundry (IOF) Homepage `_ Graph Metrics @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 298 + - **Taxonomic Relations**: 87 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = IOF() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/industry/pto.rst b/docs/source/benchmarking/industry/pto.rst index 6dec5d1..ce0f390 100644 --- a/docs/source/benchmarking/industry/pto.rst +++ b/docs/source/benchmarking/industry/pto.rst @@ -12,7 +12,7 @@ a standard vocabulary for the commercial aspects of offers. :Last Updated: 2025-02-21 :Creator: Martin Hepp :License: Creative Commons 3.0 -:Format: RDF, OWL, TTL, CSV, NT +:Format: RDF :Download: `Product Types Ontology (PTO) Homepage `_ Graph Metrics @@ -45,10 +45,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 3001 - - **Taxonomic Relations**: 4000 + - **Term Types**: 3000 + - **Taxonomic Relations**: 3996 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 3001.00 + - **Average Terms per Type**: 3000.00 Usage Example ------------- @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = PTO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/industry/tubes.rst b/docs/source/benchmarking/industry/tubes.rst index f21dc5e..da08925 100644 --- a/docs/source/benchmarking/industry/tubes.rst +++ b/docs/source/benchmarking/industry/tubes.rst @@ -14,7 +14,7 @@ in a future semantic web of building data. It has a strong alignment to other on :Last Updated: 2022-02-01 :Creator: Nicolas Pauen :License: Creative Commons 4.0 -:Format: RDF/XML, Turtle, JSON-LD +:Format: RDF :Download: `TUBES System Ontology (TUBES) Homepage `_ Graph Metrics @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = TUBES() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/law/copyrightonto.rst b/docs/source/benchmarking/law/copyrightonto.rst index 95ef4a1..61b94b6 100644 --- a/docs/source/benchmarking/law/copyrightonto.rst +++ b/docs/source/benchmarking/law/copyrightonto.rst @@ -14,7 +14,7 @@ end-users permissions to consume content, like many rights languages and ontolog :Last Updated: 2019-09 :Creator: Rhizomik :License: Creative Commons 4.0 -:Format: RDF +:Format: TTL :Download: `Copyright Ontology (CopyrightOnto) Homepage `_ Graph Metrics @@ -48,7 +48,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 7 - - **Taxonomic Relations**: 403 + - **Taxonomic Relations**: 118 - **Non-taxonomic Relations**: 6 - **Average Terms per Type**: 7.00 @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = CopyrightOnto() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/library_and_cultural_heritage/gnd.rst b/docs/source/benchmarking/library_and_cultural_heritage/gnd.rst index 01d6531..149777a 100644 --- a/docs/source/benchmarking/library_and_cultural_heritage/gnd.rst +++ b/docs/source/benchmarking/library_and_cultural_heritage/gnd.rst @@ -7,7 +7,7 @@ GND stands for Gemeinsame Normdatei (Integrated Authority File) and offers a bro to describe authorities. The GND originates from the German library community and aims to solve the name ambiguity problem in the library world. -:Domain: Library & Cultural Heritage +:Domain: Library and Cultural Heritage :Category: Authority Files :Current Version: 1.2.0 :Last Updated: 2024-08-26 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = GND() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/livestock/atol.rst b/docs/source/benchmarking/livestock/atol.rst index b185f18..3b3da0a 100644 --- a/docs/source/benchmarking/livestock/atol.rst +++ b/docs/source/benchmarking/livestock/atol.rst @@ -19,7 +19,7 @@ semantic analysis and modeling; :Last Updated: May 11, 2020 :Creator: INRAE, France :License: Creative Commons 4.0 -:Format: OWL, TTL, CSV, NT +:Format: OWL :Download: `Animal Trait Ontology for Livestock (ATOL) Homepage `_ Graph Metrics @@ -65,7 +65,7 @@ Usage Example # Initialize and load ontology ontology = ATOL() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() From 7b836abd010218f032dc0d70aed118f3751904c5 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Tue, 6 May 2025 11:01:48 +0200 Subject: [PATCH 28/37] :pencil2: update ontology metrics for material science and engineering --- .../amontology.rst | 6 +- .../asmo.rst | 4 +- .../atomistic.rst | 8 +- .../battinfo.rst | 12 +- .../materials_science_and_engineering/bmo.rst | 6 +- .../bvco.rst | 8 +- .../cdco.rst | 4 +- .../chameo.rst | 6 +- .../cifcore.rst | 4 +- .../cmso.rst | 4 +- .../diso.rst | 8 +- .../dsim.rst | 8 +- .../emmo.rst | 8 +- .../emmocrystallography.rst | 8 +- .../materials_science_and_engineering/fso.rst | 4 +- .../materials_science_and_engineering/gpo.rst | 8 +- .../hpont.rst | 8 +- .../materials_science_and_engineering/ldo.rst | 4 +- .../lpbfo.rst | 6 +- .../mambo.rst | 6 +- .../materials_science_and_engineering/mat.rst | 8 +- .../materialinformation.rst | 10 +- .../matonto.rst | 6 +- .../matvoc.rst | 6 +- .../matwerk.rst | 6 +- .../materials_science_and_engineering/mdo.rst | 8 +- .../materials_science_and_engineering/mds.rst | 6 +- .../mechanicaltesting.rst | 10 +- .../microstructures.rst | 8 +- .../materials_science_and_engineering/mmo.rst | 8 +- .../molbrinell.rst | 6 +- .../moltensile.rst | 6 +- .../mseo.rst | 8 +- .../msle.rst | 10 +- .../nanomine.rst | 6 +- .../oiecharacterisation.rst | 68 +++++ .../oiemanufacturing.rst | 6 +- .../oiematerials.rst | 6 +- .../oiemodels.rst | 6 +- .../oiesoftware.rst | 8 +- .../ontorule.rst | 8 +- .../periodictable.rst | 10 +- .../photovoltaics.rst | 6 +- .../pldo.rst | 4 +- .../pmdco.rst | 8 +- .../podo.rst | 4 +- .../prima.rst | 8 +- .../materials_science_and_engineering/ssn.rst | 12 +- .../systemcapabilities.rst | 10 +- .../vimmp.rst | 12 +- .../ontology/material_science_engineering.py | 272 +++++++++++++++++- 51 files changed, 510 insertions(+), 180 deletions(-) create mode 100644 docs/source/benchmarking/materials_science_and_engineering/oiecharacterisation.rst diff --git a/docs/source/benchmarking/materials_science_and_engineering/amontology.rst b/docs/source/benchmarking/materials_science_and_engineering/amontology.rst index cc833a6..0fdde1f 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/amontology.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/amontology.rst @@ -10,7 +10,7 @@ used to capture knowledge about modeling concepts that represent (possibly) mult AMOntology uses AMProcessOntology and ModelOntology files to describe entities that capture knowledge about characteristics of computational models for AM processes. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Manufacturing :Current Version: 1.0 :Last Updated: 2023-05-10 @@ -50,7 +50,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 59 - - **Taxonomic Relations**: 1603 + - **Taxonomic Relations**: 657 - **Non-taxonomic Relations**: 5 - **Average Terms per Type**: 1.26 @@ -62,7 +62,7 @@ Usage Example # Initialize and load ontology ontology = AMOntology() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/asmo.rst b/docs/source/benchmarking/materials_science_and_engineering/asmo.rst index 7bd7782..354b081 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/asmo.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/asmo.rst @@ -7,7 +7,7 @@ ASMO is an ontology that aims to define the concepts needed to describe commonly used atomic scale simulation methods, i.e. density functional theory, molecular dynamics, Monte Carlo methods, etc. ASMO uses the Provenance Ontology (PROV-O) to describe the simulation process. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 1.0.0 :Last Updated: None @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = ASMO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/atomistic.rst b/docs/source/benchmarking/materials_science_and_engineering/atomistic.rst index 191feae..70fd5f5 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/atomistic.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/atomistic.rst @@ -5,13 +5,13 @@ Overview -------- An EMMO-based domain ontology for atomistic and electronic modelling. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 0.0.2 :Last Updated: None :Creator: Francesca L. Bleken, Jesper Friis :License: Creative Commons Attribution 4.0 International (CC BY 4.0) -:Format: Turtle +:Format: TTL :Download: `Atomistic Ontology (Atomistic) Homepage `_ Graph Metrics @@ -45,7 +45,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 38 + - **Taxonomic Relations**: 0 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = Atomistic() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/battinfo.rst b/docs/source/benchmarking/materials_science_and_engineering/battinfo.rst index 0ff899f..0f1ab10 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/battinfo.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/battinfo.rst @@ -8,7 +8,7 @@ and enhancing data interoperability. The primary objective is to provide the nec to create FAIR (Findable, Accessible, Interoperable, Reusable) battery data that can be integrated into the Semantic Web. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: None :Last Updated: None @@ -47,10 +47,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 12 - - **Taxonomic Relations**: 23611 - - **Non-taxonomic Relations**: 66 - - **Average Terms per Type**: 6.00 + - **Term Types**: 10 + - **Taxonomic Relations**: 195 + - **Non-taxonomic Relations**: 2 + - **Average Terms per Type**: 10.00 Usage Example ------------- @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = BattINFO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/bmo.rst b/docs/source/benchmarking/materials_science_and_engineering/bmo.rst index 7d8fa74..365d116 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/bmo.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/bmo.rst @@ -6,13 +6,13 @@ Overview Building Material Ontology defines the main concepts of building material, types, layers, and properties. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials :Current Version: 0.1 :Last Updated: 2019-12-10 :Creator: Janakiram Karlapudi, Prathap Valluru :License: Creative Commons Attribution 4.0 International (CC BY 4.0) -:Format: TTL, OWL, RDF/XML +:Format: TTL :Download: `Building Material Ontology (BMO) Homepage `_ Graph Metrics @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = BMO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/bvco.rst b/docs/source/benchmarking/materials_science_and_engineering/bvco.rst index 6fca3f9..3433b3a 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/bvco.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/bvco.rst @@ -8,7 +8,7 @@ holistic perspective elements that transform inputs/educts (matter, energy, info into output/products (matter, energy, information) with the help of tools (devices, algorithms). They can be decomposed into sub-processes and have predecessor and successor processes. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 0.4.3 :Last Updated: None @@ -48,8 +48,8 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 1396 - - **Non-taxonomic Relations**: 5 + - **Taxonomic Relations**: 0 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = BVCO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/cdco.rst b/docs/source/benchmarking/materials_science_and_engineering/cdco.rst index 837c8f9..bc88776 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/cdco.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/cdco.rst @@ -6,7 +6,7 @@ Overview CDCO defines the common terminology shared across all types of crystallographic defects, providing a unified framework for data integration in materials science. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 1.0.0 :Last Updated: None @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = CDCO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/chameo.rst b/docs/source/benchmarking/materials_science_and_engineering/chameo.rst index 0949379..2a87a3f 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/chameo.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/chameo.rst @@ -9,7 +9,7 @@ and that has been used as a basis for the development of a number of technique-s or application-specific ontologies in the materials characterisation domain. CHAMEO has been used as a foundation for the definition of the new CHADA template during the CWA. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 1.0.0 :Last Updated: 2024-04-12 @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 397 + - **Taxonomic Relations**: 195 - **Non-taxonomic Relations**: 2 - **Average Terms per Type**: 0.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = CHAMEO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/cifcore.rst b/docs/source/benchmarking/materials_science_and_engineering/cifcore.rst index 87ca9d0..06def72 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/cifcore.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/cifcore.rst @@ -7,7 +7,7 @@ Overview of data files covering various aspects of crystallography and related structural sciences; (2) to demonstrate some of the more complex types of information that can be handled with this approach. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 0.1.0 :Last Updated: May 24, 2023 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = CIFCore() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/cmso.rst b/docs/source/benchmarking/materials_science_and_engineering/cmso.rst index 5b0b6c3..ee9de9a 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/cmso.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/cmso.rst @@ -6,7 +6,7 @@ Overview CMSO is an ontology that aims to describe computational materials science samples (or structures), including crystalline defects. Initially focusing on the description at the atomic scale. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 0.0.1 :Last Updated: None @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = CMSO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/diso.rst b/docs/source/benchmarking/materials_science_and_engineering/diso.rst index b8a33f9..20a37d6 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/diso.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/diso.rst @@ -6,13 +6,13 @@ Overview DISO is an ontology that defines the linear defect, in particular dislocation concepts and relations between them in crystalline materials. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 1.0 :Last Updated: 21.03.202 :Creator: Ahmad Zainul Ihsan :License: Creative Commons Attribution 3.0 International (CC BY 3.0) -:Format: OWL/XML, RDF/XML, Turtle +:Format: OWL :Download: `Dislocation Ontology (DISO) Homepage `_ Graph Metrics @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 202 + - **Taxonomic Relations**: 38 - **Non-taxonomic Relations**: 6 - **Average Terms per Type**: 0.00 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = DISO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/dsim.rst b/docs/source/benchmarking/materials_science_and_engineering/dsim.rst index bf9e6f3..4d7ab00 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/dsim.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/dsim.rst @@ -9,13 +9,13 @@ used in the dislocation domain. The various concepts are the numerical represent of dislocation applied in the dislocation dynamic simulation and the pictorial concept of pixel applied in representing dislocation in the experimental image, eg., TEM image, SEM image, and FIM image. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 1.0 :Last Updated: 17.08.2023 :Creator: Ahmad Zainul Ihsan :License: Creative Commons Attribution 3.0 Unported (CC BY 3.0) -:Format: OWL/XML +:Format: OWL :Download: `Dislocation Simulation and Model Ontology (DSIM) Homepage `_ Graph Metrics @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 164 + - **Taxonomic Relations**: 51 - **Non-taxonomic Relations**: 6 - **Average Terms per Type**: 0.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = DSIM() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/emmo.rst b/docs/source/benchmarking/materials_science_and_engineering/emmo.rst index 9ae833e..3849b09 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/emmo.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/emmo.rst @@ -9,13 +9,13 @@ and characterization knowledge. Instead of starting from general upper level con the EMMO development started from the very bottom level, using the actual picture of the physical world coming from applied sciences, and in particular from physics and material sciences. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Modelling :Current Version: 1.0.0-rc3 :Last Updated: 2024-03 :Creator: European Materials Modelling Council (EMMC) :License: Creative Commons 4.0 -:Format: OWL, RDF/XML, TTL, JSON-LD +:Format: OWL :Download: `The Elementary Multiperspective Material Ontology (EMMO) Homepage `_ Graph Metrics @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 2 - - **Taxonomic Relations**: 27873 + - **Taxonomic Relations**: 16281 - **Non-taxonomic Relations**: 52 - **Average Terms per Type**: 2.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = EMMO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/emmocrystallography.rst b/docs/source/benchmarking/materials_science_and_engineering/emmocrystallography.rst index 1d3b9df..08e171c 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/emmocrystallography.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/emmocrystallography.rst @@ -5,13 +5,13 @@ Overview -------- A crystallography domain ontology based on EMMO and the CIF core dictionary. It is implemented as a formal language. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Crystallography :Current Version: 0.0.1 :Last Updated: None :Creator: None :License: Creative Commons Attribution 4.0 International (CC BY 4.0) -:Format: Turtle +:Format: TTL :Download: `Crystallography Ontology (EMMOCrystallography) Homepage `_ Graph Metrics @@ -45,7 +45,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 331 + - **Taxonomic Relations**: 0 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = EMMOCrystallography() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/fso.rst b/docs/source/benchmarking/materials_science_and_engineering/fso.rst index 202410d..29fe4f3 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/fso.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/fso.rst @@ -6,7 +6,7 @@ Overview The Flow Systems Ontology (FSO) is an ontology for describing interconnected systems with material or energy flow connections, and their components. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 0.1.0 :Last Updated: 2020-08-06 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = FSO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/gpo.rst b/docs/source/benchmarking/materials_science_and_engineering/gpo.rst index 77d3486..5238187 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/gpo.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/gpo.rst @@ -8,7 +8,7 @@ that transform inputs/educts (matter, energy, information) into output/products with the help of tools (devices, algorithms). They can be decomposed into sub-processes and have predecessor and successor processes. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: None :Last Updated: None @@ -48,8 +48,8 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 516 - - **Non-taxonomic Relations**: 1 + - **Taxonomic Relations**: 0 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = GPO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/hpont.rst b/docs/source/benchmarking/materials_science_and_engineering/hpont.rst index 4098f5d..e375320 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/hpont.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/hpont.rst @@ -7,13 +7,13 @@ The Heat Pump Ontology (HPOnt) aims to formalize and represent all the relevant The HPOnt has been developed as part of the REACT project which has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement no. 824395. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 0.2 :Last Updated: None :Creator: REACT project team :License: Creative Commons 4.0 -:Format: OWL, TTL, CSV, NT +:Format: OWL :Download: `The Heat Pump Ontology (HPOnt) Homepage `_ Graph Metrics @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 5 - - **Taxonomic Relations**: 4 + - **Taxonomic Relations**: 0 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 2.50 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = HPOnt() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/ldo.rst b/docs/source/benchmarking/materials_science_and_engineering/ldo.rst index ca20648..bad1b97 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/ldo.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/ldo.rst @@ -6,7 +6,7 @@ Overview LDO is an ontology designed to describe line defects in crystalline materials, such as dislocations and disclinations. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Defects :Current Version: 1.0.0 :Last Updated: None @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = LDO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/lpbfo.rst b/docs/source/benchmarking/materials_science_and_engineering/lpbfo.rst index 48f06e6..609bfab 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/lpbfo.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/lpbfo.rst @@ -9,13 +9,13 @@ and BWMD_mid and has been developed to be used in conjunction with the digital w by Fraunhofer IWM. If possible, the terminology within this ontology was used as provided by ISO/ASTM 52900:2015. Recently, classes relevant for Life Cycle Analysis (LCA) were added that enable sustainability assessment. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 1.1.9 :Last Updated: 2022-09-20 :Creator: Fraunhofer IWM :License: Creative Commons 4.0 -:Format: OWL, RDF/XML, Turtle +:Format: OWL :Download: `Laser Powder Bed Fusion Ontology (LPBFO) Homepage `_ Graph Metrics @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = LPBFO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/mambo.rst b/docs/source/benchmarking/materials_science_and_engineering/mambo.rst index cebce61..c45c421 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/mambo.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/mambo.rst @@ -9,13 +9,13 @@ and related applications (i.e. devices based on molecular materials) Supporting complex workflows for modelling systems based on molecular materials (computational modelling and data-driven techniques) Integrating data generated via computational simulations and empirical experiments. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: None :Last Updated: None :Creator: None :License: General Public License v3.0 (GPL-3.0) -:Format: OWL, TTL +:Format: OWL :Download: `Molecules And Materials Basic Ontology (MAMBO) Homepage `_ Graph Metrics @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = MAMBO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/mat.rst b/docs/source/benchmarking/materials_science_and_engineering/mat.rst index db334e4..56d934c 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/mat.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/mat.rst @@ -8,13 +8,13 @@ materials, and their corresponding properties, relevant within the construction the building elements and properties covered in this ontology support applications focused on the design of building renovation projects. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Properties :Current Version: 0.0.8 :Last Updated: None :Creator: María Poveda-Villalón, Serge Chávez-Feria :License: Creative Commons 4.0 -:Format: RDF/XML, TTL, N-Triples +:Format: RDF :Download: `Material Properties Ontology (MAT) Homepage `_ Graph Metrics @@ -48,7 +48,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 323 + - **Taxonomic Relations**: 128 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = MAT() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/materialinformation.rst b/docs/source/benchmarking/materials_science_and_engineering/materialinformation.rst index 95218d4..8ff7ad7 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/materialinformation.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/materialinformation.rst @@ -7,13 +7,13 @@ The Material Information ontology is divided into smaller ontologies (partitions The partitions are Environment, Geometry, Material Information, Manufacturing Process, Property, Substance, Unit Dimension, Structure, Equation and Physical Constant. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: None :Last Updated: None :Creator: Toshihiro Ashino :License: None -:Format: OWL, RDF/XML +:Format: OWL :Download: `Material Information Ontology (MaterialInformation) Homepage `_ Graph Metrics @@ -46,8 +46,8 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 410 - - **Taxonomic Relations**: 611 + - **Term Types**: 404 + - **Taxonomic Relations**: 605 - **Non-taxonomic Relations**: 30 - **Average Terms per Type**: 1.03 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = MaterialInformation() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/matonto.rst b/docs/source/benchmarking/materials_science_and_engineering/matonto.rst index a9f7b2a..7191a69 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/matonto.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/matonto.rst @@ -45,8 +45,8 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 122 - - **Taxonomic Relations**: 2228 - - **Non-taxonomic Relations**: 434 + - **Taxonomic Relations**: 1215 + - **Non-taxonomic Relations**: 167 - **Average Terms per Type**: 1.94 Usage Example @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = MatOnto() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/matvoc.rst b/docs/source/benchmarking/materials_science_and_engineering/matvoc.rst index d63f551..c598f6a 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/matvoc.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/matvoc.rst @@ -5,13 +5,13 @@ Overview -------- The official ontology produced in the context of the STREAM project. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 1.0.0 :Last Updated: 2022-12-12 :Creator: Tatyana Sheveleva, Javad Chamanara :License: MIT License -:Format: RDF/XML,TTL +:Format: RDF :Download: `Materials Vocabulary (MatVoc) Homepage `_ Graph Metrics @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = MatVoc() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/matwerk.rst b/docs/source/benchmarking/materials_science_and_engineering/matwerk.rst index 891a5e3..038ea10 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/matwerk.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/matwerk.rst @@ -19,7 +19,7 @@ promoting collaboration and knowledge representation across MSE domains. This di enhances data discoverability, reusability, and accelerates scientific exchange, innovation, and discoveries by optimizing research data management and accessibility. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Research Data, Interoperability :Current Version: 3.0.0 :Last Updated: 2025-03-01 @@ -59,7 +59,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 29 - - **Taxonomic Relations**: 562 + - **Taxonomic Relations**: 369 - **Non-taxonomic Relations**: 12 - **Average Terms per Type**: 4.14 @@ -71,7 +71,7 @@ Usage Example # Initialize and load ontology ontology = MatWerk() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/mdo.rst b/docs/source/benchmarking/materials_science_and_engineering/mdo.rst index 9ea14c6..89ebaf3 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/mdo.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/mdo.rst @@ -6,13 +6,13 @@ Overview MDO is an ontology for materials design field, representing the domain knowledge specifically related to solid-state physics and computational materials science. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Design :Current Version: 1.1 :Last Updated: 2022-08-02 :Creator: Materials Design Division, National Institute for Materials Science (NIMS) :License: Creative Commons 4.0 -:Format: OWL, RDF/XML, TTL, JSON-LD +:Format: OWL :Download: `Materials Design Ontology (MDO) Homepage `_ Graph Metrics @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 2 - - **Taxonomic Relations**: 8 + - **Taxonomic Relations**: 3 - **Non-taxonomic Relations**: 1 - **Average Terms per Type**: 2.00 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = MDO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/mds.rst b/docs/source/benchmarking/materials_science_and_engineering/mds.rst index f1f15e9..06196f5 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/mds.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/mds.rst @@ -7,13 +7,13 @@ Materials Data Science (MDS) is an ontology encompassing multiple domains releva chemical synthesis and characterizations, photovoltaics and geospatial datasets. The terms used for classes, subclasses and instances are mapped to PMDCo and BFO Ontologies. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 0.3.0.0 :Last Updated: 03/24/2024 :Creator: SDLE Research Center :License: Creative Commons Attribution 4.0 International (CC BY 4.0) -:Format: OWL/XML +:Format: TTL :Download: `Materials Data Science Ontology (MDS) Homepage `_ Graph Metrics @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = MDS() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/mechanicaltesting.rst b/docs/source/benchmarking/materials_science_and_engineering/mechanicaltesting.rst index c1660a3..98640eb 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/mechanicaltesting.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/mechanicaltesting.rst @@ -5,13 +5,13 @@ Overview -------- A domain ontology for mechanical testing based on EMMO. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Mechanical Testing :Current Version: 1.0.0 :Last Updated: None :Creator: Fraunhofer IWM :License: Creative Commons Attribution 4.0 International (CC BY 4.0) -:Format: OWL/XML +:Format: OWL :Download: `Mechanical Testing Ontology (MechanicalTesting) Homepage `_ Graph Metrics @@ -45,8 +45,8 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 2745 - - **Non-taxonomic Relations**: 3 + - **Taxonomic Relations**: 36 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = MechanicalTesting() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/microstructures.rst b/docs/source/benchmarking/materials_science_and_engineering/microstructures.rst index fbfef19..65733a6 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/microstructures.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/microstructures.rst @@ -8,13 +8,13 @@ particles, both stable (primary) and metastable (precipitates), grains, subgrain grain boundaries & particle free zones (PFZs), texture, dislocations. The aim is to support both microstructure modelling as well as characterisation. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Microstructure :Current Version: None :Last Updated: None :Creator: None :License: None -:Format: OWL/XML +:Format: OWL :Download: `EMMO-based ontology for microstructures (MicroStructures) Homepage `_ Graph Metrics @@ -48,7 +48,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 364 + - **Taxonomic Relations**: 17 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = MicroStructures() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/mmo.rst b/docs/source/benchmarking/materials_science_and_engineering/mmo.rst index e359e93..4e36388 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/mmo.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/mmo.rst @@ -9,13 +9,13 @@ some fairly general MSE concepts that could prospectively be merged into PMDco o such as descriptions of crystallographic defects and microstructural entities. Furthermore, concepts related to the materials fatigue subdomain are also heavily incorporated. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Scholarly Knowledge :Current Version: 1.0.1 :Last Updated: 2024-01-30 :Creator: Akhil Thomas, Ali Riza Durmaz :License: Creative Commons 4.0 -:Format: OWL, TTL +:Format: RDF :Download: `Materials Mechanics Ontology (MMO) Homepage `_ Graph Metrics @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 876 + - **Taxonomic Relations**: 566 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = MMO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/molbrinell.rst b/docs/source/benchmarking/materials_science_and_engineering/molbrinell.rst index 6a89cf6..dd65c25 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/molbrinell.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/molbrinell.rst @@ -5,13 +5,13 @@ Overview -------- An ontology for describing the Brinell hardness testing process, made in the Materials Open Lab Project. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Testing :Current Version: 0.1 :Last Updated: 05/05/2022 :Creator: Birgit Skrotzki, Hossein Beygi Nasrabadi, Philipp von Hartrott, Vinicius Carrillo Beber, Yue Chen :License: None -:Format: TTL, RDF/XML, OWL +:Format: TTL :Download: `MatoLab Brinell Test Ontology (MOL_BRINELL) Homepage `_ Graph Metrics @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = MOLBRINELL() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/moltensile.rst b/docs/source/benchmarking/materials_science_and_engineering/moltensile.rst index 10526b6..36d21c9 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/moltensile.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/moltensile.rst @@ -5,13 +5,13 @@ Overview -------- An ontology for describing the tensile test process, made in the Materials Open Lab Project. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Testings :Current Version: 0.4 :Last Updated: 04/16/2021 :Creator: Markus Schilling, markus.schilling@bam.de; Philipp von Hartrott, philipp.von.hartrott@iwm.fraunhofer.de :License: Creative Commons Attribution 4.0 International (CC BY 4.0) -:Format: OWL, RDF/XML +:Format: RDF :Download: `Matolab Tensile Test Ontology (MOL_TENSILE) Homepage `_ Graph Metrics @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = MOLTENSILE() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/mseo.rst b/docs/source/benchmarking/materials_science_and_engineering/mseo.rst index c3b1181..c126f76 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/mseo.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/mseo.rst @@ -9,13 +9,13 @@ which can be easily digested by other science domains. It is a product of the jo between the Bundesanstalt für Materialforschung und -prüfung (BAM) and the Fraunhofer Group MATERIALS and uses the BWMD ontology created by Fraunhofer IWM as a starting point. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: None :Last Updated: None :Creator: Thomas Hanke, Fraunhofer IWM :License: MIT License -:Format: TTL, OWL +:Format: TTL :Download: `Materials Science and Engineering Ontology (MSEO) Homepage `_ Graph Metrics @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 124 + - **Taxonomic Relations**: 102 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = MSEO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/msle.rst b/docs/source/benchmarking/materials_science_and_engineering/msle.rst index 31aea58..f8ab87a 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/msle.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/msle.rst @@ -5,7 +5,7 @@ Overview -------- The current ontology describes Material Science Lab Equipment. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 1.1 :Last Updated: Sep 15, 2022 @@ -44,10 +44,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 4 - - **Taxonomic Relations**: 83 + - **Term Types**: 3 + - **Taxonomic Relations**: 47 - **Non-taxonomic Relations**: 228 - - **Average Terms per Type**: 1.33 + - **Average Terms per Type**: 1.50 Usage Example ------------- @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = MSLE() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/nanomine.rst b/docs/source/benchmarking/materials_science_and_engineering/nanomine.rst index 6f10a6b..15f41ea 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/nanomine.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/nanomine.rst @@ -7,7 +7,7 @@ Polymer Nanocomposites based ontology which enable researchers to develop and te broad-reaching hypotheses about how inter-relationships between different materials processing methods and composition result in specific changes in material properties. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: None :Last Updated: None @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 321 + - **Taxonomic Relations**: 212 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = NanoMine() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/oiecharacterisation.rst b/docs/source/benchmarking/materials_science_and_engineering/oiecharacterisation.rst new file mode 100644 index 0000000..76feaca --- /dev/null +++ b/docs/source/benchmarking/materials_science_and_engineering/oiecharacterisation.rst @@ -0,0 +1,68 @@ +Open Innovation Environment (OIE) domain ontologies, Characterisation module (OIECharacterisation) +======================================================================================================================== + +Overview +-------- +EMMO-compliant, domain-level OIE ontology tackling the areas of characterization methods. + +:Domain: Materials Science and Engineering +:Category: Materials +:Current Version: None +:Last Updated: None +:Creator: Daniele Toti, Gerhard Goldbeck, Pierluigi Del Nostro +:License: Creative Commons Attribution 4.0 International (CC BY 4.0) +:Format: TTL +:Download: `Open Innovation Environment (OIE) domain ontologies, Characterisation module (OIECharacterisation) Homepage `_ + +Graph Metrics +------------- + - **Total Nodes**: 54 + - **Total Edges**: 135 + - **Root Nodes**: 1 + - **Leaf Nodes**: 11 + +Knowledge coverage +------------------ + - Classes: 42 + - Individuals: 0 + - Properties: 0 + +Hierarchical metrics +-------------------- + - **Maximum Depth**: 1 + - **Minimum Depth**: 0 + - **Average Depth**: 0.88 + - **Depth Variance**: 0.11 + +Breadth metrics +------------------ + - **Maximum Breadth**: 7 + - **Minimum Breadth**: 1 + - **Average Breadth**: 4.00 + - **Breadth Variance**: 9.00 + +Dataset Statistics +------------------ +Generated Benchmarks: + - **Term Types**: 0 + - **Taxonomic Relations**: 41 + - **Non-taxonomic Relations**: 0 + - **Average Terms per Type**: 0.00 + +Usage Example +------------- +.. code-block:: python + + from ontolearner.ontology import OIECharacterisation + + # Initialize and load ontology + ontology = OIECharacterisation() + ontology.load("path/to/ontology.TTL") + + # Extract datasets + data = ontology.extract() + + # Access specific relations + term_types = data.term_typings + taxonomic_relations = data.type_taxonomies + non_taxonomic_relations = data.type_non_taxonomic_relations diff --git a/docs/source/benchmarking/materials_science_and_engineering/oiemanufacturing.rst b/docs/source/benchmarking/materials_science_and_engineering/oiemanufacturing.rst index 504c163..a421589 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/oiemanufacturing.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/oiemanufacturing.rst @@ -6,7 +6,7 @@ Overview The manufacturing module populates the physicalistic perspective with manufacturing subclasses categorised according to modern applied physical sciences. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials :Current Version: None :Last Updated: None @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 249 + - **Taxonomic Relations**: 217 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = OIEManufacturing() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/oiematerials.rst b/docs/source/benchmarking/materials_science_and_engineering/oiematerials.rst index 1fc4196..bcb7b36 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/oiematerials.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/oiematerials.rst @@ -6,7 +6,7 @@ Overview The materials module populates the physicalistic perspective with materials subclasses categorised according to modern applied physical sciences. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials :Current Version: None :Last Updated: None @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 165 + - **Taxonomic Relations**: 156 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = OIEMaterials() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/oiemodels.rst b/docs/source/benchmarking/materials_science_and_engineering/oiemodels.rst index e1e5aab..45c5a24 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/oiemodels.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/oiemodels.rst @@ -6,7 +6,7 @@ Overview The models module defines models as semiotic signs that stands for an object by resembling or imitating it, in shape or by sharing a similar logical structure. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials :Current Version: None :Last Updated: None @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 130 + - **Taxonomic Relations**: 101 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = OIEModels() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/oiesoftware.rst b/docs/source/benchmarking/materials_science_and_engineering/oiesoftware.rst index 874d553..e8c3c17 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/oiesoftware.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/oiesoftware.rst @@ -3,9 +3,9 @@ Open Innovation Environment (OIE) domain ontologies, Software module (OIESoftwar Overview -------- -Software module. +EMMO-compliant, domain-level OIE ontology tackling the areas of software products. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials :Current Version: 0.1 :Last Updated: None @@ -45,7 +45,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 188 + - **Taxonomic Relations**: 179 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = OIESoftware() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/ontorule.rst b/docs/source/benchmarking/materials_science_and_engineering/ontorule.rst index 09fe97a..08e711b 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/ontorule.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/ontorule.rst @@ -9,7 +9,7 @@ from the OWL file. The original OWL file is also included. This document describ and attributes included in the ontology. For a better understanding of the decisions taken at the time of representing the knowledge in the ontology, the reader is encouraged to also read the document D5.4. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: None :Last Updated: 2010-05-31 @@ -48,10 +48,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 13 + - **Term Types**: 11 - **Taxonomic Relations**: 16 - **Non-taxonomic Relations**: 2 - - **Average Terms per Type**: 2.17 + - **Average Terms per Type**: 2.20 Usage Example ------------- @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = ONTORULE() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/periodictable.rst b/docs/source/benchmarking/materials_science_and_engineering/periodictable.rst index efe441d..ba867ea 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/periodictable.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/periodictable.rst @@ -6,7 +6,7 @@ Overview PeriodicTable.owl is a representation of the Periodic Table of the Elements in the OWL Web Ontology Language. It provides reference data to support Semantic Web applications in chemistry and related disciplines. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Periodic Table of Elements :Current Version: 1.10 :Last Updated: 2004/02/05 @@ -45,10 +45,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 156 - - **Taxonomic Relations**: 302 + - **Term Types**: 150 + - **Taxonomic Relations**: 0 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 26.00 + - **Average Terms per Type**: 25.00 Usage Example ------------- @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = PeriodicTable() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/photovoltaics.rst b/docs/source/benchmarking/materials_science_and_engineering/photovoltaics.rst index 3386e2a..c842958 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/photovoltaics.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/photovoltaics.rst @@ -5,7 +5,7 @@ Overview -------- This ontology is describing Perovskite solar cells. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 0.0.1 :Last Updated: None @@ -45,7 +45,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 140 + - **Taxonomic Relations**: 46 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = Photovoltaics() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/pldo.rst b/docs/source/benchmarking/materials_science_and_engineering/pldo.rst index 670cf6a..2fb78ac 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/pldo.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/pldo.rst @@ -6,7 +6,7 @@ Overview PLDO is an ontology designed to describe planar defects in crystalline materials, such as grain boundaries and stacking faults, with a focus on their atomic-scale structure and properties. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Defects :Current Version: 1.0.0 :Last Updated: None @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = PLDO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/pmdco.rst b/docs/source/benchmarking/materials_science_and_engineering/pmdco.rst index 954da29..a16a955 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/pmdco.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/pmdco.rst @@ -9,13 +9,13 @@ has been designed as a mid-level ontology to establish a connection between spec and the domain neutral concepts found in established top-level ontologies. The primary goal of the PMDco is to promote interoperability between diverse domains. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 3.0.0-alpha1 :Last Updated: 2025-03-20 :Creator: Jannis Grundmann :License: Creative Commons Attribution 4.0 International (CC BY 4.0) -:Format: OWL/XML +:Format: OWL :Download: `The Platform MaterialDigital core ontology (PMDco) Homepage `_ Graph Metrics @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 1126 + - **Taxonomic Relations**: 903 - **Non-taxonomic Relations**: 19 - **Average Terms per Type**: 0.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = PMDco() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/podo.rst b/docs/source/benchmarking/materials_science_and_engineering/podo.rst index 400240e..bad2ec8 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/podo.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/podo.rst @@ -5,7 +5,7 @@ Overview -------- PODO focuses on the description of point defects in crystalline materials. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 1.0.0 :Last Updated: None @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = PODO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/prima.rst b/docs/source/benchmarking/materials_science_and_engineering/prima.rst index fbb534d..5071f88 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/prima.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/prima.rst @@ -5,13 +5,13 @@ Overview -------- An ontology that captures the provenance information in the materials science domain. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science :Current Version: 2.0 :Last Updated: 2024-01-29 :Creator: Ahmad Zainul Ihsan, Mehrdad Jalali, Rossella Aversa :License: Creative Commons Attribution 3.0 Unported (CC BY 3.0) -:Format: TTL, OWL +:Format: TTL :Download: `PRovenance Information in MAterials science (PRIMA) Homepage `_ Graph Metrics @@ -45,7 +45,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 1117 + - **Taxonomic Relations**: 186 - **Non-taxonomic Relations**: 1 - **Average Terms per Type**: 0.00 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = PRIMA() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/ssn.rst b/docs/source/benchmarking/materials_science_and_engineering/ssn.rst index 7af3366..0509f22 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/ssn.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/ssn.rst @@ -13,13 +13,13 @@ large-scale scientific monitoring, industrial and household infrastructures, soc observation-driven ontology engineering, and the Web of Things. Both ontologies are described below, and examples of their usage are given. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Sensor Networks :Current Version: 1.0 :Last Updated: 2017-04-17 :Creator: W3C/OGC Spatial Data on the Web Working Group :License: http://www.w3.org/Consortium/Legal/2015/copyright-software-and-document -:Format: RDF/XML, TTL +:Format: TTL :Download: `Semantic Sensor Network Ontology (SSN) Homepage `_ Graph Metrics @@ -52,10 +52,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 7 - - **Taxonomic Relations**: 7585 + - **Term Types**: 0 + - **Taxonomic Relations**: 93 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 7.00 + - **Average Terms per Type**: 0.00 Usage Example ------------- @@ -65,7 +65,7 @@ Usage Example # Initialize and load ontology ontology = SSN() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/systemcapabilities.rst b/docs/source/benchmarking/materials_science_and_engineering/systemcapabilities.rst index bf2e236..016eaf3 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/systemcapabilities.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/systemcapabilities.rst @@ -5,7 +5,7 @@ Overview -------- This ontology describes system capabilities, operating ranges, and survival ranges. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Science, Engineering, Systems :Current Version: None :Last Updated: 2017-05-14 @@ -44,10 +44,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 2 - - **Taxonomic Relations**: 148 + - **Term Types**: 0 + - **Taxonomic Relations**: 45 - **Non-taxonomic Relations**: 0 - - **Average Terms per Type**: 2.00 + - **Average Terms per Type**: 0.00 Usage Example ------------- @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = SystemCapabilities() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/materials_science_and_engineering/vimmp.rst b/docs/source/benchmarking/materials_science_and_engineering/vimmp.rst index 3d2cb72..a1e3ee8 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/vimmp.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/vimmp.rst @@ -10,7 +10,7 @@ and Modelling Ontology (EMMO, recently renamed while keeping the original acrony as a top-level ontology. The ontologies are used to annotate data that are stored in the ZONTAL Space component of VIMMP and to support the ingest and retrieval of data and metadata at the VIMMP marketplace front-end. -:Domain: Materials Science & Engineering +:Domain: Materials Science and Engineering :Category: Materials Modeling :Current Version: None :Last Updated: 2021-01-02 @@ -49,10 +49,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 1939 - - **Taxonomic Relations**: 4077 - - **Non-taxonomic Relations**: 298 - - **Average Terms per Type**: 5.42 + - **Term Types**: 1763 + - **Taxonomic Relations**: 2474 + - **Non-taxonomic Relations**: 278 + - **Average Terms per Type**: 6.14 Usage Example ------------- @@ -62,7 +62,7 @@ Usage Example # Initialize and load ontology ontology = VIMMP() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/ontolearner/ontology/material_science_engineering.py b/ontolearner/ontology/material_science_engineering.py index c18f9f8..d730e74 100644 --- a/ontolearner/ontology/material_science_engineering.py +++ b/ontolearner/ontology/material_science_engineering.py @@ -1,4 +1,5 @@ import os +import re from typing import Optional from rdflib import URIRef @@ -59,6 +60,19 @@ class Atomistic(BaseOntology): format = "TTL" download_url = "https://github.com/emmo-repo/domain-atomistic" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle Atomistic-specific blank nodes.""" + # EMMO-specific patterns (UUID format) in Atomistic + if re.match(r'^EMMO_[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$', label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class BattINFO(BaseOntology): """ @@ -78,6 +92,28 @@ class BattINFO(BaseOntology): format = "TTL" download_url = "https://github.com/BIG-MAP/BattINFO" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle BattINFO-specific blank nodes.""" + # UUID pattern for various prefixes + uuid_pattern = r'[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$' + + # Check for substance_, electrochemistry_, battery_ followed by UUIDs + if re.match(r'^substance_' + uuid_pattern, label): + return True + if re.match(r'^electrochemistry_' + uuid_pattern, label): + return True + if re.match(r'^battery_' + uuid_pattern, label): + return True + if re.match(r'^EMMO_' + uuid_pattern, label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + def contains_imports(self) -> bool: """Hook: Check if the ontology contains imports.""" return True @@ -118,6 +154,27 @@ class BVCO(BaseOntology): format = "TTL" download_url = "https://github.com/Battery-Value-Chain-Ontology/ontology" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle BVCO-specific blank nodes.""" + # UUID pattern for various prefixes + uuid_pattern = r'[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$' + + if re.match(r'^BVCO_' + uuid_pattern, label): + return True + if re.match(r'^GPO_' + uuid_pattern, label): + return True + if re.match(r'^EMMO_' + uuid_pattern, label): + return True + if re.match(r'^electrochemistry_' + uuid_pattern, label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class OntoCAPE(BaseOntology): """ @@ -206,6 +263,21 @@ class CHAMEO(BaseOntology): format = "TTL" download_url = "https://github.com/emmo-repo/domain-characterisation-methodology" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle CHAMEO-specific blank nodes.""" + # UUID pattern for various prefixes + uuid_pattern = r'[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$' + + if re.match(r'^EMMO_' + uuid_pattern, label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class CIFCore(BaseOntology): """ @@ -314,6 +386,21 @@ class EMMOCrystallography(BaseOntology): format = "TTL" download_url = "https://github.com/emmo-repo/domain-crystallography" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle EMMOCrystallography-specific blank nodes.""" + # UUID pattern for various prefixes + uuid_pattern = r'[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$' + + if re.match(r'^EMMO_' + uuid_pattern, label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class FSO(BaseOntology): """ @@ -350,6 +437,23 @@ class GPO(BaseOntology): format = "TTL" download_url = "https://github.com/General-Process-Ontology/ontology" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle GPO-specific blank nodes.""" + # UUID pattern for various prefixes + uuid_pattern = r'[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$' + + if re.match(r'^EMMO_' + uuid_pattern, label): + return True + if re.match(r'^GPO_' + uuid_pattern, label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class HPOnt(BaseOntology): """ @@ -579,6 +683,21 @@ class MechanicalTesting(BaseOntology): format = "OWL" download_url = "https://github.com/emmo-repo/domain-mechanical-testing" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle MechanicalTesting-specific blank nodes.""" + # UUID pattern for various prefixes + uuid_pattern = r'[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$' + + if re.match(r'^EMMO_' + uuid_pattern, label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class MicroStructures(BaseOntology): """ @@ -598,6 +717,21 @@ class MicroStructures(BaseOntology): format = "OWL" download_url = "https://github.com/jesper-friis/emmo-microstructure" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle MicroStructures-specific blank nodes.""" + # UUID pattern for various prefixes + uuid_pattern = r'[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$' + + if re.match(r'^EMMO_' + uuid_pattern, label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class MMO(BaseOntology): """ @@ -705,6 +839,38 @@ class NanoMine(BaseOntology): download_url = "https://github.com/tetherless-world/nanomine-ontology" +class OIECharacterisation(BaseOntology): + """ + EMMO-compliant, domain-level OIE ontology tackling the areas of characterization methods. + """ + ontology_id = "OIECharacterisation" + ontology_full_name = ("Open Innovation Environment (OIE) domain ontologies, " + "Characterisation module (OIECharacterisation)") + domain = "Materials Science and Engineering" + category = "Materials" + version = None + last_updated = None + creator = "Daniele Toti, Gerhard Goldbeck, Pierluigi Del Nostro" + license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" + format = "TTL" + download_url = "https://github.com/emmo-repo/OIE-Ontologies/" + + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle OIECharacterisation-specific blank nodes.""" + # UUID pattern for various prefixes + uuid_pattern = r'[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$' + + if re.match(r'^EMMO_' + uuid_pattern, label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + + class OIEManufacturing(BaseOntology): """ The manufacturing module populates the physicalistic perspective with manufacturing subclasses categorised @@ -716,11 +882,27 @@ class OIEManufacturing(BaseOntology): category = "Materials" version = None last_updated = None - creator = "Adham Hashibon, Daniele Toti, Emanuele Ghedini, Georg J. Schmitz, Gerhard Goldbeck, Jesper Friis, Pierluigi Del Nostro" + creator = ("Adham Hashibon, Daniele Toti, Emanuele Ghedini, Georg J. Schmitz, Gerhard Goldbeck, " + "Jesper Friis, Pierluigi Del Nostro") license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" format = "TTL" download_url = "https://github.com/emmo-repo/OIE-Ontologies/" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle OIEManufacturing-specific blank nodes.""" + # UUID pattern for various prefixes + uuid_pattern = r'[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$' + + if re.match(r'^EMMO_' + uuid_pattern, label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class OIEMaterials(BaseOntology): """ @@ -733,11 +915,27 @@ class OIEMaterials(BaseOntology): category = "Materials" version = None last_updated = None - creator = "Adham Hashibon, Daniele Toti, Emanuele Ghedini, Georg J. Schmitz, Gerhard Goldbeck, Jesper Friis, Pierluigi Del Nostro" + creator = ("Adham Hashibon, Daniele Toti, Emanuele Ghedini, Georg J. Schmitz, " + "Gerhard Goldbeck, Jesper Friis, Pierluigi Del Nostro") license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" format = "TTL" download_url = "https://github.com/emmo-repo/OIE-Ontologies/" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle OIEMaterials-specific blank nodes.""" + # UUID pattern for various prefixes + uuid_pattern = r'[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$' + + if re.match(r'^EMMO_' + uuid_pattern, label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class OIEModels(BaseOntology): """ @@ -750,15 +948,31 @@ class OIEModels(BaseOntology): category = "Materials" version = None last_updated = None - creator = "Adham Hashibon, Daniele Toti, Emanuele Ghedini, Georg J. Schmitz, Gerhard Goldbeck, Jesper Friis, Pierluigi Del Nostro" + creator = ("Adham Hashibon, Daniele Toti, Emanuele Ghedini, Georg J. Schmitz, " + "Gerhard Goldbeck, Jesper Friis, Pierluigi Del Nostro") license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" format = "TTL" download_url = "https://github.com/emmo-repo/OIE-Ontologies/" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle OIEModels-specific blank nodes.""" + # UUID pattern for various prefixes + uuid_pattern = r'[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$' + + if re.match(r'^EMMO_' + uuid_pattern, label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class OIESoftware(BaseOntology): """ - Software module. + EMMO-compliant, domain-level OIE ontology tackling the areas of software products. """ ontology_id = "OIESoftware" ontology_full_name = "Open Innovation Environment (OIE) domain ontologies, Software module (OIESoftware)" @@ -766,11 +980,27 @@ class OIESoftware(BaseOntology): category = "Materials" version = "0.1" last_updated = None - creator = "Adham Hashibon, Daniele Toti, Emanuele Ghedini, Georg J. Schmitz, Gerhard Goldbeck, Jesper Friis, Pierluigi Del Nostro" + creator = ("Adham Hashibon, Daniele Toti, Emanuele Ghedini, Georg J. Schmitz, " + "Gerhard Goldbeck, Jesper Friis, Pierluigi Del Nostro") license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" format = "TTL" download_url = "https://github.com/emmo-repo/OIE-Ontologies/" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle OIESoftware-specific blank nodes.""" + # UUID pattern for various prefixes + uuid_pattern = r'[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$' + + if re.match(r'^EMMO_' + uuid_pattern, label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class ONTORULE(BaseOntology): """ @@ -824,6 +1054,20 @@ class Photovoltaics(BaseOntology): format = "TTL" download_url = "https://github.com/emmo-repo/domain-photovoltaics" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle Photovoltaics-specific blank nodes.""" + # UUID pattern for various prefixes + uuid_pattern = r'[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$' + + if re.match(r'^EMMO_' + uuid_pattern, label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False class PLDO(BaseOntology): """ @@ -961,3 +1205,21 @@ class VIMMP(BaseOntology): license = "Creative Commons Attribution 4.0 International (CC BY 4.0)" format = "OWL" download_url = "https://matportal.org/ontologies/VIMMP_ONTOLOGIES" + + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle VIMMP-specific blank nodes.""" + # UUID pattern for various prefixes + uuid_pattern = r'[0-9a-f]{8}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{4}_[0-9a-f]{12}$' + + if re.match(r'^EMMO_' + uuid_pattern, label): + return True + + if re.match(r'^SWO_[0-9]+$', label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False From e7c7a8339645b34faa237ba488134338b560a08e Mon Sep 17 00:00:00 2001 From: aioaneia Date: Tue, 6 May 2025 11:16:42 +0200 Subject: [PATCH 29/37] :pencil2: update ontology metrics for medicine domain --- docs/source/benchmarking/medicine/bto.rst | 8 ++++---- docs/source/benchmarking/medicine/deb.rst | 6 +++--- docs/source/benchmarking/medicine/doid.rst | 4 ++-- docs/source/benchmarking/medicine/enm.rst | 4 ++-- docs/source/benchmarking/medicine/mfoem.rst | 4 ++-- docs/source/benchmarking/medicine/obi.rst | 10 +++++----- ontolearner/ontology/medicine.py | 14 ++++++++++++++ 7 files changed, 32 insertions(+), 18 deletions(-) diff --git a/docs/source/benchmarking/medicine/bto.rst b/docs/source/benchmarking/medicine/bto.rst index 05fa97c..39de373 100644 --- a/docs/source/benchmarking/medicine/bto.rst +++ b/docs/source/benchmarking/medicine/bto.rst @@ -12,7 +12,7 @@ cell lines, cell types and cell cultures. :Last Updated: 2021-10-26 :Creator: None :License: Creative Commons 4.0 -:Format: owl +:Format: OWL :Download: `BRENDA Tissue Ontology (BTO) Homepage `_ Graph Metrics @@ -46,8 +46,8 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 10241 - - **Non-taxonomic Relations**: 3 + - **Taxonomic Relations**: 5888 + - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 Usage Example @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = BTO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/medicine/deb.rst b/docs/source/benchmarking/medicine/deb.rst index 8e077cb..ff8403c 100644 --- a/docs/source/benchmarking/medicine/deb.rst +++ b/docs/source/benchmarking/medicine/deb.rst @@ -15,7 +15,7 @@ of the biomaterials research community. :Last Updated: Jun 2, 2021 :Creator: Osnat Hakimi :License: GPL-3.0 -:Format: OWL/XML +:Format: OWL :Download: `Devices, Experimental scaffolds and Biomaterials Ontology (DEB) Homepage `_ Graph Metrics @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 820 + - **Taxonomic Relations**: 672 - **Non-taxonomic Relations**: 8 - **Average Terms per Type**: 0.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = DEB() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/medicine/doid.rst b/docs/source/benchmarking/medicine/doid.rst index 897bc49..c9aa323 100644 --- a/docs/source/benchmarking/medicine/doid.rst +++ b/docs/source/benchmarking/medicine/doid.rst @@ -48,7 +48,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 82264 + - **Taxonomic Relations**: 41569 - **Non-taxonomic Relations**: 25 - **Average Terms per Type**: 0.00 @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = DOID() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/medicine/enm.rst b/docs/source/benchmarking/medicine/enm.rst index 5cd9c6f..28da5be 100644 --- a/docs/source/benchmarking/medicine/enm.rst +++ b/docs/source/benchmarking/medicine/enm.rst @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 9 - - **Taxonomic Relations**: 37099 + - **Taxonomic Relations**: 36933 - **Non-taxonomic Relations**: 84 - **Average Terms per Type**: 3.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = ENM() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/medicine/mfoem.rst b/docs/source/benchmarking/medicine/mfoem.rst index 0173b2d..f9d1ed5 100644 --- a/docs/source/benchmarking/medicine/mfoem.rst +++ b/docs/source/benchmarking/medicine/mfoem.rst @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 19 - - **Taxonomic Relations**: 1067 + - **Taxonomic Relations**: 837 - **Non-taxonomic Relations**: 20 - **Average Terms per Type**: 4.75 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = MFOEM() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/medicine/obi.rst b/docs/source/benchmarking/medicine/obi.rst index e5baeff..0db1083 100644 --- a/docs/source/benchmarking/medicine/obi.rst +++ b/docs/source/benchmarking/medicine/obi.rst @@ -12,7 +12,7 @@ by defining more than 2500 terms for assays, devices, objectives, and more. :Last Updated: 2025-01-09 :Creator: None :License: Creative Commons 4.0 -:Format: OWL, TTL, CSV, NT +:Format: OWL :Download: `Ontology for Biomedical Investigations (OBI) Homepage `_ Graph Metrics @@ -45,10 +45,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 288 - - **Taxonomic Relations**: 22933 + - **Term Types**: 286 + - **Taxonomic Relations**: 11843 - **Non-taxonomic Relations**: 38 - - **Average Terms per Type**: 5.65 + - **Average Terms per Type**: 5.61 Usage Example ------------- @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = OBI() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/ontolearner/ontology/medicine.py b/ontolearner/ontology/medicine.py index 29bf85a..24edea8 100644 --- a/ontolearner/ontology/medicine.py +++ b/ontolearner/ontology/medicine.py @@ -1,3 +1,5 @@ +import re + from ..base import BaseOntology @@ -17,6 +19,18 @@ class BTO(BaseOntology): format = "OWL" download_url = "https://terminology.tib.eu/ts/ontologies/BTO" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle VIMMP-specific blank nodes.""" + if re.match(r'^BTO_[0-9]+$', label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class DEB(BaseOntology): """ From 14732c8404704d5a5db1d3eb30ee941faf17843c Mon Sep 17 00:00:00 2001 From: aioaneia Date: Tue, 6 May 2025 12:15:34 +0200 Subject: [PATCH 30/37] :pencil2: update ontology metrics for news and media domain --- docs/source/benchmarking/news_and_media/bbc.rst | 4 ++-- docs/source/benchmarking/news_and_media/bbcbusiness.rst | 4 ++-- docs/source/benchmarking/news_and_media/bbccms.rst | 4 ++-- docs/source/benchmarking/news_and_media/bbccoreconcepts.rst | 4 ++-- docs/source/benchmarking/news_and_media/bbccreativework.rst | 4 ++-- docs/source/benchmarking/news_and_media/bbcfood.rst | 6 +++--- docs/source/benchmarking/news_and_media/bbcpolitics.rst | 4 ++-- docs/source/benchmarking/news_and_media/bbcprogrammes.rst | 4 ++-- docs/source/benchmarking/news_and_media/bbcprovenance.rst | 4 ++-- docs/source/benchmarking/news_and_media/bbcsport.rst | 4 ++-- docs/source/benchmarking/news_and_media/bbcstoryline.rst | 4 ++-- docs/source/benchmarking/news_and_media/bbcwildlife.rst | 4 ++-- 12 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/source/benchmarking/news_and_media/bbc.rst b/docs/source/benchmarking/news_and_media/bbc.rst index 3d0d0f4..c703d11 100644 --- a/docs/source/benchmarking/news_and_media/bbc.rst +++ b/docs/source/benchmarking/news_and_media/bbc.rst @@ -8,7 +8,7 @@ for which content is available. Currently, there are 10 major products in Future which produce content for BBC online. The majority of those contain more products dedicated in thematic areas, for example Education propositions are part of the K&L (Knowledge and Learning) product portfolio. -:Domain: News & Media +:Domain: News and Media :Category: News :Current Version: 1.37 :Last Updated: 2012-12-01 @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = BBC() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/news_and_media/bbcbusiness.rst b/docs/source/benchmarking/news_and_media/bbcbusiness.rst index 074d0f7..3673fc4 100644 --- a/docs/source/benchmarking/news_and_media/bbcbusiness.rst +++ b/docs/source/benchmarking/news_and_media/bbcbusiness.rst @@ -5,7 +5,7 @@ Overview -------- The Business News Ontology describes the concepts that occur in BBC business news. -:Domain: News & Media +:Domain: News and Media :Category: Business News :Current Version: 0.5 :Last Updated: 2014-11-09 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = BBCBusiness() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/news_and_media/bbccms.rst b/docs/source/benchmarking/news_and_media/bbccms.rst index 877c68a..f1731d7 100644 --- a/docs/source/benchmarking/news_and_media/bbccms.rst +++ b/docs/source/benchmarking/news_and_media/bbccms.rst @@ -7,7 +7,7 @@ The Content Management Systems ontology defines the terms that LDP needs to inte The linked data platform contain semantic metadata for the creative content and also the things the BBC produces content about. The CMS ontology defines how these things and content are associated with other BBC instances of the same thing. -:Domain: News & Media +:Domain: News and Media :Category: Content Management Systems :Current Version: 3.7 :Last Updated: 2012-12-01 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = BBCCMS() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/news_and_media/bbccoreconcepts.rst b/docs/source/benchmarking/news_and_media/bbccoreconcepts.rst index 51a7ebb..52b5b7c 100644 --- a/docs/source/benchmarking/news_and_media/bbccoreconcepts.rst +++ b/docs/source/benchmarking/news_and_media/bbccoreconcepts.rst @@ -7,7 +7,7 @@ The generic BBC ontology for people, places, events, organisations, themes which that make sense across the BBC. This model is meant to be generic enough, and allow clients (domain experts) link their own concepts e.g., athletes or politicians using rdfs:sublClassOf the particular concept. -:Domain: News & Media +:Domain: News and Media :Category: Core Concepts :Current Version: 1.30 :Last Updated: 2019-11-21 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = BBCCoreConcepts() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/news_and_media/bbccreativework.rst b/docs/source/benchmarking/news_and_media/bbccreativework.rst index 6168c74..59c1212 100644 --- a/docs/source/benchmarking/news_and_media/bbccreativework.rst +++ b/docs/source/benchmarking/news_and_media/bbccreativework.rst @@ -7,7 +7,7 @@ This ontology defines the terms required to describe the creative works produced This ontology powers reading and writing creative works in the triplestore using tags associated with them (about) their more specific types (BlogPost, NewsItem, Programme) and audiences (audience). -:Domain: News & Media +:Domain: News and Media :Category: Creative Work :Current Version: 1.19 :Last Updated: 2012-12-01 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = BBCCreativeWork() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/news_and_media/bbcfood.rst b/docs/source/benchmarking/news_and_media/bbcfood.rst index 70af5e3..93b4bbf 100644 --- a/docs/source/benchmarking/news_and_media/bbcfood.rst +++ b/docs/source/benchmarking/news_and_media/bbcfood.rst @@ -8,8 +8,8 @@ including the foods they are made from and the foods they create as well as the menus, seasons, courses and occasions they may be suitable for. Whilst it originates in a specific BBC use case, the Food Ontology should be applicable to a wide range of recipe data publishing across the web. -:Domain: News & Media -:Category: Food & Beverage +:Domain: News and Media +:Category: Food and Beverage :Current Version: 0.1 :Last Updated: 2014/03/18 :Creator: None @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = BBCFood() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/news_and_media/bbcpolitics.rst b/docs/source/benchmarking/news_and_media/bbcpolitics.rst index 44d7611..c4f5bd9 100644 --- a/docs/source/benchmarking/news_and_media/bbcpolitics.rst +++ b/docs/source/benchmarking/news_and_media/bbcpolitics.rst @@ -5,7 +5,7 @@ Overview -------- The Politics Ontology describes the concepts that occur in BBC politics news. -:Domain: News & Media +:Domain: News and Media :Category: Politics :Current Version: 0.9 :Last Updated: 2014-01-06 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = BBCPolitics() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/news_and_media/bbcprogrammes.rst b/docs/source/benchmarking/news_and_media/bbcprogrammes.rst index deaf1a1..a5ea06b 100644 --- a/docs/source/benchmarking/news_and_media/bbcprogrammes.rst +++ b/docs/source/benchmarking/news_and_media/bbcprogrammes.rst @@ -7,7 +7,7 @@ This ontology aims at providing a simple vocabulary for describing programmes. It covers brands, series (seasons), episodes, broadcast events, broadcast services,etc. Its development was funded by the BBC, and is heavily grounded on previous programmes data modelling work done there. -:Domain: News & Media +:Domain: News and Media :Category: Programmes :Current Version: 1.1 :Last Updated: 2009/02/20 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = BBCProgrammes() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/news_and_media/bbcprovenance.rst b/docs/source/benchmarking/news_and_media/bbcprovenance.rst index 9b7f4b3..49536b1 100644 --- a/docs/source/benchmarking/news_and_media/bbcprovenance.rst +++ b/docs/source/benchmarking/news_and_media/bbcprovenance.rst @@ -9,7 +9,7 @@ so for example, this would record that geodata was provided by the BBC Locator t and not geonames. In the Linked Data Platform, this data is applied to contexts or named graphs. A named graph is, in effect, a 'fourth part' to a triple, hence the term 'quad store'. -:Domain: News & Media +:Domain: News and Media :Category: Provenance :Current Version: 1.9 :Last Updated: 2012-12-01 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = BBCProvenance() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/news_and_media/bbcsport.rst b/docs/source/benchmarking/news_and_media/bbcsport.rst index 4d8c045..0afef81 100644 --- a/docs/source/benchmarking/news_and_media/bbcsport.rst +++ b/docs/source/benchmarking/news_and_media/bbcsport.rst @@ -12,7 +12,7 @@ to a wide range of competitive sporting events data publishing use cases. Care has been taken to try and ensure interoperability with more general ontologies in use. In particular, it draws heavily upon the events ontology. -:Domain: News & Media +:Domain: News and Media :Category: Sport :Current Version: 3.2 :Last Updated: None @@ -64,7 +64,7 @@ Usage Example # Initialize and load ontology ontology = BBCSport() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/news_and_media/bbcstoryline.rst b/docs/source/benchmarking/news_and_media/bbcstoryline.rst index cd20836..b2d74fc 100644 --- a/docs/source/benchmarking/news_and_media/bbcstoryline.rst +++ b/docs/source/benchmarking/news_and_media/bbcstoryline.rst @@ -9,7 +9,7 @@ At the heart of the ontology, is the concept of Storyline. As a nuance of the En has multiple meanings. In news organisations, a story can be an individual piece of content, such as an article or news report. It can also be the editorial view on events occurring in the world. -:Domain: News & Media +:Domain: News and Media :Category: Storyline :Current Version: 0.3 :Last Updated: 2013-05-01 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = BBCStoryline() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/news_and_media/bbcwildlife.rst b/docs/source/benchmarking/news_and_media/bbcwildlife.rst index 503aab4..553d8f2 100644 --- a/docs/source/benchmarking/news_and_media/bbcwildlife.rst +++ b/docs/source/benchmarking/news_and_media/bbcwildlife.rst @@ -7,7 +7,7 @@ A simple vocabulary for describing biological species and related taxa. The voca for describing the names and ranking of taxa, as well as providing support for describing their habitats, conservation status, and behavioural characteristics, etc. -:Domain: News & Media +:Domain: News and Media :Category: Wildlife :Current Version: 1.1 :Last Updated: 2013/12/18 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = BBCWildlife() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() From 8bc4f74725288f538949a92bbb9d4a6867495dae Mon Sep 17 00:00:00 2001 From: aioaneia Date: Tue, 6 May 2025 14:05:31 +0200 Subject: [PATCH 31/37] :pencil2: update ontology metrics for scholarly knowledge and social sciences domains --- .../scholarly_knowledge/aiiso.rst | 4 +- .../benchmarking/scholarly_knowledge/cito.rst | 6 +-- .../benchmarking/scholarly_knowledge/cso.rst | 6 +-- .../scholarly_knowledge/datacite.rst | 6 +-- .../benchmarking/scholarly_knowledge/dcat.rst | 6 +-- .../benchmarking/scholarly_knowledge/duo.rst | 4 +- .../scholarly_knowledge/eurio.rst | 4 +- .../benchmarking/scholarly_knowledge/expo.rst | 4 +- .../scholarly_knowledge/frapo.rst | 4 +- .../scholarly_knowledge/frbroo.rst | 4 +- .../scholarly_knowledge/lexinfo.rst | 4 +- .../scholarly_knowledge/metadata4ing.rst | 16 ++++---- .../scholarly_knowledge/nfdicore.rst | 6 +-- .../benchmarking/scholarly_knowledge/oboe.rst | 4 +- .../benchmarking/scholarly_knowledge/opmw.rst | 4 +- .../scholarly_knowledge/pplan.rst | 2 +- .../scholarly_knowledge/premon.rst | 6 +-- .../scholarly_knowledge/sepio.rst | 4 +- .../scholarly_knowledge/spdocument.rst | 6 +-- .../scholarly_knowledge/spworkflow.rst | 4 +- .../benchmarking/scholarly_knowledge/swo.rst | 10 ++--- .../scholarly_knowledge/tribain.rst | 4 +- .../benchmarking/scholarly_knowledge/voaf.rst | 4 +- .../benchmarking/scholarly_knowledge/wild.rst | 2 +- .../benchmarking/social_sciences/as2.rst | 6 +-- .../benchmarking/social_sciences/bio.rst | 6 +-- .../benchmarking/social_sciences/contact.rst | 6 +-- .../benchmarking/social_sciences/foaf.rst | 4 +- .../benchmarking/social_sciences/sioc.rst | 4 +- ontolearner/ontology/scholarly_knowledge.py | 41 +++++++++++++++++++ 30 files changed, 116 insertions(+), 75 deletions(-) diff --git a/docs/source/benchmarking/scholarly_knowledge/aiiso.rst b/docs/source/benchmarking/scholarly_knowledge/aiiso.rst index 1e6bd7b..5e9c539 100644 --- a/docs/source/benchmarking/scholarly_knowledge/aiiso.rst +++ b/docs/source/benchmarking/scholarly_knowledge/aiiso.rst @@ -15,7 +15,7 @@ to describe the roles that people play within an institution. :Last Updated: 2008-05-14 :Creator: Open University :License: Creative Commons 4.0 -:Format: RDF/XML +:Format: RDF :Download: `Academic Institution Internal Structure Ontology (AIISO) Homepage `_ Graph Metrics @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = AIISO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/cito.rst b/docs/source/benchmarking/scholarly_knowledge/cito.rst index 7dd7922..8737bff 100644 --- a/docs/source/benchmarking/scholarly_knowledge/cito.rst +++ b/docs/source/benchmarking/scholarly_knowledge/cito.rst @@ -12,7 +12,7 @@ both factually and rhetorically. :Last Updated: 2018-02-16 :Creator: Silvio Peroni, David Shotton :License: Creative Commons 4.0 -:Format: OWL, TTL, CSV, NT +:Format: OWL :Download: `Citation Typing Ontology (CiTO) Homepage `_ Graph Metrics @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 11 + - **Taxonomic Relations**: 9 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = CiTO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/cso.rst b/docs/source/benchmarking/scholarly_knowledge/cso.rst index c09f0ad..7aa9aad 100644 --- a/docs/source/benchmarking/scholarly_knowledge/cso.rst +++ b/docs/source/benchmarking/scholarly_knowledge/cso.rst @@ -17,7 +17,7 @@ This class processes the Computer Science Ontology (CSO) with custom hooks for: :Last Updated: None :Creator: Knowledge Media Institute, Open University :License: Creative Commons 4.0 -:Format: OWL, TTL, CSV, NT +:Format: OWL :Download: `Computer Science Ontology (CSO) Homepage `_ Graph Metrics @@ -52,7 +52,7 @@ Dataset Statistics Generated Benchmarks: - **Term Types**: 0 - **Taxonomic Relations**: 44204 - - **Non-taxonomic Relations**: 49081 + - **Non-taxonomic Relations**: 49080 - **Average Terms per Type**: 0.00 Usage Example @@ -63,7 +63,7 @@ Usage Example # Initialize and load ontology ontology = CSO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/datacite.rst b/docs/source/benchmarking/scholarly_knowledge/datacite.rst index 8947c69..fa9455b 100644 --- a/docs/source/benchmarking/scholarly_knowledge/datacite.rst +++ b/docs/source/benchmarking/scholarly_knowledge/datacite.rst @@ -14,7 +14,7 @@ and retrieval purposes) to be described in RDF. :Last Updated: 15/09/2022 :Creator: David Shotton, Silvio Peroni :License: Creative Commons 4.0 -:Format: OWL, TTL, CSV, NT +:Format: RDF :Download: `DataCite Ontology (DataCite) Homepage `_ Graph Metrics @@ -48,7 +48,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 71 - - **Taxonomic Relations**: 55 + - **Taxonomic Relations**: 27 - **Non-taxonomic Relations**: 2 - **Average Terms per Type**: 8.88 @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = DataCite() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/dcat.rst b/docs/source/benchmarking/scholarly_knowledge/dcat.rst index bbe6daa..8a1f044 100644 --- a/docs/source/benchmarking/scholarly_knowledge/dcat.rst +++ b/docs/source/benchmarking/scholarly_knowledge/dcat.rst @@ -18,7 +18,7 @@ can serve as a manifest file as part of the digital preservation process. :Last Updated: 22 August 2024 :Creator: Digital Enterprise Research Institute (DERI) :License: W3C Document License -:Format: RDF/XML, Turtle, JSON-LD +:Format: RDF :Download: `Data Catalog Vocabulary (DCAT) Homepage `_ Graph Metrics @@ -52,7 +52,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 12 + - **Taxonomic Relations**: 8 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -64,7 +64,7 @@ Usage Example # Initialize and load ontology ontology = DCAT() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/duo.rst b/docs/source/benchmarking/scholarly_knowledge/duo.rst index 2f180c7..8fa0ec1 100644 --- a/docs/source/benchmarking/scholarly_knowledge/duo.rst +++ b/docs/source/benchmarking/scholarly_knowledge/duo.rst @@ -45,7 +45,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 309 + - **Taxonomic Relations**: 33 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = DUO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/eurio.rst b/docs/source/benchmarking/scholarly_knowledge/eurio.rst index 5ec5e57..6b25dc8 100644 --- a/docs/source/benchmarking/scholarly_knowledge/eurio.rst +++ b/docs/source/benchmarking/scholarly_knowledge/eurio.rst @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 700 + - **Taxonomic Relations**: 43 - **Non-taxonomic Relations**: 4 - **Average Terms per Type**: 0.00 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = EURIO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/expo.rst b/docs/source/benchmarking/scholarly_knowledge/expo.rst index e1d2850..1ef76f5 100644 --- a/docs/source/benchmarking/scholarly_knowledge/expo.rst +++ b/docs/source/benchmarking/scholarly_knowledge/expo.rst @@ -45,7 +45,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 1012 + - **Taxonomic Relations**: 432 - **Non-taxonomic Relations**: 726 - **Average Terms per Type**: 0.00 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = EXPO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/frapo.rst b/docs/source/benchmarking/scholarly_knowledge/frapo.rst index 46fa41e..79bf02e 100644 --- a/docs/source/benchmarking/scholarly_knowledge/frapo.rst +++ b/docs/source/benchmarking/scholarly_knowledge/frapo.rst @@ -13,7 +13,7 @@ funding bodies, project partners, etc. :Last Updated: None :Creator: David Shotton :License: Creative Commons 4.0 -:Format: OWL, TTL, NT +:Format: RDF :Download: `Funding, Research Administration and Projects Ontology (FRAPO) Homepage `_ Graph Metrics @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = FRAPO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/frbroo.rst b/docs/source/benchmarking/scholarly_knowledge/frbroo.rst index 169872d..524df12 100644 --- a/docs/source/benchmarking/scholarly_knowledge/frbroo.rst +++ b/docs/source/benchmarking/scholarly_knowledge/frbroo.rst @@ -15,7 +15,7 @@ and to facilitate the integration, mediation, and interchange of bibliographic a :Last Updated: November 2015 :Creator: None :License: Creative Commons 4.0 -:Format: OWL, RDF +:Format: RDF :Download: `Functional Requirements for Bibliographic Records - object-oriented (FRBRoo) Homepage `_ Graph Metrics @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = FRBRoo() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/lexinfo.rst b/docs/source/benchmarking/scholarly_knowledge/lexinfo.rst index 06aca39..33b7cce 100644 --- a/docs/source/benchmarking/scholarly_knowledge/lexinfo.rst +++ b/docs/source/benchmarking/scholarly_knowledge/lexinfo.rst @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 288 - - **Taxonomic Relations**: 282 + - **Taxonomic Relations**: 276 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 11.08 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = LexInfo() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/metadata4ing.rst b/docs/source/benchmarking/scholarly_knowledge/metadata4ing.rst index 2a5ec65..9e8cc77 100644 --- a/docs/source/benchmarking/scholarly_knowledge/metadata4ing.rst +++ b/docs/source/benchmarking/scholarly_knowledge/metadata4ing.rst @@ -11,12 +11,12 @@ are based on the principles of modularity and inheritance. :Domain: Scholarly Knowledge :Category: Materials Science -:Current Version: 1.3.0 -:Last Updated: 2024-09-20 +:Current Version: 1.3.1 +:Last Updated: 2025-03-10 :Creator: Metadata4Ing Workgroup :License: Creative Commons 4.0 -:Format: TTL, OWL -:Download: `Metadata for Intelligent Engineering (Metadata4Ing) Homepage `_ +:Format: TTL +:Download: `Metadata for Intelligent Engineering (Metadata4Ing) Homepage `_ Graph Metrics ------------- @@ -48,10 +48,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 47 - - **Taxonomic Relations**: 122 + - **Term Types**: 37 + - **Taxonomic Relations**: 44 - **Non-taxonomic Relations**: 6 - - **Average Terms per Type**: 11.75 + - **Average Terms per Type**: 9.25 Usage Example ------------- @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = Metadata4Ing() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/nfdicore.rst b/docs/source/benchmarking/scholarly_knowledge/nfdicore.rst index aec4b6b..eecb1e2 100644 --- a/docs/source/benchmarking/scholarly_knowledge/nfdicore.rst +++ b/docs/source/benchmarking/scholarly_knowledge/nfdicore.rst @@ -15,7 +15,7 @@ organizations, projects, data portals, and more. :Last Updated: 2025-02-07 :Creator: Jörg Waitelonis, Oleksandra Bruns, Tabea Tietz, Etienne Posthumus, Hossein Beygi Nasrabadi, Harald Sack :License: Creative Commons 1.0 -:Format: RDF/XML, TTL, JSON-LD +:Format: OWL :Download: `National Research Data Infrastructure Ontology (NFDIcore) Homepage `_ Graph Metrics @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 391 + - **Taxonomic Relations**: 237 - **Non-taxonomic Relations**: 10 - **Average Terms per Type**: 0.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = NFDIcore() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/oboe.rst b/docs/source/benchmarking/scholarly_knowledge/oboe.rst index 520fda7..083f3dc 100644 --- a/docs/source/benchmarking/scholarly_knowledge/oboe.rst +++ b/docs/source/benchmarking/scholarly_knowledge/oboe.rst @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 3244 + - **Taxonomic Relations**: 819 - **Non-taxonomic Relations**: 60 - **Average Terms per Type**: 0.00 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = OBOE() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/opmw.rst b/docs/source/benchmarking/scholarly_knowledge/opmw.rst index 15c55fe..fade192 100644 --- a/docs/source/benchmarking/scholarly_knowledge/opmw.rst +++ b/docs/source/benchmarking/scholarly_knowledge/opmw.rst @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 79 + - **Taxonomic Relations**: 77 - **Non-taxonomic Relations**: 4 - **Average Terms per Type**: 0.00 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = OPMW() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/pplan.rst b/docs/source/benchmarking/scholarly_knowledge/pplan.rst index c8db518..7a06349 100644 --- a/docs/source/benchmarking/scholarly_knowledge/pplan.rst +++ b/docs/source/benchmarking/scholarly_knowledge/pplan.rst @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = PPlan() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/premon.rst b/docs/source/benchmarking/scholarly_knowledge/premon.rst index 035946b..acd7528 100644 --- a/docs/source/benchmarking/scholarly_knowledge/premon.rst +++ b/docs/source/benchmarking/scholarly_knowledge/premon.rst @@ -14,7 +14,7 @@ mappings between different predicate models, and annotations. :Last Updated: 2018-02-15 :Creator: Francesco Corcoglioniti, Marco Rospocher :License: Creative Commons 4.0 -:Format: OWL, TTL, CSV, NT +:Format: OWL :Download: `Pre-Modern Ontology (PreMOn) Homepage `_ Graph Metrics @@ -48,7 +48,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 50 + - **Taxonomic Relations**: 17 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = PreMOn() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/sepio.rst b/docs/source/benchmarking/scholarly_knowledge/sepio.rst index 68c8421..e845054 100644 --- a/docs/source/benchmarking/scholarly_knowledge/sepio.rst +++ b/docs/source/benchmarking/scholarly_knowledge/sepio.rst @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 21 - - **Taxonomic Relations**: 223 + - **Taxonomic Relations**: 141 - **Non-taxonomic Relations**: 6 - **Average Terms per Type**: 4.20 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = SEPIO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/spdocument.rst b/docs/source/benchmarking/scholarly_knowledge/spdocument.rst index c905231..2a6e217 100644 --- a/docs/source/benchmarking/scholarly_knowledge/spdocument.rst +++ b/docs/source/benchmarking/scholarly_knowledge/spdocument.rst @@ -12,7 +12,7 @@ to represent metadata used to report an experimental protocol. :Last Updated: 2013-07-01 :Creator: http://oxgiraldo.wordpress.com :License: Creative Commons Attribution 4.0 International (CC BY 4.0) -:Format: OWL/XML +:Format: OWL :Download: `SMART Protocols Ontology: Document Module (SP-Document) Homepage `_ Graph Metrics @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 45 - - **Taxonomic Relations**: 1194 + - **Taxonomic Relations**: 474 - **Non-taxonomic Relations**: 73 - **Average Terms per Type**: 2.65 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = SPDocument() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/spworkflow.rst b/docs/source/benchmarking/scholarly_knowledge/spworkflow.rst index c6375fa..cbdc31f 100644 --- a/docs/source/benchmarking/scholarly_knowledge/spworkflow.rst +++ b/docs/source/benchmarking/scholarly_knowledge/spworkflow.rst @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 5 - - **Taxonomic Relations**: 1079 + - **Taxonomic Relations**: 577 - **Non-taxonomic Relations**: 22 - **Average Terms per Type**: 1.00 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = SPWorkflow() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/swo.rst b/docs/source/benchmarking/scholarly_knowledge/swo.rst index dc8ed35..5a46783 100644 --- a/docs/source/benchmarking/scholarly_knowledge/swo.rst +++ b/docs/source/benchmarking/scholarly_knowledge/swo.rst @@ -46,10 +46,10 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 444 - - **Taxonomic Relations**: 20936 - - **Non-taxonomic Relations**: 644 - - **Average Terms per Type**: 8.38 + - **Term Types**: 440 + - **Taxonomic Relations**: 5852 + - **Non-taxonomic Relations**: 612 + - **Average Terms per Type**: 8.30 Usage Example ------------- @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = SWO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/tribain.rst b/docs/source/benchmarking/scholarly_knowledge/tribain.rst index 9d3b63a..8a9c5c8 100644 --- a/docs/source/benchmarking/scholarly_knowledge/tribain.rst +++ b/docs/source/benchmarking/scholarly_knowledge/tribain.rst @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 21 - - **Taxonomic Relations**: 488 + - **Taxonomic Relations**: 324 - **Non-taxonomic Relations**: 24 - **Average Terms per Type**: 1.00 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = TribAIn() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/voaf.rst b/docs/source/benchmarking/scholarly_knowledge/voaf.rst index 9317ba1..b90e128 100644 --- a/docs/source/benchmarking/scholarly_knowledge/voaf.rst +++ b/docs/source/benchmarking/scholarly_knowledge/voaf.rst @@ -12,7 +12,7 @@ of vocabularies (RDFS vocabularies or OWL ontologies). It is based on Dublin Cor :Last Updated: 2013-05-24 :Creator: Bernard Vatant :License: Creative Commons 3.0 -:Format: RDF/XML +:Format: RDF :Download: `Vocabulary of a Friend (VOAF) Homepage `_ Graph Metrics @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = VOAF() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/scholarly_knowledge/wild.rst b/docs/source/benchmarking/scholarly_knowledge/wild.rst index 1419416..dde39d4 100644 --- a/docs/source/benchmarking/scholarly_knowledge/wild.rst +++ b/docs/source/benchmarking/scholarly_knowledge/wild.rst @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = WiLD() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/social_sciences/as2.rst b/docs/source/benchmarking/social_sciences/as2.rst index 49b22f6..df96609 100644 --- a/docs/source/benchmarking/social_sciences/as2.rst +++ b/docs/source/benchmarking/social_sciences/as2.rst @@ -13,7 +13,7 @@ for describing activities on the web. :Last Updated: 23 May 2017 :Creator: None :License: W3C Document License -:Format: OWL +:Format: TTL :Download: `Activity Streams 2.0 Ontology (AS2) Homepage `_ Graph Metrics @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 1 - - **Taxonomic Relations**: 59 + - **Taxonomic Relations**: 55 - **Non-taxonomic Relations**: 1 - **Average Terms per Type**: 1.00 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = AS2() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/social_sciences/bio.rst b/docs/source/benchmarking/social_sciences/bio.rst index 96d484d..286e39d 100644 --- a/docs/source/benchmarking/social_sciences/bio.rst +++ b/docs/source/benchmarking/social_sciences/bio.rst @@ -16,7 +16,7 @@ the Employment event puts the person being employed as the principal agent in th :Last Updated: 2010-05-10 :Creator: Ian Davis and David Galbraith :License: Public Domain -:Format: RDF, TTL, CSV, NT +:Format: RDF :Download: `BIO: A vocabulary for biographical information (BIO) Homepage `_ Graph Metrics @@ -50,7 +50,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 1 - - **Taxonomic Relations**: 62 + - **Taxonomic Relations**: 58 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 1.00 @@ -62,7 +62,7 @@ Usage Example # Initialize and load ontology ontology = BIO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/social_sciences/contact.rst b/docs/source/benchmarking/social_sciences/contact.rst index 50506da..15b0b11 100644 --- a/docs/source/benchmarking/social_sciences/contact.rst +++ b/docs/source/benchmarking/social_sciences/contact.rst @@ -16,7 +16,7 @@ The Contact ontology also extends the definition of address to include an associ :Last Updated: 2018-07-06 :Creator: Mark Fox, Megan Katsumi :License: None -:Format: OWL, TTL, CSV, NT +:Format: RDF :Download: `Contact Ontology (Contact) Homepage `_ Graph Metrics @@ -50,7 +50,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 1 - - **Taxonomic Relations**: 610 + - **Taxonomic Relations**: 97 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 1.00 @@ -62,7 +62,7 @@ Usage Example # Initialize and load ontology ontology = Contact() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/social_sciences/foaf.rst b/docs/source/benchmarking/social_sciences/foaf.rst index e7d90cc..d4a9633 100644 --- a/docs/source/benchmarking/social_sciences/foaf.rst +++ b/docs/source/benchmarking/social_sciences/foaf.rst @@ -13,7 +13,7 @@ or in the form of factual data, it can be linked. :Last Updated: 14 January 2014 :Creator: Dan Brickley, Libby Miller :License: Creative Commons -:Format: RDF/XML +:Format: RDF :Download: `Friend of a Friend (FOAF) Homepage `_ Graph Metrics @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = FOAF() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/social_sciences/sioc.rst b/docs/source/benchmarking/social_sciences/sioc.rst index 4355177..c5574ab 100644 --- a/docs/source/benchmarking/social_sciences/sioc.rst +++ b/docs/source/benchmarking/social_sciences/sioc.rst @@ -13,7 +13,7 @@ file sharing, photo sharing, social networking, etc. :Last Updated: 2018/02/28 :Creator: Data Science Institute, NUI Galway :License: Creative Commons 3.0 -:Format: RDF/XML +:Format: RDF :Download: `Semantically-Interlinked Online Communities (SIOC) Homepage `_ Graph Metrics @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = SIOC() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/ontolearner/ontology/scholarly_knowledge.py b/ontolearner/ontology/scholarly_knowledge.py index 9275375..92bd731 100644 --- a/ontolearner/ontology/scholarly_knowledge.py +++ b/ontolearner/ontology/scholarly_knowledge.py @@ -1,3 +1,5 @@ +import re + from rdflib import URIRef, RDF from typing import Set, Tuple, List @@ -165,6 +167,21 @@ class DUO(BaseOntology): format = "OWL" download_url = "https://terminology.tib.eu/ts/ontologies/DUO/" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle DUO-specific blank nodes.""" + if re.match(r'^APOLLO_SV_[0-9]+$', label): + return True + + if re.match(r'^PATO_[0-9]+$', label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class EURIO(BaseOntology): """ @@ -275,6 +292,18 @@ class Metadata4Ing(BaseOntology): format = "TTL" download_url = "https://git.rwth-aachen.de/nfdi4ing/metadata4ing/metadata4ing" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle Metadata4Ing-specific blank nodes.""" + if re.match(r'^\d{4}-\d{4}-\d{4}-\d{4}$', label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class NFDIcore(BaseOntology): """ @@ -453,6 +482,18 @@ class SWO(BaseOntology): format = "OWL" download_url = "https://terminology.tib.eu/ts/ontologies/SWO" + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle SWO-specific blank nodes.""" + if re.match(r'^SWO_[0-9]+$', label): + return True + + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + return False + class TribAIn(BaseOntology): """ From 47f7ca51a4228a167ab4c6c901622913f6f502d6 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Tue, 6 May 2025 14:24:58 +0200 Subject: [PATCH 32/37] :pencil2: update ontology metrics for upper ontology, units and measurements, web and internet domains --- docs/source/benchmarking/units_and_measurements/om.rst | 6 +++--- .../benchmarking/units_and_measurements/owltime.rst | 6 +++--- .../benchmarking/units_and_measurements/qudt.rst | 4 ++-- .../benchmarking/units_and_measurements/qudv.rst | 2 +- docs/source/benchmarking/units_and_measurements/uo.rst | 6 +++--- docs/source/benchmarking/upper_ontology/bfo.rst | 6 +++--- docs/source/benchmarking/upper_ontology/dolce.rst | 6 +++--- docs/source/benchmarking/upper_ontology/fair.rst | 2 +- docs/source/benchmarking/upper_ontology/gfo.rst | 4 ++-- docs/source/benchmarking/upper_ontology/sio.rst | 6 +++--- docs/source/benchmarking/upper_ontology/sumo.rst | 4 ++-- docs/source/benchmarking/web_and_internet/hydra.rst | 10 +++++----- docs/source/benchmarking/web_and_internet/saref.rst | 8 ++++---- 13 files changed, 35 insertions(+), 35 deletions(-) diff --git a/docs/source/benchmarking/units_and_measurements/om.rst b/docs/source/benchmarking/units_and_measurements/om.rst index 9225ae4..aa3610b 100644 --- a/docs/source/benchmarking/units_and_measurements/om.rst +++ b/docs/source/benchmarking/units_and_measurements/om.rst @@ -19,7 +19,7 @@ Economics; Information technology and Typography. :Last Updated: June 28, 2024 :Creator: Hajo Rijgersberg, Don Willems, Jan Top :License: Creative Commons 4.0 -:Format: OWL, TTL, CSV, NT +:Format: RDF :Download: `Ontology of Units of Measure (OM) Homepage `_ Graph Metrics @@ -53,7 +53,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 1953 - - **Taxonomic Relations**: 2016 + - **Taxonomic Relations**: 1124 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 42.46 @@ -65,7 +65,7 @@ Usage Example # Initialize and load ontology ontology = OM() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/units_and_measurements/owltime.rst b/docs/source/benchmarking/units_and_measurements/owltime.rst index 0577bc6..9621444 100644 --- a/docs/source/benchmarking/units_and_measurements/owltime.rst +++ b/docs/source/benchmarking/units_and_measurements/owltime.rst @@ -16,7 +16,7 @@ such as Unix-time, geologic time, or different calendars. :Last Updated: 15 November 2022 :Creator: World Wide Web Consortium :License: W3C Software Notice and Document License -:Format: TTL, OWL +:Format: TTL :Download: `Time Ontology in OWL (OWL-Time) Homepage `_ Graph Metrics @@ -50,7 +50,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 17 - - **Taxonomic Relations**: 529 + - **Taxonomic Relations**: 66 - **Non-taxonomic Relations**: 1 - **Average Terms per Type**: 8.50 @@ -62,7 +62,7 @@ Usage Example # Initialize and load ontology ontology = OWLTime() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/units_and_measurements/qudt.rst b/docs/source/benchmarking/units_and_measurements/qudt.rst index d8f760a..a04d223 100644 --- a/docs/source/benchmarking/units_and_measurements/qudt.rst +++ b/docs/source/benchmarking/units_and_measurements/qudt.rst @@ -45,7 +45,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 27 - - **Taxonomic Relations**: 3252 + - **Taxonomic Relations**: 400 - **Non-taxonomic Relations**: 12 - **Average Terms per Type**: 2.45 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = QUDT() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.TTL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/units_and_measurements/qudv.rst b/docs/source/benchmarking/units_and_measurements/qudv.rst index 31fe8af..94d53fe 100644 --- a/docs/source/benchmarking/units_and_measurements/qudv.rst +++ b/docs/source/benchmarking/units_and_measurements/qudv.rst @@ -60,7 +60,7 @@ Usage Example # Initialize and load ontology ontology = QUDV() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/units_and_measurements/uo.rst b/docs/source/benchmarking/units_and_measurements/uo.rst index f44059d..36ed40b 100644 --- a/docs/source/benchmarking/units_and_measurements/uo.rst +++ b/docs/source/benchmarking/units_and_measurements/uo.rst @@ -11,7 +11,7 @@ Metrical units for use in conjunction with PATO. :Last Updated: 2023-05-25 :Creator: KAUST :License: Creative Commons 3.0 -:Format: owl +:Format: OWL :Download: `Units of Measurement Ontology (UO) Homepage `_ Graph Metrics @@ -45,7 +45,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 880 + - **Taxonomic Relations**: 708 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 0.00 @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = UO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/upper_ontology/bfo.rst b/docs/source/benchmarking/upper_ontology/bfo.rst index 2238053..90241d3 100644 --- a/docs/source/benchmarking/upper_ontology/bfo.rst +++ b/docs/source/benchmarking/upper_ontology/bfo.rst @@ -12,7 +12,7 @@ the basic types of entities in the world and how they relate to each other. :Last Updated: 2020 :Creator: University at Buffalo :License: Creative Commons 4.0 -:Format: OWL, TTL +:Format: OWL :Download: `Basic Formal Ontology (BFO) Homepage `_ Graph Metrics @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 162 + - **Taxonomic Relations**: 66 - **Non-taxonomic Relations**: 5 - **Average Terms per Type**: 0.00 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = BFO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/upper_ontology/dolce.rst b/docs/source/benchmarking/upper_ontology/dolce.rst index 0509af4..617269e 100644 --- a/docs/source/benchmarking/upper_ontology/dolce.rst +++ b/docs/source/benchmarking/upper_ontology/dolce.rst @@ -12,7 +12,7 @@ that provides a conceptual framework for the formalization of domain ontologies. :Last Updated: None :Creator: Laboratory for Applied Ontology, ISTC-CNR :License: Creative Commons 4.0 -:Format: OWL, RDF/XML, TTL +:Format: OWL :Download: `Descriptive Ontology for Linguistic and Cognitive Engineering (DOLCE) Homepage `_ Graph Metrics @@ -46,7 +46,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 231 + - **Taxonomic Relations**: 73 - **Non-taxonomic Relations**: 18 - **Average Terms per Type**: 0.00 @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = DOLCE() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/upper_ontology/fair.rst b/docs/source/benchmarking/upper_ontology/fair.rst index 3ae2d2a..d9818cd 100644 --- a/docs/source/benchmarking/upper_ontology/fair.rst +++ b/docs/source/benchmarking/upper_ontology/fair.rst @@ -57,7 +57,7 @@ Usage Example # Initialize and load ontology ontology = FAIR() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/upper_ontology/gfo.rst b/docs/source/benchmarking/upper_ontology/gfo.rst index 726773c..43ed8c8 100644 --- a/docs/source/benchmarking/upper_ontology/gfo.rst +++ b/docs/source/benchmarking/upper_ontology/gfo.rst @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 1 - - **Taxonomic Relations**: 203 + - **Taxonomic Relations**: 143 - **Non-taxonomic Relations**: 34 - **Average Terms per Type**: 1.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = GFO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/upper_ontology/sio.rst b/docs/source/benchmarking/upper_ontology/sio.rst index 5b11b57..b15af4c 100644 --- a/docs/source/benchmarking/upper_ontology/sio.rst +++ b/docs/source/benchmarking/upper_ontology/sio.rst @@ -13,7 +13,7 @@ This project provides foundational support for the Bio2RDF (http://bio2rdf.org) :Last Updated: 03/25/2024 :Creator: M. Dumontier :License: Creative Commons 4.0 -:Format: OWL, RDF, CSV +:Format: OWL :Download: `Semanticscience Integrated Ontology (SIO) Homepage `_ Graph Metrics @@ -47,7 +47,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 0 - - **Taxonomic Relations**: 3006 + - **Taxonomic Relations**: 2019 - **Non-taxonomic Relations**: 65 - **Average Terms per Type**: 0.00 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = SIO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/upper_ontology/sumo.rst b/docs/source/benchmarking/upper_ontology/sumo.rst index c8f0bd2..bdfdebb 100644 --- a/docs/source/benchmarking/upper_ontology/sumo.rst +++ b/docs/source/benchmarking/upper_ontology/sumo.rst @@ -46,7 +46,7 @@ Breadth metrics Dataset Statistics ------------------ Generated Benchmarks: - - **Term Types**: 80282 + - **Term Types**: 80280 - **Taxonomic Relations**: 7174 - **Non-taxonomic Relations**: 310 - **Average Terms per Type**: 165.53 @@ -59,7 +59,7 @@ Usage Example # Initialize and load ontology ontology = SUMO() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.OWL") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/web_and_internet/hydra.rst b/docs/source/benchmarking/web_and_internet/hydra.rst index 71e9d32..0e33235 100644 --- a/docs/source/benchmarking/web_and_internet/hydra.rst +++ b/docs/source/benchmarking/web_and_internet/hydra.rst @@ -1,4 +1,4 @@ -Hydra Ontology +Hydra Ontology (Hydra) ======================================================================================================================== Overview @@ -6,14 +6,14 @@ Overview Hydra is a lightweight vocabulary to create hypermedia-driven Web APIs. By specifying a number of concepts commonly used in Web APIs it enables the creation of generic API clients. -:Domain: Web & Internet +:Domain: Web and Internet :Category: Web Development :Current Version: None :Last Updated: 13 July 2021 :Creator: Hydra W3C Community Group :License: Creative Commons 4.0 -:Format: JSON-LD, RDF, TTL -:Download: `Hydra Ontology Homepage `_ +:Format: JSONLD +:Download: `Hydra Ontology (Hydra) Homepage `_ Graph Metrics ------------- @@ -58,7 +58,7 @@ Usage Example # Initialize and load ontology ontology = Hydra() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.JSONLD") # Extract datasets data = ontology.extract() diff --git a/docs/source/benchmarking/web_and_internet/saref.rst b/docs/source/benchmarking/web_and_internet/saref.rst index 2a9c1c4..1799b03 100644 --- a/docs/source/benchmarking/web_and_internet/saref.rst +++ b/docs/source/benchmarking/web_and_internet/saref.rst @@ -9,13 +9,13 @@ and among various activity sectors in the Internet of Things (IoT), thus contributing to the development of data spaces. SAREF is published as a set of open standards produced by ETSI Technical Committee Smart Machine-to-Machine communications (SmartM2M). -:Domain: Web & Internet +:Domain: Web and Internet :Category: interoperability :Current Version: 3.2.1 :Last Updated: 2020-12-31 :Creator: ETSI Technical Committee Smart Machine-to-Machine communications (SmartM2M) :License: None -:Format: OWL, RDF/XML, TTL, JSON-LD +:Format: RDF :Download: `Smart Applications REFerence ontology (SAREF) Homepage `_ Graph Metrics @@ -49,7 +49,7 @@ Dataset Statistics ------------------ Generated Benchmarks: - **Term Types**: 10 - - **Taxonomic Relations**: 224 + - **Taxonomic Relations**: 88 - **Non-taxonomic Relations**: 0 - **Average Terms per Type**: 10.00 @@ -61,7 +61,7 @@ Usage Example # Initialize and load ontology ontology = SAREF() - ontology.load("path/to/ontology.owl") + ontology.load("path/to/ontology.RDF") # Extract datasets data = ontology.extract() From 8f8baf8f4d97259277485740c8886a5c23abb499 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Tue, 6 May 2025 14:30:16 +0200 Subject: [PATCH 33/37] :pencil2: enhance base ontology by adding additional label patterns --- ontolearner/base/ontology.py | 38 +++++++++++++++++++++++-- scripts/add_new_ontology.py | 55 ++++++++++++++++++------------------ 2 files changed, 63 insertions(+), 30 deletions(-) diff --git a/ontolearner/base/ontology.py b/ontolearner/base/ontology.py index 8d55c87..686ba4e 100644 --- a/ontolearner/base/ontology.py +++ b/ontolearner/base/ontology.py @@ -300,11 +300,43 @@ def _is_anonymous_id(label: str) -> bool: return True # Numeric patterns - if re.match(r'^N[0-9]+$', label): # N followed by numbers + if re.match(r'^N[0-9]+$', label): return True - if re.match(r'^_[0-9]+$', label): # Underscore followed by numbers + if re.match(r'^_[0-9]+$', label): return True - if re.match(r'^c_[0-9]+$', label): # c_ followed by numbers + if re.match(r'^c_[0-9]+$', label): + return True + if re.match(r'^BFO_[0-9]+$', label): + return True + if re.match(r'^IAO_[0-9]+$', label): + return True + if re.match(r'^OBI_[0-9]+$', label): + return True + if re.match(r'^FIX_[0-9]+$', label): + return True + if re.match(r'^REX_[0-9]+$', label): + return True + if re.match(r'^UO_[0-9]+$', label): + return True + if re.match(r'^MS_[0-9]+$', label): + return True + if re.match(r'^AFRL_[0-9]+$', label): + return True + if re.match(r'^AFFN_[0-9]+$', label): + return True + if re.match(r'^AFE_[0-9]+$', label): + return True + if re.match(r'^AFQ_[0-9]+$', label): + return True + if re.match(r'^AFP_[0-9]+$', label): + return True + if re.match(r'^AFM_[0-9]+$', label): + return True + if re.match(r'^AFC_[0-9]+$', label): + return True + if re.match(r'^ENVO_[0-9]+$', label): + return True + if re.match(r'^AFR_[0-9]+$', label): return True # Hexadecimal patterns diff --git a/scripts/add_new_ontology.py b/scripts/add_new_ontology.py index ca3bc94..eaed450 100644 --- a/scripts/add_new_ontology.py +++ b/scripts/add_new_ontology.py @@ -31,9 +31,9 @@ def main(): processor = Processor(datasets_dir=DATASET_DIR, templates_dir=TEMPLATES_DIR, benchmark_dir=BENCHMARK_DIR, metrics_dir=METRICS_DIR) # todo_ontologies = [ - # # (YAGO(), "general_knowledge/yago.ttl"), - # # (NCIt(), "medicine/ncit.owl"), - # # (PRotein(), "medicine/protein.rdf"), + # # YAGO(), + # # NCIt(), + # # PRotein(), # ] ontologies = [ @@ -41,14 +41,14 @@ def main(): # AGROVOC(), # FoodOn(), # PO(), - # + # # Arts and Humanities Ontologies # ChordOntology(), # ICON(), # MusicOntology(), # Nomisma(), # TimelineOntology(), - # + # # Biology & Life Sciences Ontologies # BioPAX(), # EFO(), @@ -59,7 +59,7 @@ def main(): # MO(), # NPO(), # PATO(), - # + # # Chemistry Ontologies # AFO(), # ChEBI(), @@ -76,28 +76,28 @@ def main(): # REX(), # RXNO(), # VIBSO(), - # + # # Ecology & Environment Ontologies # ENVO(), # OEO(), # SWEET(), - # + # # Education Ontologies # BIBFRAME(), # Common(), # DoCO(), - # - # # #Event Ontologies + + # # Event Ontologies # ConferenceOntology(), # iCalendar(), # LODE(), - # + # # Finance Ontologies # GoodRelations(), - # + # # Food & Beverage Ontologies # Wine(), - # + # # General Knowledge Ontologies # CCO(), # DBpedia(), @@ -109,14 +109,14 @@ def main(): # RO(), # SchemaOrg(), # UMBEL(), - # # (YAGO(), "general_knowledge/yago_facts.ttl"), # large - # + # # (YAGO(), # large + # # Geography Ontologies # GEO(), # GeoNames(), # GTS(), # Juso(), - # + # # Industry # AUTO(), # DBO(), @@ -124,16 +124,16 @@ def main(): # IOF(), # PTO(), # TUBES(), - # + # # Law Ontologies # CopyrightOnto(), - # + # # Library & Cultural Heritage # GND(), - # + # # Livestock Ontologies # ATOL(), - # + # # Materials Science & Engineering # AMOntology(), # ASMO(), @@ -170,6 +170,7 @@ def main(): # MSEO(), # MSLE(), # NanoMine(), + # OIECharacterisation(), # OIEManufacturing(), # OIEMaterials(), # OIEModels(), @@ -185,7 +186,7 @@ def main(): # SSN(), # SystemCapabilities(), # VIMMP(), - # + # # Medicine Ontologies # BTO(), # DEB(), @@ -195,7 +196,7 @@ def main(): # # (NCIt(), #large # OBI(), # # (PRotein(), #large - # + # # News & Media Ontologies # BBC(), # BBCBusiness(), @@ -209,7 +210,7 @@ def main(): # BBCSport(), # BBCStoryline(), # BBCWildlife(), - # + # # Scholarly Knowledge Ontologies # AIISO(), # CiTO(), @@ -235,21 +236,21 @@ def main(): # TribAIn(), # VOAF(), # WiLD(), - # + # # Social Sciences # AS2(), # BIO(), # Contact(), # FOAF(), # SIOC(), - # + # # Units and Measurements # OM(), # OWLTime(), # QUDT(), # QUDV(), # UO(), - # + # # Upper Ontologies # BFO(), # DOLCE(), @@ -257,7 +258,7 @@ def main(): # GFO(), # SIO(), # SUMO(), - # + # # Web Ontologies # Hydra(), # SAREF(), From 7ec04d7972f681d14a6c49eeecd3f2fbb9b5970e Mon Sep 17 00:00:00 2001 From: aioaneia Date: Wed, 7 May 2025 00:56:10 +0200 Subject: [PATCH 34/37] :pencil2: add functionality to load ontology from Hugging Face repository --- ontolearner/base/ontology.py | 71 ++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/ontolearner/base/ontology.py b/ontolearner/base/ontology.py index 686ba4e..f9b9895 100644 --- a/ontolearner/base/ontology.py +++ b/ontolearner/base/ontology.py @@ -1,10 +1,15 @@ +import json import os import re +import shutil +import time from abc import ABC import concurrent.futures +from pathlib import Path from typing import List, Tuple, Any, Set, Optional from rdflib import Graph, OWL, URIRef, RDFS, RDF import networkx as nx +from huggingface_hub import Repository from ..data_structure import (OntologyData, TermTyping, TaxonomicRelation, NonTaxonomicRelation, TypeTaxonomies, NonTaxonomicRelations) @@ -72,6 +77,72 @@ def _load(self, path: str, visited: Optional[set] = None) -> None: else: logger.warning(f"Could not resolve import: {import_def}") + def load_from_huggingface(self, tmp_dir: Optional[Path] = None) -> Optional[OntologyData]: + """ + Load ontology and datasets from Hugging Face domain repository. + """ + tmp_dir = tmp_dir or Path("./tmp") + tmp_dir.mkdir(parents=True, exist_ok=True) + + domain_str = self.domain.lower().replace(' ', '_') + repo_name = f"SciKnowOrg/ontolearner-{domain_str}" + local_dir = tmp_dir / f"hf_{self.ontology_id.lower()}_{int(time.time())}" + + logger.info(f"Loading ontology {self.ontology_id} from Hugging Face repository {repo_name}") + + try: + # Clone the repository without assigning to an unused variable + Repository(local_dir=local_dir, clone_from=repo_name, repo_type="dataset") + + ontology_dir = local_dir / self.ontology_id.lower() + + if not ontology_dir.exists(): + logger.error(f"Ontology directory {self.ontology_id} not found in repository {repo_name}") + return None + + ontology_file = ontology_dir / f"{self.ontology_id.lower()}.{self.format.lower()}" + + if not ontology_file.exists(): + logger.error(f"Ontology file {ontology_file} not found for {self.ontology_id} in {ontology_dir}") + return None + + try: + self.load(str(ontology_file)) + except Exception as e: + logger.error(f"Failed to load ontology file {ontology_file}: {str(e)}") + return None + + try: + term_typings_file = ontology_dir / "term_typings.json" + type_taxonomies_file = ontology_dir / "type_taxonomies.json" + # Check for both possible filenames for taxonomies + if not type_taxonomies_file.exists(): + type_taxonomies_file = ontology_dir / "taxonomies.json" + + non_taxonomic_file = ontology_dir / "non_taxonomic_relations.json" + # Check for both possible filenames for non-taxonomic relations + if not non_taxonomic_file.exists(): + non_taxonomic_file = ontology_dir / "type_non_taxonomic_relations.json" + + datasets = OntologyData( + term_typings=json.loads(term_typings_file.read_text()), + type_taxonomies=json.loads(type_taxonomies_file.read_text()), + type_non_taxonomic_relations=json.loads(non_taxonomic_file.read_text()) + ) + + logger.info(f"Successfully loaded ontology {self.ontology_id} from Hugging Face") + return datasets + except FileNotFoundError as e: + logger.error(f"Missing dataset file for {self.ontology_id}: {str(e)}") + return None + + except Exception as e: + logger.error(f"Failed to load ontology {self.ontology_id} from Hugging Face: {str(e)}") + return None + finally: + if local_dir.exists(): + shutil.rmtree(local_dir) + def contains_imports(self) -> bool: """Hook: Check if the ontology contains imports.""" return False From bd72b9d07635785a25e4cfb9091ab6859468ce3f Mon Sep 17 00:00:00 2001 From: aioaneia Date: Wed, 7 May 2025 17:16:26 +0200 Subject: [PATCH 35/37] refactor: refactored ontology loading process from Hugging Face and local sources --- ontolearner/base/ontology.py | 203 ++++++++++++++++++----------------- ontolearner/processor.py | 3 +- 2 files changed, 108 insertions(+), 98 deletions(-) diff --git a/ontolearner/base/ontology.py b/ontolearner/base/ontology.py index f9b9895..394b9b8 100644 --- a/ontolearner/base/ontology.py +++ b/ontolearner/base/ontology.py @@ -1,15 +1,12 @@ -import json import os import re -import shutil -import time +import json from abc import ABC import concurrent.futures -from pathlib import Path from typing import List, Tuple, Any, Set, Optional from rdflib import Graph, OWL, URIRef, RDFS, RDF import networkx as nx -from huggingface_hub import Repository +from huggingface_hub import hf_hub_download from ..data_structure import (OntologyData, TermTyping, TaxonomicRelation, NonTaxonomicRelation, TypeTaxonomies, NonTaxonomicRelations) @@ -28,6 +25,8 @@ class BaseOntology(ABC): license: str = None format: str = None download_url = None + from_huggingface = False + from_local = False def __init__(self, language: str = 'en', base_dir: Optional[str] = None): """Initialize the ontology""" @@ -36,18 +35,23 @@ def __init__(self, language: str = 'en', base_dir: Optional[str] = None): self.language = language self.base_dir = base_dir - def load(self, path: str) -> None: + def load(self, path: Optional[str] = None) -> None: """Load an ontology from a file and initialize its namespaces.""" + if path is None: + self.from_huggingface = True + self.from_local = False + logger.info("Set up for loading from HuggingFace") + return + try: - logger.info(f"Loading ontology from {path}") + logger.info(f"Loading ontology from local {path}") self.rdf_graph = Graph() self._load(path) + self.from_huggingface = False + self.from_local = True if len(self.rdf_graph) == 0: raise ValueError("Loaded ontology contains no triples") logger.info(f"Successfully loaded ontology with {len(self.rdf_graph)} triples") - except FileNotFoundError: - logger.error(f"Ontology file not found: {path}") - raise except Exception as e: logger.error(f"Error loading ontology: {str(e)}") raise @@ -77,71 +81,6 @@ def _load(self, path: str, visited: Optional[set] = None) -> None: else: logger.warning(f"Could not resolve import: {import_def}") - def load_from_huggingface(self, tmp_dir: Optional[Path] = None) -> Optional[OntologyData]: - """ - Load ontology and datasets from Hugging Face domain repository. - """ - tmp_dir = tmp_dir or Path("./tmp") - tmp_dir.mkdir(parents=True, exist_ok=True) - - domain_str = self.domain.lower().replace(' ', '_') - repo_name = f"SciKnowOrg/ontolearner-{domain_str}" - local_dir = tmp_dir / f"hf_{self.ontology_id.lower()}_{int(time.time())}" - - logger.info(f"Loading ontology {self.ontology_id} from Hugging Face repository {repo_name}") - - try: - # Clone the repository without assigning to an unused variable - Repository(local_dir=local_dir, clone_from=repo_name, repo_type="dataset") - - ontology_dir = local_dir / self.ontology_id.lower() - - if not ontology_dir.exists(): - logger.error(f"Ontology directory {self.ontology_id} not found in repository {repo_name}") - return None - - ontology_file = ontology_dir / f"{self.ontology_id.lower()}.{self.format.lower()}" - - if not ontology_file.exists(): - logger.error(f"Ontology file {ontology_file} not found for {self.ontology_id} in {ontology_dir}") - return None - - try: - self.load(str(ontology_file)) - except Exception as e: - logger.error(f"Failed to load ontology file {ontology_file}: {str(e)}") - return None - - try: - term_typings_file = ontology_dir / "term_typings.json" - type_taxonomies_file = ontology_dir / "type_taxonomies.json" - # Check for both possible filenames for taxonomies - if not type_taxonomies_file.exists(): - type_taxonomies_file = ontology_dir / "taxonomies.json" - - non_taxonomic_file = ontology_dir / "non_taxonomic_relations.json" - # Check for both possible filenames for non-taxonomic relations - if not non_taxonomic_file.exists(): - non_taxonomic_file = ontology_dir / "type_non_taxonomic_relations.json" - - datasets = OntologyData( - term_typings=json.loads(term_typings_file.read_text()), - type_taxonomies=json.loads(type_taxonomies_file.read_text()), - type_non_taxonomic_relations=json.loads(non_taxonomic_file.read_text()) - ) - - logger.info(f"Successfully loaded ontology {self.ontology_id} from Hugging Face") - return datasets - except FileNotFoundError as e: - logger.error(f"Missing dataset file for {self.ontology_id}: {str(e)}") - return None - - except Exception as e: - logger.error(f"Failed to load ontology {self.ontology_id} from Hugging Face: {str(e)}") - return None - finally: - if local_dir.exists(): - shutil.rmtree(local_dir) def contains_imports(self) -> bool: """Hook: Check if the ontology contains imports.""" @@ -187,31 +126,87 @@ def _resolve_import_def(self, uri: URIRef) -> Optional[str]: return None - def extract(self) -> OntologyData: + def extract(self, reinforce_extraction: bool = False) -> OntologyData: """ Extract all information from all the three functions below. """ - with concurrent.futures.ThreadPoolExecutor() as executor: - term_typings_future = executor.submit(self.extract_term_typings) - taxonomies_future = executor.submit(self.extract_type_taxonomies) - non_taxonomic_future = executor.submit(self.extract_type_non_taxonomic_relations) - - term_typings = term_typings_future.result() - types, taxonomies = taxonomies_future.result() - types_nt, relations, non_taxonomies = non_taxonomic_future.result() - - return OntologyData( - term_typings=term_typings, - type_taxonomies=TypeTaxonomies( - types=types, - taxonomies=taxonomies - ), - type_non_taxonomic_relations=NonTaxonomicRelations( - types=types_nt, - relations=relations, - non_taxonomies=non_taxonomies - ) - ) + if self.from_local: + logger.info(f"Extracting from local source for {self.ontology_id}") + with concurrent.futures.ThreadPoolExecutor() as executor: + term_typings_future = executor.submit(self.extract_term_typings) + taxonomies_future = executor.submit(self.extract_type_taxonomies) + non_taxonomic_future = executor.submit(self.extract_type_non_taxonomic_relations) + + term_typings = term_typings_future.result() + types, taxonomies = taxonomies_future.result() + types_nt, relations, non_taxonomies = non_taxonomic_future.result() + + return OntologyData( + term_typings=term_typings, + type_taxonomies=TypeTaxonomies( + types=types, + taxonomies=taxonomies + ), + type_non_taxonomic_relations=NonTaxonomicRelations( + types=types_nt, + relations=relations, + non_taxonomies=non_taxonomies + ) + ) + elif self.from_huggingface: + logger.info("Loading from HuggingFace with reinforce extraction") + ontology_domain = self.domain.lower().replace(' ', '_') + repo_id = f"SciKnowOrg/ontolearner-{ontology_domain}" + ontology_id = self.ontology_id.lower() + + if reinforce_extraction: + logger.info(f"Attempting reinforced extraction from HuggingFace for {self.ontology_id}") + try: + file_path = hf_hub_download( + repo_id=repo_id, + filename=f"{ontology_id}/{ontology_id}.{self.format.lower()}", + repo_type="dataset" + ) + + self.load(file_path) + + result = self.extract(reinforce_extraction=False) # Safe now as from_local=True + + return result + except Exception as e: + logger.error(f"Reinforced extraction failed for {self.ontology_id}: {str(e)}") + # Fall through to try pre-extracted data + + logger.info(f"Loading pre-extracted data from HuggingFace for {self.ontology_id}") + + try: + term_typings_path = hf_hub_download(repo_id=repo_id, + filename=f"{ontology_id}/term_typings.json", + repo_type="dataset") + taxonomies_path = hf_hub_download(repo_id=repo_id, + filename=f"{ontology_id}/type_taxonomies.json", + repo_type="dataset") + non_taxonomic_path = hf_hub_download(repo_id=repo_id, + filename=f"{ontology_id}/type_non_taxonomic_relations.json", + repo_type="dataset") + + with open(term_typings_path, 'r') as f: + term_typings = json.load(f) + with open(taxonomies_path, 'r') as f: + type_taxonomies = json.load(f) + with open(non_taxonomic_path, 'r') as f: + type_non_taxonomic_relations = json.load(f) + + return OntologyData( + term_typings=term_typings, + type_taxonomies=type_taxonomies, + type_non_taxonomic_relations=type_non_taxonomic_relations + ) + except Exception as e: + logger.error(f"Failed to load dataset files for {self.ontology_id}: {str(e)}") + return None + + return None @staticmethod def is_valid_label(label: str) -> Any: @@ -253,6 +248,20 @@ def build_graph(self) -> None: to handle their unique graph structure. """ self.nx_graph = nx.DiGraph() + + if not self.rdf_graph: + logger.info("Loading from HuggingFace") + ontology_domain = self.domain.lower().replace(' ', '_') + repo_id = f"SciKnowOrg/ontolearner-{ontology_domain}" + ontology_id = self.ontology_id.lower() + file_path = hf_hub_download( + repo_id=repo_id, + filename=f"{ontology_id}/{ontology_id}.{self.format.lower()}", + repo_type="dataset" + ) + + self.load(file_path) + for subject, predicate, obj in self.rdf_graph: subject_label = self.get_label(str(subject)) object_label = self.get_label(str(obj)) diff --git a/ontolearner/processor.py b/ontolearner/processor.py index c9cd9c9..70cebda 100644 --- a/ontolearner/processor.py +++ b/ontolearner/processor.py @@ -34,7 +34,8 @@ def process_ontology(self, ontology: BaseOntology, ontology_path: Union[str, Pat if not Path(ontology_path).exists(): raise ValueError(f"Ontology file not found: {ontology_path}") - ontology.load(str(ontology_path)) + # ontology.load(str(ontology_path)) + ontology.load() data: OntologyData = ontology.extract() From 0123a6e7f8c3c5a78fe15a2dec03817080d63def Mon Sep 17 00:00:00 2001 From: aioaneia Date: Thu, 8 May 2025 11:47:51 +0200 Subject: [PATCH 36/37] :pencil2: update ontology full names, add doc for adding a new ontology --- docs/requirements.txt | 1 + docs/source/developer/adding_ontologies.rst | 195 ++++++++++++++++++ docs/source/index.rst | 8 + ontolearner/ontology/chemistry.py | 4 +- ontolearner/ontology/general.py | 2 +- ontolearner/ontology/industry.py | 4 +- .../ontology/material_science_engineering.py | 17 +- requirements.txt | 4 - scripts/metrics/metrics copy 2.xlsx | Bin 9878 -> 0 bytes scripts/metrics/metrics copy.xlsx | Bin 30798 -> 0 bytes scripts/metrics/metrics.xlsx | Bin 30798 -> 0 bytes 11 files changed, 217 insertions(+), 18 deletions(-) create mode 100644 docs/source/developer/adding_ontologies.rst delete mode 100644 scripts/metrics/metrics copy 2.xlsx delete mode 100644 scripts/metrics/metrics copy.xlsx delete mode 100644 scripts/metrics/metrics.xlsx diff --git a/docs/requirements.txt b/docs/requirements.txt index cc8d85e..4704ac5 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -9,3 +9,4 @@ sphinx-panels sphinx-design sphinx-tabs sphinx-inline-tabs +snowballstemmer diff --git a/docs/source/developer/adding_ontologies.rst b/docs/source/developer/adding_ontologies.rst new file mode 100644 index 0000000..fbd6e48 --- /dev/null +++ b/docs/source/developer/adding_ontologies.rst @@ -0,0 +1,195 @@ +Adding New Ontologies +==================== + +This guide explains how to add new ontologies to the OntoLearner framework. +Adding a new ontology involves creating a class for the ontology, implementing the necessary methods, +and using the ``add_new_ontology.py`` script to process and benchmark the ontology. + +Prerequisites +------------ + +Before adding a new ontology, make sure you have: + +1. The ontology file in a supported format (OWL, RDF, TTL, etc.) +2. Basic information about the ontology (ID, name, domain, etc.) +3. The OntoLearner framework installed and set up + +Step 1: Create an Ontology Class +-------------------------------- +First, you need to create a class for your ontology that inherits from ``BaseOntology``. +This class should be added to the appropriate domain-specific file in the ``ontolearner/ontology/`` directory. + +For example, if you're adding a medical ontology, you would add it to ``ontolearner/ontology/medicine.py``: + +.. code-block:: python + + class MyNewOntology(BaseOntology): + """ + Description of the ontology - provide a comprehensive overview of what this ontology covers. + """ + ontology_id = "MyNewOntology" + ontology_full_name = "My New Comprehensive Ontology (MyNewOntology)" + domain = "Medicine" # Choose from existing domains in DOMAINS_DEFINITIONS + category = "Medical Terminology" + version = "1.0.0" + last_updated = "2024-06-01" + creator = "Your Organization" + license = "Creative Commons 4.0" + format = "OWL" # The file format (OWL, RDF, TTL, etc.) + download_url = "https://example.com/my-ontology" + + # Optional: Override methods if needed + def contains_imports(self) -> bool: + """Hook: Check if the ontology contains imports.""" + return True # Set to True if your ontology imports other ontologies + + # Optional: Add custom blank node patterns if needed + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle ontology-specific blank nodes.""" + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + # Add ontology-specific patterns + if re.match(r'^MY_[0-9]+$', label): # Example pattern + return True + + return False + +Step 2: Place the Ontology File +------------------------------- +Place your ontology file in the appropriate directory under ``data/ontologies/``. +The directory structure should match the domain of your ontology: + +.. code-block:: text + + data/ + └── ontologies/ + └── medicine/ + └── mynewontology.owl + +The file should be named according to the pattern: ``.lower()..lower()``. + +Step 3: Process the Ontology +---------------------------- +To process the ontology and generate benchmarks, you'll use the ``add_new_ontology.py`` script. This script: + +1. Loads the ontology +2. Extracts term typings, taxonomic relations, and non-taxonomic relations +3. Calculates metrics +4. Generates documentation +5. Exports metrics to Excel + +Edit the ``scripts/add_new_ontology.py`` file to include your new ontology in the list of ontologies to process: + +.. code-block:: python + + ontologies = [ + # Other ontologies... + + # Medicine Ontologies + MyNewOntology(), + + # Other ontologies... + ] + +Then run the script: + +.. code-block:: bash + + cd scripts + python add_new_ontology.py + +The script will: + +1. Load your ontology from the specified path +2. Process the ontology to extract datasets +3. Calculate metrics +4. Generate a documentation file in ``docs/source/benchmarking//`` +5. Save the extracted datasets to ``data/datasets///`` +6. Update the metrics Excel file in ``data/metrics/metrics.xlsx`` + +Step 4: Review the Generated Documentation +------------------------------------------ + +After running the script, check the generated documentation file at ``docs/source/benchmarking//.rst``. +This file contains: + +1. Overview of the ontology +2. Graph metrics +3. Knowledge coverage +4. Hierarchical metrics +5. Breadth metrics +6. Dataset statistics +7. Usage example + +Make any necessary adjustments to the documentation to ensure it accurately represents your ontology. + +Step 5: Update the Benchmark Index +---------------------------------- + +If you're adding an ontology to a new domain that doesn't exist yet, you'll need to update the ``docs/source/benchmarking/benchmark.rst`` file to include the new domain and ontology. + +Handling Special Cases +--------------------- + +Blank Node Patterns +~~~~~~~~~~~~~~~~~~ + +If your ontology contains specific blank node patterns that need to be filtered out during extraction, override the ``_is_anonymous_id`` method in your ontology class: + +.. code-block:: python + + @staticmethod + def _is_anonymous_id(label: str) -> bool: + """Override to handle ontology-specific blank nodes.""" + # Check the general patterns from the parent class + if BaseOntology._is_anonymous_id(label): + return True + + # Add ontology-specific patterns + if re.match(r'^PATTERN_[0-9a-f]+$', label): + return True + + return False + +Ontology Imports +~~~~~~~~~~~~~~ + +If your ontology imports other ontologies, override the ``contains_imports`` method: + +.. code-block:: python + + def contains_imports(self) -> bool: + """Hook: Check if the ontology contains imports.""" + return True + +Custom Extraction Logic +~~~~~~~~~~~~~~~~~~~~~ + +If your ontology requires custom extraction logic, you can override the extraction methods: + +- ``extract_term_typings`` +- ``extract_type_taxonomies`` +- ``extract_type_non_taxonomic_relations`` + +For example: + +.. code-block:: python + + def extract_term_typings(self) -> List[TermTyping]: + """Custom implementation for extracting term typings.""" + # Your custom implementation + pass + +Troubleshooting +-------------- +Common issues when adding new ontologies: + +1. **Ontology file not found**: Ensure the ontology file is in the correct location and has the correct name. +2. **Parsing errors**: Check that the ontology file is in the format specified in the ontology class. +3. **Empty datasets**: If the extraction produces empty datasets, check if the ontology uses standard RDF/OWL constructs or if it needs custom extraction logic. +4. **Blank node issues**: If you see strange identifiers in your extracted data, you may need to add custom blank node patterns to filter them out. + +For more complex issues, refer to the OntoLearner documentation or open an issue on the GitHub repository. diff --git a/docs/source/index.rst b/docs/source/index.rst index 13d8573..adbf16a 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -15,6 +15,14 @@ benchmarking/benchmark +.. toctree:: + :maxdepth: 1 + :caption: Developer Guide + :hidden: + + developer/adding_ontologies + + .. toctree:: :maxdepth: 1 :caption: Hugging Face Hub diff --git a/ontolearner/ontology/chemistry.py b/ontolearner/ontology/chemistry.py index 28f0704..470f5b5 100644 --- a/ontolearner/ontology/chemistry.py +++ b/ontolearner/ontology/chemistry.py @@ -291,14 +291,14 @@ class PROCO(BaseOntology): class PSIMOD(BaseOntology): """ - PSI-MOD is an ontology consisting of terms that describe protein chemical modifications, + PSI-MOD is an ontology developed by the Proteomics Standards Initiative (PSI) that describes protein chemical modifications, logically linked by an is_a relationship in such a way as to form a direct acyclic graph (DAG). The PSI-MOD ontology has more than 45 top-level nodes, and provides alternative hierarchical paths for classifying protein modifications either by the molecular structure of the modification, or by the amino acid residue that is modified. """ ontology_id = "PSIMOD" - ontology_full_name = "Proteomics Standards Initiative (PSI) Protein Modifications Ontology (PSI-MOD)" + ontology_full_name = "Protein Modifications Ontology (PSIMOD)" domain = "Chemistry" category = "Protein Modifications" version = "1.031.6" diff --git a/ontolearner/ontology/general.py b/ontolearner/ontology/general.py index 4ce75d1..5e63010 100644 --- a/ontolearner/ontology/general.py +++ b/ontolearner/ontology/general.py @@ -202,7 +202,7 @@ class UMBEL(BaseOntology): also designed for interoperation. """ ontology_id = "UMBEL" - ontology_full_name = "Upper Mapping and Binding Exchange Layer (UMBEL) Vocabulary" + ontology_full_name = "Upper Mapping and Binding Exchange Layer Vocabulary (UMBEL)" domain = "General Knowledge" category = "Web Development" version = "1.50" diff --git a/ontolearner/ontology/industry.py b/ontolearner/ontology/industry.py index 82b85a6..697fc64 100644 --- a/ontolearner/ontology/industry.py +++ b/ontolearner/ontology/industry.py @@ -43,11 +43,11 @@ class DBO(BaseOntology): class DOAP(BaseOntology): """ - The Description of a Project (DOAP) vocabulary, described using W3C RDF Schema and + The Description of a Project vocabulary (DOAP), described using W3C RDF Schema and the Web Ontology Language to describe software projects, and in particular open source projects. """ ontology_id = "DOAP" - ontology_full_name = "The Description of a Project (DOAP) vocabulary" + ontology_full_name = "The Description of a Project vocabulary (DOAP)" domain = "Industry" category = "Software" version = None diff --git a/ontolearner/ontology/material_science_engineering.py b/ontolearner/ontology/material_science_engineering.py index d730e74..3696c65 100644 --- a/ontolearner/ontology/material_science_engineering.py +++ b/ontolearner/ontology/material_science_engineering.py @@ -286,7 +286,7 @@ class CIFCore(BaseOntology): some of the more complex types of information that can be handled with this approach. """ ontology_id = "CIFCore" - ontology_full_name = "Crystallographic Information Framework (CIF) Core Dictionary (CIFCore)" + ontology_full_name = "Crystallographic Information Framework Core Dictionary (CIFCore)" domain = "Materials Science and Engineering" category = "Materials Science" version = "0.1.0" @@ -844,8 +844,7 @@ class OIECharacterisation(BaseOntology): EMMO-compliant, domain-level OIE ontology tackling the areas of characterization methods. """ ontology_id = "OIECharacterisation" - ontology_full_name = ("Open Innovation Environment (OIE) domain ontologies, " - "Characterisation module (OIECharacterisation)") + ontology_full_name = "Open Innovation Environment Characterisation (OIECharacterisation)" domain = "Materials Science and Engineering" category = "Materials" version = None @@ -877,7 +876,7 @@ class OIEManufacturing(BaseOntology): according to modern applied physical sciences. """ ontology_id = "OIEManufacturing" - ontology_full_name = "Open Innovation Environment (OIE) domain ontologies, Manufacturing module (OIEManufacturing)" + ontology_full_name = "Open Innovation Environment Manufacturing (OIEManufacturing)" domain = "Materials Science and Engineering" category = "Materials" version = None @@ -910,7 +909,7 @@ class OIEMaterials(BaseOntology): according to modern applied physical sciences. """ ontology_id = "OIEMaterials" - ontology_full_name = "Open Innovation Environment (OIE) domain ontologies, Materials module (OIEMaterials)" + ontology_full_name = "Open Innovation Environment Materials (OIEMaterials)" domain = "Materials Science and Engineering" category = "Materials" version = None @@ -943,7 +942,7 @@ class OIEModels(BaseOntology): in shape or by sharing a similar logical structure. """ ontology_id = "OIEModels" - ontology_full_name = "Open Innovation Environment (OIE) domain ontologies, Models module (OIEModels)" + ontology_full_name = "Open Innovation Environment Models (OIEModels)" domain = "Materials Science and Engineering" category = "Materials" version = None @@ -975,7 +974,7 @@ class OIESoftware(BaseOntology): EMMO-compliant, domain-level OIE ontology tackling the areas of software products. """ ontology_id = "OIESoftware" - ontology_full_name = "Open Innovation Environment (OIE) domain ontologies, Software module (OIESoftware)" + ontology_full_name = "Open Innovation Environment Software (OIESoftware)" domain = "Materials Science and Engineering" category = "Materials" version = "0.1" @@ -1175,7 +1174,7 @@ class SystemCapabilities(BaseOntology): This ontology describes system capabilities, operating ranges, and survival ranges. """ ontology_id = "SystemCapabilities" - ontology_full_name = "System capabilities, operating ranges, and survival ranges ontology (SystemCapabilities)" + ontology_full_name = "System Capabilities Ontology (SystemCapabilities)" domain = "Materials Science and Engineering" category = "Materials Science, Engineering, Systems" version = None @@ -1196,7 +1195,7 @@ class VIMMP(BaseOntology): of VIMMP and to support the ingest and retrieval of data and metadata at the VIMMP marketplace front-end. """ ontology_id = "VIMMP" - ontology_full_name = "Virtual Materials Marketplace (VIMMP) Ontologies" + ontology_full_name = "Virtual Materials Marketplace Ontologies (VIMMP)" domain = "Materials Science and Engineering" category = "Materials Modeling" version = None diff --git a/requirements.txt b/requirements.txt index 2351f17..ee240e2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,7 +13,3 @@ setuptools~=78.1.0 python-dotenv~=1.1.0 huggingface-hub~=0.27.1 pygit2~=1.18.0 - -langchain-core~=0.3.51 -langchain-openai~=0.3.12 -langchain~=0.3.23 diff --git a/scripts/metrics/metrics copy 2.xlsx b/scripts/metrics/metrics copy 2.xlsx deleted file mode 100644 index e02730720ef6e107d8ece1650b02cf17e12552b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9878 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 diff --git a/scripts/metrics/metrics.xlsx b/scripts/metrics/metrics.xlsx deleted file mode 100644 index 08160afbf5be1998b17ccf86fd2dc5f7a4d15ce5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30798 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 From f8b2b0d91ecb14a6f3d26ca7dd56f8e99c68dea6 Mon Sep 17 00:00:00 2001 From: aioaneia Date: Thu, 8 May 2025 12:38:37 +0200 Subject: [PATCH 37/37] :pencil2: update ontology documentation --- docs/source/benchmarking/chemistry/psimod.rst | 6 +++--- docs/source/benchmarking/general_knowledge/umbel.rst | 4 ++-- docs/source/benchmarking/industry/doap.rst | 6 +++--- .../materials_science_and_engineering/cifcore.rst | 4 ++-- .../oiecharacterisation.rst | 4 ++-- .../materials_science_and_engineering/oiemanufacturing.rst | 4 ++-- .../materials_science_and_engineering/oiematerials.rst | 4 ++-- .../materials_science_and_engineering/oiemodels.rst | 4 ++-- .../materials_science_and_engineering/oiesoftware.rst | 4 ++-- .../materials_science_and_engineering/vimmp.rst | 4 ++-- 10 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/source/benchmarking/chemistry/psimod.rst b/docs/source/benchmarking/chemistry/psimod.rst index 6065a89..2cf0acd 100644 --- a/docs/source/benchmarking/chemistry/psimod.rst +++ b/docs/source/benchmarking/chemistry/psimod.rst @@ -1,9 +1,9 @@ -Proteomics Standards Initiative (PSI) Protein Modifications Ontology (PSI-MOD) +Protein Modifications Ontology (PSIMOD) ======================================================================================================================== Overview -------- -PSI-MOD is an ontology consisting of terms that describe protein chemical modifications, +PSI-MOD is an ontology developed by the Proteomics Standards Initiative (PSI) that describes protein chemical modifications, logically linked by an is_a relationship in such a way as to form a direct acyclic graph (DAG). The PSI-MOD ontology has more than 45 top-level nodes, and provides alternative hierarchical paths for classifying protein modifications either by the molecular structure of the modification, @@ -16,7 +16,7 @@ or by the amino acid residue that is modified. :Creator: None :License: Creative Commons Attribution 4.0 :Format: OWL -:Download: `Proteomics Standards Initiative (PSI) Protein Modifications Ontology (PSI-MOD) Homepage `_ +:Download: `Protein Modifications Ontology (PSIMOD) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/general_knowledge/umbel.rst b/docs/source/benchmarking/general_knowledge/umbel.rst index 5aee8a4..f307870 100644 --- a/docs/source/benchmarking/general_knowledge/umbel.rst +++ b/docs/source/benchmarking/general_knowledge/umbel.rst @@ -1,4 +1,4 @@ -Upper Mapping and Binding Exchange Layer (UMBEL) Vocabulary +Upper Mapping and Binding Exchange Layer Vocabulary (UMBEL) ======================================================================================================================== Overview @@ -16,7 +16,7 @@ also designed for interoperation. :Creator: None :License: None :Format: n3 -:Download: `Upper Mapping and Binding Exchange Layer (UMBEL) Vocabulary Homepage `_ +:Download: `Upper Mapping and Binding Exchange Layer Vocabulary (UMBEL) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/industry/doap.rst b/docs/source/benchmarking/industry/doap.rst index 042f854..cda14d3 100644 --- a/docs/source/benchmarking/industry/doap.rst +++ b/docs/source/benchmarking/industry/doap.rst @@ -1,9 +1,9 @@ -The Description of a Project (DOAP) vocabulary +The Description of a Project vocabulary (DOAP) ======================================================================================================================== Overview -------- -The Description of a Project (DOAP) vocabulary, described using W3C RDF Schema and +The Description of a Project vocabulary (DOAP), described using W3C RDF Schema and the Web Ontology Language to describe software projects, and in particular open source projects. :Domain: Industry @@ -13,7 +13,7 @@ the Web Ontology Language to describe software projects, and in particular open :Creator: Edd Wilder-James :License: Apache License 2.0 :Format: RDF -:Download: `The Description of a Project (DOAP) vocabulary Homepage `_ +:Download: `The Description of a Project vocabulary (DOAP) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/materials_science_and_engineering/cifcore.rst b/docs/source/benchmarking/materials_science_and_engineering/cifcore.rst index 06def72..8ec8828 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/cifcore.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/cifcore.rst @@ -1,4 +1,4 @@ -Crystallographic Information Framework (CIF) Core Dictionary (CIFCore) +Crystallographic Information Framework Core Dictionary (CIFCore) ======================================================================================================================== Overview @@ -14,7 +14,7 @@ some of the more complex types of information that can be handled with this appr :Creator: None :License: Creative Commons Attribution 4.0 International (CC BY 4.0) :Format: TTL -:Download: `Crystallographic Information Framework (CIF) Core Dictionary (CIFCore) Homepage `_ +:Download: `Crystallographic Information Framework Core Dictionary (CIFCore) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/materials_science_and_engineering/oiecharacterisation.rst b/docs/source/benchmarking/materials_science_and_engineering/oiecharacterisation.rst index 76feaca..a766c37 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/oiecharacterisation.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/oiecharacterisation.rst @@ -1,4 +1,4 @@ -Open Innovation Environment (OIE) domain ontologies, Characterisation module (OIECharacterisation) +Open Innovation Environment Characterisation (OIECharacterisation) ======================================================================================================================== Overview @@ -12,7 +12,7 @@ EMMO-compliant, domain-level OIE ontology tackling the areas of characterization :Creator: Daniele Toti, Gerhard Goldbeck, Pierluigi Del Nostro :License: Creative Commons Attribution 4.0 International (CC BY 4.0) :Format: TTL -:Download: `Open Innovation Environment (OIE) domain ontologies, Characterisation module (OIECharacterisation) Homepage `_ +:Download: `Open Innovation Environment Characterisation (OIECharacterisation) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/materials_science_and_engineering/oiemanufacturing.rst b/docs/source/benchmarking/materials_science_and_engineering/oiemanufacturing.rst index a421589..732766a 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/oiemanufacturing.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/oiemanufacturing.rst @@ -1,4 +1,4 @@ -Open Innovation Environment (OIE) domain ontologies, Manufacturing module (OIEManufacturing) +Open Innovation Environment Manufacturing (OIEManufacturing) ======================================================================================================================== Overview @@ -13,7 +13,7 @@ according to modern applied physical sciences. :Creator: Adham Hashibon, Daniele Toti, Emanuele Ghedini, Georg J. Schmitz, Gerhard Goldbeck, Jesper Friis, Pierluigi Del Nostro :License: Creative Commons Attribution 4.0 International (CC BY 4.0) :Format: TTL -:Download: `Open Innovation Environment (OIE) domain ontologies, Manufacturing module (OIEManufacturing) Homepage `_ +:Download: `Open Innovation Environment Manufacturing (OIEManufacturing) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/materials_science_and_engineering/oiematerials.rst b/docs/source/benchmarking/materials_science_and_engineering/oiematerials.rst index bcb7b36..082f0c7 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/oiematerials.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/oiematerials.rst @@ -1,4 +1,4 @@ -Open Innovation Environment (OIE) domain ontologies, Materials module (OIEMaterials) +Open Innovation Environment Materials (OIEMaterials) ======================================================================================================================== Overview @@ -13,7 +13,7 @@ according to modern applied physical sciences. :Creator: Adham Hashibon, Daniele Toti, Emanuele Ghedini, Georg J. Schmitz, Gerhard Goldbeck, Jesper Friis, Pierluigi Del Nostro :License: Creative Commons Attribution 4.0 International (CC BY 4.0) :Format: TTL -:Download: `Open Innovation Environment (OIE) domain ontologies, Materials module (OIEMaterials) Homepage `_ +:Download: `Open Innovation Environment Materials (OIEMaterials) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/materials_science_and_engineering/oiemodels.rst b/docs/source/benchmarking/materials_science_and_engineering/oiemodels.rst index 45c5a24..1de0618 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/oiemodels.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/oiemodels.rst @@ -1,4 +1,4 @@ -Open Innovation Environment (OIE) domain ontologies, Models module (OIEModels) +Open Innovation Environment Models (OIEModels) ======================================================================================================================== Overview @@ -13,7 +13,7 @@ in shape or by sharing a similar logical structure. :Creator: Adham Hashibon, Daniele Toti, Emanuele Ghedini, Georg J. Schmitz, Gerhard Goldbeck, Jesper Friis, Pierluigi Del Nostro :License: Creative Commons Attribution 4.0 International (CC BY 4.0) :Format: TTL -:Download: `Open Innovation Environment (OIE) domain ontologies, Models module (OIEModels) Homepage `_ +:Download: `Open Innovation Environment Models (OIEModels) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/materials_science_and_engineering/oiesoftware.rst b/docs/source/benchmarking/materials_science_and_engineering/oiesoftware.rst index e8c3c17..610f158 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/oiesoftware.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/oiesoftware.rst @@ -1,4 +1,4 @@ -Open Innovation Environment (OIE) domain ontologies, Software module (OIESoftware) +Open Innovation Environment Software (OIESoftware) ======================================================================================================================== Overview @@ -12,7 +12,7 @@ EMMO-compliant, domain-level OIE ontology tackling the areas of software product :Creator: Adham Hashibon, Daniele Toti, Emanuele Ghedini, Georg J. Schmitz, Gerhard Goldbeck, Jesper Friis, Pierluigi Del Nostro :License: Creative Commons Attribution 4.0 International (CC BY 4.0) :Format: TTL -:Download: `Open Innovation Environment (OIE) domain ontologies, Software module (OIESoftware) Homepage `_ +:Download: `Open Innovation Environment Software (OIESoftware) Homepage `_ Graph Metrics ------------- diff --git a/docs/source/benchmarking/materials_science_and_engineering/vimmp.rst b/docs/source/benchmarking/materials_science_and_engineering/vimmp.rst index a1e3ee8..4eeae51 100644 --- a/docs/source/benchmarking/materials_science_and_engineering/vimmp.rst +++ b/docs/source/benchmarking/materials_science_and_engineering/vimmp.rst @@ -1,4 +1,4 @@ -Virtual Materials Marketplace (VIMMP) Ontologies +Virtual Materials Marketplace Ontologies (VIMMP) ======================================================================================================================== Overview @@ -17,7 +17,7 @@ of VIMMP and to support the ingest and retrieval of data and metadata at the VIM :Creator: Ilian T. Todorov, Martin Thomas Horsch, Michael A. Seaton, Silvia Chiacchiera :License: Creative Commons Attribution 4.0 International (CC BY 4.0) :Format: OWL -:Download: `Virtual Materials Marketplace (VIMMP) Ontologies Homepage `_ +:Download: `Virtual Materials Marketplace Ontologies (VIMMP) Homepage `_ Graph Metrics -------------