diff --git a/tetras_extraction/macao_12/script/src/extract.py b/tetras_extraction/macao_12/script/src/extract.py index e092c8149e143354043f9057d6ef94a5b5f30e3d..dec958d414f1249b1fb2edfbbfb0d9697f74f88b 100644 --- a/tetras_extraction/macao_12/script/src/extract.py +++ b/tetras_extraction/macao_12/script/src/extract.py @@ -8,7 +8,7 @@ import extract_mosetp from common import * # Initialise logger -log = get_logger(__name__) +log = get_logger("extract") schema_ontology_uri = URIRef( "http://www.semanticweb.org/eliott/ontologies/2024/4/macao" diff --git a/tetras_extraction/macao_12/script/src/extract_mosetp.py b/tetras_extraction/macao_12/script/src/extract_mosetp.py index 31e6c6b969e5daf7093850533eae9915d9087686..de0b76e871957797aa4dbebe80dd1415e64ef9f1 100644 --- a/tetras_extraction/macao_12/script/src/extract_mosetp.py +++ b/tetras_extraction/macao_12/script/src/extract_mosetp.py @@ -7,7 +7,7 @@ from common import * from extract_page import parse_page # Initialise logger -log = get_logger(__name__) +log = get_logger("extract_mosetp") def generate_triples( diff --git a/tetras_extraction/macao_12/script/src/extract_page.py b/tetras_extraction/macao_12/script/src/extract_page.py index 4199ae580e6ad7ecb9733e14f88625e8ba02e84a..d778b559bfffadcb03a9dde7ba7d981097652275 100644 --- a/tetras_extraction/macao_12/script/src/extract_page.py +++ b/tetras_extraction/macao_12/script/src/extract_page.py @@ -13,7 +13,7 @@ from typing_extensions import override from common import * # Initialise logger -log = get_logger(__name__) +log = get_logger("extract_page") class Comment: diff --git a/tetras_extraction/macao_12/script/src/transform.py b/tetras_extraction/macao_12/script/src/transform.py index 387a59fd30614eb7413c865b100e18bbc08b13d6..30a0973048e5bfb006d1dd5068d847735838b924 100644 --- a/tetras_extraction/macao_12/script/src/transform.py +++ b/tetras_extraction/macao_12/script/src/transform.py @@ -2,27 +2,31 @@ from rdflib import OWL, RDF, Graph from common import * +log = get_logger("transform") + def construct(g: Graph, query: str): """Performs a SPARQL `CONSTRUCT` query and add the resulting triples to the graph, in-place. - """ + :return: Number of *new* triples (i.e. not present in the initial graph) + """ res = g.query(query) if res.graph is not None: - g += res.graph + new_triples = res.graph - g + n = len(new_triples) + g += new_triples + if n > 0: + log.info(f"\tConstructed {n} triples") + return n + return 0 def construct_while(g: Graph, query: str): """Repeat a CONSTRUCT query, adding triples to the graph, until the query stops generating new triples""" - while True: - res = g.query(query) - if res.graph is not None and len(res.graph - g) > 0: - print(f"Constructed {len(res.graph - g)} triples") - g += res.graph - else: - break + while construct(g, query) > 0: + pass def main(): @@ -32,22 +36,9 @@ def main(): graph.parse(RDF_SCHEMA_FILE) graph.parse(RDF_CONTENT_FILE) - construct( - graph, - """ - CONSTRUCT { - ?exo a :ExerciceQC - } WHERE { - { - ?exo a :ExerciceQC_QCU - } UNION { - ?exo a :ExerciceQC_QCM - } - }""", - ) - # Apply property 'subClassOf' transitively, except on the "fake" class # hierarchy based on MacaoRoot + log.info("Adding transitive subclasses...") q_transitive_subclass = """ CONSTRUCT { ?a rdfs:subClassOf ?c @@ -60,6 +51,7 @@ def main(): """ construct_while(graph, q_transitive_subclass) + log.info("Adding supertypes...") construct_while( graph, """ @@ -71,18 +63,6 @@ def main(): } """, ) - # construct( - # graph, - # """ - # CONSTRUCT { - - # } WHERE { - # ?subj a ?child_type . - - # ?child_type rdfs:subClassOf ?parent_type - # } - # """, - # ) # ==> Save # Remove dependency on previous ontologies