From 9431756bb435ccc679a3d636e0a0e0ac9e6844e4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Lamercerie?=
 <aurelien.lamercerie@tetras-libre.fr>
Date: Wed, 15 Feb 2023 00:15:49 +0100
Subject: [PATCH] Development of febTransduction (in progress)

---
 tenet/febTransduction/__init__.py             |    1 +
 tenet/febTransduction/pattern.py              |  240 +--
 .../phenomena_application_or.py               |  230 ++-
 tenet/febTransduction/testGraph1.ttl          | 1572 +++++++++++++++++
 tests/test_tenet_rule.py                      |   43 +-
 5 files changed, 1813 insertions(+), 273 deletions(-)
 create mode 100644 tenet/febTransduction/__init__.py
 create mode 100644 tenet/febTransduction/testGraph1.ttl

diff --git a/tenet/febTransduction/__init__.py b/tenet/febTransduction/__init__.py
new file mode 100644
index 00000000..6ee1bc2f
--- /dev/null
+++ b/tenet/febTransduction/__init__.py
@@ -0,0 +1 @@
+from .pattern import Pattern
\ No newline at end of file
diff --git a/tenet/febTransduction/pattern.py b/tenet/febTransduction/pattern.py
index e8119a09..d1b55fbc 100644
--- a/tenet/febTransduction/pattern.py
+++ b/tenet/febTransduction/pattern.py
@@ -2,234 +2,90 @@
 # -*-coding:Utf-8 -*
 
 #==============================================================================
-# TENET: Transduction Rule
+# TENET: Pattern
 #------------------------------------------------------------------------------
-# Class to define a Compositional Transduction Rule (CTR), namely a rule 
-# associating a semantic graph pattern and a semantic net constructor.  
-# Several methods are proposed to translate the rule into a sequence of SPARQL 
-# queries applicable to a semantic graph.
+# Class to define a pattern to find in a semantic graph. The pattern is 
+# composed of a list of semantic nets to be extracted from the graph and 
+# associated with a set of clauses (identification or relational clauses).
 #==============================================================================
 
-if __name__ == '__main__':
-    import os, sys
-    LIB_PATH = f'{os.path.dirname(os.path.abspath(__file__))}/..'
-    sys.path.insert(0, os.path.abspath(LIB_PATH))
-    print(sys.path[0])
-
 import logging
 
+from rdflib import Graph
+from rdflib import Namespace
+from rdflib.namespace import NamespaceManager
+
 import febTransduction.query_builder as query_builder
 import febTransduction.net as net
 
-# -- Useful Constant(s)
-DEFAULT_ATTRIBUTE_VALUE = f'\"NA\"'
-INDENT_STR = '            '
-SENTENCE_REF = '?sentenceRef'
+from febTransduction.net.semantic_net_rdf_reference import SemanticNetReferenceHandle
 
 
 #==============================================================================
-# Net Class
+# Class
 #==============================================================================
 
