Skip to content
Snippets Groups Projects
Select Git revision
  • 51edaa93476605d309d4d6c4b98a4289853fb42d
  • master default protected
  • multiprocessing
  • experiment/clara
  • experiment/spec2B-poc
  • experiment/qivalio-poc
  • experiment/ertms
  • MAY-2023
  • FEB-2023
  • EGC-2023
  • 0.2.1
  • v0.2.0
  • v0.1.2
13 results

net.py

Blame
  • test_naming_computer.py 4.07 KiB
    #!/usr/bin/python3.10
    # -*-coding:Utf-8 -*
    
    #==============================================================================
    # TENET: Semantic Net Class Test
    #------------------------------------------------------------------------------
    # Script to test the semantic net classes
    #==============================================================================
    
    import subprocess, os
    from rdflib import Graph
    from rdflib import Namespace
    from rdflib.namespace import NamespaceManager
    
    FILE_PATH = f'{os.path.dirname(os.path.abspath(__file__))}'
    INPUT_DIR_PATH = f'{FILE_PATH}/input/'
    OUTPUT_DIR_PATH = f'{FILE_PATH}/output/'
    TEST_GRAPH = f'{INPUT_DIR_PATH}testGraph1.ttl'
    
    from context import tenet
    
    
    from tenet.febTransduction.net import AtomClassNet
    from tenet.febTransduction.net import CompositeClassNet
    from tenet.febTransduction.net import AtomPropertyNet
    from tenet.febTransduction.net import PhenomenaNet
    from tenet.febTransduction import naming_computer
    
    
    
    #==============================================================================
    # Utilities
    #==============================================================================
    
    def test_attribute_access(net, *attr_set):
        print(f'\n *** Net attributes ({net.type_id})) ***')
        for attr in attr_set:
            print(f' ----- {attr}: {eval(attr)}')    
           
    
    
    #==============================================================================
    # Development Test
    #==============================================================================
    
    print('\n' + ' *** Development Test ***')
    print('\n *** TEST: Naming Computer ***')
    
    print(f'\n -- Test Graph Loading')
    graph = Graph()
    graph.bind('net', Namespace('https://tenet.tetras-libre.fr/semantic-net#'))
    graph.parse(TEST_GRAPH)
    print(f" ----- Graph Loaded ({len(graph)})")
    
    print('\n -- Test data: some semantic nets')
    net_1 = AtomClassNet(graph, uri='net:atomClass_object_o')
    print(f' ----- net_1: {net_1.uri} ({net_1.naming})') 
    net_2 = AtomPropertyNet(graph, uri='net:atomProperty_orbit_o2')
    print(f' ----- net_2: {net_2.uri} ({net_2.naming})') 
    net_3 = AtomClassNet(graph, uri='net:atomClass_sun_s2')
    print(f' ----- net_3: {net_3.uri} ({net_3.naming})') 
    net_4 = PhenomenaNet(graph, uri='net:phenomena_conjunction-AND_a')
    print(f' ----- net_4: {net_4.uri} ({net_4.naming})') 
    
    print('\n -- Test data: composite net')
    composite_net_1 = CompositeClassNet(graph)
    composite_net_1.compose(net_1, net_2, net_3)
    print(f' ----- composite_net_1: {composite_net_1.uri} ({composite_net_1.naming})') 
    
    
    print('\n -- URI definition')
    
    naming_0 = naming_computer.define_composite_naming_1(net_1, net_2, net_3)
    print(f' ----- Naming (0)): {naming_0}')
    
    naming_1 = naming_computer.define_composite_naming_1(net_1, net_2, net_3, 
                                                         naming_computer.PROPERTY_NAMING_1)
    print(f' ----- Naming (1)): {naming_1}')
    
    naming_2 = naming_computer.define_composite_naming_1(net_1, net_2, net_3,
                                                         naming_computer.PROPERTY_NAMING_2)
    print(f' ----- Naming (2)): {naming_2}')
    
    naming_3 = naming_computer.define_composite_naming_1(net_1, net_2, net_3,
                                                         naming_computer.PROPERTY_NAMING_3)
    print(f' ----- Naming (3)): {naming_3}')
    
    
    print('\n -- Update composite net (with naming_1)')
    composite_net_1.naming = naming_1
    composite_net_1.finalize()
    test_attribute_access(composite_net_1, 'net.uri', 
                          'net.node', 'net.base_node', 'net.structure', 'net.naming',
                          'net.class_name',
                          'net.mother_class_net', 'net.restriction', 'net.restriction01')
    
    
        
    print('\n -- Advanced Test(s)')
    composite_net_2 = CompositeClassNet(graph)
    composite_net_2.compose(net_1, net_2, net_4)
    composite_net_2.naming = naming_computer.define_composite_naming_1(net_1, net_2, net_4)
    composite_net_2.finalize()
    test_attribute_access(composite_net_2, 'net.uri', 
                          'net.node', 'net.base_node', 'net.structure', 'net.naming',
                          'net.class_name',
                          'net.mother_class_net', 'net.restriction', 'net.restriction01')
    
    print('\n' + ' *** - ***')