From 16cca79aa5e5a75d16866ccd46469d73091cac17 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Lamercerie?=
 <aurelien.lamercerie@tetras-libre.fr>
Date: Thu, 13 Apr 2023 23:50:07 +0200
Subject: [PATCH] Minimal AMR Rule: generation.odrl_rule_generator

---
 .../odrl_generation/odrl_rule_generator.py    |  32 +-
 tenet/tenet.log                               |  84 +-
 .../odrl-generation-devGraph-1.result.ttl     | 897 ++++++++++++++++
 .../test_data/odrl-generation-devGraph-1.ttl  | 893 ++++++++++++++++
 .../test_data/odrl-generation-devGraph-2.ttl  | 956 +++++++++++++++++
 .../test_data/odrl-generation-devGraph-3.ttl  | 986 ++++++++++++++++++
 tests/dev_tests/test_rule_odrl_generator.py   | 143 +++
 7 files changed, 3937 insertions(+), 54 deletions(-)
 create mode 100644 tests/dev_tests/test_data/odrl-generation-devGraph-1.result.ttl
 create mode 100644 tests/dev_tests/test_data/odrl-generation-devGraph-1.ttl
 create mode 100644 tests/dev_tests/test_data/odrl-generation-devGraph-2.ttl
 create mode 100644 tests/dev_tests/test_data/odrl-generation-devGraph-3.ttl
 create mode 100644 tests/dev_tests/test_rule_odrl_generator.py

diff --git a/tenet/scheme/amr_clara_rule/odrl_generation/odrl_rule_generator.py b/tenet/scheme/amr_clara_rule/odrl_generation/odrl_rule_generator.py
index b86851d8..4fc6e2b2 100644
--- a/tenet/scheme/amr_clara_rule/odrl_generation/odrl_rule_generator.py
+++ b/tenet/scheme/amr_clara_rule/odrl_generation/odrl_rule_generator.py
@@ -26,7 +26,7 @@ from transduction.naming_computer import define_composite_naming_2
        
 def __search_pattern_1(graph):
     select_data_list = ['?rule_net']
-    clause_list = [(f'?rule_net a net:Rule_Net.')]
+    clause_list = [f'?rule_net a net:Rule_Net.']
     query_code = generate_select_query(graph, select_data_list, clause_list)
     result_set = graph.query(query_code) 
     return query_code, result_set
@@ -59,20 +59,31 @@ def __is_property_to_generate(property_net):
 # Generator Methods
 #==============================================================================
 
-def __compute_policy_uri(graph, net):        
-    return produce_uriref(graph, f'ext-out:policy_{net.structure}')
+def __compute_policy_uri(graph, net):    
+    structure_name = net.get_attribute_first_value(net.structure)    
+    return produce_uriref(graph, f'ext-out:policy_{structure_name}')
 
 
 def __compute_odrl_rule_type_uri(graph, net):
-    odrl_rule_type_uri = f'odrl:permission'
-    # TODO: odrl:permission, odrl;obligation, odrl:prohibition
+    naming = net.get_attribute_first_value(net.rule_relation_name)  
+    odrl_rule_type_uri = f'odrl:{naming}'
     return produce_uriref(graph, odrl_rule_type_uri)
 
 
-def __generate_odrl_triple_definition(graph, net):     
-    policy_uri = __compute_policy_uri(graph, net)       
-    odrl_rule_type_uri = __compute_odrl_rule_type_uri(graph, net)      
-    action_definition = produce_literal(graph, 'net:x') 
+def __compute_odrl_action_code(graph, rule_net):
+    action_net_uri = rule_net.get_attribute_first_value(rule_net.rule_action_net)
+    if action_net_uri is not None:
+        print(action_net_uri)
+        action_net_uri = produce_uriref(graph, action_net_uri)
+        print(action_net_uri)
+        action_net = net.ActionNet(graph, action_net_uri)
+    return produce_literal(graph, 'net:x') 
+
+
+def __generate_odrl_triple_definition(graph, rule_net):     
+    policy_uri = __compute_policy_uri(graph, rule_net)       
+    odrl_rule_type_uri = __compute_odrl_rule_type_uri(graph, rule_net)      
+    action_definition = __compute_odrl_action_code(graph, rule_net)     
     # print(f'{policy_uri}, {odrl_rule_type_uri}, {action_definition}')
     return [(policy_uri, odrl_rule_type_uri, action_definition)]
 
@@ -91,8 +102,9 @@ def generate_odrl_rule(graph):
     # -- Get property net listings
     _, pattern_set = __search_pattern_1(graph)
     
-    # # -- Triple Definition for 'not deprecated property net'
+    # -- Triple Definition for 'not deprecated property net'
     for pattern in pattern_set:
+        print(pattern.rule_net)
         rule_net = net.RuleNet(graph, pattern.rule_net)
         if not rule_net.is_deprecated():
             rule_triple_list += __generate_odrl_triple_definition(graph, rule_net)
diff --git a/tenet/tenet.log b/tenet/tenet.log
index 826e43a3..57aa8e28 100644
--- a/tenet/tenet.log
+++ b/tenet/tenet.log
@@ -1,11 +1,6 @@
-- INFO - [TENET] Extraction Processing
-- INFO - 
- === Process Initialization === 
-- INFO - -- Process Setting 
-- INFO - ----- Corpus source: /home/lamenji/Workspace/Tetras/tenet/tests/input/amrDocuments/dev/asail_odrl_sentences/s03.stog.amr.ttl (amr)
-- INFO - ----- Base output dir: /home/lamenji/Workspace/Tetras/tenet/tests/output/aos03-20230413/aos03_factoid.ttl
-- INFO - ----- technical dir path: /home/lamenji/Workspace/Tetras/tenet/tests/output/aos03-20230413/technical-data/
-- INFO - ----- Ontology target (id): https://tenet.tetras-libre.fr/demo/clara/03/
+- DEBUG - handle_close[ddbf9d58da4311edb5fe14abc581ea52]({'header': {'msg_id': '31fe189f-aad39126dac2f71a0a08fe6f_50868_88', 'msg_type': 'comm_close', 'username': 'lamenji', 'session': '31fe189f-aad39126dac2f71a0a08fe6f', 'date': datetime.datetime(2023, 4, 13, 21, 48, 47, 997618, tzinfo=tzutc()), 'version': '5.3'}, 'msg_id': '31fe189f-aad39126dac2f71a0a08fe6f_50868_88', 'msg_type': 'comm_close', 'parent_header': {}, 'metadata': {}, 'content': {'comm_id': 'ddbf9d58da4311edb5fe14abc581ea52', 'data': {}}, 'buffers': []})
+)
+/tenet.tetras-libre.fr/demo/clara/03/
 - INFO - ----- Current path: /home/lamenji/Workspace/Tetras/tenet/tenet
 - DEBUG - ----- Config file: /home/lamenji/Workspace/Tetras/tenet/tenet/config.xml
 - DEBUG - 
@@ -72,25 +67,25 @@
 - DEBUG - ----- Total rule number: 87
 - INFO - -- Applying extraction step: preprocessing
 - INFO - --- *** November Transduction *** Sequence: amrld-correcting-sequence
-- DEBUG - ----- fix-amr-bug-about-system-solar-planet: 0/0 new triple (551, 0:00:00.026522)
+- DEBUG - ----- fix-amr-bug-about-system-solar-planet: 0/0 new triple (551, 0:00:00.027755)
 - INFO - --- *** November Transduction *** Sequence: amr-reification-sequence
-- INFO - ----- reclassify-concept-1: 5/5 new triples (556, 0:00:00.105608)
-- DEBUG - ----- reclassify-concept-2: 0/0 new triple (556, 0:00:00.064289)
-- INFO - ----- reclassify-concept-3: 4/4 new triples (560, 0:00:00.048410)
-- INFO - ----- reclassify-concept-4: 4/4 new triples (564, 0:00:00.058512)
-- INFO - ----- reclassify-concept-5: 4/4 new triples (568, 0:00:00.041019)
-- DEBUG - ----- reify-roles-as-concept: 0/0 new triple (568, 0:00:00.043750)
-- INFO - ----- reclassify-existing-variable: 17/17 new triples (585, 0:00:00.031118)
-- DEBUG - ----- add-new-variable-for-reified-concept: 0/0 new triple (585, 0:00:00.042439)
-- INFO - ----- add-amr-leaf-for-reclassified-concept: 12/12 new triples (597, 0:00:00.040535)
-- DEBUG - ----- add-amr-leaf-for-reified-concept: 0/0 new triple (597, 0:00:00.039820)
-- INFO - ----- add-amr-edge-for-core-relation: 9/9 new triples (606, 0:00:00.092282)
-- DEBUG - ----- add-amr-edge-for-reified-concept: 0/0 new triple (606, 0:00:00.083474)
-- INFO - ----- add-amr-edge-for-name-relation: 5/5 new triples (611, 0:00:00.080671)
-- DEBUG - ----- add-value-for-quant-relation: 0/0 new triple (611, 0:00:00.079411)
-- INFO - ----- add-amr-edge-for-polarity-relation: 5/5 new triples (616, 0:00:00.081605)
-- INFO - ----- update-amr-edge-role-1: 5/5 new triples (621, 0:00:00.050274)
-- INFO - ----- add-amr-root: 5/5 new triples (626, 0:00:00.032472)
+- INFO - ----- reclassify-concept-1: 5/5 new triples (556, 0:00:00.096391)
+- DEBUG - ----- reclassify-concept-2: 0/0 new triple (556, 0:00:00.052021)
+- INFO - ----- reclassify-concept-3: 4/4 new triples (560, 0:00:00.046134)
+- INFO - ----- reclassify-concept-4: 4/4 new triples (564, 0:00:00.056738)
+- INFO - ----- reclassify-concept-5: 4/4 new triples (568, 0:00:00.042466)
+- DEBUG - ----- reify-roles-as-concept: 0/0 new triple (568, 0:00:00.039816)
+- INFO - ----- reclassify-existing-variable: 17/17 new triples (585, 0:00:00.028319)
+- DEBUG - ----- add-new-variable-for-reified-concept: 0/0 new triple (585, 0:00:00.059122)
+- INFO - ----- add-amr-leaf-for-reclassified-concept: 12/12 new triples (597, 0:00:00.041588)
+- DEBUG - ----- add-amr-leaf-for-reified-concept: 0/0 new triple (597, 0:00:00.034341)
+- INFO - ----- add-amr-edge-for-core-relation: 9/9 new triples (606, 0:00:00.095954)
+- DEBUG - ----- add-amr-edge-for-reified-concept: 0/0 new triple (606, 0:00:00.079685)
+- INFO - ----- add-amr-edge-for-name-relation: 5/5 new triples (611, 0:00:00.101049)
+- DEBUG - ----- add-value-for-quant-relation: 0/0 new triple (611, 0:00:00.078799)
+- INFO - ----- add-amr-edge-for-polarity-relation: 5/5 new triples (616, 0:00:00.084544)
+- INFO - ----- update-amr-edge-role-1: 5/5 new triples (621, 0:00:00.045121)
+- INFO - ----- add-amr-root: 5/5 new triples (626, 0:00:00.030758)
 - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_clara_03_preprocessing 
 - DEBUG - ----- step: preprocessing
 - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/clara/03/