-class Rule:
-    """ Class to define a Compositional Transduction Rule (CTR), namely a rule 
-        associating a semantic graph pattern and a semantic net constructor.  
+class Pattern:
+    """ Class to define a pattern to find in a semantic graph. The pattern is 
+        composed of a list of semantic nets to be extracted from the graph and 
+        associated with a set of clauses (identification or relational clauses).
     """
-    
-    #--------------------------------------------------------------------------
-    # Class Attributes
-    #--------------------------------------------------------------------------
-
-    # None
-    
-    
+        
     #--------------------------------------------------------------------------
     # Constructor
     #--------------------------------------------------------------------------
               
-    def __init__(self, label, net):
+    def __init__(self, *nets):
         
         # -- Base
-        self.label = label
-        self.new_net = net        
+        self.label = f' ----- finding'
+        self.net_list = []
+        for net in nets:
+            self.label += f' {net}'
+            self.net_list.append(f'?{net}')      
+            
+        # -- Reference Handle
+        self.referenceHandle = SemanticNetReferenceHandle() 
         
         # -- Pattern
-        self._identification_pattern_dict = {}
-        self._composition_pattern_list = []
-        self._restriction_pattern_list = []
-        
-        # -- SPARQL Query
-        self.query_list = []
-        
-    
-    #--------------------------------------------------------------------------
-    # Accessor(s)
-    #--------------------------------------------------------------------------
-        
-    # --
+        self._identification_pattern_list = []
+        self._relation_pattern_list = []
 
     
     #--------------------------------------------------------------------------
     # Method(s) to add pattern
     #--------------------------------------------------------------------------
-
+    
     def add_identification_pattern(self, net, **net_attribute):
-        self._identification_pattern_dict[net] = net.identify_attribute(**net_attribute)
-
+        for attr_ref in net_attribute.keys():
+            attr_predicate = self.referenceHandle.get_predicate(attr_ref)
+            attr_value = net_attribute.get(attr_ref)
+            self._identification_pattern_list.append(())
 
-    def add_composition_pattern(self, net_1, relation, net_2):
-        self._composition_pattern_list.append((net_1, relation, net_2))
-
-
-    def add_restriction_pattern(self, net_1, relation, net_2):
-        self._restriction_pattern_list.append((net_1, relation, net_2))
+    def add_relation_pattern(self, net_1, relation, net_2):
+        self._relation_pattern_list.append((net_1, relation, net_2))
         
     
     #--------------------------------------------------------------------------
-    # Method(s) to construct a new semantic net by composition of net(s)
+    # Pattern Application Method
     #--------------------------------------------------------------------------
-    
-    def __define_identification_clause(self, *nets):
-        clause_part = f"\n{INDENT_STR}"
-        clause_part += f"# -- Identify Net(s)"
-        for net in nets:
-            clause_part += f"\n{INDENT_STR}"
-            clause_part += net.identify()
-            if net in self._identification_pattern_dict:
-                clause_part += self._identification_pattern_dict[net]                
-        return clause_part
-    
-    
-    def __define_pattern_clause(self):
-        clause_part = f"\n{INDENT_STR}"
-        clause_part += f"# -- Identify Pattern "
-        for (net_1, relation, net_2) in self._composition_pattern_list:
-            clause_part += f"\n{INDENT_STR}"
-            clause_part += f'{net_1.id} {relation} {net_2.id}.'
-        return clause_part
-    
-    
-    def __define_tracking_data_selection_clause(self, *nets):
-        clause_part = f"\n{INDENT_STR}"
-        clause_part += f"# -- Data Selection "
-        for net in nets:
-            clause_part += f"\n{INDENT_STR}"
-            clause_part += net.select_tracking_data()
-        return clause_part
-    
-    
-    def __define_new_net_binding_clause(self, *nets):
-        
-        assert len(nets) > 0, '__define_new_net_binding_clause impossible without net'
-        
-        clause_part = f"\n{INDENT_STR}"
-        clause_part += f"""# *** Identify variable label of base leaf ***
-            {nets[0].select_data('base_node')}
-            {nets[0].base_node} a amr:AMR_Leaf ;
-                amr:hasVariable ?variable.
-                ?variable amr:label ?varLabel."""
                 
-        clause_part += f"\n\n{INDENT_STR}"
-        clause_part += f"# -- Naming Binding \n{INDENT_STR}"
-        clause_part += self.new_net.bind_naming(*nets)
-        
-        clause_part += f"\n\n{INDENT_STR}"
-        clause_part += f"# -- URI Binding"
-        clause_part += self.new_net.bind_uri(self.new_net.naming, '?varLabel')
+    def apply(self, graph):
         
-        return clause_part
+        # -- Select Data List
+        select_data_list = []
+        for net in net_list:
+            select_data_list.append(net.id)
         
-        
-    def __define_new_net(self):
-        construct_part = f"\n{INDENT_STR}"
-        construct_part += f'# -- New net \n'
-        construct_part += self.new_net.define()
-        return construct_part
-        
-        
-    def __define_composition(self, *nets):
-        construct_part = f"\n{INDENT_STR}"
-        construct_part += f'# -- Composition Tracking for {self.new_net.id}'
-        main = True
-        for net in nets:
-            construct_part += f"\n{INDENT_STR}"
-            construct_part += self.new_net.track_composante(net, main)
-            main = False
-        return construct_part
-        
-    def __define_deprecate_net(self, *nets):
-        if (nets is not None) & (len(nets) != 0):
-            construct_part = f'\n{INDENT_STR}'
-            construct_part += f'# -- Deprecate net \n{INDENT_STR}'
-            construct_part += f'{nets[0].id} a net:Deprecated_Net.'
-        return construct_part
-        
-        
-    def compose(self, *nets):
-        
-        query_label = 'new net construction'
-        
-        # -- Clause Part
-        clause_part = ''
-        clause_part += self.__define_identification_clause(*nets)
-        clause_part += '\n'
-        clause_part += self.__define_pattern_clause()
-        clause_part += '\n'
-        clause_part += self.__define_tracking_data_selection_clause(*nets)
-        clause_part += '\n'
-        clause_part += self.__define_new_net_binding_clause(*nets)
-        
-        # -- Construct Part
-        construct_part = ''
-        construct_part += self.__define_new_net()
-        construct_part += self.__define_composition(*nets)
-        construct_part += self.__define_deprecate_net(*nets)
+        # -- Clause List
+        clause_list = []
+        for (attr_predicate, attr_value) in relation_pattern_list:
+            clause_list.append(f'{self.id} {attr_predicate} {attr_value}.')
+        for (net_1, relation, net_2) in relation_pattern_list:
+            clause_list.append(f'{net_1.id} {relation} {net_2.id}.')
         
         # -- Query Generation
-        compose_query = query_builder.generate_construct_query(construct_part, clause_part)
-        self.query_list.append((query_label, compose_query))   
-    
-    
-    
-    
-#==============================================================================
-# Development Test
-#==============================================================================
-    
-if __name__ == '__main__':
-    
-    print('\n' + ' *** Development Test ***')  
-    
-    # print('\n' + ' -- Net Definition')
-    property_net_0 = net.PropertyNet(0)
-    property_net_1 = net.PropertyNet(1)
-    phenomena_net = net.PhenomenaNet()
-    or_composite_class_net = net.OrCompositeClassNet()
-    
-    # print('\n' + ' -- Test Rule 1')
-    rule = Rule('Test Rule', or_composite_class_net)
-    rule.add_identification_pattern(phenomena_net, phenomena_type='amr:phenomena_conjunction_or')
-    rule.add_composition_pattern(property_net_1, 'amr:role_ARG0', property_net_0)
-    rule.add_composition_pattern(property_net_1, 'amr:role_ARG1', phenomena_net)
-    rule.compose(property_net_0, property_net_1, phenomena_net)
-    
-    rule.compute_data()
-    
-    num = 0
-    for query_label, query in rule.query_list:
-        num += 1
-        print(f'*** query {num} - {query_label} ***\n{query}\n')
-    
-    # print('\n' + ' -- load a rule definition from a dictionary')
-    # rule.load_dict(rule_def_1)
-    # print(rule)
-    
-    # print('\n' + ' -- load a prefix list')
-    # rule.load_prefix_list(prefix_list_1)
-    # print(rule)
-    
-    # print('\n' + ' -- get the SPARQL query')
-    # query = rule.get_query()
-    # print(query)
+        query_code = query_builder.generate_select_query(select_data_list, clause_list)
+        query_result = graph.query(test_query)  
         
-    print('\n' + ' *** - ***')
\ No newline at end of file
+        return query_result
\ No newline at end of file
diff --git a/tenet/febTransduction/phenomena_application_or.py b/tenet/febTransduction/phenomena_application_or.py
index 0cf2eca4..f8aed303 100644
--- a/tenet/febTransduction/phenomena_application_or.py
+++ b/tenet/febTransduction/phenomena_application_or.py
@@ -2,97 +2,167 @@
 # -*-coding:Utf-8 -*
 
 #==============================================================================
-# TENET: AMR CTR at 'Net Expansion' level
+# TENET: AMR CTR at 'Net Expansion' level for phenomena application (or)
 #------------------------------------------------------------------------------
 # Module grouping compositional transduction rule_sets (CTR) for the analysis 
 # of AMR structures, at 'Net Expansion' level
 #==============================================================================
 
+import subprocess, os
+from rdflib import Graph
+from rdflib import Namespace
+from rdflib.namespace import NamespaceManager
+
 if __name__ == '__main__':
     import os, sys
-    LIB_PATH = f'{os.path.dirname(os.path.abspath(__file__))}/../../..'
+    LIB_PATH = f'{os.path.dirname(os.path.abspath(__file__))}/..'
     sys.path.insert(0, os.path.abspath(LIB_PATH))
     print(sys.path[0])
 
+import febTransduction as transduction
+from febTransduction.query_builder import generate_select_query
+
 
 #==============================================================================
-# Rule to analyze conjunction phenomena 
+# Rule with pattern property(class, or_phenomena)
 #==============================================================================
 
-def analyze_phenomena_or_1(graph):
+def __select_pattern_1():
     
-    rule_label = '"or" phenomena analysis 1 (targetting class)'
-    print(f"--- *** February Transduction *** Sequence: {rule_label}")
-    #logger.info(f"--- *** February Transduction *** Sequence: {rule_label}")   
-
-    # -- Net Instanciation
-    property_net = net.PropertyNet(graph)
-    class_net_0 = net.ClassNet(graph)
-    phenomena_net = net.PhenomenaNet(graph)
-    composite_class_net = net.CompositeClassNet(graph)
+    # -- Select Data List
+    select_data_list = ['?property_net', '?class_net', '?phenomena_net']
+    
+    # -- Clause List
+    clause_list = []
+    clause_list.append(f'?property_net a [rdfs:subClassOf* net:Property_Net].')
+    clause_list.append(f'?class_net a [rdfs:subClassOf* net:Class_Net].')
+    clause_list.append(f'?phenomena_net a [rdfs:subClassOf* net:Phenomena_Net].')
+    clause_list.append(f'?phenomena_net net:hasPhenomenaType amr:phenomena_conjunction_or.')
+    clause_list.append(f'?property_net amr:role_ARG0 ?class_net.')
+    clause_list.append(f'?property_net amr:role_ARG1 ?phenomena_net.')
+    
+    # -- Query Generation
+    query_code = transduction.query_builder.generate_select_query(select_data_list, clause_list)
+    
+    return query_code
 
-    # -- Rule Initialization    
-    pattern = transduction.Pattern(class_net_0, property_net, phenomena_net)
-    pattern.add_identification_pattern(phenomena_net, phenomena_type='amr:phenomena_conjunction_or')
-    pattern.add_composition_pattern(property_net, 'amr:role_ARG0', class_net_0)
-    pattern.add_composition_pattern(property_net, 'amr:role_ARG1', phenomena_net)
-    pattern.apply(graph) # ou class_net_0, property_net, phenomena_net = pattern.apply(graph)
+    # pattern = transduction.Pattern('class_net', 'property_net', 'phenomena_net')
+    # pattern.add_identification_pattern(phenomena_net, phenomena_type='amr:phenomena_conjunction_or')
+    # pattern.add_composition_pattern(property_net, 'amr:role_ARG0', class_net_0)
+    # pattern.add_composition_pattern(property_net, 'amr:role_ARG1', phenomena_net)
+    # pattern_query = pattern.get_select_query()
+    # return pattern_query
     
-    # -- Net Composition
-    composite_class_net.compose(class_net_0, property_net, phenomena_net)
     
-    # -- Data Computation
-    composite_class_net.mother_class = class_net_0
-    # etc
+def __op_pattern_1(phenomena_net_uri, num):
     
-    # -- Restriction Computation
-    # TODO
-    composite_class_net.restriction = restriction
+    assert 1 <= num <= 9 
     
-    # -- Relation Propagation
-    for (n1, rel, _) in class_net_0.input_relation_list:
-        composite_class_net.add_input_relation(n1, rel)
-    # TODO: à voir si on veut d'autres relations
+    # -- Select Data List
+    select_data_list = ['?class_net']
     
-    # -- Finalization
-    composite_class_net.finalize()
-    new_triple_list = composite_class_net.generate_triple_definition()
+    # -- Clause List
+    clause_list = []
+    clause_list.append(f'?class_net a [rdfs:subClassOf* net:Class_Net].')
+    clause_list.append(f'{phenomena_net_uri} amr:role_op{num} ?class_net.')
+    
+    # -- Query Generation
+    query_code = transduction.query_builder.generate_select_query(select_data_list, clause_list)
+    
+    return query_code
     
-    return rule_label, new_triple_list
 
+def __define_restriction(net, op_set): # TODO
+    pass
+    return net
+    
+    
+def analyze_phenomena_or_1(graph):
+    
+    # -- Rule Initialization 
+    rule_label = '"or" phenomena analysis 1 (targetting class)'
+    print(f"--- *** February Transduction *** Sequence: {rule_label}")
+    #logger.info(f"--- *** February Transduction *** Sequence: {rule_label}")   
 
-def analyze_phenomena_or_2():
+    # -- Selection Pattern Application  
+    query_code = __select_pattern_1()
+    pattern_set = graph.query(query_code) 
+    
+    # -- New Net Computing
+    new_triple_list = []
+    for selection in pattern_set:
+        
+        # -- Net Composition
+        class_net = net.ClassNet(graph, selection.class_net)
+        property_net = net.PropertyNet(graph, selection.property_net)
+        phenomena_net = net.PhenomenaNet(graph, selection.phenomena_net)
+        composite_class_net = net.CompositeClassNet(graph)
+        composite_class_net.compose(class_net, property_net, phenomena_net)
+    
+        # -- Data Computation
+        composite_class_net.mother_class = class_net
+        # etc
+    
+        # -- Restriction Computation
+        for num in range(1, 9+1):
+            query_code = __op_pattern_1(selection.phenomena_net, num)
+            op_set = graph.query(query_code) 
+            composite_class_net = __define_restriction(composite_class_net, op_set)
+    
+        # -- Relation Propagation
+        for (n1, rel, _) in class_net.input_relation_list:
+            composite_class_net.add_input_relation(n1, rel)
+            # TODO: à voir si on veut d'autres relations
+    
+        # -- Finalization
+        composite_class_net.finalize()
+        new_triples = composite_class_net.generate_triple_definition()
+        new_triple_list.append(new_triples)
+    
+    return rule_label, new_triple_list
 
-    # -- Net Instanciation
-    property_net_0 = net.PropertyNet(0)
-    property_net_1 = net.PropertyNet(1)
-    phenomena_net = net.PhenomenaNet()
-    or_composite_class_net = net.OrCompositeClassNet()
 
-    # -- Rule Initialization    
-    rule = transduction.Rule('"or" phenomena analysis 2 (targetting property)', 
-                             or_composite_class_net)
-    
-    # -- Net Composition
-    rule.add_identification_pattern(phenomena_net, phenomena_type='amr:phenomena_conjunction_or')
-    rule.add_composition_pattern(property_net_1, 'amr:role_ARG0', property_net_0)
-    rule.add_composition_pattern(property_net_1, 'amr:role_ARG1', phenomena_net)
-    rule.compose(property_net_0, property_net_1, phenomena_net)
+#==============================================================================
+# Rule with pattern property(property, or_phenomena)
+#==============================================================================
+
+def __select_pattern_2():
     
-    # -- Data Computation
-    # rule.compute_data(mother_class_net=property_net_0.id)
+    # -- Select Data List
+    select_data_list = ['?property_net_0', '?property_net', '?phenomena_net']
     
-    # -- Restriction Computation
-    # TODO
+    # -- Clause List
+    clause_list = []
+    clause_list.append(f'?property_net a [rdfs:subClassOf* net:Property_Net].')
+    clause_list.append(f'?property_net_0 a [rdfs:subClassOf* net:Property_Net].')
+    clause_list.append(f'?phenomena_net a [rdfs:subClassOf* net:Phenomena_Net].')
+    clause_list.append(f'?phenomena_net net:hasPhenomenaType amr:phenomena_conjunction_or.')
+    clause_list.append(f'?property_net amr:role_ARG0 ?property_net_0.')
+    clause_list.append(f'?property_net amr:role_ARG1 ?phenomena_net.')
     
-    # -- Relation Propagation
-    # TODO
+    # -- Query Generation
+    query_code = transduction.query_builder.generate_select_query(select_data_list, clause_list)
     
-    # -- Finalization
-    # TODO
+    return query_code
+
+
+def analyze_phenomena_or_2():
     
-    return rule
+    # -- Rule Initialization 
+    rule_label = '"or" phenomena analysis 2 (targetting class)'
+    print(f"--- *** February Transduction *** Sequence: {rule_label}")  
 
+    # -- Selection Pattern Application  
+    query_code = __select_pattern_2()
+    pattern_set = graph.query(query_code) 
+    
+    # -- New Net Computing
+    new_triple_list = []
+    for selection in pattern_set:
+        
+        pass
+    
+    return rule_label, new_triple_list
             
             
     
@@ -103,12 +173,44 @@ def analyze_phenomena_or_2():
 if __name__ == '__main__':
     
     print('\n' + ' *** Development Test ***')  
+    
+    print(f'\n -- Test Graph Loading')
+    graph = Graph()
+    graph.bind('net', Namespace('https://tenet.tetras-libre.fr/semantic-net#'))
+    graph.parse('testGraph1.ttl')
+    print(f"----- Graph Loaded ({len(graph)})")
+    
+    
+    print('\n -- Select Pattern Application 1')
+    query_code = __select_pattern_1()
+    print(query_code)
+    pattern_result_set = graph.query(query_code) 
+    print(f'\n ----- number of selection found: {len(pattern_result_set)}')
+    for selection in pattern_result_set: 
+        result_str = f'>>> '
+        result_str += f'{selection.property_net.n3(graph.namespace_manager)}'
+        result_str += f' {selection.class_net.n3(graph.namespace_manager)}'
+        result_str += f' {selection.phenomena_net.n3(graph.namespace_manager)}'
+        print(result_str) 
+        
+    
+    print('\n -- Select Pattern Application 2')
+    query_code = __select_pattern_2()
+    print(query_code)
+    pattern_result_set = graph.query(query_code) 
+    print(f'\n ----- number of selection found: {len(pattern_result_set)}')
+    for selection in pattern_result_set: 
+        result_str = f'>>> '
+        result_str += f'{selection.property_net.n3(graph.namespace_manager)}'
+        result_str += f' {selection.property_net_0.n3(graph.namespace_manager)}'
+        result_str += f' {selection.phenomena_net.n3(graph.namespace_manager)}'
+        print(result_str) 
         
     print('\n -- Rule')
-    rule = analyze_phenomena_or_1()
+    # rule = analyze_phenomena_or_1()
     
-    num = 0
-    for query_label, query in rule.query_list:
-        num += 1
-        print(f'*** query {num} - {query_label} ***\n{query}\n')
+    # num = 0
+    # for query_label, query in rule.query_list:
+    #     num += 1
+    #     print(f'*** query {num} - {query_label} ***\n{query}\n')
     
\ No newline at end of file
diff --git a/tenet/febTransduction/testGraph1.ttl b/tenet/febTransduction/testGraph1.ttl
new file mode 100644
index 00000000..e3e90472
--- /dev/null
+++ b/tenet/febTransduction/testGraph1.ttl
@@ -0,0 +1,1572 @@
+@base <http://SolarSystemDev1/transduction> .
+@prefix : <https://amr.tetras-libre.fr/rdf/schema#> .
+@prefix cprm: <https://tenet.tetras-libre.fr/config/parameters#> .
+@prefix net: <https://tenet.tetras-libre.fr/semantic-net#> .
+@prefix ns11: <http://amr.isi.edu/rdf/amr-terms#> .
+@prefix ns21: <http://amr.isi.edu/rdf/core-amr#> .
+@prefix ns3: <http://amr.isi.edu/frames/ld/v1.2.2/> .
+@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: <https://tenet.tetras-libre.fr/base-ontology#> .
+@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+ns21:Concept a rdfs:Class,
+        owl:Class ;
+    rdfs:label "AMR-Concept" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns21:Role a rdfs:Class,
+        owl:Class ;
+    rdfs:label "AMR-Role" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/test-1#root01> ns21:hasID "test-1" ;
+    ns21:hasSentence "The sun is a star." ;
+    ns21:root <http://amr.isi.edu/amr_data/test-1#s> .
+
+<http://amr.isi.edu/amr_data/test-2#root01> ns21:hasID "test-2" ;
+    ns21:hasSentence "Earth is a planet." ;
+    ns21:root <http://amr.isi.edu/amr_data/test-2#p> .
+
+ns3:bind-01.ARG0 a ns3:FrameRole .
+
+ns3:bind-01.ARG1 a ns3:FrameRole .
+
+ns3:orbit-01.ARG0 a ns3:FrameRole .
+
+ns3:orbit-01.ARG1 a ns3:FrameRole .
+
+ns11:domain a ns21:Role,
+        owl:AnnotationProperty,
+        owl:NamedIndividual .
+
+ns11:op1 a ns21:Role .
+
+ns11:op2 a ns21:Role .
+
+ns21:hasID a owl:AnnotationProperty .
+
+ns21:hasSentence a owl:AnnotationProperty .
+
+ns21:root a owl:AnnotationProperty .
+
+<https://amr.tetras-libre.fr/rdf/schema> a owl:Ontology ;
+    owl:versionIRI :0.1 .
+
+:AMR_DataProperty a owl:DatatypeProperty .
+
+:AMR_Prep_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+:edge_a_op1_s2 a :AMR_Edge ;
+    :hasAmrRole :role_op1 ;
+    :hasRoleID "op1" .
+
+:edge_a_op2_o a :AMR_Edge ;
+    :hasAmrRole :role_op2 ;
+    :hasRoleID "op2" .
+
+:edge_b_ARG0_g a :AMR_Edge ;
+    :hasAmrRole :role_ARG0 ;
+    :hasRoleID "ARG0" .
+
+:edge_b_ARG1_s a :AMR_Edge ;
+    :hasAmrRole :role_ARG1 ;
+    :hasRoleID "ARG1" .
+
+:edge_d2_polarity_negative a :AMR_Edge ;
+    :hasAmrRole :role_polarity ;
+    :hasRoleID "polarity" .
+
+:edge_m9_ARG0_o2 a :AMR_Edge ;
+    :hasAmrRole :role_ARG0 ;
+    :hasRoleID "ARG0" .
+
+:edge_m9_ARG1_o3 a :AMR_Edge ;
+    :hasAmrRole :role_ARG1 ;
+    :hasRoleID "ARG1" .
+
+:edge_o2_ARG0_o a :AMR_Edge ;
+    :hasAmrRole :role_ARG0 ;
+    :hasRoleID "ARG0" .
+
+:edge_o2_ARG1_s2 a :AMR_Edge ;
+    :hasAmrRole :role_ARG1 ;
+    :hasRoleID "ARG1" .
+
+:edge_o3_op1_d a :AMR_Edge ;
+    :hasAmrRole :role_op1 ;
+    :hasRoleID "op1" .
+
+:edge_o3_op2_d2 a :AMR_Edge ;
+    :hasAmrRole :role_op2 ;
+    :hasRoleID "op2" .
+
+:edge_p9_ARG0_s a :AMR_Edge ;
+    :hasAmrRole :role_ARG0 ;
+    :hasRoleID "ARG0" .
+
+:edge_p9_ARG1_a a :AMR_Edge ;
+    :hasAmrRole :role_ARG1 ;
+    :hasRoleID "ARG1" .
+
+:edge_p_name_SolarSystem a :AMR_Edge ;
+    :hasAmrRole :role_name ;
+    :hasRoleID "name" .
+
+:edge_s_domain_p a :AMR_Edge ;
+    :hasAmrRole :role_domain ;
+    :hasRoleID "domain" .
+
+:fromAmrLkFramerole a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :fromAmrLk .
+
+:fromAmrLkRole a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :fromAmrLk .
+
+:fromAmrLkRoot a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :fromAmrLk .
+
+:getDirectPropertyName a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :getProperty .
+
+:getInversePropertyName a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :getProperty .
+
+:getPropertyType a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :getProperty .
+
+:hasConcept a owl:ObjectProperty ;
+    rdfs:domain :AMR_Leaf ;
+    rdfs:subPropertyOf :AMR_ObjectProperty .
+
+:hasConceptLink a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :hasLink .
+
+:hasEdgeLink a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :hasLink .
+
+:hasReification a owl:AnnotationProperty ;
+    rdfs:range xsd:boolean ;
+    rdfs:subPropertyOf :AMR_AnnotationProperty .
+
+:hasReificationConcept a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :hasReificationDefinition .
+
+:hasReificationDomain a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :hasReificationDefinition .
+
+:hasReificationRange a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :hasReificationDefinition .
+
+:hasRelationName a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :AMR_AnnotationProperty .
+
+:hasRoleID a owl:ObjectProperty ;
+    rdfs:domain :AMR_Edge ;
+    rdfs:subPropertyOf :AMR_ObjectProperty .
+
+:hasRoleTag a owl:ObjectProperty ;
+    rdfs:domain :AMR_Edge ;
+    rdfs:subPropertyOf :AMR_ObjectProperty .
+
+:hasRolesetID a owl:ObjectProperty ;
+    rdfs:domain :AMR_Edge ;
+    rdfs:subPropertyOf :AMR_ObjectProperty .
+
+:hasRootLeaf a owl:ObjectProperty ;
+    rdfs:subPropertyOf :AMR_ObjectProperty .
+
+:hasSentenceID a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :AMR_AnnotationProperty .
+
+:hasSentenceStatement a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :AMR_AnnotationProperty .
+
+:hasVariable a owl:ObjectProperty ;
+    rdfs:domain :AMR_Leaf ;
+    rdfs:subPropertyOf :AMR_ObjectProperty .
+
+:label a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :AMR_AnnotationProperty .
+
+:phenomena_degree a owl:Class ;
+    rdfs:subClassOf :AMR_Phenomena ;
+    :hasConceptLink "have-degree-91" ;
+    :label "degree" .
+
+:relation_domain a owl:Class ;
+    rdfs:subClassOf :AMR_Relation ;
+    :hasReification false ;
+    :hasRelationName "domain" .
+
+:relation_manner a owl:Class ;
+    rdfs:subClassOf :AMR_Relation ;
+    :hasReification true ;
+    :hasReificationConcept "hasManner" ;
+    :hasReificationDomain "ARG1" ;
+    :hasReificationRange "ARG2" ;
+    :hasRelationName "manner" .
+
+:relation_mod a owl:Class ;
+    rdfs:subClassOf :AMR_Relation ;
+    :hasReification false ;
+    :hasRelationName "mod" .
+
+:relation_name a owl:Class ;
+    rdfs:subClassOf :AMR_Relation ;
+    :hasReification false ;
+    :hasRelationName "name" .
+
+:relation_part a owl:Class ;
+    rdfs:subClassOf :AMR_Relation ;
+    :hasReification true ;
+    :hasReificationConcept "hasPart" ;
+    :hasReificationDomain "ARG1" ;
+    :hasReificationRange "ARG2" ;
+    :hasRelationName "part" .
+
+:relation_polarity a owl:Class ;
+    rdfs:subClassOf :AMR_Relation ;
+    :hasReification false ;
+    :hasRelationName "polarity" .
+
+:relation_quant a owl:Class ;
+    rdfs:subClassOf :AMR_Relation ;
+    :hasReification false ;
+    :hasRelationName "quant" .
+
+:role_ARG2 a owl:Class ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG2" .
+
+:role_ARG3 a owl:Class ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG3" .
+
+:role_ARG4 a owl:Class ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG4" .
+
+:role_ARG5 a owl:Class ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG5" .
+
+:role_ARG6 a owl:Class ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG6" .
+
+:role_ARG7 a owl:Class ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG7" .
+
+:role_ARG8 a owl:Class ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG8" .
+
+:role_ARG9 a owl:Class ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG9" .
+
+:role_have-degree-91 a owl:Class ;
+    rdfs:subClassOf :AMR_Specific_Role ;
+    :getPropertyType <net:specificProperty> .
+
+:role_manner a owl:Class ;
+    rdfs:subClassOf :AMR_NonCore_Role ;
+    :getDirectPropertyName "manner" ;
+    :getPropertyType owl:DataProperty ;
+    :label "manner" ;
+    :toReifyAsConcept "manner" ;
+    :toReifyWithBaseEdge "ARG0" ;
+    :toReifyWithHeadEdge "ARG1" .
+
+:role_mod a owl:Class ;
+    rdfs:subClassOf :AMR_NonCore_Role ;
+    :getDirectPropertyName "hasFeature"^^xsd:string ;
+    :getPropertyType rdfs:subClassOf,
+        owl:ObjectProperty ;
+    :label "mod" ;
+    :toReifyAsConcept "mod" ;
+    :toReifyWithBaseEdge "ARG0" ;
+    :toReifyWithHeadEdge "ARG1" .
+
+:role_op3 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op3" .
+
+:role_op4 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op4" .
+
+:role_op5 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op5" .
+
+:role_op6 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op6" .
+
+:role_op7 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op7" .
+
+:role_op8 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op8" .
+
+:role_op9 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op9" .
+
+:role_part a owl:Class ;
+    rdfs:subClassOf :AMR_NonCore_Role ;
+    :getDirectPropertyName "hasPart"^^xsd:string ;
+    :getInversePropertyName "partOf"^^xsd:string ;
+    :getPropertyType owl:ObjectProperty ;
+    :toReifyAsConcept "part" ;
+    :toReifyWithBaseEdge "ARG0" ;
+    :toReifyWithHeadEdge "ARG1" .
+
+:role_quant a owl:Class ;
+    rdfs:subClassOf :AMR_Specific_Role ;
+    :label "quant" .
+
+:root_SSC-01-01 a :AMR_Root ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/SSC-01-01#root01> ;
+    :hasRootLeaf :leaf_system_s ;
+    :hasSentenceID "SSC-01-01" ;
+    :hasSentenceStatement "The Solar System is the gravitationally bound system of the Sun and the objects that orbit it, either directly or indirectly." .
+
+:toReifyAsConcept a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :toReify .
+
+:toReifyWithBaseEdge a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :toReify .
+
+:toReifyWithHeadEdge a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :toReify .
+
+<https://tenet.tetras-libre.fr/base-ontology> a owl:Ontology .
+
+sys:Event a owl:Class ;
+    rdfs:subClassOf sys:Out_Structure .
+
+sys:Undetermined_Thing a owl:Class ;
+    rdfs:subClassOf sys:Out_Structure .
+
+sys:fromStructure a owl:AnnotationProperty ;
+    rdfs:subPropertyOf sys:Out_AnnotationProperty .
+
+sys:hasDegree a owl:ObjectProperty ;
+    rdfs:subPropertyOf sys:Out_ObjectProperty .
+
+sys:hasFeature a owl:ObjectProperty ;
+    rdfs:subPropertyOf sys:Out_ObjectProperty .
+
+<https://tenet.tetras-libre.fr/config/parameters> a owl:Ontology .
+
+cprm:Config_Parameters a owl:Class ;
+    cprm:baseURI "https://tenet.tetras-libre.fr/" ;
+    cprm:netURI "https://tenet.tetras-libre.fr/semantic-net#" ;
+    cprm:newClassRef "new-class#" ;
+    cprm:newPropertyRef "new-relation#" ;
+    cprm:objectRef "object_" ;
+    cprm:targetOntologyURI "https://tenet.tetras-libre.fr/base-ontology/" .
+
+cprm:baseURI a rdf:Property ;
+    rdfs:label "Base URI" ;
+    rdfs:domain cprm:Frame ;
+    rdfs:range xsd:string ;
+    rdfs:subPropertyOf cprm:configParamProperty .
+
+cprm:netURI a rdf:Property ;
+    rdfs:label "Net URI" ;
+    rdfs:domain cprm:Frame ;
+    rdfs:range xsd:string ;
+    rdfs:subPropertyOf cprm:configParamProperty .
+
+cprm:newClassRef a rdf:Property ;
+    rdfs:label "Reference for a new class" ;
+    rdfs:subPropertyOf cprm:configParamProperty .
+
+cprm:newPropertyRef a rdf:Property ;
+    rdfs:label "Reference for a new property" ;
+    rdfs:subPropertyOf cprm:configParamProperty .
+
+cprm:objectRef a rdf:Property ;
+    rdfs:label "Object Reference" ;
+    rdfs:subPropertyOf cprm:configParamProperty .
+
+cprm:targetOntologyURI a rdf:Property ;
+    rdfs:label "URI of classes in target ontology" ;
+    rdfs:domain cprm:Frame ;
+    rdfs:range xsd:string ;
+    rdfs:subPropertyOf cprm:configParamProperty .
+
+<https://tenet.tetras-libre.fr/semantic-net> a owl:Ontology .
+
+net:Instance a owl:Class ;
+    rdfs:label "Semantic Net Instance" ;
+    rdfs:subClassOf net:Net_Structure .
+
+net:Object a owl:Class ;
+    rdfs:label "Object using in semantic net instance" ;
+    rdfs:subClassOf net:Net_Structure .
+
+net:Property_Direction a owl:Class ;
+    rdfs:subClassOf net:Feature .
+
+net:abstractionClass a owl:AnnotationProperty ;
+    rdfs:label "abstraction class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:atom a owl:Class ;
+    rdfs:label "atom" ;
+    rdfs:subClassOf net:Type .
+
+net:atomOf a owl:AnnotationProperty ;
+    rdfs:label "atom of" ;
+    rdfs:subPropertyOf net:typeProperty .
+
+net:atomType a owl:AnnotationProperty ;
+    rdfs:label "atom type" ;
+    rdfs:subPropertyOf net:objectType .
+
+net:class a owl:Class ;
+    rdfs:label "class" ;
+    rdfs:subClassOf net:Type .
+
+net:composite a owl:Class ;
+    rdfs:label "composite" ;
+    rdfs:subClassOf net:Type .
+
+net:conjunctive_list a owl:Class ;
+    rdfs:label "conjunctive-list" ;
+    rdfs:subClassOf net:list .
+
+net:disjunctive_list a owl:Class ;
+    rdfs:label "disjunctive-list" ;
+    rdfs:subClassOf net:list .
+
+net:entityClass a owl:AnnotationProperty ;
+    rdfs:label "entity class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:entity_class_list a owl:Class ;
+    rdfs:label "entityClassList" ;
+    rdfs:subClassOf net:class_list .
+
+net:event a owl:Class ;
+    rdfs:label "event" ;
+    rdfs:subClassOf net:Type .
+
+net:featureClass a owl:AnnotationProperty ;
+    rdfs:label "feature class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:has_atom a owl:AnnotationProperty ;
+    rdfs:label "has atom" ;
+    rdfs:subPropertyOf net:has_object .
+
+net:has_class a owl:AnnotationProperty ;
+    rdfs:label "is class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:has_class_name a owl:AnnotationProperty ;
+    rdfs:subPropertyOf net:has_value .
+
+net:has_class_uri a owl:AnnotationProperty ;
+    rdfs:label "class uri" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:has_concept a owl:AnnotationProperty ;
+    rdfs:label "concept "@fr ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:has_entity a owl:AnnotationProperty ;
+    rdfs:label "has entity" ;
+    rdfs:subPropertyOf net:has_object .
+
+net:has_feature a owl:AnnotationProperty ;
+    rdfs:label "has feature" ;
+    rdfs:subPropertyOf net:has_object .
+
+net:has_instance a owl:AnnotationProperty ;
+    rdfs:label "entity instance" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:has_instance_uri a owl:AnnotationProperty ;
+    rdfs:label "instance uri" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:has_item a owl:AnnotationProperty ;
+    rdfs:label "has item" ;
+    rdfs:subPropertyOf net:has_object .
+
+net:has_mother_class a owl:AnnotationProperty ;
+    rdfs:label "has mother class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:has_mother_class_uri a owl:AnnotationProperty ;
+    rdfs:label "parent class uri" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:has_node a owl:AnnotationProperty ;
+    rdfs:label "UNL Node" ;
+    rdfs:subPropertyOf net:netProperty .
+
+net:has_parent a owl:AnnotationProperty ;
+    rdfs:label "has parent" ;
+    rdfs:subPropertyOf net:has_object .
+
+net:has_parent_class a owl:AnnotationProperty ;
+    rdfs:label "parent class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:has_parent_class_uri a owl:AnnotationProperty ;
+    rdfs:label "parent class uri" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:has_possible_domain a owl:AnnotationProperty ;
+    rdfs:label "has possible domain" ;
+    rdfs:subPropertyOf net:has_object .
+
+net:has_possible_range a owl:AnnotationProperty ;
+    rdfs:label "has possible range" ;
+    rdfs:subPropertyOf net:has_object .
+
+net:has_relation a owl:AnnotationProperty ;
+    rdfs:label "has relation" ;
+    rdfs:subPropertyOf net:has_relation_value .
+
+net:has_source a owl:AnnotationProperty ;
+    rdfs:label "has source" ;
+    rdfs:subPropertyOf net:has_relation_value .
+
+net:has_structure a owl:AnnotationProperty ;
+    rdfs:label "Linguistic Structure (in UNL Document)" ;
+    rdfs:subPropertyOf net:netProperty .
+
+net:has_target a owl:AnnotationProperty ;
+    rdfs:label "has target" ;
+    rdfs:subPropertyOf net:has_relation_value .
+
+net:inverse_direction a owl:NamedIndividual .
+
+net:listBy a owl:AnnotationProperty ;
+    rdfs:label "list by" ;
+    rdfs:subPropertyOf net:typeProperty .
+
+net:listGuiding a owl:AnnotationProperty ;
+    rdfs:label "Guiding connector of a list (or, and)" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:listOf a owl:AnnotationProperty ;
+    rdfs:label "list of" ;
+    rdfs:subPropertyOf net:typeProperty .
+
+net:modCat1 a owl:AnnotationProperty ;
+    rdfs:label "Modality Category (level 1)" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:modCat2 a owl:AnnotationProperty ;
+    rdfs:label "Modality Category (level 2)" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:normal_direction a owl:NamedIndividual .
+
+net:relation a owl:Class ;
+    rdfs:label "relation" ;
+    rdfs:subClassOf net:Type .
+
+net:relationOf a owl:AnnotationProperty ;
+    rdfs:label "relation of" ;
+    rdfs:subPropertyOf net:typeProperty .
+
+net:state_property a owl:Class ;
+    rdfs:label "stateProperty" ;
+    rdfs:subClassOf net:Type .
+
+net:type a owl:AnnotationProperty ;
+    rdfs:label "type "@fr ;
+    rdfs:subPropertyOf net:netProperty .
+
+net:unary_list a owl:Class ;
+    rdfs:label "unary-list" ;
+    rdfs:subClassOf net:list .
+
+net:verbClass a owl:AnnotationProperty ;
+    rdfs:label "verb class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+<http://amr.isi.edu/amr_data/SSC-01-01#b> a ns3:bind-01 ;
+    ns3:bind-01.ARG0 <http://amr.isi.edu/amr_data/SSC-01-01#g> ;
+    ns3:bind-01.ARG1 <http://amr.isi.edu/amr_data/SSC-01-01#s> ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/SSC-01-01#o2> a ns3:orbit-01 ;
+    ns3:orbit-01.ARG0 <http://amr.isi.edu/amr_data/SSC-01-01#o> ;
+    ns3:orbit-01.ARG1 <http://amr.isi.edu/amr_data/SSC-01-01#s2> ;
+    ns11:manner <http://amr.isi.edu/amr_data/SSC-01-01#o3> ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/SSC-01-01#root01> a ns21:AMR ;
+    ns21:has-id "SSC-01-01" ;
+    ns21:has-sentence "The Solar System is the gravitationally bound system of the Sun and the objects that orbit it, either directly or indirectly." ;
+    ns21:root <http://amr.isi.edu/amr_data/SSC-01-01#s> .
+
+<http://amr.isi.edu/amr_data/test-1#s> ns11:domain <http://amr.isi.edu/amr_data/test-1#s2> .
+
+<http://amr.isi.edu/amr_data/test-2#p> rdfs:label "Earth" .
+
+<http://amr.isi.edu/entity-types#planet> a ns21:NamedEntity ;
+    rdfs:comment "bug" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns21:AMR a owl:Class ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+:AMR_Root a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:concept_and rdfs:subClassOf :AMR_Relation_Concept ;
+    :fromAmrLk ns21:and ;
+    :hasPhenomenaLink :phenomena_conjunction_and ;
+    :label "and" .
+
+:concept_bind-01 rdfs:subClassOf :AMR_Predicat_Concept ;
+    :fromAmrLk ns3:bind-01 ;
+    :label "bind-01" .
+
+:concept_gravitation rdfs:subClassOf :AMR_Term_Concept ;
+    :fromAmrLk ns11:gravitation ;
+    :label "gravitation" .
+
+:concept_manner rdfs:subClassOf :AMR_Predicat_Concept ;
+    :fromAmrLk ns11:manner ;
+    :isReifiedConcept true ;
+    :label "hasManner" .
+
+:concept_object rdfs:subClassOf :AMR_Term_Concept ;
+    :fromAmrLk ns11:object ;
+    :label "object" .
+
+:concept_or rdfs:subClassOf :AMR_Relation_Concept ;
+    :fromAmrLk ns21:or ;
+    :hasPhenomenaLink :phenomena_conjunction_or ;
+    :label "or" .
+
+:concept_orbit-01 rdfs:subClassOf :AMR_Predicat_Concept ;
+    :fromAmrLk ns3:orbit-01 ;
+    :label "orbit-01" .
+
+:concept_part rdfs:subClassOf :AMR_Predicat_Concept ;
+    :fromAmrLk ns11:part ;
+    :isReifiedConcept true ;
+    :label "hasPart" .
+
+:concept_sun rdfs:subClassOf :AMR_Term_Concept ;
+    :fromAmrLk ns11:sun ;
+    :label "sun" .
+
+:role_domain a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_NonCore_Role ;
+    :hasRelationName "domain" ;
+    :label "domain" ;
+    :toReifyAsConcept "domain" ;
+    :toReifyWithBaseEdge "ARG0" ;
+    :toReifyWithHeadEdge "ARG1" .
+
+:role_name a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_NonCore_Role ;
+    :label "name" .
+
+:role_polarity a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_Specific_Role ;
+    :label "polarity" .
+
+:value_SolarSystem a :AMR_Value ;
+    rdfs:label "Solar System" .
+
+:variable_a a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/SSC-01-01#a> ;
+    :label "a" .
+
+:variable_b a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/SSC-01-01#b> ;
+    :label "b" .
+
+:variable_d a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/SSC-01-01#d> ;
+    :label "d" .
+
+:variable_d2 a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/SSC-01-01#d2> ;
+    :label "d2" .
+
+:variable_g a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/SSC-01-01#g> ;
+    :label "g" .
+
+:variable_m9 a ns11:manner,
+        :AMR_Variable ;
+    :isReifiedVariable true ;
+    :label "m9" .
+
+:variable_o a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/SSC-01-01#o> ;
+    :label "o" .
+
+:variable_o2 a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/SSC-01-01#o2> ;
+    :label "o2" .
+
+:variable_o3 a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/SSC-01-01#o3> ;
+    :label "o3" .
+
+:variable_p a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/SSC-01-01#p> ;
+    :label "p" ;
+    :name "Solar System" .
+
+:variable_p9 a ns11:part,
+        :AMR_Variable ;
+    :isReifiedVariable true ;
+    :label "p9" .
+
+:variable_s a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/SSC-01-01#s> ;
+    :label "s" .
+
+:variable_s2 a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/SSC-01-01#s2> ;
+    :label "s2" .
+
+sys:Degree a owl:Class ;
+    rdfs:subClassOf sys:Out_Structure .
+
+sys:Feature a owl:Class ;
+    rdfs:subClassOf sys:Out_Structure .
+
+sys:Out_AnnotationProperty a owl:AnnotationProperty .
+
+net:Composite_Property_Net a owl:Class ;
+    rdfs:subClassOf net:Property_Net .
+
+net:Feature a owl:Class ;
+    rdfs:subClassOf net:Net_Structure .
+
+net:Individual_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Logical_Set_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:atomProperty_bind_b a net:Atom_Property_Net ;
+    :role_ARG0 net:atomClass_gravitation_g,
+        net:compositeClass_gravitation-binding-system-hasPart-sun-and-object_g,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2 ;
+    :role_ARG1 net:atomClass_system_s,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:compositeClass_system-hasPart-sun-and-object-hasPart-object_s,
+        net:compositeClass_system-hasPart-sun-and-object-hasPart-sun_s,
+        net:compositeClass_system-hasPart-sun-and-object_s ;
+    net:coverBaseNode :leaf_bind-01_b ;
+    net:coverNode :leaf_bind-01_b ;
+    net:hasNaming "bind" ;
+    net:hasPropertyName "bind" ;
+    net:hasPropertyName01 "binding" ;
+    net:hasPropertyName10 "bind-by" ;
+    net:hasPropertyName12 "bind-of" ;
+    net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "SSC-01-01" ;
+    net:isCoreRoleLinked true ;
+    net:targetArgumentNode :leaf_gravitation_g,
+        :leaf_system_s ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:atomProperty_hasManner_m9 a net:Atom_Property_Net ;
+    :role_ARG0 net:atomProperty_orbit_o2,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2 ;
+    :role_ARG1 net:atomProperty_direct_d,
+        net:atomProperty_direct_d2,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:compositeProperty_not-direct_d2,
+        net:phenomena_conjunction-OR_o3 ;
+    net:coverBaseNode :leaf_hasManner_m9 ;
+    net:coverNode :leaf_hasManner_m9 ;
+    net:hasNaming "hasManner" ;
+    net:hasPropertyName "hasManner" ;
+    net:hasPropertyName01 "hasManner" ;
+    net:hasPropertyName10 "hasManner" ;
+    net:hasPropertyName12 "hasManner" ;
+    net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "SSC-01-01" ;
+    net:isCoreRoleLinked true ;
+    net:targetArgumentNode :leaf_or_o3,
+        :leaf_orbit-01_o2 ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:class_list a owl:Class ;
+    rdfs:label "classList" ;
+    rdfs:subClassOf net:Type .
+
+net:compositeClass_gravitation-binding-system-hasPart-sun-and-object_g a net:Composite_Class_Net ;
+    net:coverBaseNode :leaf_gravitation_g ;
+    net:coverNode :leaf_and_a,
+        :leaf_bind-01_b,
+        :leaf_gravitation_g,
+        :leaf_hasPart_p9,
+        :leaf_system_s ;
+    net:coverNodeCount 5 ;
+    net:hasClassName "gravitation-binding-system-hasPart-sun-and-object" ;
+    net:hasClassType sys:Entity ;
+    net:hasMotherClassNet net:atomClass_gravitation_g ;
+    net:hasRestriction01 net:restriction_binding_system-hasPart-sun-and-object ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:has_value a owl:AnnotationProperty ;
+    rdfs:subPropertyOf net:netProperty .
+
+net:objectType a owl:AnnotationProperty ;
+    rdfs:label "object type" ;
+    rdfs:subPropertyOf net:objectProperty .
+
+net:phenomena_conjunction-AND_a a net:Phenomena_Net ;
+    :role_op1 net:atomClass_sun_s2,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2 ;
+    :role_op2 net:atomClass_object_o,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2 ;
+    net:coverBaseNode :leaf_and_a ;
+    net:coverNode :leaf_and_a ;
+    net:hasNaming "conjunction-AND" ;
+    net:hasPhenomenaRef "and" ;
+    net:hasPhenomenaType :phenomena_conjunction_and ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:restriction_binding_system-hasPart-sun-and-object a net:Restriction_Net ;
+    net:coverBaseNode :leaf_gravitation_g ;
+    net:coverNode :leaf_and_a,
+        :leaf_bind-01_b,
+        :leaf_gravitation_g,
+        :leaf_hasPart_p9,
+        :leaf_system_s ;
+    net:coverTargetNode :leaf_and_a,
+        :leaf_bind-01_b,
+        :leaf_hasPart_p9,
+        :leaf_system_s ;
+    net:hasNaming "gravitation-binding-system-hasPart-sun-and-object" ;
+    net:hasRestrictionNetValue net:compositeClass_system-hasPart-sun-and-object_s ;
+    net:hasRestrictionOnProperty net:atomProperty_bind_b .
+
+net:value_negative_blankNode a net:Value_Net ;
+    net:hasNaming "negative" ;
+    net:hasStructure "SSC-01-01" ;
+    net:hasValueLabel "negative" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+<http://amr.isi.edu/amr_data/SSC-01-01#a> a ns21:and ;
+    ns11:op1 <http://amr.isi.edu/amr_data/SSC-01-01#s2> ;
+    ns11:op2 <http://amr.isi.edu/amr_data/SSC-01-01#o> ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/SSC-01-01#d> a ns3:direct-02 ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/SSC-01-01#d2> a ns3:direct-02 ;
+    ns11:polarity "-" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/SSC-01-01#g> a ns11:gravitation ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/SSC-01-01#o3> a ns21:or ;
+    ns11:op1 <http://amr.isi.edu/amr_data/SSC-01-01#d> ;
+    ns11:op2 <http://amr.isi.edu/amr_data/SSC-01-01#d2> ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/SSC-01-01#p> a <http://amr.isi.edu/entity-types#planet>,
+        <http://amr.isi.edu/entity-types#system> ;
+    rdfs:label "Solar System" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/entity-types#system> a ns21:NamedEntity ;
+    rdfs:label "system" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns3:bind-01 a ns21:Frame ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns3:orbit-01 a ns21:Frame ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:gravitation a ns21:Concept ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:manner a ns21:Role ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:object a ns21:Concept ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:part a ns21:Role ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:sun a ns21:Concept ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:system a ns21:Concept ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns21:NamedEntity a ns21:Concept,
+        owl:Class,
+        owl:NamedIndividual ;
+    rdfs:label "AMR-EntityType",
+        "AMR-Term" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns21:and a ns21:Concept ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns21:or a ns21:Concept ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+:AMR_Phenomena a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:AMR_Relation_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+:AMR_Value a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+:concept_direct-02 rdfs:subClassOf :AMR_Predicat_Concept ;
+    :fromAmrLk ns3:direct-02 ;
+    :label "direct-02" .
+
+:concept_system rdfs:subClassOf :AMR_Term_Concept ;
+    :fromAmrLk <http://amr.isi.edu/entity-types#system>,
+        ns11:system ;
+    :label "system" .
+
+:hasLink a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :AMR_AnnotationProperty .
+
+:phenomena_conjunction a owl:Class ;
+    rdfs:subClassOf :AMR_Phenomena ;
+    :hasConceptLink "contrast-01",
+        "either",
+        "neither" ;
+    :label "conjunction" .
+
+:phenomena_conjunction_and a owl:Class ;
+    rdfs:subClassOf :phenomena_conjunction ;
+    :hasConceptLink "and" ;
+    :label "conjunction-AND" .
+
+:phenomena_conjunction_or a owl:Class ;
+    rdfs:subClassOf :phenomena_conjunction ;
+    :hasConceptLink "or" ;
+    :label "conjunction-OR" .
+
+:role_op1 a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op1" .
+
+:role_op2 a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op2" .
+
+:value_negative a :AMR_Value ;
+    rdfs:label "negative" .
+
+sys:Out_ObjectProperty a owl:ObjectProperty .
+
+net:Class_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Deprecated_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Phenomena_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Property_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Value_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:atomClass_gravitation_g a net:Atom_Class_Net ;
+    net:coverBaseNode :leaf_gravitation_g ;
+    net:coverNode :leaf_gravitation_g ;
+    net:coverNodeCount 1 ;
+    net:hasClassName "gravitation" ;
+    net:hasClassType sys:Entity ;
+    net:hasNaming "gravitation" ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:logicalSet_and_a a net:Logical_Set_Net ;
+    :role_op1 net:atomClass_sun_s2,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2 ;
+    :role_op2 net:atomClass_object_o,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2 ;
+    net:bindPropertyNet net:atomProperty_hasPart_p9 ;
+    net:bindRestriction net:restriction_hasPart_object,
+        net:restriction_hasPart_sun ;
+    net:containsNet net:atomClass_object_o,
+        net:atomClass_sun_s2 ;
+    net:containsNet1 net:atomClass_sun_s2 ;
+    net:containsNet2 net:atomClass_object_o ;
+    net:coverBaseNode :leaf_and_a ;
+    net:coverNode :leaf_and_a ;
+    net:hasLogicalConstraint "AND" ;
+    net:hasNaming "hasPart-sun-and-object" ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:objectProperty a owl:AnnotationProperty ;
+    rdfs:label "object attribute" .
+
+net:phenomena_conjunction-OR_o3 a net:Phenomena_Net ;
+    :role_op1 net:atomProperty_direct_d,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2 ;
+    :role_op2 net:atomProperty_direct_d2,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:compositeProperty_not-direct_d2 ;
+    net:coverBaseNode :leaf_or_o3 ;
+    net:coverNode :leaf_or_o3 ;
+    net:hasNaming "conjunction-OR" ;
+    net:hasPhenomenaRef "or" ;
+    net:hasPhenomenaType :phenomena_conjunction_or ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:value_SolarSystem_blankNode a net:Value_Net ;
+    net:hasNaming "Solar System" ;
+    net:hasStructure "SSC-01-01" ;
+    net:hasValueLabel "Solar System" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+<http://amr.isi.edu/amr_data/SSC-01-01#o> a ns11:object ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/SSC-01-01#s> a ns11:system ;
+    ns11:domain <http://amr.isi.edu/amr_data/SSC-01-01#p> ;
+    ns11:part <http://amr.isi.edu/amr_data/SSC-01-01#a> ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/SSC-01-01#s2> a ns11:sun ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns3:direct-02 a ns21:Frame ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns21:Frame a ns21:Concept,
+        owl:Class,
+        owl:NamedIndividual ;
+    rdfs:label "AMR-PropBank-Frame" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+:AMR_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+:AMR_Specific_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+:fromAmrLk a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :AMR_AnnotationProperty .
+
+:getProperty a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :AMR_AnnotationProperty .
+
+:hasReificationDefinition a owl:AnnotationProperty ;
+    rdfs:range rdfs:Literal ;
+    rdfs:subPropertyOf :AMR_AnnotationProperty .
+
+:leaf_direct-02_d a :AMR_Leaf ;
+    :hasConcept :concept_direct-02 ;
+    :hasVariable :variable_d .
+
+:leaf_hasManner_m9 a :AMR_Leaf ;
+    :edge_m9_ARG0_o2 :leaf_orbit-01_o2 ;
+    :edge_m9_ARG1_o3 :leaf_or_o3 ;
+    :hasConcept :concept_manner ;
+    :hasVariable :variable_m9 ;
+    :isReifiedLeaf true .
+
+:toReify a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :AMR_AnnotationProperty .
+
+net:Restriction_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:atomProperty_orbit_o2 a net:Atom_Property_Net,
+        net:Deprecated_Net ;
+    :role_ARG0 net:atomClass_object_o,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2 ;
+    :role_ARG1 net:atomClass_sun_s2,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2 ;
+    net:coverBaseNode :leaf_orbit-01_o2 ;
+    net:coverNode :leaf_orbit-01_o2 ;
+    net:hasNaming "orbit" ;
+    net:hasPropertyName "orbit" ;
+    net:hasPropertyName01 "orbiting" ;
+    net:hasPropertyName10 "orbit-by" ;
+    net:hasPropertyName12 "orbit-of" ;
+    net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "SSC-01-01" ;
+    net:isCoreRoleLinked true ;
+    net:targetArgumentNode :leaf_object_o,
+        :leaf_sun_s2 ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:compositeClass_system-hasPart-sun-and-object-hasPart-object_s a net:Composite_Class_Net ;
+    :role_domain net:atomClass_system_p,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:individual_system_SolarSystem ;
+    net:coverBaseNode :leaf_system_s ;
+    net:coverNode :leaf_and_a,
+        :leaf_hasPart_p9,
+        :leaf_object_o,
+        :leaf_system_s ;
+    net:coverNodeCount 4 ;
+    net:hasClassName "system-hasPart-sun-and-object-hasPart-object" ;
+    net:hasClassType sys:Entity ;
+    net:hasMotherClassNet net:atomClass_system_p,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:compositeClass_system-hasPart-sun-and-object_s ;
+    net:hasRestriction01 net:restriction_hasPart_object ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:compositeClass_system-hasPart-sun-and-object-hasPart-sun_s a net:Composite_Class_Net ;
+    :role_domain net:atomClass_system_p,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:individual_system_SolarSystem ;
+    net:coverBaseNode :leaf_system_s ;
+    net:coverNode :leaf_and_a,
+        :leaf_hasPart_p9,
+        :leaf_sun_s2,
+        :leaf_system_s ;
+    net:coverNodeCount 4 ;
+    net:hasClassName "system-hasPart-sun-and-object-hasPart-sun" ;
+    net:hasClassType sys:Entity ;
+    net:hasMotherClassNet net:atomClass_system_p,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:compositeClass_system-hasPart-sun-and-object_s ;
+    net:hasRestriction01 net:restriction_hasPart_sun ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:has_relation_value a owl:AnnotationProperty ;
+    rdfs:label "has relation value" ;
+    rdfs:subPropertyOf net:has_object .
+
+net:list a owl:Class ;
+    rdfs:label "list" ;
+    rdfs:subClassOf net:Type .
+
+net:restriction_hasPart_object a net:Restriction_Net ;
+    :role_domain net:compositeClass_orbit-hasManner-conjunction-OR_o2 ;
+    net:coverBaseNode :leaf_system_s ;
+    net:coverNode :leaf_and_a,
+        :leaf_hasPart_p9,
+        :leaf_object_o,
+        :leaf_system_s ;
+    net:coverTargetNode :leaf_hasPart_p9,
+        :leaf_object_o ;
+    net:hasNaming "system-hasPart-sun-and-object-hasPart-object" ;
+    net:hasRestrictionNetValue net:atomClass_object_o ;
+    net:hasRestrictionOnProperty net:atomProperty_hasPart_p9 .
+
+net:restriction_hasPart_sun a net:Restriction_Net ;
+    :role_domain net:compositeClass_orbit-hasManner-conjunction-OR_o2 ;
+    net:coverBaseNode :leaf_system_s ;
+    net:coverNode :leaf_and_a,
+        :leaf_hasPart_p9,
+        :leaf_sun_s2,
+        :leaf_system_s ;
+    net:coverTargetNode :leaf_hasPart_p9,
+        :leaf_sun_s2 ;
+    net:hasNaming "system-hasPart-sun-and-object-hasPart-sun" ;
+    net:hasRestrictionNetValue net:atomClass_sun_s2 ;
+    net:hasRestrictionOnProperty net:atomProperty_hasPart_p9 .
+
+ns3:FrameRole a ns21:Role,
+        owl:Class,
+        owl:NamedIndividual ;
+    rdfs:label "AMR-PropBank-Role" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+:AMR_Element a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:AMR_Term_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+:role_ARG0 a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG0" .
+
+:role_ARG1 a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG1" .
+
+net:atomProperty_direct_d a net:Atom_Property_Net ;
+    net:coverBaseNode :leaf_direct-02_d ;
+    net:coverNode :leaf_direct-02_d ;
+    net:hasNaming "direct" ;
+    net:hasPropertyName "direct" ;
+    net:hasPropertyName01 "directing" ;
+    net:hasPropertyName10 "direct-by" ;
+    net:hasPropertyName12 "direct-of" ;
+    net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "SSC-01-01" ;
+    net:isCoreRoleLinked true ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:atomProperty_direct_d2 a net:Atom_Property_Net ;
+    :role_polarity net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:value_negative_blankNode ;
+    net:coverBaseNode :leaf_direct-02_d2 ;
+    net:coverNode :leaf_direct-02_d2 ;
+    net:hasNaming "direct" ;
+    net:hasPropertyName "direct" ;
+    net:hasPropertyName01 "directing" ;
+    net:hasPropertyName10 "direct-by" ;
+    net:hasPropertyName12 "direct-of" ;
+    net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "SSC-01-01" ;
+    net:isCoreRoleLinked true ;
+    net:targetArgumentNode :value_negative ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:atomProperty_hasPart_p9 a net:Atom_Property_Net ;
+    :role_ARG0 net:atomClass_system_s,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:compositeClass_system-hasPart-sun-and-object-hasPart-object_s,
+        net:compositeClass_system-hasPart-sun-and-object-hasPart-sun_s,
+        net:compositeClass_system-hasPart-sun-and-object_s ;
+    :role_ARG1 net:atomClass_object_o,
+        net:atomClass_sun_s2,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:logicalSet_and_a,
+        net:phenomena_conjunction-AND_a ;
+    net:coverBaseNode :leaf_hasPart_p9 ;
+    net:coverNode :leaf_hasPart_p9 ;
+    net:hasNaming "hasPart" ;
+    net:hasPropertyName "hasPart" ;
+    net:hasPropertyName01 "hasPart" ;
+    net:hasPropertyName10 "hasPart" ;
+    net:hasPropertyName12 "hasPart" ;
+    net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "SSC-01-01" ;
+    net:isCoreRoleLinked true ;
+    net:targetArgumentNode :leaf_and_a,
+        :leaf_system_s ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:compositeProperty_not-direct_d2 a net:Composite_Property_Net ;
+    :role_polarity net:compositeClass_orbit-hasManner-conjunction-OR_o2 ;
+    net:coverBaseNode :leaf_direct-02_d2 ;
+    net:coverNode :leaf_direct-02_d2 ;
+    net:hasNaming "not-direct" ;
+    net:hasPropertyName "not-direct" ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:typeProperty a owl:AnnotationProperty ;
+    rdfs:label "type property" .
+
+:AMR_NonCore_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+:AMR_Predicat_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+:AMR_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+:leaf_bind-01_b a :AMR_Leaf ;
+    :edge_b_ARG0_g :leaf_gravitation_g ;
+    :edge_b_ARG1_s :leaf_system_s ;
+    :hasConcept :concept_bind-01 ;
+    :hasVariable :variable_b .
+
+:leaf_direct-02_d2 a :AMR_Leaf ;
+    :edge_d2_polarity_negative :value_negative ;
+    :hasConcept :concept_direct-02 ;
+    :hasVariable :variable_d2 .
+
+:leaf_or_o3 a :AMR_Leaf ;
+    :edge_o3_op1_d :leaf_direct-02_d ;
+    :edge_o3_op2_d2 :leaf_direct-02_d2 ;
+    :hasConcept :concept_or ;
+    :hasVariable :variable_o3 .
+
+:leaf_orbit-01_o2 a :AMR_Leaf ;
+    :edge_o2_ARG0_o :leaf_object_o ;
+    :edge_o2_ARG1_s2 :leaf_sun_s2 ;
+    :hasConcept :concept_orbit-01 ;
+    :hasVariable :variable_o2 .
+
+:leaf_system_p a :AMR_Leaf ;
+    :edge_p_name_SolarSystem :value_SolarSystem ;
+    :hasConcept :concept_system ;
+    :hasVariable :variable_p .
+
+sys:Out_Structure a owl:Class ;
+    rdfs:label "Output Ontology Structure" .
+
+net:Atom_Class_Net a owl:Class ;
+    rdfs:subClassOf net:Class_Net .
+
+net:Composite_Class_Net a owl:Class ;
+    rdfs:subClassOf net:Class_Net .
+
+net:individual_system_SolarSystem a net:Individual_Net ;
+    :role_name net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:value_SolarSystem_blankNode ;
+    net:coverBaseNode :leaf_system_p ;
+    net:coverNode :leaf_system_p ;
+    net:hasIndividualLabel "Solar System" ;
+    net:hasMotherClassName net:atomClass_system_p ;
+    net:hasMotherClassNet net:atomClass_system_p,
+        net:atomClass_system_s,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:compositeClass_system-hasPart-sun-and-object-hasPart-object_s,
+        net:compositeClass_system-hasPart-sun-and-object-hasPart-sun_s,
+        net:compositeClass_system-hasPart-sun-and-object_s ;
+    net:hasNaming "system" ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:netProperty a owl:AnnotationProperty ;
+    rdfs:label "netProperty" .
+
+:AMR_ObjectProperty a owl:ObjectProperty ;
+    rdfs:subPropertyOf owl:topObjectProperty .
+
+:AMR_Structure a owl:Class .
+
+cprm:configParamProperty a rdf:Property ;
+    rdfs:label "Config Parameter Property" .
+
+net:Atom_Property_Net a owl:Class ;
+    rdfs:subClassOf net:Property_Net .
+
+net:Net_Structure a owl:Class ;
+    rdfs:label "Semantic Net Structure" ;
+    rdfs:comment "A semantic net captures a set of nodes, and associates this set with type(s) and value(s)." .
+
+net:atomClass_system_s a net:Atom_Class_Net,
+        net:Deprecated_Net ;
+    :role_domain net:atomClass_system_p,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:individual_system_SolarSystem ;
+    net:coverBaseNode :leaf_system_s ;
+    net:coverNode :leaf_system_s ;
+    net:coverNodeCount 1 ;
+    net:hasClassName "system" ;
+    net:hasClassType sys:Entity ;
+    net:hasMotherClassNet net:atomClass_system_p,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2 ;
+    net:hasNaming "system" ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:compositeClass_system-hasPart-sun-and-object_s a net:Composite_Class_Net ;
+    :role_domain net:atomClass_system_p,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:individual_system_SolarSystem ;
+    net:coverBaseNode :leaf_system_s ;
+    net:coverNode :leaf_and_a,
+        :leaf_hasPart_p9,
+        :leaf_system_s ;
+    net:coverNodeCount 3 ;
+    net:hasClassName "system-hasPart-sun-and-object" ;
+    net:hasClassType sys:Entity ;
+    net:hasMotherClassNet net:atomClass_system_p,
+        net:atomClass_system_s,
+        net:compositeClass_orbit-hasManner-conjunction-OR_o2 ;
+    net:hasNaming "system-hasPart-sun-and-object" ;
+    net:hasRestriction01 net:restriction_hasPart_object,
+        net:restriction_hasPart_sun ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackMainNetComposante net:atomClass_system_s ;
+    net:trackNetComposante net:atomClass_system_s,
+        net:atomProperty_hasPart_p9,
+        net:logicalSet_and_a ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+rdf:Property a owl:Class .
+
+:AMR_Relation a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+net:Relation a owl:Class ;
+    rdfs:subClassOf net:Net_Structure .
+
+:leaf_gravitation_g a :AMR_Leaf ;
+    :hasConcept :concept_gravitation ;
+    :hasVariable :variable_g .
+
+:leaf_object_o a :AMR_Leaf ;
+    :hasConcept :concept_object ;
+    :hasVariable :variable_o .
+
+:leaf_sun_s2 a :AMR_Leaf ;
+    :hasConcept :concept_sun ;
+    :hasVariable :variable_s2 .
+
+net:Net a owl:Class ;
+    rdfs:subClassOf net:Net_Structure .
+
+net:Type a owl:Class ;
+    rdfs:label "Semantic Net Type" ;
+    rdfs:subClassOf net:Net_Structure .
+
+net:has_object a owl:AnnotationProperty ;
+    rdfs:label "relation" ;
+    rdfs:subPropertyOf net:netProperty .
+
+:AMR_Op_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+net:atomClass_object_o a net:Atom_Class_Net ;
+    net:coverBaseNode :leaf_object_o ;
+    net:coverNode :leaf_object_o ;
+    net:coverNodeCount 1 ;
+    net:hasClassName "object" ;
+    net:hasClassType sys:Entity ;
+    net:hasNaming "object" ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+net:atomClass_sun_s2 a net:Atom_Class_Net ;
+    net:coverBaseNode :leaf_sun_s2 ;
+    net:coverNode :leaf_sun_s2 ;
+    net:coverNodeCount 1 ;
+    net:hasClassName "sun" ;
+    net:hasClassType sys:Entity ;
+    net:hasNaming "sun" ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+:AMR_AnnotationProperty a owl:AnnotationProperty .
+
+:AMR_Core_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+sys:Entity a owl:Class ;
+    rdfs:subClassOf sys:Out_Structure .
+
+:leaf_hasPart_p9 a :AMR_Leaf ;
+    :edge_p9_ARG0_s :leaf_system_s ;
+    :edge_p9_ARG1_a :leaf_and_a ;
+    :hasConcept :concept_part ;
+    :hasVariable :variable_p9 ;
+    :isReifiedLeaf true .
+
+net:atomClass_system_p a net:Atom_Class_Net ;
+    :role_name net:compositeClass_orbit-hasManner-conjunction-OR_o2,
+        net:value_SolarSystem_blankNode ;
+    net:coverBaseNode :leaf_system_p ;
+    net:coverNode :leaf_system_p ;
+    net:coverNodeCount 1 ;
+    net:hasClassName "system" ;
+    net:hasNaming "system" ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackProgress net:initialized,
+        net:relation_propagated .
+
+:AMR_Variable a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+:leaf_and_a a :AMR_Leaf ;
+    :edge_a_op1_s2 :leaf_sun_s2 ;
+    :edge_a_op2_o :leaf_object_o ;
+    :hasConcept :concept_and ;
+    :hasVariable :variable_a .
+
+:AMR_Leaf a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+net:objectValue a owl:AnnotationProperty ;
+    rdfs:label "valuations"@fr ;
+    rdfs:subPropertyOf net:objectProperty .
+
+:AMR_Edge a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:leaf_system_s a :AMR_Leaf ;
+    :edge_s_domain_p :leaf_system_p ;
+    :hasConcept :concept_system ;
+    :hasVariable :variable_s .
+
+net:compositeClass_orbit-hasManner-conjunction-OR_o2 a net:Composite_Class_Net ;
+    :role_ARG0 net:atomClass_object_o ;
+    :role_ARG1 net:atomClass_sun_s2 ;
+    :role_domain net:atomClass_system_p,
+        net:individual_system_SolarSystem ;
+    :role_op1 net:atomClass_sun_s2,
+        net:atomProperty_direct_d ;
+    :role_op2 net:atomClass_object_o,
+        net:atomProperty_direct_d2,
+        net:compositeProperty_not-direct_d2 ;
+    net:coverNode :leaf_hasManner_m9,
+        :leaf_or_o3,
+        :leaf_orbit-01_o2 ;
+    net:coverNodeCount 3 ;
+    net:hasClassType sys:Entity ;
+    net:hasMotherClassNet net:atomClass_system_p ;
+    net:hasStructure "SSC-01-01" ;
+    net:trackMainNetComposante net:atomProperty_orbit_o2 ;
+    net:trackNetComposante net:atomProperty_direct_d,
+        net:atomProperty_direct_d2,
+        net:atomProperty_hasManner_m9,
+        net:atomProperty_orbit_o2,
+        net:compositeProperty_not-direct_d2,
+        net:phenomena_conjunction-OR_o3 ;
+    net:trackProgress net:relation_propagated .
+
+:AMR_Linked_Data a owl:Class .
+
+[] a owl:AllDisjointClasses ;
+    owl:members ( sys:Degree sys:Entity sys:Feature ) .
+
diff --git a/tests/test_tenet_rule.py b/tests/test_tenet_rule.py
index 35469dcc..f21e6972 100644
--- a/tests/test_tenet_rule.py
+++ b/tests/test_tenet_rule.py
@@ -9,6 +9,8 @@
 
 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/'
@@ -16,7 +18,7 @@ OUTPUT_DIR_PATH = f'{FILE_PATH}/output/'
 TEST_GRAPH = f'{INPUT_DIR_PATH}testGraph1.ttl'
 
 from context import tenet
-from tenet.febTransduction import query_builder
+from tenet.febTransduction import phenomena_application_or
 
 INDENT_STR = '            '
 
@@ -41,27 +43,34 @@ print('\n *** Development Test ***')
 
 print(f'\n -- Test Graph Loading')
 work_graph = Graph()
+work_graph.bind('net', Namespace('https://tenet.tetras-libre.fr/semantic-net#'))
 work_graph.parse(TEST_GRAPH)
 print(f"----- Graph Loaded ({len(work_graph)})")
 
-print(f'\n -- Test Nets')
-property_net = '?property_net'
-class_net_0 = '?class_net_0'
-phenomena_net = '?phenomena_net'
+# print(f'\n -- Test Nets')
+# property_net = '?property_net'
+# class_net_0 = '?class_net_0'
+# phenomena_net = '?phenomena_net'
 
 print(f'\n -- Select Query Test')
-select_data_list = [class_net_0, property_net, phenomena_net]
-composition_pattern_list = []
-composition_pattern_list.append((property_net, 'amr:role_ARG0', class_net_0))
-composition_pattern_list.append((property_net, 'amr:role_ARG1', phenomena_net))
-clause_list = define_clause_list(composition_pattern_list)
-test_query = query_builder.generate_select_query(select_data_list, clause_list)
-print(test_query)
-query_result = work_graph.query(test_query)
-for row in query_result:
-    print(f"{row.class_net_0} - {row.property_net} - {row.phenomena_net} ")
-    
-    
+
+# select_data_list = [class_net_0, property_net, phenomena_net]
+# composition_pattern_list = []
+# composition_pattern_list.append((property_net, 'amr:role_ARG0', class_net_0))
+# composition_pattern_list.append((property_net, 'amr:role_ARG1', phenomena_net))
+# clause_list = define_clause_list(composition_pattern_list)
+# test_query = query_builder.generate_select_query(select_data_list, clause_list)
+# print(test_query)
+# query_result = work_graph.query(test_query)
+pattern_result_set = phenomena_application_or.apply_or_phenomena_pattern_1(work_graph)
+
+print(f'\n *** Select Result ***')
+for selection in pattern_result_set:
+    result_str = f'>>> '
+    result_str += f'{selection.class_net_0.n3(work_graph.namespace_manager)}'
+    result_str += f' {selection.property_net.n3(work_graph.namespace_manager)}'
+    result_str += f' {selection.phenomena_net.n3(work_graph.namespace_manager)}'
+    print(result_str) 
 
 print(f'\n -- Insert Query Test')
 triple_list = ['net:net1 a net:ClassNet.', 
-- 
GitLab