Skip to content
Snippets Groups Projects
Select Git revision
  • RC-Rekall-v1.1-fix_lpo
  • main default
  • 35-cgu
  • 34-peertube-support
  • 27-add-autoplay-to-iframe
  • 33-bug-on-youtube-embed-urls
  • tuleap-140-go-back-to-my-capsules-page-when-i-m-on-capsule-preview-page
  • RC-Rekall-v1.2-fix10
  • RC-Rekall-v1.2-fix9
  • RC-Rekall-v1.2-fix8
  • RC-Rekall-v1.2-fix7
  • RC-Rekall-v1.2-fix6
  • RC-Rekall-v1.2-fix5
  • RC-Rekall-v1.2-fix4
  • RC-Rekall-v1.2-fix3
  • RC-Rekall-v1.2-fix2
  • RC-Rekall-v1.2-fix1
  • RC-Rekall-v1.1-fix-3
  • RC-Rekall-v1.1-fix-2
  • RC-Rekall-v1.1-fix-1
  • RC-Rekall-v1.1-delivered
  • preprod20220209-1535
22 results

phpstan-tests.neon

Blame
  • prepare_work_data.py 8.37 KiB
    #!/usr/bin/python3.5
    # -*-coding:Utf-8 -*
    
    #==============================================================================
    # TENET: prepare work data
    #------------------------------------------------------------------------------
    # Prepare work data for extraction processing. 
    #==============================================================================
    
    #==============================================================================
    # Importing required modules
    #==============================================================================
    
    import glob
    from rdflib import Graph, Namespace, URIRef
    
    
    #==============================================================================
    # Parameters
    #==============================================================================
    
    # Working directories
    CONFIG_DIR = "config/"
    FRAME_DIR = "frame/"
    CORPUS_DIR = "corpus/"
    CTS_DIR = "cts/"
    OUTPUT_DIR = "output/"
    
    # Config Definition
    TURTLE_SUFFIX = ".ttl"
    ONTO_FILE = "-ontology" + TURTLE_SUFFIX
    dash_file = "dash-data-shapes.ttl" # data from "http://datashapes.org/dash.ttl"
    schema_file = "unl-rdf-schema.ttl"
    semantic_net_file = "semantic-net.ttl"
    cts_file = "transduction-schemes.ttl"
    c_param_file = "config-parameters.ttl"
    
    # Dev Tests
    base_uri = "https://unsel.tetras-libre.fr/tenet/working"
    req_100 = "CCTP-SRSA-IP-20210831-R100/"
    req_200 = "CCTP-SRSA-IP-20210831-R200/"
    req_300 = "CCTP-SRSA-IP-20210831-R300/"
    req_1100 = "CCTP-SRSA-IP-20210831-R1100/"
    corpus_40 = "CCTP-SRSA-IP-20210831/"
    corpus_ERTMS = "ERTMS/"
    corpus_PEV = "PEV-RSE-Approach/"
    
    
    #==============================================================================
    # Utility
    #==============================================================================
    
    def read_query(cts_group, query_ref):
        query_file = CTS_DIR + cts_group + str(query_ref) + ".cts"
        with open(query_file, "r") as file:
            return file.read()
    
    
    #==============================================================================
    # Graph Initialization
    #==============================================================================
        
    def load_config(work_graph):
        print("-- Configuration Loading:")
        
        file_ref = CONFIG_DIR + schema_file
        work_graph.parse(file_ref)
        print("----- RDF Schema (" + str(len(work_graph)) + ")")
        
        file_ref = CONFIG_DIR + semantic_net_file
        work_graph.parse(file_ref)
        print("----- Semantic Net Definition (" + str(len(work_graph)) + ")")
        
        file_ref = CONFIG_DIR + dash_file
        work_graph.parse(file_ref)
        print("----- Data Shapes Dash (" + str(len(work_graph)) + ")")
        
        file_ref = CONFIG_DIR + c_param_file
        work_graph.parse(file_ref)
        print("----- Config Parameter Definition (" + str(len(work_graph)) + ")")
    
    
    def load_frame(work_graph, target_system):
        print("-- Frame Ontology Loading:")
        
        # -- old --- file_ref = FRAME_DIR + req_onto_file
        # -- old --- work_graph.parse(file_ref)
        # -- old --- print("----- Requirement Frame Ontology (" + str(len(work_graph)) + ")")
        
        file_ref = FRAME_DIR + target_system + ONTO_FILE
        work_graph.parse(file_ref)
        print("----- System Frame Ontology (" + str(len(work_graph)) + ")")
        
        # -- old --- file_ref = FRAME_DIR + f_param_file
        # -- old --- work_graph.parse(file_ref)
        # -- old --- print("----- Ontology Parameters (" + str(len(work_graph)) + ")")
    
    
    #def define_namespace(work_graph):
    #    print("-- Namespace Definition:")
    #    
    #    sys_uri = "https://unsel.tetras-libre.fr/tenet/frame/system-ontology/"
    #    concept_classes = ["agent"]
    #    for concept in concept_classes:
    #        new_prefix = "sys-" + concept
    #        new_uri = URIRef(sys_uri + concept + '#') 
    #        work_graph.namespace_manager.bind(new_prefix, new_uri)
    #        print("----- " + new_prefix + ": " + new_uri)
    #    print(list(work_graph.namespace_manager.namespaces()))
        
        
    def load_sentences(work_graph, corpus):
        print("-- Sentence Loading:")
        
        target_ref = CORPUS_DIR + corpus + '**/*.ttl'
        for file_ref in glob.glob(target_ref, recursive = True):
            work_graph.parse(file_ref)
            print("----- " + file_ref + " (" + str(len(work_graph)) + ")") 
                
           
    
    #==============================================================================
    # CT Schemes for Transduction Process
    #==============================================================================
        
    def load_cts(work_graph):
        print("-- CTS Loading:")
        
        file_ref = CONFIG_DIR + cts_file
        work_graph.parse(file_ref)
        print("----- All Schemes (" + str(len(work_graph)) + ")")
            
        
    
    #==============================================================================
    # Result (export)
    #==============================================================================
         
    def export_result(work_graph, export_ref, export_file):
        print("-- Export result as turtle: " + export_file)
        
        work_graph.serialize(destination=export_file, 
                             base=base_uri + '/' + export_ref, 
                             format='turtle')
        
        
    def finalize_export_file(export_file):
        """ finalize the export file by adding some useful prefixes """
        
        with open(export_file, "rt") as file:
            x = file.read()
        
        with open(export_file, "wt") as file:
            x = x.replace(
                "@prefix sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/> .",
                """
                @prefix sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/> .
                @prefix sys-Event: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/Event#> .
                @prefix sys-State_Property: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/State_Property#> .
                @prefix sys-abstract_thing: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/abstract_thing#> .
                @prefix sys-action_verb: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/action_verb#> .
                @prefix sys-agent: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/agent#> .
                @prefix sys-attributive_verb: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/attributive_verb#> .
                @prefix sys-component: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/component#> .
                @prefix sys-message: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/message#> .
                @prefix sys-place: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/place#> .
                @prefix owl: <http://www.w3.org/2002/07/owl#> .
                @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
                @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
                @prefix sys-relation: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/relation/> .
                @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
                """)
            file.write(x)
            
    #==============================================================================
    # Main Function
    #==============================================================================
      
    def run(corpus, source_ref, target_ref):
        try:
            print("[Tenet] Prepare work data from corpus " + corpus)
        
            print("\n" + "- Graph Initialization")
            work_graph = Graph()
            load_config(work_graph)   
            load_frame(work_graph, target_ref) 
            #define_namespace(work_graph)
        
            print("\n" + "- Preparation of Transduction Process")
            load_cts(work_graph)
        
            print("\n" + "- Data Source Imports")
            load_sentences(work_graph, corpus)
        
            print("\n" + "- Result")
            output_file = OUTPUT_DIR + source_ref + TURTLE_SUFFIX
            export_result(work_graph, source_ref, output_file)
            finalize_export_file(output_file)
            
            print()
        
        except:
            print("!!! An exception occurred !!!") 
            
    
    #==============================================================================
    # Execution
    #==============================================================================
    
    if __name__ == '__main__':
        
        # -- Data for Qivalio POC
        #target_ref = "environment"
        target_ref = "system"
        run(corpus_PEV, 'Corpus-PEV', target_ref)
        
        
        # Data for Master
        #target_ref = "system"
        #run(req_100, 'R100f', target_ref) 
    #    run(req_200, 'R200f', target_ref)
    #    run(req_300, 'R300f', target_ref) 
    #    run(req_1100, 'R1100f', target_ref) 
    #    run(corpus_40, 'Corpus-CCTP-40f', target_ref)
        #run(corpus_ERTMS, 'Corpus-ERTMS', target_ref)