@@ -99,25 +94,25 @@
 - INFO - ----- 75 triples extracted during preprocessing step
 - INFO - -- Applying extraction step: transduction
 - INFO - --- *** February Transduction *** Sequence: atomic extraction sequence
-- INFO - ----- extract atom classes: 12/12 new triples (638, 0:00:00.069749)
-- INFO - ----- extract atom individuals: 7/7 new triples (645, 0:00:00.050061)
-- INFO - ----- extract atomic properties: 13/13 new triples (658, 0:00:00.127397)
-- INFO - ----- extract atom values: 10/10 new triples (668, 0:00:00.050948)
-- INFO - ----- extract atom phenomena: 7/7 new triples (675, 0:00:00.041708)
-- INFO - ----- propagate atom relations: 11/22 new triples (686, 0:00:00.311171)
+- INFO - ----- extract atom classes: 12/12 new triples (638, 0:00:00.067803)
+- INFO - ----- extract atom individuals: 7/7 new triples (645, 0:00:00.047774)
+- INFO - ----- extract atomic properties: 13/13 new triples (658, 0:00:00.049456)
+- INFO - ----- extract atom values: 10/10 new triples (668, 0:00:00.062454)
+- INFO - ----- extract atom phenomena: 7/7 new triples (675, 0:00:00.038464)
+- INFO - ----- propagate atom relations: 11/22 new triples (686, 0:00:00.419121)
 - INFO - --- *** February Transduction *** Sequence: phenomena analyze sequence (1)
-- DEBUG - ----- analyze "polarity" phenomena (1): 0/0 new triple (686, 0:00:00.009125)
-- INFO - ----- analyze "polarity" phenomena (2): 12/14 new triples (698, 0:00:00.076581)
-- DEBUG - ----- analyze modifier phenomena (mod): 0/0 new triple (698, 0:00:00.009838)
+- DEBUG - ----- analyze "polarity" phenomena (1): 0/0 new triple (686, 0:00:00.009006)
+- INFO - ----- analyze "polarity" phenomena (2): 12/14 new triples (698, 0:00:00.052621)
+- DEBUG - ----- analyze modifier phenomena (mod): 0/0 new triple (698, 0:00:00.006898)
 - INFO - --- *** February Transduction *** Sequence: phenomena analyze sequence (2)
-- DEBUG - ----- analyze "or" phenomena (1): 0/0 new triple (698, 0:00:00.010714)
-- DEBUG - ----- analyze "or" phenomena (2): 0/0 new triple (698, 0:00:00.014737)
+- DEBUG - ----- analyze "or" phenomena (1): 0/0 new triple (698, 0:00:00.009443)
+- DEBUG - ----- analyze "or" phenomena (2): 0/0 new triple (698, 0:00:00.014862)
 - INFO - --- *** February Transduction *** Sequence: composite class extraction sequence
-- INFO - ----- extract composite classes (1): 23/24 new triples (721, 0:00:00.126944)
-- DEBUG - ----- extract composite classes (2): 0/0 new triple (721, 0:00:00.025372)
+- INFO - ----- extract composite classes (1): 23/24 new triples (721, 0:00:00.138688)
+- DEBUG - ----- extract composite classes (2): 0/0 new triple (721, 0:00:00.018134)
 - INFO - --- *** February Transduction *** Sequence: ODRL extraction sequence
-- INFO - ----- extract ODRL actions: 12/14 new triples (733, 0:00:00.093927)
-- INFO - ----- extract ODRL rules: 11/11 new triples (744, 0:00:00.116949)
+- INFO - ----- extract ODRL actions: 12/14 new triples (733, 0:00:00.095729)
+- INFO - ----- extract ODRL rules: 11/11 new triples (744, 0:00:00.115878)
 - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_clara_03_transduction 
 - DEBUG - ----- step: transduction
 - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/clara/03/
@@ -126,7 +121,7 @@
 - INFO - ----- 118 triples extracted during transduction step
 - INFO - -- Applying extraction step: generation
 - INFO - --- *** February Transduction *** Sequence: ODRL Rule Generation Sequence
-- INFO - ----- generate ODRL rule: 1/1 new triple (745, 0:00:00.016414)
+- INFO - ----- generate ODRL rule: 1/1 new triple (745, 0:00:00.039938)
 - DEBUG - --- Serializing graph to tenet.tetras-libre.fr_demo_clara_03_generation 
 - DEBUG - ----- step: generation
 - DEBUG - ----- id: https://tenet.tetras-libre.fr/demo/clara/03/
@@ -149,6 +144,7 @@
 - INFO - 
   *** Execution Time *** 
 ----- Function: create_ontology_from_amrld_file (tenet.main)
------ Total Time: 0:00:02.567053
------ Process Time: 0:00:02.538713
+----- Total Time: 0:00:02.715752
+----- Process Time: 0:00:02.630108
   *** - *** 
+- DEBUG - handle_close[c12677ced9db11edb5fe14abc581ea52]({'header': {'msg_id': 'ffab3b95-4abbba292202b266c50ed0- DEBUG - handle_close[dd509a52da2511edb5fe14abc581ea52]({'header': {'msg_id': 'd976c9c2-b0931d003eee38a633805abf_50868_28', 'msg_type': 'comm_close', 'username': 'lamenji', 'session': 'd976c9c2-b0931d003eee38a633805abf', 'date': datetime.datetime(2023, 4, 13, 21, 48, 47, 54497, tzinfo=tzutc()), 'version': '5.3'}, 'msg_id': 'd976c9c2-b0931d003eee38a633805abf_50868_28', 'msg_type': 'comm_close', 'parent_header': {}, 'metadata': {}, 'content': {'comm_id': 'dd509a52da2511edb5fe14abc581ea52', 'data': {}}, 'buffers': []})
diff --git a/tests/dev_tests/test_data/odrl-generation-devGraph-1.result.ttl b/tests/dev_tests/test_data/odrl-generation-devGraph-1.result.ttl
new file mode 100644
index 00000000..2a6c7a76
--- /dev/null
+++ b/tests/dev_tests/test_data/odrl-generation-devGraph-1.result.ttl
@@ -0,0 +1,897 @@
+@base <https://amr.tetras-libre.fr/rdf/odrl-generation-devGraph-1/result> .
+@prefix : <https://amr.tetras-libre.fr/rdf/schema#> .
+@prefix cprm: <https://tenet.tetras-libre.fr/config/parameters#> .
+@prefix ext-out: <https://tenet.tetras-libre.fr/extract-result#> .
+@prefix net: <https://tenet.tetras-libre.fr/semantic-net#> .
+@prefix ns1: <odrl:> .
+@prefix ns11: <http://amr.isi.edu/rdf/core-amr#> .
+@prefix ns2: <http://amr.isi.edu/rdf/amr-terms#> .
+@prefix ns21: <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#> .
+
+ns11:Concept a rdfs:Class,
+        owl:Class ;
+    rdfs:label "AMR-Concept" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:Role a rdfs:Class,
+        owl:Class ;
+    rdfs:label "AMR-Role" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/test-1#root01> ns11:hasID "test-1" ;
+    ns11:hasSentence "The sun is a star." ;
+    ns11:root <http://amr.isi.edu/amr_data/test-1#s> .
+
+<http://amr.isi.edu/amr_data/test-2#root01> ns11:hasID "test-2" ;
+    ns11:hasSentence "Earth is a planet." ;
+    ns11:root <http://amr.isi.edu/amr_data/test-2#p> .
+
+ns21:possible-01.ARG1 a ns21:FrameRole .
+
+ns21:use-01.ARG1 a ns21:FrameRole .
+
+ns2:domain a ns11:Role,
+        owl:AnnotationProperty,
+        owl:NamedIndividual .
+
+ns11:NamedEntity a ns11:Concept,
+        owl:Class,
+        owl:NamedIndividual ;
+    rdfs:label "AMR-EntityType",
+        "AMR-Term" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:hasID a owl:AnnotationProperty .
+
+ns11:hasSentence a owl:AnnotationProperty .
+
+ns11: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_m_name_9898 a :AMR_Edge ;
+    :hasAmrRole :role_name ;
+    :hasRoleID "name" .
+
+:edge_p_ARG1_u a :AMR_Edge ;
+    :hasAmrRole :role_ARG1 ;
+    :hasRoleID "ARG1" .
+
+:edge_u_ARG1_m a :AMR_Edge ;
+    :hasAmrRole :role_ARG1 ;
+    :hasRoleID "ARG1" .
+
+: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_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" .
+
+:phenomena_degree a owl:Class ;
+    rdfs:subClassOf :AMR_Phenomena ;
+    :hasConceptLink "have-degree-91" ;
+    :label "degree" .
+
+:phenomena_modality_obligation a owl:Class ;
+    rdfs:subClassOf :phenomena_modality ;
+    :hasConceptLink "obligate-01" ;
+    :label "obligation-modality" .
+
+:phenomena_modality_prohibition a owl:Class ;
+    rdfs:subClassOf :phenomena_modality ;
+    :label "prohibition-modality" .
+
+: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_ARG0 a owl:Class ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG0" .
+
+: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_domain a owl:Class ;
+    rdfs:subClassOf :AMR_NonCore_Role ;
+    :hasRelationName "domain" ;
+    :label "domain" ;
+    :toReifyAsConcept "domain" ;
+    :toReifyWithBaseEdge "ARG0" ;
+    :toReifyWithHeadEdge "ARG1" .
+
+: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_op1 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op1" .
+
+:role_op2 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op2" .
+
+: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_polarity a owl:Class ;
+    rdfs:subClassOf :AMR_Specific_Role ;
+    :label "polarity" .
+
+:role_quant a owl:Class ;
+    rdfs:subClassOf :AMR_Specific_Role ;
+    :label "quant" .
+
+:root_document-01 a :AMR_Root ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-01#root01> ;
+    :hasRootLeaf :leaf_possible-01_p ;
+    :hasSentenceID "document-01" ;
+    :hasSentenceStatement "Movie9898 can be used." .
+
+: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 .
+
+ext-out:policy_document-01 ns1:permission "net:x" .
+
+<https://tenet.tetras-libre.fr/semantic-net> a owl:Ontology .
+
+net:Composite_Class_Net a owl:Class ;
+    rdfs:subClassOf net:Class_Net .
+
+net:Composite_Property_Net a owl:Class ;
+    rdfs:subClassOf net:Property_Net .
+
+net:Deprecated_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Feature a owl:Class ;
+    rdfs:subClassOf net:Net_Structure .
+
+net:abstractionClass a owl:AnnotationProperty ;
+    rdfs:label "abstraction class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:atomType a owl:AnnotationProperty ;
+    rdfs:label "atom type" ;
+    rdfs:subPropertyOf net:objectType .
+
+net:entityClass a owl:AnnotationProperty ;
+    rdfs:label "entity class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+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:listGuiding a owl:AnnotationProperty ;
+    rdfs:label "Guiding connector of a list (or, and)" ;
+    rdfs:subPropertyOf net:objectValue .
+
+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:rule_permission_p a net:Rule_Net ;
+    net:composeFrom net:action_use_u,
+        net:phenomena_possible-modality_p ;
+    net:coverBaseNode :leaf_possible-01_p ;
+    net:coverNode :leaf_movie_m,
+        :leaf_possible-01_p,
+        :leaf_use-01_u ;
+    net:hasNaming "permission" ;
+    net:hasRuleActionURI net:action_use_u ;
+    net:hasRuleRelationName "permission" ;
+    net:hasStructure "document-01" .
+
+net:type a owl:AnnotationProperty ;
+    rdfs:label "type "@fr ;
+    rdfs:subPropertyOf net:netProperty .
+
+net:verbClass a owl:AnnotationProperty ;
+    rdfs:label "verb class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+<http://amr.isi.edu/amr_data/document-01#root01> a ns11:AMR ;
+    ns11:has-id "document-01" ;
+    ns11:has-sentence "Movie9898 can be used." ;
+    ns11:root <http://amr.isi.edu/amr_data/document-01#p> .
+
+<http://amr.isi.edu/amr_data/test-1#s> ns2:domain <http://amr.isi.edu/amr_data/test-1#s2> .
+
+<http://amr.isi.edu/amr_data/test-2#p> rdfs:label "Earth" .
+
+ns11:AMR a owl:Class ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+:AMR_Predicat_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+:AMR_Relation_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+:AMR_Root a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:AMR_Term_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+:AMR_Value a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+:concept_movie rdfs:subClassOf :AMR_Term_Concept ;
+    :fromAmrLk ns2:movie ;
+    :label "movie" .
+
+:concept_possible-01 rdfs:subClassOf :AMR_Relation_Concept ;
+    :fromAmrLk ns21:possible-01 ;
+    :hasPhenomenaLink :phenomena_modality_possible ;
+    :label "possible-01" .
+
+:concept_use-01 rdfs:subClassOf :AMR_Predicat_Concept ;
+    :fromAmrLk ns21:use-01 ;
+    :label "use-01" .
+
+:role_name a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_NonCore_Role ;
+    :label "name" .
+
+:variable_m a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-01#m> ;
+    :label "m" ;
+    :name "9898" .
+
+:variable_p a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-01#p> ;
+    :label "p" .
+
+:variable_u a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-01#u> ;
+    :label "u" .
+
+sys:Degree a owl:Class ;
+    rdfs:subClassOf sys:Out_Structure .
+
+sys:Entity 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:Action_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Atom_Class_Net a owl:Class ;
+    rdfs:subClassOf net:Class_Net .
+
+net:Atom_Property_Net a owl:Class ;
+    rdfs:subClassOf net:Property_Net .
+
+net:Individual_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Phenomena_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Rule_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Value_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:has_value a owl:AnnotationProperty ;
+    rdfs:subPropertyOf net:netProperty .
+
+net:individual_9898_m a net:Individual_Net ;
+    :role_name net:value_9898_blankNode ;
+    net:coverBaseNode :leaf_movie_m ;
+    net:coverNode :leaf_movie_m ;
+    net:hasIndividualLabel "9898" ;
+    net:hasMotherClassNet net:atomClass_movie_m ;
+    net:hasNaming "9898" ;
+    net:hasStructure "document-01" .
+
+net:objectType a owl:AnnotationProperty ;
+    rdfs:label "object type" ;
+    rdfs:subPropertyOf net:objectProperty .
+
+net:phenomena_possible-modality_p a net:Phenomena_Net ;
+    :role_ARG1 net:action_use_u,
+        net:atomProperty_use_u ;
+    net:coverBaseNode :leaf_possible-01_p ;
+    net:coverNode :leaf_possible-01_p ;
+    net:hasNaming "possible-modality" ;
+    net:hasPhenomenaRef "possible-01" ;
+    net:hasPhenomenaType :phenomena_modality_possible ;
+    net:hasStructure "document-01" .
+
+<http://amr.isi.edu/amr_data/document-01#m> a ns2:movie ;
+    rdfs:label "9898" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/document-01#p> a ns21:possible-01 ;
+    ns21:possible-01.ARG1 <http://amr.isi.edu/amr_data/document-01#u> ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/document-01#u> a ns21:use-01 ;
+    ns21:use-01.ARG1 <http://amr.isi.edu/amr_data/document-01#m> ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns21:FrameRole a ns11:Role,
+        owl:Class,
+        owl:NamedIndividual ;
+    rdfs:label "AMR-PropBank-Role" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns21:possible-01 a ns11:Frame ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns21:use-01 a ns11:Frame ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns2:movie a ns11:Concept ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:Frame a ns11:Concept,
+        owl:Class,
+        owl:NamedIndividual ;
+    rdfs:label "AMR-PropBank-Frame" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+: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_modality_possible a owl:Class ;
+    rdfs:subClassOf :phenomena_modality ;
+    :hasConceptLink "allow-01",
+        "grant-01",
+        "likely-01",
+        "permit-01",
+        "possible-01" ;
+    :label "possible-modality" .
+
+:role_ARG1 a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG1" .
+
+:value_9898 a :AMR_Value ;
+    rdfs:label "9898" .
+
+sys:Out_ObjectProperty a owl:ObjectProperty .
+
+net:Class_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Property_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Relation a owl:Class ;
+    rdfs:subClassOf net:Net_Structure .
+
+net:atomProperty_use_u a net:Atom_Property_Net ;
+    :role_ARG1 net:atomClass_movie_m,
+        net:individual_9898_m ;
+    net:coverBaseNode :leaf_use-01_u ;
+    net:coverNode :leaf_use-01_u ;
+    net:hasNaming "use" ;
+    net:hasPropertyName "use" ;
+    net:hasPropertyName01 "useing" ;
+    net:hasPropertyName10 "use-by" ;
+    net:hasPropertyName12 "use-of" ;
+    net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "document-01" ;
+    net:isCoreRoleLinked "true" ;
+    net:targetArgumentNode :leaf_movie_m .
+
+net:objectProperty a owl:AnnotationProperty ;
+    rdfs:label "object attribute" .
+
+net:value_9898_blankNode a net:Value_Net ;
+    net:coverAmrValue :value_9898 ;
+    net:hasNaming "9898" ;
+    net:hasStructure "document-01" ;
+    net:hasValueLabel "9898" .
+
+:AMR_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+:AMR_Phenomena a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:AMR_Specific_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+:AMR_Variable a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+: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 .
+
+:phenomena_modality a owl:Class ;
+    rdfs:subClassOf :AMR_Phenomena .
+
+:toReify a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :AMR_AnnotationProperty .
+
+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:action_use_u a net:Action_Net ;
+    net:composeFrom net:atomClass_movie_m,
+        net:atomProperty_use_u ;
+    net:coverBaseNode :leaf_use-01_u ;
+    net:coverNode :leaf_movie_m,
+        :leaf_use-01_u ;
+    net:hasActionName "use" ;
+    net:hasNaming "use" ;
+    net:hasStructure "document-01" ;
+    net:hasTargetNet net:atomClass_movie_m .
+
+net:has_relation_value a owl:AnnotationProperty ;
+    rdfs:label "has relation value" ;
+    rdfs:subPropertyOf net:has_object .
+
+:AMR_Element a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+net:atomClass_movie_m a net:Atom_Class_Net ;
+    :role_name net:value_9898_blankNode ;
+    net:coverBaseNode :leaf_movie_m ;
+    net:coverNode :leaf_movie_m ;
+    net:hasClassName "movie" ;
+    net:hasNaming "movie" ;
+    net:hasStructure "document-01" .
+
+:AMR_Leaf a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:AMR_NonCore_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+:AMR_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+:leaf_possible-01_p a :AMR_Leaf ;
+    :edge_p_ARG1_u :leaf_use-01_u ;
+    :hasConcept :concept_possible-01 ;
+    :hasVariable :variable_p .
+
+sys:Out_Structure a owl:Class ;
+    rdfs:label "Output Ontology Structure" .
+
+net:netProperty a owl:AnnotationProperty ;
+    rdfs:label "netProperty" .
+
+:AMR_Edge a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:AMR_ObjectProperty a owl:ObjectProperty ;
+    rdfs:subPropertyOf owl:topObjectProperty .
+
+:AMR_Structure a owl:Class .
+
+:leaf_use-01_u a :AMR_Leaf ;
+    :edge_u_ARG1_m :leaf_movie_m ;
+    :hasConcept :concept_use-01 ;
+    :hasVariable :variable_u .
+
+cprm:configParamProperty a rdf:Property ;
+    rdfs:label "Config Parameter Property" .
+
+rdf:Property a owl:Class .
+
+:AMR_Relation a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:leaf_movie_m a :AMR_Leaf ;
+    :edge_m_name_9898 :value_9898 ;
+    :hasConcept :concept_movie ;
+    :hasVariable :variable_m .
+
+net:Net a owl:Class ;
+    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 .
+
+:AMR_AnnotationProperty a owl:AnnotationProperty .
+
+:AMR_Core_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+:AMR_Linked_Data a owl:Class .
+
+net:objectValue a owl:AnnotationProperty ;
+    rdfs:label "valuations"@fr ;
+    rdfs:subPropertyOf net:objectProperty .
+
+[] a owl:AllDisjointClasses ;
+    owl:members ( sys:Degree sys:Entity sys:Feature ) .
+
diff --git a/tests/dev_tests/test_data/odrl-generation-devGraph-1.ttl b/tests/dev_tests/test_data/odrl-generation-devGraph-1.ttl
new file mode 100644
index 00000000..bbf66742
--- /dev/null
+++ b/tests/dev_tests/test_data/odrl-generation-devGraph-1.ttl
@@ -0,0 +1,893 @@
+@base <https://amr.tetras-libre.fr/rdf/odrl-rule-devGraph-1/result> .
+@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/core-amr#> .
+@prefix ns2: <http://amr.isi.edu/rdf/amr-terms#> .
+@prefix ns21: <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#> .
+
+ns11:Concept a rdfs:Class,
+        owl:Class ;
+    rdfs:label "AMR-Concept" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:Role a rdfs:Class,
+        owl:Class ;
+    rdfs:label "AMR-Role" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/test-1#root01> ns11:hasID "test-1" ;
+    ns11:hasSentence "The sun is a star." ;
+    ns11:root <http://amr.isi.edu/amr_data/test-1#s> .
+
+<http://amr.isi.edu/amr_data/test-2#root01> ns11:hasID "test-2" ;
+    ns11:hasSentence "Earth is a planet." ;
+    ns11:root <http://amr.isi.edu/amr_data/test-2#p> .
+
+ns21:possible-01.ARG1 a ns21:FrameRole .
+
+ns21:use-01.ARG1 a ns21:FrameRole .
+
+ns2:domain a ns11:Role,
+        owl:AnnotationProperty,
+        owl:NamedIndividual .
+
+ns11:NamedEntity a ns11:Concept,
+        owl:Class,
+        owl:NamedIndividual ;
+    rdfs:label "AMR-EntityType",
+        "AMR-Term" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:hasID a owl:AnnotationProperty .
+
+ns11:hasSentence a owl:AnnotationProperty .
+
+ns11: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_m_name_9898 a :AMR_Edge ;
+    :hasAmrRole :role_name ;
+    :hasRoleID "name" .
+
+:edge_p_ARG1_u a :AMR_Edge ;
+    :hasAmrRole :role_ARG1 ;
+    :hasRoleID "ARG1" .
+
+:edge_u_ARG1_m a :AMR_Edge ;
+    :hasAmrRole :role_ARG1 ;
+    :hasRoleID "ARG1" .
+
+: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_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" .
+
+:phenomena_degree a owl:Class ;
+    rdfs:subClassOf :AMR_Phenomena ;
+    :hasConceptLink "have-degree-91" ;
+    :label "degree" .
+
+:phenomena_modality_obligation a owl:Class ;
+    rdfs:subClassOf :phenomena_modality ;
+    :hasConceptLink "obligate-01" ;
+    :label "obligation-modality" .
+
+:phenomena_modality_prohibition a owl:Class ;
+    rdfs:subClassOf :phenomena_modality ;
+    :label "prohibition-modality" .
+
+: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_ARG0 a owl:Class ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG0" .
+
+: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_domain a owl:Class ;
+    rdfs:subClassOf :AMR_NonCore_Role ;
+    :hasRelationName "domain" ;
+    :label "domain" ;
+    :toReifyAsConcept "domain" ;
+    :toReifyWithBaseEdge "ARG0" ;
+    :toReifyWithHeadEdge "ARG1" .
+
+: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_op1 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op1" .
+
+:role_op2 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op2" .
+
+: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_polarity a owl:Class ;
+    rdfs:subClassOf :AMR_Specific_Role ;
+    :label "polarity" .
+
+:role_quant a owl:Class ;
+    rdfs:subClassOf :AMR_Specific_Role ;
+    :label "quant" .
+
+:root_document-01 a :AMR_Root ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-01#root01> ;
+    :hasRootLeaf :leaf_possible-01_p ;
+    :hasSentenceID "document-01" ;
+    :hasSentenceStatement "Movie9898 can be used." .
+
+: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:Composite_Class_Net a owl:Class ;
+    rdfs:subClassOf net:Class_Net .
+
+net:Composite_Property_Net a owl:Class ;
+    rdfs:subClassOf net:Property_Net .
+
+net:Deprecated_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Feature a owl:Class ;
+    rdfs:subClassOf net:Net_Structure .
+
+net:abstractionClass a owl:AnnotationProperty ;
+    rdfs:label "abstraction class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:atomType a owl:AnnotationProperty ;
+    rdfs:label "atom type" ;
+    rdfs:subPropertyOf net:objectType .
+
+net:entityClass a owl:AnnotationProperty ;
+    rdfs:label "entity class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+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:listGuiding a owl:AnnotationProperty ;
+    rdfs:label "Guiding connector of a list (or, and)" ;
+    rdfs:subPropertyOf net:objectValue .
+
+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:rule_permission_p a net:Rule_Net ;
+    net:composeFrom net:action_use_u,
+        net:phenomena_possible-modality_p ;
+    net:coverBaseNode :leaf_possible-01_p ;
+    net:coverNode :leaf_movie_m,
+        :leaf_possible-01_p,
+        :leaf_use-01_u ;
+    net:hasNaming "permission" ;
+    net:hasRuleActionURI net:action_use_u ;
+    net:hasRuleRelationName "permission" ;
+    net:hasStructure "document-01" .
+
+net:type a owl:AnnotationProperty ;
+    rdfs:label "type "@fr ;
+    rdfs:subPropertyOf net:netProperty .
+
+net:verbClass a owl:AnnotationProperty ;
+    rdfs:label "verb class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+<http://amr.isi.edu/amr_data/document-01#root01> a ns11:AMR ;
+    ns11:has-id "document-01" ;
+    ns11:has-sentence "Movie9898 can be used." ;
+    ns11:root <http://amr.isi.edu/amr_data/document-01#p> .
+
+<http://amr.isi.edu/amr_data/test-1#s> ns2:domain <http://amr.isi.edu/amr_data/test-1#s2> .
+
+<http://amr.isi.edu/amr_data/test-2#p> rdfs:label "Earth" .
+
+ns11:AMR a owl:Class ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+:AMR_Predicat_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+:AMR_Relation_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+:AMR_Root a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:AMR_Term_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+:AMR_Value a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+:concept_movie rdfs:subClassOf :AMR_Term_Concept ;
+    :fromAmrLk ns2:movie ;
+    :label "movie" .
+
+:concept_possible-01 rdfs:subClassOf :AMR_Relation_Concept ;
+    :fromAmrLk ns21:possible-01 ;
+    :hasPhenomenaLink :phenomena_modality_possible ;
+    :label "possible-01" .
+
+:concept_use-01 rdfs:subClassOf :AMR_Predicat_Concept ;
+    :fromAmrLk ns21:use-01 ;
+    :label "use-01" .
+
+:role_name a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_NonCore_Role ;
+    :label "name" .
+
+:variable_m a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-01#m> ;
+    :label "m" ;
+    :name "9898" .
+
+:variable_p a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-01#p> ;
+    :label "p" .
+
+:variable_u a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-01#u> ;
+    :label "u" .
+
+sys:Degree a owl:Class ;
+    rdfs:subClassOf sys:Out_Structure .
+
+sys:Entity 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:Action_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Atom_Class_Net a owl:Class ;
+    rdfs:subClassOf net:Class_Net .
+
+net:Atom_Property_Net a owl:Class ;
+    rdfs:subClassOf net:Property_Net .
+
+net:Individual_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Phenomena_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Rule_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Value_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:has_value a owl:AnnotationProperty ;
+    rdfs:subPropertyOf net:netProperty .
+
+net:individual_9898_m a net:Individual_Net ;
+    :role_name net:value_9898_blankNode ;
+    net:coverBaseNode :leaf_movie_m ;
+    net:coverNode :leaf_movie_m ;
+    net:hasIndividualLabel "9898" ;
+    net:hasMotherClassNet net:atomClass_movie_m ;
+    net:hasNaming "9898" ;
+    net:hasStructure "document-01" .
+
+net:objectType a owl:AnnotationProperty ;
+    rdfs:label "object type" ;
+    rdfs:subPropertyOf net:objectProperty .
+
+net:phenomena_possible-modality_p a net:Phenomena_Net ;
+    :role_ARG1 net:action_use_u,
+        net:atomProperty_use_u ;
+    net:coverBaseNode :leaf_possible-01_p ;
+    net:coverNode :leaf_possible-01_p ;
+    net:hasNaming "possible-modality" ;
+    net:hasPhenomenaRef "possible-01" ;
+    net:hasPhenomenaType :phenomena_modality_possible ;
+    net:hasStructure "document-01" .
+
+<http://amr.isi.edu/amr_data/document-01#m> a ns2:movie ;
+    rdfs:label "9898" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/document-01#p> a ns21:possible-01 ;
+    ns21:possible-01.ARG1 <http://amr.isi.edu/amr_data/document-01#u> ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/document-01#u> a ns21:use-01 ;
+    ns21:use-01.ARG1 <http://amr.isi.edu/amr_data/document-01#m> ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns21:FrameRole a ns11:Role,
+        owl:Class,
+        owl:NamedIndividual ;
+    rdfs:label "AMR-PropBank-Role" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns21:possible-01 a ns11:Frame ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns21:use-01 a ns11:Frame ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns2:movie a ns11:Concept ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:Frame a ns11:Concept,
+        owl:Class,
+        owl:NamedIndividual ;
+    rdfs:label "AMR-PropBank-Frame" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+: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_modality_possible a owl:Class ;
+    rdfs:subClassOf :phenomena_modality ;
+    :hasConceptLink "allow-01",
+        "grant-01",
+        "likely-01",
+        "permit-01",
+        "possible-01" ;
+    :label "possible-modality" .
+
+:role_ARG1 a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG1" .
+
+:value_9898 a :AMR_Value ;
+    rdfs:label "9898" .
+
+sys:Out_ObjectProperty a owl:ObjectProperty .
+
+net:Class_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Property_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Relation a owl:Class ;
+    rdfs:subClassOf net:Net_Structure .
+
+net:atomProperty_use_u a net:Atom_Property_Net ;
+    :role_ARG1 net:atomClass_movie_m,
+        net:individual_9898_m ;
+    net:coverBaseNode :leaf_use-01_u ;
+    net:coverNode :leaf_use-01_u ;
+    net:hasNaming "use" ;
+    net:hasPropertyName "use" ;
+    net:hasPropertyName01 "useing" ;
+    net:hasPropertyName10 "use-by" ;
+    net:hasPropertyName12 "use-of" ;
+    net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "document-01" ;
+    net:isCoreRoleLinked "true" ;
+    net:targetArgumentNode :leaf_movie_m .
+
+net:objectProperty a owl:AnnotationProperty ;
+    rdfs:label "object attribute" .
+
+net:value_9898_blankNode a net:Value_Net ;
+    net:coverAmrValue :value_9898 ;
+    net:hasNaming "9898" ;
+    net:hasStructure "document-01" ;
+    net:hasValueLabel "9898" .
+
+:AMR_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+:AMR_Phenomena a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:AMR_Specific_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+:AMR_Variable a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+: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 .
+
+:phenomena_modality a owl:Class ;
+    rdfs:subClassOf :AMR_Phenomena .
+
+:toReify a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :AMR_AnnotationProperty .
+
+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:action_use_u a net:Action_Net ;
+    net:composeFrom net:atomClass_movie_m,
+        net:atomProperty_use_u ;
+    net:coverBaseNode :leaf_use-01_u ;
+    net:coverNode :leaf_movie_m,
+        :leaf_use-01_u ;
+    net:hasActionName "use" ;
+    net:hasNaming "use" ;
+    net:hasStructure "document-01" ;
+    net:hasTargetNet net:atomClass_movie_m .
+
+net:has_relation_value a owl:AnnotationProperty ;
+    rdfs:label "has relation value" ;
+    rdfs:subPropertyOf net:has_object .
+
+:AMR_Element a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+net:atomClass_movie_m a net:Atom_Class_Net ;
+    :role_name net:value_9898_blankNode ;
+    net:coverBaseNode :leaf_movie_m ;
+    net:coverNode :leaf_movie_m ;
+    net:hasClassName "movie" ;
+    net:hasNaming "movie" ;
+    net:hasStructure "document-01" .
+
+:AMR_Leaf a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:AMR_NonCore_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+:AMR_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+:leaf_possible-01_p a :AMR_Leaf ;
+    :edge_p_ARG1_u :leaf_use-01_u ;
+    :hasConcept :concept_possible-01 ;
+    :hasVariable :variable_p .
+
+sys:Out_Structure a owl:Class ;
+    rdfs:label "Output Ontology Structure" .
+
+net:netProperty a owl:AnnotationProperty ;
+    rdfs:label "netProperty" .
+
+:AMR_Edge a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:AMR_ObjectProperty a owl:ObjectProperty ;
+    rdfs:subPropertyOf owl:topObjectProperty .
+
+:AMR_Structure a owl:Class .
+
+:leaf_use-01_u a :AMR_Leaf ;
+    :edge_u_ARG1_m :leaf_movie_m ;
+    :hasConcept :concept_use-01 ;
+    :hasVariable :variable_u .
+
+cprm:configParamProperty a rdf:Property ;
+    rdfs:label "Config Parameter Property" .
+
+rdf:Property a owl:Class .
+
+:AMR_Relation a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:leaf_movie_m a :AMR_Leaf ;
+    :edge_m_name_9898 :value_9898 ;
+    :hasConcept :concept_movie ;
+    :hasVariable :variable_m .
+
+net:Net a owl:Class ;
+    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 .
+
+:AMR_AnnotationProperty a owl:AnnotationProperty .
+
+:AMR_Core_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+:AMR_Linked_Data a owl:Class .
+
+net:objectValue a owl:AnnotationProperty ;
+    rdfs:label "valuations"@fr ;
+    rdfs:subPropertyOf net:objectProperty .
+
+[] a owl:AllDisjointClasses ;
+    owl:members ( sys:Degree sys:Entity sys:Feature ) .
+
diff --git a/tests/dev_tests/test_data/odrl-generation-devGraph-2.ttl b/tests/dev_tests/test_data/odrl-generation-devGraph-2.ttl
new file mode 100644
index 00000000..80a9bb0a
--- /dev/null
+++ b/tests/dev_tests/test_data/odrl-generation-devGraph-2.ttl
@@ -0,0 +1,956 @@
+@base <https://amr.tetras-libre.fr/rdf/odrl-rule-devGraph-2/result> .
+@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/frames/ld/v1.2.2/> .
+@prefix ns2: <http://amr.isi.edu/rdf/amr-terms#> .
+@prefix ns21: <http://amr.isi.edu/rdf/core-amr#> .
+@prefix ns4: <http://amr.isi.edu/entity-types#> .
+@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> .
+
+ns11:obligate-01.ARG2 a ns11:FrameRole .
+
+ns11:play-02.ARG0 a ns11:FrameRole .
+
+ns11:play-02.ARG1 a ns11:FrameRole .
+
+ns2:domain a ns21:Role,
+        owl:AnnotationProperty,
+        owl:NamedIndividual .
+
+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_o_ARG2_p a :AMR_Edge ;
+    :hasAmrRole :role_ARG2 ;
+    :hasRoleID "ARG2" .
+
+:edge_p2_name_John a :AMR_Edge ;
+    :hasAmrRole :role_name ;
+    :hasRoleID "name" .
+
+:edge_p_ARG0_p2 a :AMR_Edge ;
+    :hasAmrRole :role_ARG0 ;
+    :hasRoleID "ARG0" .
+
+:edge_p_ARG1_m a :AMR_Edge ;
+    :hasAmrRole :role_ARG1 ;
+    :hasRoleID "ARG1" .
+
+: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_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" .
+
+:phenomena_degree a owl:Class ;
+    rdfs:subClassOf :AMR_Phenomena ;
+    :hasConceptLink "have-degree-91" ;
+    :label "degree" .
+
+:phenomena_modality_possible a owl:Class ;
+    rdfs:subClassOf :phenomena_modality ;
+    :hasConceptLink "allow-01",
+        "grant-01",
+        "likely-01",
+        "permit-01",
+        "possible-01" ;
+    :label "possible-modality" .
+
+:phenomena_modality_prohibition a owl:Class ;
+    rdfs:subClassOf :phenomena_modality ;
+    :label "prohibition-modality" .
+
+: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_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_domain a owl:Class ;
+    rdfs:subClassOf :AMR_NonCore_Role ;
+    :hasRelationName "domain" ;
+    :label "domain" ;
+    :toReifyAsConcept "domain" ;
+    :toReifyWithBaseEdge "ARG0" ;
+    :toReifyWithHeadEdge "ARG1" .
+
+: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_op1 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op1" .
+
+:role_op2 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op2" .
+
+: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_polarity a owl:Class ;
+    rdfs:subClassOf :AMR_Specific_Role ;
+    :label "polarity" .
+
+:role_quant a owl:Class ;
+    rdfs:subClassOf :AMR_Specific_Role ;
+    :label "quant" .
+
+:root_document-02 a :AMR_Root ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-02#root01> ;
+    :hasRootLeaf :leaf_obligate-01_o ;
+    :hasSentenceID "document-02" ;
+    :hasSentenceStatement "John must play the movie." .
+
+: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:Composite_Class_Net a owl:Class ;
+    rdfs:subClassOf net:Class_Net .
+
+net:Feature a owl:Class ;
+    rdfs:subClassOf net:Net_Structure .
+
+net:abstractionClass a owl:AnnotationProperty ;
+    rdfs:label "abstraction class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:atomType a owl:AnnotationProperty ;
+    rdfs:label "atom type" ;
+    rdfs:subPropertyOf net:objectType .
+
+net:compositeProperty_person-play-movie_p2 a net:Composite_Property_Net ;
+    :role_name net:value_John_blankNode ;
+    net:composeFrom net:atomClass_movie_m,
+        net:atomClass_person_p2,
+        net:atomProperty_play_p ;
+    net:coverBaseNode :leaf_person_p2 ;
+    net:coverNode :leaf_movie_m,
+        :leaf_person_p2,
+        :leaf_play-02_p ;
+    net:hasNaming "person-play-movie" ;
+    net:hasRestriction net:restriction_play-movie_p ;
+    net:hasStructure "document-02" .
+
+net:entityClass a owl:AnnotationProperty ;
+    rdfs:label "entity class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+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:listGuiding a owl:AnnotationProperty ;
+    rdfs:label "Guiding connector of a list (or, and)" ;
+    rdfs:subPropertyOf net:objectValue .
+
+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:rule_obligation_o a net:Rule_Net ;
+    net:composeFrom net:action_play_p,
+        net:phenomena_obligation-modality_o ;
+    net:coverBaseNode :leaf_obligate-01_o ;
+    net:coverNode :leaf_movie_m,
+        :leaf_obligate-01_o,
+        :leaf_play-02_p ;
+    net:hasNaming "obligation" ;
+    net:hasRuleActionURI net:action_play_p ;
+    net:hasRuleRelationName "obligation" ;
+    net:hasStructure "document-02" .
+
+net:type a owl:AnnotationProperty ;
+    rdfs:label "type "@fr ;
+    rdfs:subPropertyOf net:netProperty .
+
+net:verbClass a owl:AnnotationProperty ;
+    rdfs:label "verb class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+<http://amr.isi.edu/amr_data/document-02#root01> a ns21:AMR ;
+    ns21:has-id "document-02" ;
+    ns21:has-sentence "John must play the movie." ;
+    ns21:root <http://amr.isi.edu/amr_data/document-02#o> .
+
+<http://amr.isi.edu/amr_data/test-1#s> ns2:domain <http://amr.isi.edu/amr_data/test-1#s2> .
+
+<http://amr.isi.edu/amr_data/test-2#p> rdfs:label "Earth" .
+
+ns21:AMR a owl:Class ;
+    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 .
+
+:AMR_Predicat_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+:AMR_Relation_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+:AMR_Root a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:AMR_Value a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+:concept_movie rdfs:subClassOf :AMR_Term_Concept ;
+    :fromAmrLk ns2:movie ;
+    :label "movie" .
+
+:concept_obligate-01 rdfs:subClassOf :AMR_Relation_Concept ;
+    :fromAmrLk ns11:obligate-01 ;
+    :hasPhenomenaLink :phenomena_modality_obligation ;
+    :label "obligate-01" .
+
+:concept_person rdfs:subClassOf :AMR_Term_Concept ;
+    :fromAmrLk ns4:person ;
+    :label "person" .
+
+:concept_play-02 rdfs:subClassOf :AMR_Predicat_Concept ;
+    :fromAmrLk ns11:play-02 ;
+    :label "play-02" .
+
+: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" .
+
+:role_ARG2 a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG2" .
+
+:role_name a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_NonCore_Role ;
+    :label "name" .
+
+:variable_m a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-02#m> ;
+    :label "m" .
+
+:variable_o a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-02#o> ;
+    :label "o" .
+
+:variable_p a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-02#p> ;
+    :label "p" .
+
+:variable_p2 a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-02#p2> ;
+    :label "p2" ;
+    :name "John" .
+
+sys:Degree a owl:Class ;
+    rdfs:subClassOf sys:Out_Structure .
+
+sys:Entity 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:Action_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Atom_Property_Net a owl:Class ;
+    rdfs:subClassOf net:Property_Net .
+
+net:Composite_Property_Net a owl:Class ;
+    rdfs:subClassOf net:Property_Net .
+
+net:Deprecated_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Individual_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Phenomena_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Rule_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Value_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:has_value a owl:AnnotationProperty ;
+    rdfs:subPropertyOf net:netProperty .
+
+net:individual_John_p2 a net:Individual_Net ;
+    :role_name net:value_John_blankNode ;
+    net:coverBaseNode :leaf_person_p2 ;
+    net:coverNode :leaf_person_p2 ;
+    net:hasIndividualLabel "John" ;
+    net:hasMotherClassNet net:atomClass_person_p2 ;
+    net:hasNaming "John" ;
+    net:hasStructure "document-02" .
+
+net:objectType a owl:AnnotationProperty ;
+    rdfs:label "object type" ;
+    rdfs:subPropertyOf net:objectProperty .
+
+net:phenomena_obligation-modality_o a net:Phenomena_Net ;
+    :role_ARG2 net:action_play_p,
+        net:atomProperty_play_p ;
+    net:coverBaseNode :leaf_obligate-01_o ;
+    net:coverNode :leaf_obligate-01_o ;
+    net:hasNaming "obligation-modality" ;
+    net:hasPhenomenaRef "obligate-01" ;
+    net:hasPhenomenaType :phenomena_modality_obligation ;
+    net:hasStructure "document-02" .
+
+net:restriction_play-movie_p a net:Restriction_Net ;
+    net:composeFrom net:atomClass_movie_m,
+        net:atomProperty_play_p ;
+    net:coverBaseNode :leaf_play-02_p ;
+    net:coverNode :leaf_movie_m,
+        :leaf_play-02_p ;
+    net:hasNaming "play-movie" ;
+    net:hasRestrictionNetValue net:atomClass_movie_m ;
+    net:hasRestrictionOnProperty net:atomProperty_play_p ;
+    net:hasStructure "document-02" .
+
+<http://amr.isi.edu/amr_data/document-02#m> a ns2:movie ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/document-02#o> a ns11:obligate-01 ;
+    ns11:obligate-01.ARG2 <http://amr.isi.edu/amr_data/document-02#p> ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/document-02#p> a ns11:play-02 ;
+    ns11:play-02.ARG0 <http://amr.isi.edu/amr_data/document-02#p2> ;
+    ns11:play-02.ARG1 <http://amr.isi.edu/amr_data/document-02#m> ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/document-02#p2> a ns4:person ;
+    rdfs:label "John" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns4:person a ns21:NamedEntity ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:obligate-01 a ns21:Frame ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:play-02 a ns21:Frame ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns2:movie a ns21:Concept ;
+    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_Term_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+: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_modality_obligation a owl:Class ;
+    rdfs:subClassOf :phenomena_modality ;
+    :hasConceptLink "obligate-01" ;
+    :label "obligation-modality" .
+
+:value_John a :AMR_Value ;
+    rdfs:label "John" .
+
+sys:Out_ObjectProperty a owl:ObjectProperty .
+
+net:Atom_Class_Net a owl:Class ;
+    rdfs:subClassOf net:Class_Net .
+
+net:Class_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Property_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:objectProperty a owl:AnnotationProperty ;
+    rdfs:label "object attribute" .
+
+ns11:FrameRole a ns21:Role,
+        owl:Class,
+        owl:NamedIndividual ;
+    rdfs:label "AMR-PropBank-Role" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+:AMR_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+:AMR_Phenomena a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+: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 .
+
+:phenomena_modality a owl:Class ;
+    rdfs:subClassOf :AMR_Phenomena .
+
+:toReify a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :AMR_AnnotationProperty .
+
+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:action_play_p a net:Action_Net ;
+    net:composeFrom net:atomClass_movie_m,
+        net:atomProperty_play_p ;
+    net:coverBaseNode :leaf_play-02_p ;
+    net:coverNode :leaf_movie_m,
+        :leaf_play-02_p ;
+    net:hasActionName "play" ;
+    net:hasNaming "play" ;
+    net:hasStructure "document-02" ;
+    net:hasTargetNet net:atomClass_movie_m .
+
+net:atomClass_person_p2 a net:Atom_Class_Net,
+        net:Deprecated_Net ;
+    :role_name net:value_John_blankNode ;
+    net:coverBaseNode :leaf_person_p2 ;
+    net:coverNode :leaf_person_p2 ;
+    net:hasClassName "person" ;
+    net:hasNaming "person" ;
+    net:hasStructure "document-02" .
+
+net:has_relation_value a owl:AnnotationProperty ;
+    rdfs:label "has relation value" ;
+    rdfs:subPropertyOf net:has_object .
+
+net:value_John_blankNode a net:Value_Net ;
+    net:coverAmrValue :value_John ;
+    net:hasNaming "John" ;
+    net:hasStructure "document-02" ;
+    net:hasValueLabel "John" .
+
+:AMR_Element a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:AMR_Variable a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+net:Relation a owl:Class ;
+    rdfs:subClassOf net:Net_Structure .
+
+:AMR_NonCore_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+:AMR_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+:leaf_obligate-01_o a :AMR_Leaf ;
+    :edge_o_ARG2_p :leaf_play-02_p ;
+    :hasConcept :concept_obligate-01 ;
+    :hasVariable :variable_o .
+
+sys:Out_Structure a owl:Class ;
+    rdfs:label "Output Ontology Structure" .
+
+net:atomProperty_play_p a net:Atom_Property_Net ;
+    :role_ARG0 net:atomClass_person_p2,
+        net:individual_John_p2 ;
+    :role_ARG1 net:atomClass_movie_m ;
+    net:coverBaseNode :leaf_play-02_p ;
+    net:coverNode :leaf_play-02_p ;
+    net:hasNaming "play" ;
+    net:hasPropertyName "play" ;
+    net:hasPropertyName01 "playing" ;
+    net:hasPropertyName10 "play-by" ;
+    net:hasPropertyName12 "play-of" ;
+    net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "document-02" ;
+    net:isCoreRoleLinked "true" ;
+    net:targetArgumentNode :leaf_movie_m,
+        :leaf_person_p2 .
+
+net:netProperty a owl:AnnotationProperty ;
+    rdfs:label "netProperty" .
+
+:AMR_Leaf a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+: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:atomClass_movie_m a net:Atom_Class_Net ;
+    net:coverBaseNode :leaf_movie_m ;
+    net:coverNode :leaf_movie_m ;
+    net:hasClassName "movie" ;
+    net:hasNaming "movie" ;
+    net:hasStructure "document-02" .
+
+rdf:Property a owl:Class .
+
+:AMR_Edge a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:AMR_Relation a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:leaf_movie_m a :AMR_Leaf ;
+    :hasConcept :concept_movie ;
+    :hasVariable :variable_m .
+
+:leaf_person_p2 a :AMR_Leaf ;
+    :edge_p2_name_John :value_John ;
+    :hasConcept :concept_person ;
+    :hasVariable :variable_p2 .
+
+net:Net a owl:Class ;
+    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 .
+
+:leaf_play-02_p a :AMR_Leaf ;
+    :edge_p_ARG0_p2 :leaf_person_p2 ;
+    :edge_p_ARG1_m :leaf_movie_m ;
+    :hasConcept :concept_play-02 ;
+    :hasVariable :variable_p .
+
+:AMR_AnnotationProperty a owl:AnnotationProperty .
+
+:AMR_Core_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+:AMR_Linked_Data a owl:Class .
+
+net:objectValue a owl:AnnotationProperty ;
+    rdfs:label "valuations"@fr ;
+    rdfs:subPropertyOf net:objectProperty .
+
+[] a owl:AllDisjointClasses ;
+    owl:members ( sys:Degree sys:Entity sys:Feature ) .
+
diff --git a/tests/dev_tests/test_data/odrl-generation-devGraph-3.ttl b/tests/dev_tests/test_data/odrl-generation-devGraph-3.ttl
new file mode 100644
index 00000000..64383f89
--- /dev/null
+++ b/tests/dev_tests/test_data/odrl-generation-devGraph-3.ttl
@@ -0,0 +1,986 @@
+@base <https://amr.tetras-libre.fr/rdf/odrl-rule-devGraph-3/result> .
+@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/core-amr#> .
+@prefix ns2: <http://amr.isi.edu/rdf/amr-terms#> .
+@prefix ns3: <http://amr.isi.edu/frames/ld/v1.2.2/> .
+@prefix ns4: <http://amr.isi.edu/entity-types#> .
+@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#> .
+
+ns11:Concept a rdfs:Class,
+        owl:Class ;
+    rdfs:label "AMR-Concept" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:Role a rdfs:Class,
+        owl:Class ;
+    rdfs:label "AMR-Role" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/test-1#root01> ns11:hasID "test-1" ;
+    ns11:hasSentence "The sun is a star." ;
+    ns11:root <http://amr.isi.edu/amr_data/test-1#s> .
+
+<http://amr.isi.edu/amr_data/test-2#root01> ns11:hasID "test-2" ;
+    ns11:hasSentence "Earth is a planet." ;
+    ns11:root <http://amr.isi.edu/amr_data/test-2#p> .
+
+ns3:allow-01.ARG1 a ns3:FrameRole .
+
+ns3:play-01.ARG0 a ns3:FrameRole .
+
+ns3:play-01.ARG1 a ns3:FrameRole .
+
+ns2:domain a ns11:Role,
+        owl:AnnotationProperty,
+        owl:NamedIndividual .
+
+ns11:hasID a owl:AnnotationProperty .
+
+ns11:hasSentence a owl:AnnotationProperty .
+
+ns11: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_ARG1_p a :AMR_Edge ;
+    :hasAmrRole :role_ARG1 ;
+    :hasRoleID "ARG1" .
+
+:edge_a_polarity_negative a :AMR_Edge ;
+    :hasAmrRole :role_polarity ;
+    :hasRoleID "polarity" .
+
+:edge_p2_name_John a :AMR_Edge ;
+    :hasAmrRole :role_name ;
+    :hasRoleID "name" .
+
+:edge_p_ARG0_p2 a :AMR_Edge ;
+    :hasAmrRole :role_ARG0 ;
+    :hasRoleID "ARG0" .
+
+:edge_p_ARG1_m a :AMR_Edge ;
+    :hasAmrRole :role_ARG1 ;
+    :hasRoleID "ARG1" .
+
+: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_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" .
+
+:phenomena_degree a owl:Class ;
+    rdfs:subClassOf :AMR_Phenomena ;
+    :hasConceptLink "have-degree-91" ;
+    :label "degree" .
+
+:phenomena_modality_obligation a owl:Class ;
+    rdfs:subClassOf :phenomena_modality ;
+    :hasConceptLink "obligate-01" ;
+    :label "obligation-modality" .
+
+: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_domain a owl:Class ;
+    rdfs:subClassOf :AMR_NonCore_Role ;
+    :hasRelationName "domain" ;
+    :label "domain" ;
+    :toReifyAsConcept "domain" ;
+    :toReifyWithBaseEdge "ARG0" ;
+    :toReifyWithHeadEdge "ARG1" .
+
+: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_op1 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op1" .
+
+:role_op2 a owl:Class ;
+    rdfs:subClassOf :AMR_Op_Role ;
+    :label "op2" .
+
+: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_document-03 a :AMR_Root ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-03#root01> ;
+    :hasRootLeaf :leaf_allow-01_a ;
+    :hasSentenceID "document-03" ;
+    :hasSentenceStatement "John is not allowed to play the movie.." .
+
+: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:Composite_Class_Net a owl:Class ;
+    rdfs:subClassOf net:Class_Net .
+
+net:Feature a owl:Class ;
+    rdfs:subClassOf net:Net_Structure .
+
+net:abstractionClass a owl:AnnotationProperty ;
+    rdfs:label "abstraction class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+net:atomType a owl:AnnotationProperty ;
+    rdfs:label "atom type" ;
+    rdfs:subPropertyOf net:objectType .
+
+net:compositeProperty_person-play-movie_p2 a net:Composite_Property_Net ;
+    :role_name net:value_John_blankNode ;
+    net:composeFrom net:atomClass_movie_m,
+        net:atomClass_person_p2,
+        net:atomProperty_play_p ;
+    net:coverBaseNode :leaf_person_p2 ;
+    net:coverNode :leaf_movie_m,
+        :leaf_person_p2,
+        :leaf_play-01_p ;
+    net:hasNaming "person-play-movie" ;
+    net:hasRestriction net:restriction_play-movie_p ;
+    net:hasStructure "document-03" .
+
+net:entityClass a owl:AnnotationProperty ;
+    rdfs:label "entity class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+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:listGuiding a owl:AnnotationProperty ;
+    rdfs:label "Guiding connector of a list (or, and)" ;
+    rdfs:subPropertyOf net:objectValue .
+
+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:rule_prohibition_a a net:Rule_Net ;
+    net:composeFrom net:action_play_p,
+        net:phenomena_prohibition-modality_a ;
+    net:coverBaseNode :leaf_allow-01_a ;
+    net:coverNode :leaf_allow-01_a,
+        :leaf_movie_m,
+        :leaf_play-01_p ;
+    net:hasNaming "prohibition" ;
+    net:hasRuleActionURI net:action_play_p ;
+    net:hasRuleRelationName "prohibition" ;
+    net:hasStructure "document-03" .
+
+net:type a owl:AnnotationProperty ;
+    rdfs:label "type "@fr ;
+    rdfs:subPropertyOf net:netProperty .
+
+net:verbClass a owl:AnnotationProperty ;
+    rdfs:label "verb class" ;
+    rdfs:subPropertyOf net:objectValue .
+
+<http://amr.isi.edu/amr_data/document-03#root01> a ns11:AMR ;
+    ns11:has-id "document-03" ;
+    ns11:has-sentence "John is not allowed to play the movie.." ;
+    ns11:root <http://amr.isi.edu/amr_data/document-03#a> .
+
+<http://amr.isi.edu/amr_data/test-1#s> ns2:domain <http://amr.isi.edu/amr_data/test-1#s2> .
+
+<http://amr.isi.edu/amr_data/test-2#p> rdfs:label "Earth" .
+
+ns11:AMR a owl:Class ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:NamedEntity a ns11:Concept,
+        owl:Class,
+        owl:NamedIndividual ;
+    rdfs:label "AMR-EntityType",
+        "AMR-Term" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+:AMR_Predicat_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+:AMR_Relation_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+:AMR_Root a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:concept_allow-01 rdfs:subClassOf :AMR_Relation_Concept ;
+    :fromAmrLk ns3:allow-01 ;
+    :hasPhenomenaLink :phenomena_modality_possible ;
+    :label "allow-01" .
+
+:concept_movie rdfs:subClassOf :AMR_Term_Concept ;
+    :fromAmrLk ns2:movie ;
+    :label "movie" .
+
+:concept_person rdfs:subClassOf :AMR_Term_Concept ;
+    :fromAmrLk ns4:person ;
+    :label "person" .
+
+:concept_play-01 rdfs:subClassOf :AMR_Predicat_Concept ;
+    :fromAmrLk ns3:play-01 ;
+    :label "play-01" .
+
+:phenomena_modality_prohibition a owl:Class ;
+    rdfs:subClassOf :phenomena_modality ;
+    :label "prohibition-modality" .
+
+:role_ARG0 a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG0" .
+
+: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" .
+
+:variable_a a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-03#a> ;
+    :label "a" .
+
+:variable_m a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-03#m> ;
+    :label "m" .
+
+:variable_p a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-03#p> ;
+    :label "p" .
+
+:variable_p2 a :AMR_Variable ;
+    :fromAmrLk <http://amr.isi.edu/amr_data/document-03#p2> ;
+    :label "p2" ;
+    :name "John" .
+
+sys:Degree a owl:Class ;
+    rdfs:subClassOf sys:Out_Structure .
+
+sys:Entity 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:Action_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Atom_Property_Net a owl:Class ;
+    rdfs:subClassOf net:Property_Net .
+
+net:Composite_Property_Net a owl:Class ;
+    rdfs:subClassOf net:Property_Net .
+
+net:Individual_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:Rule_Net a owl:Class ;
+    rdfs:subClassOf net:Net .
+
+net:has_value a owl:AnnotationProperty ;
+    rdfs:subPropertyOf net:netProperty .
+
+net:individual_John_p2 a net:Individual_Net ;
+    :role_name net:value_John_blankNode ;
+    net:coverBaseNode :leaf_person_p2 ;
+    net:coverNode :leaf_person_p2 ;
+    net:hasIndividualLabel "John" ;
+    net:hasMotherClassNet net:atomClass_person_p2 ;
+    net:hasNaming "John" ;
+    net:hasStructure "document-03" .
+
+net:objectType a owl:AnnotationProperty ;
+    rdfs:label "object type" ;
+    rdfs:subPropertyOf net:objectProperty .
+
+net:phenomena_possible-modality_a a net:Deprecated_Net,
+        net:Phenomena_Net ;
+    :role_ARG1 net:action_play_p,
+        net:atomProperty_play_p ;
+    :role_polarity net:value_negative_blankNode ;
+    net:coverBaseNode :leaf_allow-01_a ;
+    net:coverNode :leaf_allow-01_a ;
+    net:hasNaming "possible-modality" ;
+    net:hasPhenomenaRef "allow-01" ;
+    net:hasPhenomenaType :phenomena_modality_possible ;
+    net:hasStructure "document-03" .
+
+net:phenomena_prohibition-modality_a a net:Phenomena_Net ;
+    :role_ARG1 net:action_play_p,
+        net:atomProperty_play_p ;
+    :role_polarity net:value_negative_blankNode ;
+    net:composeFrom net:phenomena_possible-modality_a,
+        net:value_negative_blankNode ;
+    net:coverBaseNode :leaf_allow-01_a ;
+    net:coverNode :leaf_allow-01_a ;
+    net:hasNaming "prohibition-modality" ;
+    net:hasPhenomenaRef "not-[rdflib.term.Literal('allow-01')]" ;
+    net:hasPhenomenaType :phenomena_modality_prohibition ;
+    net:hasStructure "document-03" .
+
+net:restriction_play-movie_p a net:Restriction_Net ;
+    net:composeFrom net:atomClass_movie_m,
+        net:atomProperty_play_p ;
+    net:coverBaseNode :leaf_play-01_p ;
+    net:coverNode :leaf_movie_m,
+        :leaf_play-01_p ;
+    net:hasNaming "play-movie" ;
+    net:hasRestrictionNetValue net:atomClass_movie_m ;
+    net:hasRestrictionOnProperty net:atomProperty_play_p ;
+    net:hasStructure "document-03" .
+
+<http://amr.isi.edu/amr_data/document-03#a> a ns3:allow-01 ;
+    ns3:allow-01.ARG1 <http://amr.isi.edu/amr_data/document-03#p> ;
+    ns2:polarity "-" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/document-03#m> a ns2:movie ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/document-03#p> a ns3:play-01 ;
+    ns3:play-01.ARG0 <http://amr.isi.edu/amr_data/document-03#p2> ;
+    ns3:play-01.ARG1 <http://amr.isi.edu/amr_data/document-03#m> ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+<http://amr.isi.edu/amr_data/document-03#p2> a ns4:person ;
+    rdfs:label "John" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns4:person a ns11:NamedEntity ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns3:allow-01 a ns11:Frame ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns3:play-01 a ns11:Frame ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns2:movie a ns11:Concept ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+ns11:Frame a ns11:Concept,
+        owl:Class,
+        owl:NamedIndividual ;
+    rdfs:label "AMR-PropBank-Frame" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+:AMR_Term_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Concept .
+
+:AMR_Value a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+: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_modality_possible a owl:Class ;
+    rdfs:subClassOf :phenomena_modality ;
+    :hasConceptLink "allow-01",
+        "grant-01",
+        "likely-01",
+        "permit-01",
+        "possible-01" ;
+    :label "possible-modality" .
+
+:role_ARG1 a owl:Class,
+        net:Relation ;
+    rdfs:subClassOf :AMR_Core_Role ;
+    :label "ARG1" .
+
+:value_John a :AMR_Value ;
+    rdfs:label "John" .
+
+:value_negative a :AMR_Value ;
+    rdfs:label "negative" .
+
+sys:Out_ObjectProperty a owl:ObjectProperty .
+
+net:Atom_Class_Net a owl:Class ;
+    rdfs:subClassOf net:Class_Net .
+
+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:objectProperty a owl:AnnotationProperty ;
+    rdfs:label "object attribute" .
+
+ns3:FrameRole a ns11:Role,
+        owl:Class,
+        owl:NamedIndividual ;
+    rdfs:label "AMR-PropBank-Role" ;
+    rdfs:subClassOf :AMR_Linked_Data .
+
+:AMR_Concept a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+:AMR_Phenomena a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+: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 .
+
+:phenomena_modality a owl:Class ;
+    rdfs:subClassOf :AMR_Phenomena .
+
+:toReify a owl:AnnotationProperty ;
+    rdfs:subPropertyOf :AMR_AnnotationProperty .
+
+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_person_p2 a net:Atom_Class_Net,
+        net:Deprecated_Net ;
+    :role_name net:value_John_blankNode ;
+    net:coverBaseNode :leaf_person_p2 ;
+    net:coverNode :leaf_person_p2 ;
+    net:hasClassName "person" ;
+    net:hasNaming "person" ;
+    net:hasStructure "document-03" .
+
+net:has_relation_value a owl:AnnotationProperty ;
+    rdfs:label "has relation value" ;
+    rdfs:subPropertyOf net:has_object .
+
+net:value_John_blankNode a net:Value_Net ;
+    net:coverAmrValue :value_John ;
+    net:hasNaming "John" ;
+    net:hasStructure "document-03" ;
+    net:hasValueLabel "John" .
+
+net:value_negative_blankNode a net:Value_Net ;
+    net:coverAmrValue :value_negative ;
+    net:hasNaming "negative" ;
+    net:hasStructure "document-03" ;
+    net:hasValueLabel "negative" .
+
+:AMR_Element a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:AMR_Variable a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+net:Relation a owl:Class ;
+    rdfs:subClassOf net:Net_Structure .
+
+net:action_play_p a net:Action_Net ;
+    net:composeFrom net:atomClass_movie_m,
+        net:atomProperty_play_p ;
+    net:coverBaseNode :leaf_play-01_p ;
+    net:coverNode :leaf_movie_m,
+        :leaf_play-01_p ;
+    net:hasActionName "play" ;
+    net:hasNaming "play" ;
+    net:hasStructure "document-03" ;
+    net:hasTargetNet net:atomClass_movie_m .
+
+:AMR_NonCore_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+:AMR_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Element .
+
+sys:Out_Structure a owl:Class ;
+    rdfs:label "Output Ontology Structure" .
+
+net:netProperty a owl:AnnotationProperty ;
+    rdfs:label "netProperty" .
+
+:AMR_Leaf a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+: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:atomClass_movie_m a net:Atom_Class_Net ;
+    net:coverBaseNode :leaf_movie_m ;
+    net:coverNode :leaf_movie_m ;
+    net:hasClassName "movie" ;
+    net:hasNaming "movie" ;
+    net:hasStructure "document-03" .
+
+net:atomProperty_play_p a net:Atom_Property_Net ;
+    :role_ARG0 net:atomClass_person_p2,
+        net:individual_John_p2 ;
+    :role_ARG1 net:atomClass_movie_m ;
+    net:coverBaseNode :leaf_play-01_p ;
+    net:coverNode :leaf_play-01_p ;
+    net:hasNaming "play" ;
+    net:hasPropertyName "play" ;
+    net:hasPropertyName01 "playing" ;
+    net:hasPropertyName10 "play-by" ;
+    net:hasPropertyName12 "play-of" ;
+    net:hasPropertyType owl:ObjectProperty ;
+    net:hasStructure "document-03" ;
+    net:isCoreRoleLinked "true" ;
+    net:targetArgumentNode :leaf_movie_m,
+        :leaf_person_p2 .
+
+rdf:Property a owl:Class .
+
+:AMR_Relation a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:leaf_allow-01_a a :AMR_Leaf ;
+    :edge_a_ARG1_p :leaf_play-01_p ;
+    :edge_a_polarity_negative :value_negative ;
+    :hasConcept :concept_allow-01 ;
+    :hasVariable :variable_a .
+
+:AMR_Edge a owl:Class ;
+    rdfs:subClassOf :AMR_Structure .
+
+:leaf_movie_m a :AMR_Leaf ;
+    :hasConcept :concept_movie ;
+    :hasVariable :variable_m .
+
+:leaf_person_p2 a :AMR_Leaf ;
+    :edge_p2_name_John :value_John ;
+    :hasConcept :concept_person ;
+    :hasVariable :variable_p2 .
+
+net:Net a owl:Class ;
+    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 .
+
+:leaf_play-01_p a :AMR_Leaf ;
+    :edge_p_ARG0_p2 :leaf_person_p2 ;
+    :edge_p_ARG1_m :leaf_movie_m ;
+    :hasConcept :concept_play-01 ;
+    :hasVariable :variable_p .
+
+:AMR_AnnotationProperty a owl:AnnotationProperty .
+
+:AMR_Core_Role a owl:Class ;
+    rdfs:subClassOf :AMR_Role .
+
+:AMR_Linked_Data a owl:Class .
+
+net:objectValue a owl:AnnotationProperty ;
+    rdfs:label "valuations"@fr ;
+    rdfs:subPropertyOf net:objectProperty .
+
+[] a owl:AllDisjointClasses ;
+    owl:members ( sys:Degree sys:Entity sys:Feature ) .
+
diff --git a/tests/dev_tests/test_rule_odrl_generator.py b/tests/dev_tests/test_rule_odrl_generator.py
new file mode 100644
index 00000000..9648aab3
--- /dev/null
+++ b/tests/dev_tests/test_rule_odrl_generator.py
@@ -0,0 +1,143 @@
+#!/usr/bin/python3.10
+# -*-coding:Utf-8 -*
+
+#==============================================================================
+# TENET: Extraction Rule Test
+#------------------------------------------------------------------------------
+# Script to test rules under development
+#==============================================================================
+
+import subprocess, os
+from rdflib import Graph, Namespace
+from rdflib.namespace import NamespaceManager, FOAF, RDF
+from rdflib import URIRef, Literal, BNode
+
+FILE_PATH = f'{os.path.dirname(os.path.abspath(__file__))}'
+INPUT_DIR_PATH = f'{FILE_PATH}/test_data/'
+OUTPUT_DIR_PATH = f'{FILE_PATH}/test_data/'
+
+TEST_FILE_NAME_1 = 'odrl-generation-devGraph-1'
+TEST_FILE_NAME_2 = 'odrl-generation-devGraph-2'
+TEST_FILE_NAME_3 = 'odrl-generation-devGraph-3'
+
+from context import tenet
+from tenet.scheme.amr_clara_rule.odrl_generation import odrl_rule_generator as dev_rule
+from tenet.scheme import amr_clara_rule as rule
+
+from tenet.transduction import rdfterm_computer, prefix_handle
+from tenet.transduction.rdfterm_computer import __update_uri_with_prefix
+
+
+
+
+#==============================================================================
+# Useful Methods
+#==============================================================================
+
+def load_test_graph(test_file_name):
+    print(f'\n -- Test Graph Loading')
+    graph = Graph()
+    prefix_handle.update_graph_namespacemanager(graph)
+    graph_path = f'{INPUT_DIR_PATH}{test_file_name}.ttl'
+    graph.parse(graph_path)
+    print(f" ----- Graph Loaded ({len(graph)})")
+    return graph
+
+
+def define_clause_list(composition_pattern_list):
+    clause_list = []
+    for (net_1, relation, net_2) in composition_pattern_list:
+        clause_list.append(f'{net_1} {relation} {net_2}.')
+    return clause_list
+
+
+def print_triple(graph, triple, num=-1):
+    num_str = f'[{num}]' if num > -1 else '[-]'
+    (s, p, o) = triple
+    s = __update_uri_with_prefix(graph, s)
+    p = __update_uri_with_prefix(graph, p)
+    o = __update_uri_with_prefix(graph, o)
+    print(f' {num_str} {s} {p} {o}')
+    
+
+def add_triples_in_graph(test_file_name, graph, triple_list):
+    print(f'\n -- Adding triple(s) in graph')       
+    print(f" ----- Graph length before update: {len(graph)}")
+    print(f" ----- Number of triples to add: {len(triple_list)}")
+    
+    print(f" ----- Added triples:")
+    n = 0
+    graph_length = len(graph)
+    for triple in triple_list:
+        graph.add(triple)
+        if graph_length < len(graph):
+            n += 1
+            graph_length = len(graph)
+            print_triple(graph, triple, num=n)      
+        
+    print(f" ----- Graph length after update: {len(graph)}")
+    
+    output_graph_path = f'{OUTPUT_DIR_PATH}{test_file_name}.result.ttl'
+    output_graph_uri = f'https://amr.tetras-libre.fr/rdf/{test_file_name}/result'
+    print(f'\n -- Serialize test graph to {output_graph_path}')
+    graph.serialize(destination=output_graph_path, 
+                    format='turtle',
+                    base=output_graph_uri)
+
+
+
+#==============================================================================
+# Development Test
+#==============================================================================
+        
+def test_search_pattern_1(graph):
+    print('\n -- Search patterns (1)')
+    _, result_set = dev_rule.__search_pattern_1(graph)
+    print(f'\n ----- number of selection found: {len(result_set)}')
+    for selection in result_set: 
+        result_str = f'>>> '
+        result_str += f'{selection.rule_net.n3(graph.namespace_manager)}'
+        print(result_str) 
+                           
+
+
+#==============================================================================
+# Unit Test
+#==============================================================================
+
+def test_rule_application(test_file_name, graph, rule):    
+    print('\n -- Rule Test')
+    
+    rule_label, new_triple_list = rule(graph)
+    print(f' ----- label: {rule_label}')
+    
+    add_triples_in_graph(test_file_name, graph, new_triple_list)
+    
+
+
+#==============================================================================
+# Test Script
+#==============================================================================
+
+if __name__ == '__main__':
+      
+    print('\n *** Test Preparation ***')
+    graph_1 = load_test_graph(TEST_FILE_NAME_1)
+    graph_2 = load_test_graph(TEST_FILE_NAME_2)
+    graph_3 = load_test_graph(TEST_FILE_NAME_3)
+    print('\n \n')
+    
+    print('\n ///////////////////// Extraction Rule 1')
+    
+    print('\n *** Step Test ***')
+    
+    print('\n -- Step 1: Search Pattern')
+    pattern_set = test_search_pattern_1(graph_1)
+            
+    print('\n \n')
+    
+    print('\n *** Unit Test ***')
+    test_rule_application(TEST_FILE_NAME_1, graph_1, rule.generate_odrl_rule)
+    print('\n \n')
+
+    print('\n *** - ***')
\ No newline at end of file
-- 
GitLab