From 42db5151e1a5134487ceb0ddefecbf44a53db6dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Lamercerie?=
 <aurelien.lamercerie@tetras-libre.fr>
Date: Fri, 3 Mar 2023 10:17:30 +0100
Subject: [PATCH] Main method parsing LN sentences to generate AMR graphs

---
 .gitignore                                    |   1 +
 README.md                                     |  41 ++-
 amrbatch/amrld/.gitignore                     |   7 -
 amrbatch/amrld/test/bio_ras_0001_1.json       |  61 ----
 amrbatch/amrld/test/bio_ras_0001_1.rdf        |  39 ---
 amrbatch/amrld/test/bio_ras_0001_1.txt        |  15 -
 amrbatch/amrld/test/pmid-11777939-32_amr.rdf  |  70 -----
 amrbatch/amrld/test/pmid-11777939-32_amr.txt  |  20 --
 amrbatch/amrld/test/test.amr.graph            |  12 -
 amrbatch/amrld/wk/__wk__.txt                  |   1 +
 amrbatch/amrld/wk/test-01.stog.amr.nt         |  22 ++
 amrbatch/amrld/wk/test-01.stog.amr.penman     |   4 +
 amrbatch/amrld/wk/test-02.stog.amr.nt         |  19 ++
 amrbatch/amrld/wk/test-02.stog.amr.penman     |   6 +
 amrbatch/filepath_manager.py                  | 112 +++++++
 amrbatch/logging.conf                         |  39 +++
 amrbatch/main.py                              | 295 +++++++++++++++++-
 tests/amrbatch.log                            |  48 +++
 .../test-01/test-01.stog.amr.dot              |   6 +
 .../Test-20230302/test-01/test-01.stog.amr.nt |  21 ++
 .../test-01/test-01.stog.amr.penman           |   4 +
 .../test-01/test-01.stog.amr.png              | Bin 0 -> 11670 bytes
 .../test-01/test-01.stog.amr.ttl              |  36 +++
 .../test-02/test-02.stog.amr.dot              |   9 +
 .../Test-20230302/test-02/test-02.stog.amr.nt |  18 ++
 .../test-02/test-02.stog.amr.penman           |   6 +
 .../test-02/test-02.stog.amr.png              | Bin 0 -> 18820 bytes
 .../test-02/test-02.stog.amr.ttl              |  29 ++
 tests/output/Test-20230302/test.sentence.txt  |   2 +
 .../test-01/test-01.stog.amr.dot              |   6 +
 .../Test-20230303/test-01/test-01.stog.amr.nt |  22 ++
 .../test-01/test-01.stog.amr.penman           |   4 +
 .../test-01/test-01.stog.amr.png              | Bin 0 -> 11670 bytes
 .../test-01/test-01.stog.amr.ttl              |  36 +++
 .../test-02/test-02.stog.amr.dot              |   9 +
 .../Test-20230303/test-02/test-02.stog.amr.nt |  19 ++
 .../test-02/test-02.stog.amr.penman           |   6 +
 .../test-02/test-02.stog.amr.png              | Bin 0 -> 18820 bytes
 .../test-02/test-02.stog.amr.ttl              |  29 ++
 tests/output/Test-20230303/test.sentence.txt  |   2 +
 tests/test_amrbatch_main.py                   |  23 +-
 41 files changed, 851 insertions(+), 248 deletions(-)
 delete mode 100644 amrbatch/amrld/.gitignore
 delete mode 100644 amrbatch/amrld/test/bio_ras_0001_1.json
 delete mode 100644 amrbatch/amrld/test/bio_ras_0001_1.rdf
 delete mode 100644 amrbatch/amrld/test/bio_ras_0001_1.txt
 delete mode 100644 amrbatch/amrld/test/pmid-11777939-32_amr.rdf
 delete mode 100755 amrbatch/amrld/test/pmid-11777939-32_amr.txt
 delete mode 100644 amrbatch/amrld/test/test.amr.graph
 create mode 100644 amrbatch/amrld/wk/__wk__.txt
 create mode 100644 amrbatch/amrld/wk/test-01.stog.amr.nt
 create mode 100644 amrbatch/amrld/wk/test-01.stog.amr.penman
 create mode 100644 amrbatch/amrld/wk/test-02.stog.amr.nt
 create mode 100644 amrbatch/amrld/wk/test-02.stog.amr.penman
 create mode 100644 amrbatch/filepath_manager.py
 create mode 100644 amrbatch/logging.conf
 create mode 100644 tests/amrbatch.log
 create mode 100644 tests/output/Test-20230302/test-01/test-01.stog.amr.dot
 create mode 100644 tests/output/Test-20230302/test-01/test-01.stog.amr.nt
 create mode 100644 tests/output/Test-20230302/test-01/test-01.stog.amr.penman
 create mode 100644 tests/output/Test-20230302/test-01/test-01.stog.amr.png
 create mode 100644 tests/output/Test-20230302/test-01/test-01.stog.amr.ttl
 create mode 100644 tests/output/Test-20230302/test-02/test-02.stog.amr.dot
 create mode 100644 tests/output/Test-20230302/test-02/test-02.stog.amr.nt
 create mode 100644 tests/output/Test-20230302/test-02/test-02.stog.amr.penman
 create mode 100644 tests/output/Test-20230302/test-02/test-02.stog.amr.png
 create mode 100644 tests/output/Test-20230302/test-02/test-02.stog.amr.ttl
 create mode 100644 tests/output/Test-20230302/test.sentence.txt
 create mode 100644 tests/output/Test-20230303/test-01/test-01.stog.amr.dot
 create mode 100644 tests/output/Test-20230303/test-01/test-01.stog.amr.nt
 create mode 100644 tests/output/Test-20230303/test-01/test-01.stog.amr.penman
 create mode 100644 tests/output/Test-20230303/test-01/test-01.stog.amr.png
 create mode 100644 tests/output/Test-20230303/test-01/test-01.stog.amr.ttl
 create mode 100644 tests/output/Test-20230303/test-02/test-02.stog.amr.dot
 create mode 100644 tests/output/Test-20230303/test-02/test-02.stog.amr.nt
 create mode 100644 tests/output/Test-20230303/test-02/test-02.stog.amr.penman
 create mode 100644 tests/output/Test-20230303/test-02/test-02.stog.amr.png
 create mode 100644 tests/output/Test-20230303/test-02/test-02.stog.amr.ttl
 create mode 100644 tests/output/Test-20230303/test.sentence.txt

diff --git a/.gitignore b/.gitignore
index 954ce385..2e448788 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@ __pycache__
 *.todo
 *.ttl.tbc
 *catalog-v001.xml
+venv/*
diff --git a/README.md b/README.md
index ad601ef4..5fc94690 100644
--- a/README.md
+++ b/README.md
@@ -5,11 +5,48 @@ AMR Batch is a python library to parse natural language sentences in order to bu
 
 This library is currently under development, and therefore in unstable state.
 
-## Environment Setup
-The python code has been tested under Python 3.7 and Linux Manjaro, but should be run on most common systems (Linux, Windows, Mac).
+
+### Installation
+This project was developp under Python 3.7 and Manjaro Linux system, but should be run on most common systems (Linux, Windows, Mac).
 All dependencies are listed in requirements.txt.
 
+First, it is recommended to use a [virtual environment](https://docs.python.org/fr/3/tutorial/venv.html).
+For example, 'venv' can be create and use with the following commands:
+
+    python3 -m venv venv
+
+    source venv/bin/activate
+
+The necessary libraries are defined in the file 'requirements.txt', and can be installed in the virtual environment using package installer as pip:
+
+    pip install -r requirements.txt
+
+See specific installation instructions about amrlib
+([amrlib-install](https://amrlib.readthedocs.io/en/latest/install/)).
+
+So, it is necessary to install the models used by amrlib library.
+Models can be downloaded from
+[amrlib-models](https://github.com/bjascob/amrlib-models).
+
+These files need to be extracted and reside in a directory. The path to this directory can then be passed as a parameter of the main method. The model STOG 'xfm_bart_large-v0_1_0' (from source dir 'amrbatch/models/') is used by default if no model is given.
+
+
 ## Usage
 The script **test_amrbatch_main.py** (test directory) gives an example of using the library.
 
 
+# References
+-------------------------------------------------------------------------------
+
+[amrlib](https://github.com/bjascob/amrlib):
+A python library that makes AMR parsing, generation and visualization simple.
+
+
+[amr-ld](https://github.com/BMKEG/amr-ld/):
+A Python library for mapping AMRs to linked data formats (such as RDF and JSON-LD).
+
+Burns, G.A., Hermjakob, U., Ambite, J.L. (2016).
+Abstract Meaning Representations as Linked Data.
+In: , et al. The Semantic Web – ISWC 2016. ISWC 2016.
+Lecture Notes in Computer Science(), vol 9982. Springer, Cham.
+https://doi.org/10.1007/978-3-319-46547-0_2
diff --git a/amrbatch/amrld/.gitignore b/amrbatch/amrld/.gitignore
deleted file mode 100644
index ee142b2e..00000000
--- a/amrbatch/amrld/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-.project
-.pydevproject
-.history
-.settings
-*.pyc
-out.rdf
-.DS_Store
diff --git a/amrbatch/amrld/test/bio_ras_0001_1.json b/amrbatch/amrld/test/bio_ras_0001_1.json
deleted file mode 100644
index c790bd5f..00000000
--- a/amrbatch/amrld/test/bio_ras_0001_1.json
+++ /dev/null
@@ -1,61 +0,0 @@
-[
-  {
-    "root": {
-      "domain": {
-        "op1": {
-          "@id": "g", 
-          "@type": "gene", 
-          "name": {
-            "@id": "n", 
-            "@type": "name", 
-            "op1": "KRAS"
-          }
-        }, 
-        "@id": "a", 
-        "@type": "and", 
-        "op2": {
-          "@id": "g2", 
-          "@type": "gene", 
-          "name": {
-            "@id": "n2", 
-            "@type": "name", 
-            "op1": "PIK3CA"
-          }
-        }, 
-        "op3": {
-          "@id": "g3", 
-          "@type": "gene", 
-          "name": {
-            "@id": "n3", 
-            "@type": "name", 
-            "op1": "BRAF"
-          }
-        }
-      }, 
-      "@id": "o", 
-      "@type": "oncogene", 
-      "location": {
-        "@id": "c", 
-        "@type": "cancer"
-      }
-    }, 
-    "has-date": "2014-08-13T14:22:25", 
-    "@context": {
-      "and": "http://amr.isi.edu/rdf/core-amr#and", 
-      "oncogene": "http://amr.isi.edu/rdf/core-amr#oncogene", 
-      "kill-01": "https://verbs.colorado.edu/propbank#kill-01", 
-      "name": "http://amr.isi.edu/rdf/core-amr#name", 
-      "cancer": "http://amr.isi.edu/rdf/core-amr#cancer", 
-      "most": "http://amr.isi.edu/rdf/core-amr#most", 
-      "@base": "http://amr.isi.edu/amr_data/bio.ras_0001_1#", 
-      "human": "http://amr.isi.edu/rdf/core-amr#human", 
-      "gene": "http://amr.isi.edu/entity-types#gene", 
-      "root": "http://amr.isi.edu/rdf/core-amr#root", 
-      "frequent": "http://amr.isi.edu/rdf/core-amr#frequent", 
-      "mutate-01": "https://verbs.colorado.edu/propbank#mutate-01"
-    }, 
-    "@id": "bio.ras_0001_1", 
-    "@type": "http://amr.isi.edu/rdf/core-amr#AMR", 
-    "has-sentence": "The most frequently mutated oncogenes in the deadliest cancers responsible for human mortality are KRAS , PIK3CA and BRAF ."
-  }
-]
\ No newline at end of file
diff --git a/amrbatch/amrld/test/bio_ras_0001_1.rdf b/amrbatch/amrld/test/bio_ras_0001_1.rdf
deleted file mode 100644
index 642dab56..00000000
--- a/amrbatch/amrld/test/bio_ras_0001_1.rdf
+++ /dev/null
@@ -1,39 +0,0 @@
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#k> <http://amr.isi.edu/rdf/core-amr#ARG1> <http://amr.isi.edu/amr_data/bio.ras_0001_1#h> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#root01> <http://amr.isi.edu/rdf/core-amr#has-sentence> "The most frequently mutated oncogenes in the deadliest cancers responsible for human mortality are KRAS , PIK3CA and BRAF ." .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#f> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#frequent> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#n> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#name> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#g2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/entity-types#gene> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#and> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#o> <http://amr.isi.edu/rdf/core-amr#location> <http://amr.isi.edu/amr_data/bio.ras_0001_1#c> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#root01> <http://amr.isi.edu/rdf/core-amr#has-id> "bio.ras_0001_1" .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#m> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#most> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#f> <http://amr.isi.edu/rdf/core-amr#degree> <http://amr.isi.edu/amr_data/bio.ras_0001_1#m3> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#n2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#name> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#n3> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#name> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#root01> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#AMR> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#a> <http://amr.isi.edu/rdf/core-amr#op3> <http://amr.isi.edu/amr_data/bio.ras_0001_1#g3> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#k> <http://amr.isi.edu/rdf/core-amr#ARG0> <http://amr.isi.edu/amr_data/bio.ras_0001_1#c> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#a> <http://amr.isi.edu/rdf/core-amr#op1> <http://amr.isi.edu/amr_data/bio.ras_0001_1#g> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#n2> <http://amr.isi.edu/rdf/core-amr#op1> "PIK3CA" .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#g> <http://amr.isi.edu/rdf/core-amr#name> <http://amr.isi.edu/amr_data/bio.ras_0001_1#n> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#m3> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#most> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#o> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#oncogene> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#m2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://verbs.colorado.edu/propbank#mutate-01> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#k> <http://amr.isi.edu/rdf/core-amr#degree> <http://amr.isi.edu/amr_data/bio.ras_0001_1#m> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#m2> <http://amr.isi.edu/rdf/core-amr#frequency> <http://amr.isi.edu/amr_data/bio.ras_0001_1#f> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#k> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://verbs.colorado.edu/propbank#kill-01> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#h> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#human> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#g3> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/entity-types#gene> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#root01> <http://amr.isi.edu/rdf/core-amr#root> <http://amr.isi.edu/amr_data/bio.ras_0001_1#o> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#c> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#cancer> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#n3> <http://amr.isi.edu/rdf/core-amr#op1> "BRAF" .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#o> <http://amr.isi.edu/rdf/core-amr#TOP> <http://amr.isi.edu/amr_data/bio.ras_0001_1#o> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#o> <http://amr.isi.edu/rdf/core-amr#domain> <http://amr.isi.edu/amr_data/bio.ras_0001_1#a> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#g2> <http://amr.isi.edu/rdf/core-amr#name> <http://amr.isi.edu/amr_data/bio.ras_0001_1#n2> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#g> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/entity-types#gene> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#n> <http://amr.isi.edu/rdf/core-amr#op1> "KRAS" .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#m2> <http://amr.isi.edu/rdf/core-amr#ARG1> <http://amr.isi.edu/amr_data/bio.ras_0001_1#o> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#g3> <http://amr.isi.edu/rdf/core-amr#name> <http://amr.isi.edu/amr_data/bio.ras_0001_1#n3> .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#root01> <http://amr.isi.edu/rdf/core-amr#has-date> "2014-08-13T14:22:25" .
-<http://amr.isi.edu/amr_data/bio.ras_0001_1#a> <http://amr.isi.edu/rdf/core-amr#op2> <http://amr.isi.edu/amr_data/bio.ras_0001_1#g2> .
-
diff --git a/amrbatch/amrld/test/bio_ras_0001_1.txt b/amrbatch/amrld/test/bio_ras_0001_1.txt
deleted file mode 100644
index c79b0e4d..00000000
--- a/amrbatch/amrld/test/bio_ras_0001_1.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-# ::id bio.ras_0001_1 ::date 2014-08-13T14:22:25
-# ::snt The most frequently mutated oncogenes in the deadliest cancers responsible for human mortality are KRAS , PIK3CA and BRAF .
-
-(o / oncogene
-      :domain (a / and
-            :op1 (g / gene :name (n / name :op1 "KRAS"))
-            :op2 (g2 / gene :name (n2 / name :op1 "PIK3CA"))
-            :op3 (g3 / gene :name (n3 / name :op1 "BRAF")))
-      :location (c / cancer
-            :ARG0-of (k / kill-01
-                  :ARG1 (h / human)
-                  :degree (m / most)))
-      :ARG1-of (m2 / mutate-01
-            :frequency (f / frequent
-                  :degree (m3 / most))))
diff --git a/amrbatch/amrld/test/pmid-11777939-32_amr.rdf b/amrbatch/amrld/test/pmid-11777939-32_amr.rdf
deleted file mode 100644
index 9c69ec8b..00000000
--- a/amrbatch/amrld/test/pmid-11777939-32_amr.rdf
+++ /dev/null
@@ -1,70 +0,0 @@
-@prefix ns1: <http://amr.isi.edu/rdf/core-amr#> .
-@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
-@prefix xml: <http://www.w3.org/XML/1998/namespace> .
-@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#root01> a ns1:AMR ;
-    ns1:has-date "2015-02-27T00:14:25" ;
-    ns1:has-id "pmid_1177_7939.32" ;
-    ns1:has-sentence "In previous studies, we showed that Sos-1, E3b1, and Eps8 could form a trimeric complex in vivo upon concomitant overexpression of the three proteins." ;
-    ns1:root <http://amr.isi.edu/amr_data/pmid_1177_7939.32#s> .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#c> a ns1:concomitant .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#e2> a <http://amr.isi.edu/entity-types#enzyme> ;
-    ns1:name <http://amr.isi.edu/amr_data/pmid_1177_7939.32#n3> .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#f> a <https://verbs.colorado.edu/propbank#form-01> ;
-    ns1:ARG0 <http://amr.isi.edu/amr_data/pmid_1177_7939.32#a> ;
-    ns1:ARG1 <http://amr.isi.edu/amr_data/pmid_1177_7939.32#m> ;
-    ns1:condition <http://amr.isi.edu/amr_data/pmid_1177_7939.32#o> ;
-    ns1:manner <http://amr.isi.edu/amr_data/pmid_1177_7939.32#i> ;
-    ns1:mod <http://amr.isi.edu/amr_data/pmid_1177_7939.32#p> .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#i> a ns1:in-vivo .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#m> a <http://amr.isi.edu/entity-types#macro-molecular-complex> ;
-    ns1:mod <http://amr.isi.edu/amr_data/pmid_1177_7939.32#t> .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#n> a ns1:name ;
-    ns1:op1 "Sos-1" .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#n2> a ns1:name ;
-    ns1:op1 "E3b1" .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#n3> a ns1:name ;
-    ns1:op1 "Eps8" .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#o> a <https://verbs.colorado.edu/propbank#overexpress-00> ;
-    ns1:ARG2 <http://amr.isi.edu/amr_data/pmid_1177_7939.32#a> ;
-    ns1:manner <http://amr.isi.edu/amr_data/pmid_1177_7939.32#c> .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#p> a ns1:possible .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#p2> a <http://amr.isi.edu/entity-types#protein> ;
-    ns1:name <http://amr.isi.edu/amr_data/pmid_1177_7939.32#n> .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#p3> a <http://amr.isi.edu/entity-types#protein> ;
-    ns1:name <http://amr.isi.edu/amr_data/pmid_1177_7939.32#n2> .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#p5> a ns1:previous .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#s2> a ns1:study ;
-    ns1:time <http://amr.isi.edu/amr_data/pmid_1177_7939.32#p5> .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#t> a ns1:trimeric .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#w> a ns1:we .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#a> a ns1:and ;
-    ns1:op1 <http://amr.isi.edu/amr_data/pmid_1177_7939.32#p2> ;
-    ns1:op2 <http://amr.isi.edu/amr_data/pmid_1177_7939.32#p3> ;
-    ns1:op3 <http://amr.isi.edu/amr_data/pmid_1177_7939.32#e2> .
-
-<http://amr.isi.edu/amr_data/pmid_1177_7939.32#s> a <https://verbs.colorado.edu/propbank#show-01> ;
-    ns1:ARG0 <http://amr.isi.edu/amr_data/pmid_1177_7939.32#w> ;
-    ns1:ARG1 <http://amr.isi.edu/amr_data/pmid_1177_7939.32#f> ;
-    ns1:TOP <http://amr.isi.edu/amr_data/pmid_1177_7939.32#s> ;
-    ns1:medium <http://amr.isi.edu/amr_data/pmid_1177_7939.32#s2> .
-
diff --git a/amrbatch/amrld/test/pmid-11777939-32_amr.txt b/amrbatch/amrld/test/pmid-11777939-32_amr.txt
deleted file mode 100755
index d53255b7..00000000
--- a/amrbatch/amrld/test/pmid-11777939-32_amr.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-# ::id pmid_1177_7939.32 ::date 2015-02-27T00:14:25 ::authors mrizea
-# ::snt In previous studies, we showed that Sos-1, E3b1, and Eps8 could form a trimeric complex in vivo upon concomitant overexpression of the three proteins.
-# ::note Sentence+ loaded by script SntLoaderUlf1.7.pl
-# ::save-date Wed Apr 1, 2015 ::user bbadarau ::file pmid_1177_7939_32.txt
-(s / show-01
-      :ARG0 (w / we)
-      :ARG1 (f / form-01
-            :ARG0 (a / and
-                  :op1 (p2 / protein :name (n / name :op1 "Sos-1"))
-                  :op2 (p3 / protein :name (n2 / name :op1 "E3b1"))
-                  :op3 (e2 / enzyme :name (n3 / name :op1 "Eps8")))
-            :ARG1 (m / macro-molecular-complex
-                  :mod (t / trimeric))
-            :mod (p / possible)
-            :manner (i / in-vivo)
-            :condition (o / overexpress-00
-                  :ARG2 a
-                  :manner (c / concomitant)))
-      :medium (s2 / study
-            :time (p5 / previous)))
\ No newline at end of file
diff --git a/amrbatch/amrld/test/test.amr.graph b/amrbatch/amrld/test/test.amr.graph
deleted file mode 100644
index d374bd90..00000000
--- a/amrbatch/amrld/test/test.amr.graph
+++ /dev/null
@@ -1,12 +0,0 @@
-# ::id test-1
-# ::snt The sun is a star.
-(s / star
-      :domain (s2 / sun))
-
-# ::id test-2
-# ::snt Earth is a planet.
-(p / planet
-      :domain p
-      :name (n / name
-            :op1 "Earth"))
-
diff --git a/amrbatch/amrld/wk/__wk__.txt b/amrbatch/amrld/wk/__wk__.txt
new file mode 100644
index 00000000..8d1c8b69
--- /dev/null
+++ b/amrbatch/amrld/wk/__wk__.txt
@@ -0,0 +1 @@
+ 
diff --git a/amrbatch/amrld/wk/test-01.stog.amr.nt b/amrbatch/amrld/wk/test-01.stog.amr.nt
new file mode 100644
index 00000000..49251ca4
--- /dev/null
+++ b/amrbatch/amrld/wk/test-01.stog.amr.nt
@@ -0,0 +1,22 @@
+<http://amr.isi.edu/amr_data/test-01#root01> <http://amr.isi.edu/rdf/core-amr#has-sentence> "The sun is a star." .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-EntityType" .
+<http://amr.isi.edu/rdf/core-amr#Frame> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/rdf/core-amr#Concept> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Concept" .
+<http://amr.isi.edu/amr_data/test-01#s> <http://amr.isi.edu/rdf/amr-terms#domain> <http://amr.isi.edu/amr_data/test-01#s2> .
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Role> .
+<http://amr.isi.edu/entity-types#star> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#NamedEntity> .
+<http://amr.isi.edu/amr_data/test-01#root01> <http://amr.isi.edu/rdf/core-amr#has-id> "test-01" .
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-PropBank-Role" .
+<http://amr.isi.edu/rdf/amr-terms#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Role> .
+<http://amr.isi.edu/rdf/core-amr#Role> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://amr.isi.edu/amr_data/test-01#s> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/entity-types#star> .
+<http://amr.isi.edu/amr_data/test-01#root01> <http://amr.isi.edu/rdf/core-amr#root> <http://amr.isi.edu/amr_data/test-01#s> .
+<http://amr.isi.edu/rdf/core-amr#Frame> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-PropBank-Frame" .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/rdf/core-amr#Concept> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://amr.isi.edu/amr_data/test-01#root01> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#AMR> .
+<http://amr.isi.edu/amr_data/test-01#s2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/amr-terms#sun> .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Term" .
+<http://amr.isi.edu/rdf/amr-terms#sun> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/rdf/core-amr#Role> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Role" .
+
diff --git a/amrbatch/amrld/wk/test-01.stog.amr.penman b/amrbatch/amrld/wk/test-01.stog.amr.penman
new file mode 100644
index 00000000..4f70746d
--- /dev/null
+++ b/amrbatch/amrld/wk/test-01.stog.amr.penman
@@ -0,0 +1,4 @@
+# ::id test-01
+# ::snt The sun is a star.
+(s / star
+      :domain (s2 / sun))
\ No newline at end of file
diff --git a/amrbatch/amrld/wk/test-02.stog.amr.nt b/amrbatch/amrld/wk/test-02.stog.amr.nt
new file mode 100644
index 00000000..92e70c98
--- /dev/null
+++ b/amrbatch/amrld/wk/test-02.stog.amr.nt
@@ -0,0 +1,19 @@
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Term" .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/rdf/core-amr#Concept> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://amr.isi.edu/amr_data/test-02#root01> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#AMR> .
+<http://amr.isi.edu/amr_data/test-02#p> <http://www.w3.org/2000/01/rdf-schema#label> "Earth" .
+<http://amr.isi.edu/rdf/core-amr#Concept> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Concept" .
+<http://amr.isi.edu/amr_data/test-02#root01> <http://amr.isi.edu/rdf/core-amr#root> <http://amr.isi.edu/amr_data/test-02#p> .
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Role> .
+<http://amr.isi.edu/rdf/core-amr#Role> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Role" .
+<http://amr.isi.edu/rdf/core-amr#Frame> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/entity-types#planet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#NamedEntity> .
+<http://amr.isi.edu/amr_data/test-02#p> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/entity-types#planet> .
+<http://amr.isi.edu/amr_data/test-02#root01> <http://amr.isi.edu/rdf/core-amr#has-id> "test-02" .
+<http://amr.isi.edu/amr_data/test-02#root01> <http://amr.isi.edu/rdf/core-amr#has-sentence> "Earth is a planet." .
+<http://amr.isi.edu/rdf/core-amr#Frame> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-PropBank-Frame" .
+<http://amr.isi.edu/rdf/core-amr#Role> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-EntityType" .
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-PropBank-Role" .
+
diff --git a/amrbatch/amrld/wk/test-02.stog.amr.penman b/amrbatch/amrld/wk/test-02.stog.amr.penman
new file mode 100644
index 00000000..c43f2d1e
--- /dev/null
+++ b/amrbatch/amrld/wk/test-02.stog.amr.penman
@@ -0,0 +1,6 @@
+# ::id test-02
+# ::snt Earth is a planet.
+(p / planet
+      :domain p
+      :name (n / name
+            :op1 "Earth"))
\ No newline at end of file
diff --git a/amrbatch/filepath_manager.py b/amrbatch/filepath_manager.py
new file mode 100644
index 00000000..4075cff5
--- /dev/null
+++ b/amrbatch/filepath_manager.py
@@ -0,0 +1,112 @@
+#!/usr/bin/python3.10
+# -*-coding:Utf-8 -*
+
+#==============================================================================
+# AMR Batch: Filepath Manager
+#------------------------------------------------------------------------------
+# Handler to manage file paths.
+#==============================================================================
+
+import sys, os, glob
+import shutil
+
+# Reference Suffix
+TEXT_SUFFIX = ".txt"
+SENTENCE_SUFFIX = ".sentence.txt"
+PENMAN_AMR_GRAPH_SUFFIX = ".stog.amr.penman"
+DOT_AMR_GRAPH_SUFFIX = ".stog.amr.dot"
+PNG_AMR_GRAPH_SUFFIX = ".stog.amr.png"
+AMR_RDF_SUFFIX = ".stog.amr.nt"
+AMR_TTL_SUFFIX = ".stog.amr.ttl"
+
+# AMRLD Parameters
+LIB_PATH = os.path.dirname(os.path.abspath(__file__)) + '/'
+AMRLD_DIR = f'{LIB_PATH}amrld/'
+WK_DIR = 'wk/'
+AMRLD_WORKDIR = AMRLD_DIR + WK_DIR
+
+
+#==============================================================================
+# Class
+#==============================================================================
+
+class FilepathManager:
+    """ Class to handle filepaths.
+    """    
+    
+    #--------------------------------------------------------------------------
+    # Constructor
+    #--------------------------------------------------------------------------
+              
+    def __init__(self, input_filepath, output_dirpath=None):
+    
+        self.base_reference = os.path.splitext(os.path.basename(input_filepath))[0]
+        
+        self.input_filepath = input_filepath
+        self.input_dirpath = os.path.dirname(input_filepath)
+        
+        if output_dirpath is None:
+            self.output_dirpath = self._input_dirpath
+        else:
+            self.output_dirpath = output_dirpath
+    
+        
+    #--------------------------------------------------------------------------
+    # Filepath Accessors 
+    #--------------------------------------------------------------------------
+   
+    def get_workdata_output_dirpath(self, data_ref):
+        return f'{self.output_dirpath}{data_ref}/'
+
+    def get_sentence_output_filepath(self):
+        return f'{self.output_dirpath}{self.base_reference}{SENTENCE_SUFFIX}'
+    
+    def get_data_output_filepath(self, data):
+        return f'{self.output_dirpath}{data["output_data_dir"]}'
+    
+    def get_penman_amr_graph_output_filepath(self, data):
+        dirpath = self.get_data_output_filepath(data)
+        filename = f'{data["data_ref"]}{PENMAN_AMR_GRAPH_SUFFIX}'
+        return f'{dirpath}{filename}'
+    
+    def get_dot_amr_graph_output_filepath(self, data):
+        dirpath = self.get_data_output_filepath(data)
+        filename = f'{data["data_ref"]}{DOT_AMR_GRAPH_SUFFIX}'
+        return f'{dirpath}{filename}'
+    
+    def get_png_amr_graph_output_filepath(self, data):
+        dirpath = self.get_data_output_filepath(data)
+        filename = f'{data["data_ref"]}{PNG_AMR_GRAPH_SUFFIX}'
+        return f'{dirpath}{filename}'
+    
+    def get_amr_rdf_triple_output_filepath(self, data):
+        dirpath = self.get_data_output_filepath(data)
+        filename = f'{data["data_ref"]}{AMR_RDF_SUFFIX}'
+        return f'{dirpath}{filename}'
+    
+    def get_amr_rdf_turtle_output_filepath(self, data):
+        dirpath = self.get_data_output_filepath(data)
+        filename = f'{data["data_ref"]}{AMR_TTL_SUFFIX}'
+        return f'{dirpath}{filename}'
+    
+    def get_amr_graph_amrld_filepath(self, data):
+        dirpath = f'{AMRLD_WORKDIR}'
+        filename = f'{data["data_ref"]}{PENMAN_AMR_GRAPH_SUFFIX}'
+        return f'{dirpath}{filename}'
+    
+    def get_amr_rdf_amrld_filepath(self, data):
+        dirpath = f'{AMRLD_WORKDIR}'
+        filename = f'{data["data_ref"]}{AMR_RDF_SUFFIX}'
+        return f'{dirpath}{filename}'
+    
+    def get_amr_graph_wk_filepath(self, data):
+        dirpath = f'{WK_DIR}'
+        filename = f'{data["data_ref"]}{PENMAN_AMR_GRAPH_SUFFIX}'
+        return f'{dirpath}{filename}'
+    
+    def get_amr_rdf_wk_filepath(self, data):
+        dirpath = f'{WK_DIR}'
+        filename = f'{data["data_ref"]}{AMR_RDF_SUFFIX}'
+        return f'{dirpath}{filename}'
+    
+    
diff --git a/amrbatch/logging.conf b/amrbatch/logging.conf
new file mode 100644
index 00000000..6006ebdb
--- /dev/null
+++ b/amrbatch/logging.conf
@@ -0,0 +1,39 @@
+[loggers]
+keys=root
+
+[handlers]
+keys=consoleSimpleHandler,consoleWarningHandler,fileHandler
+
+[formatters]
+keys=simpleFormat,warningFormat,fileFormat
+
+[logger_root]
+level=DEBUG
+handlers=consoleWarningHandler,consoleSimpleHandler,fileHandler
+
+[handler_consoleSimpleHandler]
+class=StreamHandler
+level=INFO
+formatter=simpleFormat
+args=(sys.stdout,)
+
+[handler_consoleWarningHandler]
+class=StreamHandler
+level=WARNING
+formatter=warningFormat
+args=(sys.stdout,)
+
+[handler_fileHandler]
+class=FileHandler
+level=DEBUG
+formatter=fileFormat
+args=('amrbatch.log', 'w+', 'utf8')
+
+[formatter_simpleFormat]
+format=%(message)s
+
+[formatter_warningFormat]
+format=%(asctime)s - %(levelname)s (%(name)s, %(lineno)d)
+
+[formatter_fileFormat]
+format= - %(levelname)s - %(message)s
diff --git a/amrbatch/main.py b/amrbatch/main.py
index a60a622b..336a0df2 100644
--- a/amrbatch/main.py
+++ b/amrbatch/main.py
@@ -8,39 +8,278 @@
 #==============================================================================
 
 import sys, os, glob
-import shutil
+import shutil, re
+import subprocess
+import amrlib
 from rdflib import Graph
+import traceback
+import logging.config
 
+from amrlib.graph_processing.amr_plot import AMRPlot
+from filepath_manager import FilepathManager
 
+# -- Config File Path
+LIB_PATH = os.path.dirname(os.path.abspath(__file__)) + '/'
+LOGGING_CONF_FILE_PATH = f'{LIB_PATH}logging.conf'
+CONFIG_FILE_PATH = f'{LIB_PATH}config.xml'
+
+# AMRLD Parameters
+AMRLD_DIR = f'{LIB_PATH}amrld/'
+AMRLD_WORKDIR = f'{AMRLD_DIR}wk/'
+
+# -- Logging
+logging.config.fileConfig(LOGGING_CONF_FILE_PATH, disable_existing_loggers=True)
+logger = logging.getLogger('root')
+
+
+
+#==============================================================================
+# Functions to manage in-process data
+#==============================================================================
+
+def is_valid_sentence(sentence):
+    """ True if the sentence is correct.
+    """
+    is_empty = ((sentence == "") | (sentence == "\n"))
+    lang_mark_re = re.compile("\([a-z]+\)(.)*")
+    is_language_mark = lang_mark_re.match(sentence) is not None
+    return not (is_empty | is_language_mark)
+
+
+def clean_sentence(sentence):
+    """ Sentence cleanup as needed """
+    sentence = re.sub("(\.)*\\n", "", sentence)
+    return sentence
+
+
+def define_new_data(base_ref, number, sentence):
+    
+    number_str = str(number).rjust(2,"0")
+    data_ref = base_ref + "-" + number_str
+    output_data_dir = data_ref + "/"
+    id_line_str = "# ::id " + data_ref + "\n"
+    sentence = clean_sentence(sentence)
+    sentence += "."
+    
+    new_data = {
+        "base_ref" : data_ref,
+        "number" : number,
+        "output_data_dir" : output_data_dir,
+        "data_ref" : data_ref,
+        "id_line_str" : id_line_str,
+        "sentence" : sentence,
+        "graph" : ""
+            }
     
+    return new_data
+
+    
+def get_amr_graph_list(workdata_list):
+    amr_graph_list = []
+    for workdata in workdata_list:
+        amr_graph_list.append(workdata['graph'])
+    return amr_graph_list
+        
    
 #==============================================================================
-# Steps
+# Preparation Steps
 #==============================================================================
 
-# TODO
+def __prepare_workdata(filepath_manager):
+    logger.info('-- Reading input files to recover a list of sentences')
+    input_filepath = filepath_manager.input_filepath
+    base_reference = filepath_manager.base_reference
+    
+    workdata_list = list()
+    
+    sentence_number = 0
+    with open(input_filepath, "r") as reading_file: # r = read
+        for line in reading_file.readlines():
+            sentences = line.split(". ")
+            for sentence in sentences:
+                if is_valid_sentence(sentence):
+                    sentence_number += 1
+                    new_data = define_new_data(base_reference, sentence_number, sentence)
+                    workdata_list.append(new_data)
+                    logger.debug(f' *** sentence {sentence_number} *** \n{new_data}')
+    
+    logger.info(f'----- number of sentences: {len(workdata_list)}')
+    return workdata_list 
+    
+
+def __build_output_dir_tree(filepath_manager, workdata_list):
+    base_output_dirpath = filepath_manager.output_dirpath
+    logger.debug(f'-- Making output directory tree ({base_output_dirpath})')
+    os.makedirs(base_output_dirpath, exist_ok=True)
+    for data in workdata_list:
+        output_dir = filepath_manager.get_workdata_output_dirpath(data["output_data_dir"])
+        os.makedirs(output_dir, exist_ok=True)
+       
+
+def __generate_sentence_file(filepath_manager, workdata_list):                    
+    sentence_filepath = filepath_manager.get_sentence_output_filepath()
+    logger.debug(f"-- Generating sentence file ")
+    with open(sentence_filepath, "w") as writing_file: # w = write 
+        first = True
+        for workdata in workdata_list:
+            if not first: writing_file.write("\n")
+            writing_file.write(workdata["sentence"])
+            first = False
     
 
+
+   
 #==============================================================================
-# AMR Main Methods 
+# Conversion Steps
 #==============================================================================
 
-def parse_sentences_from_file(input_file_path,  
-                              output_penman_file_path=None, 
-                              technical_dir_path=None):
+def __generate_penman_amr_graph(filepath_manager, data):   
+    """ AMR graph generation in penman format """
+  
+    graph = data["graph"]    
+    output_filepath = filepath_manager.get_penman_amr_graph_output_filepath(data)
+    logger.debug(f"----- AMR Graph file (penman): {os.path.basename(output_filepath)}")
+    with open(output_filepath, "w") as writing_file: # w = write
+        writing_file.write(data["id_line_str"])
+        writing_file.write(graph)
+
+
+
+def __generate_dot_amr_graph(filepath_manager, data):
+    """ AMR graph generation in dot and png format """
+    
+    graph = data["graph"]
+    
+    try:
+        # -- generating dot/png files using AMRLib and GraphViz 
+        dot_filename = filepath_manager.get_dot_amr_graph_output_filepath(data)
+        format = 'png'
+        logger.debug(f'----- AMR Graph file (dot): {os.path.basename(dot_filename)}')
+        plot = AMRPlot(dot_filename, format) 
+        plot.build_from_graph(graph)
+        plot.graph.render()
+        
+        render_fn = dot_filename + '.' + format # -- renaming PNG file
+        good_png_fn = filepath_manager.get_png_amr_graph_output_filepath(data)
+        logger.debug(f'----- AMR Graph file (png): {{os.path.basename(good_png_fn)}}')
+        os.rename(render_fn, good_png_fn)
+        
+    except:
+        logger.warning('Exception when trying to plot')
+        traceback.print_exc()
+        
+    
+
+
+def __convert_sentences_to_graphs(amr_model, workdata_list):
+    """ Converting text sentences to AMR graphs """
+    
+    logger.info("-- Loading AMR model")
+    stog = amrlib.load_stog_model(model_dir=amr_model)
+
+    logger.info("-- Converting sentences to AMR graphs")
+    wd_number = 0
+    for data in workdata_list:
+        wd_number += 1
+        stog_result = stog.parse_sents([data["sentence"]])
+        logger.info(f'----- Sentence {wd_number} successfully processed')
+        logger.debug(stog_result)
+        data["graph"] = stog_result[0]
+        
+    logger.info(f'----- Total processed graph number: {wd_number}') 
+    return workdata_list
+    
+
+        
+def __generate_amr_graph_files(filepath_manager, workdata_list):
+    logger.info("-- Generating AMR graph files")
+    for data in workdata_list:
+        __generate_penman_amr_graph(filepath_manager, data)
+        __generate_dot_amr_graph(filepath_manager, data)
+   
+    
+   
+#==============================================================================
+# Serialization Steps
+#==============================================================================
+
+def __serialize_amr_graph_to_rdf_triple(filepath_manager, data):
+    """ Serialize AMR graph to AMR-RDF triple """
+    
+    # -- Filepath
+    input_file = filepath_manager.get_penman_amr_graph_output_filepath(data)
+    input_amrld_file = filepath_manager.get_amr_graph_amrld_filepath(data)
+    output_amrld_file = filepath_manager.get_amr_rdf_amrld_filepath(data)
+    input_wk_file = filepath_manager.get_amr_graph_wk_filepath(data)
+    output_wk_file = filepath_manager.get_amr_rdf_wk_filepath(data)
+    amr_triple_file = filepath_manager.get_amr_rdf_triple_output_filepath(data)
+    
+    # -- AMR-LD processing
+    amrld_process = ["python3", "amr_to_rdf.py", 
+                     "-i", input_wk_file, 
+                     "-o", output_wk_file]
+    if (os.path.isfile(input_file)):
+        logger.info("-- Serialize AMR graphs to RDF using amr-ld library")
+        logger.debug(f'----- penman filepath: {input_file}')
+        logger.debug(f'----- AMRLD filepath: {input_amrld_file}')
+        shutil.copyfile(input_file, input_amrld_file) 
+        current_dirpath = os.getcwd()
+        os.chdir(AMRLD_DIR)
+        subprocess.run(amrld_process)   
+        os.chdir(current_dirpath)
+
+    # -- Copy result
+    if (os.path.isfile(output_amrld_file)):
+        logger.info(f'-- Generating AMR RDF file (triple): {os.path.basename(amr_triple_file)}')
+        shutil.copyfile(output_amrld_file, amr_triple_file) 
+        
+        
+def __convert_rdf_triple_to_rdf_turtle(filepath_manager, data):
+    """ Converting AMR-RDF triple to AMR-RDF turtle """
+    
+    # -- Filepath
+    amr_triple_file = filepath_manager.get_amr_rdf_triple_output_filepath(data)
+    amr_turtle_file = filepath_manager.get_amr_rdf_turtle_output_filepath(data)
+    
+    # -- Conversion
+    if (os.path.isfile(amr_triple_file)):
+        logger.info(f'-- Generating AMR RDF file (turtle): {os.path.basename(amr_turtle_file)}')
+        g = Graph()
+        g.parse(amr_triple_file)
+        g.serialize(destination=amr_turtle_file, format='turtle')
+
+
+
+def __convert_amr_graphs_to_rdf(filepath_manager, data_list):
+    """ Converting AMR graphs to AMR-RDF """
+    
+    for data in data_list:
+        __serialize_amr_graph_to_rdf_triple(filepath_manager, data)
+        __convert_rdf_triple_to_rdf_turtle(filepath_manager, data)
+        
+        
+
+#==============================================================================
+# Main Method(s)
+#==============================================================================
+
+def parse_sentences_from_file(input_filepath, 
+                              amr_model_path, 
+                              output_dirpath=None,
+                              amrld_serialization=False):
     """
     Method to parse an input file containing natural language sentences and 
     construct the corresponding AMR graphs (and their RDF serializations if required).
     The method returns an AMR graph string in PENMAN format. AMR graphs are also 
-    serialized in RDF turtle format using the AMR-LD library if requested 
-    (by defining output_turtle_file_path as a parameter).
+    serialized in RDF turtle format using the AMR-LD library if required 
+    (by defining turtle_output_file_path as parameter).
     
 
     Parameters
     ----------
-    input_file_path: a path to a text file.
-    output_penman_file_path: a file path where the output graphs is written in PENMAN format if defined (the function still outputs the string). 
-    output_turtle_file_path: a file path where the output AMRLD representation is written in TURTLE format if defined. 
+    input_filepath: a path to a text file.
+    output_dirpath: a directory path where the output data are written if defined (the function still outputs the string). 
+    turtle_output_file_path: a file path where the output AMRLD representation is written in TURTLE format if defined. 
     technical_dir_path: a dir path where some technical and log files are written if defined.
 
     Returns
@@ -49,7 +288,35 @@ def parse_sentences_from_file(input_file_path,
 
     """
     
-    pass
+    logger.info('[AMR Batch] NL Document Parsing')    
+  
+    # -- Prepare the sentences to be converted
+    logger.info('\n === Preparation === ')
+    filepath_manager = FilepathManager(input_filepath, output_dirpath)
+    logger.info(f'-- base reference: {filepath_manager.base_reference}')
+    logger.info(f'-- input filepath: {filepath_manager.input_filepath}')
+    logger.info(f'-- output dirpath: {filepath_manager.output_dirpath}')
+    assert os.path.exists(input_filepath), f'input file does not exists ({input_filepath})'
+    workdata_list = __prepare_workdata(filepath_manager)
+    __build_output_dir_tree(filepath_manager, workdata_list)
+    __generate_sentence_file(filepath_manager, workdata_list)
+            
+    # -- Convert sentences to graphs
+    logger.info('\n === Text Convert to AMR Graphs === ')
+    logger.info(f'-- library: amrlib') 
+    logger.debug(f'  ({AMRLD_DIR})') 
+    logger.info(f'-- model: {os.path.basename(amr_model_path)}')
+    logger.debug(f'  ({amr_model_path})') 
+    logger.debug(f'-- working directory: {AMRLD_WORKDIR}')
+    workdata_list = __convert_sentences_to_graphs(amr_model_path, workdata_list)
+    __generate_amr_graph_files(filepath_manager, workdata_list)
+
+    if amrld_serialization==True:
+        # -- Convert graphs to RDF
+        logger.info('\n === AMR Graphs Serialization to AMR-RDF Representation  === ')
+        logger.info("-- library: amrlk") 
+        __convert_amr_graphs_to_rdf(filepath_manager, workdata_list)
+        
     
-    return ''
+    return get_amr_graph_list(workdata_list)
 
diff --git a/tests/amrbatch.log b/tests/amrbatch.log
new file mode 100644
index 00000000..1c35a300
--- /dev/null
+++ b/tests/amrbatch.log
@@ -0,0 +1,48 @@
+- INFO - [AMR Batch] NL Document Parsing
+- INFO - 
+ === Preparation === 
+- INFO - -- base reference: test
+- INFO - -- input filepath: /home/lamenji/Workspace/Tetras/amrbatch/tests/input/test.txt
+- INFO - -- output dirpath: /home/lamenji/Workspace/Tetras/amrbatch/tests/output/Test-20230303/
+- INFO - -- Reading input files to recover a list of sentences
+- DEBUG -  *** sentence 1 *** 
+{'base_ref': 'test-01', 'number': 1, 'output_data_dir': 'test-01/', 'data_ref': 'test-01', 'id_line_str': '# ::id test-01\n', 'sentence': 'The sun is a star.', 'graph': ''}
+- DEBUG -  *** sentence 2 *** 
+{'base_ref': 'test-02', 'number': 2, 'output_data_dir': 'test-02/', 'data_ref': 'test-02', 'id_line_str': '# ::id test-02\n', 'sentence': 'Earth is a planet.', 'graph': ''}
+- INFO - ----- number of sentences: 2
+- DEBUG - -- Making output directory tree (/home/lamenji/Workspace/Tetras/amrbatch/tests/output/Test-20230303/)
+- DEBUG - -- Generating sentence file 
+- INFO - 
+ === Text Convert to AMR Graphs === 
+- INFO - -- library: amrlib
+- DEBUG -   (/home/lamenji/Workspace/Tetras/amrbatch/amrbatch/amrld/)
+- INFO - -- model: model_parse_xfm_bart_large-v0_1_0
+- DEBUG -   (/home/lamenji/Workspace/Tetras/amrbatch/tests/../amr_models/model_parse_xfm_bart_large-v0_1_0)
+- DEBUG - -- working directory: /home/lamenji/Workspace/Tetras/amrbatch/amrbatch/amrld/wk/
+- INFO - -- Loading AMR model
+- INFO - -- Converting sentences to AMR graphs
+- INFO - ----- Sentence 1 successfully processed
+- DEBUG - ['# ::snt The sun is a star.\n(s / star\n      :domain (s2 / sun))']
+- INFO - ----- Sentence 2 successfully processed
+- DEBUG - ['# ::snt Earth is a planet.\n(p / planet\n      :domain p\n      :name (n / name\n            :op1 "Earth"))']
+- INFO - ----- Total processed graph number: 2
+- INFO - -- Generating AMR graph files
+- DEBUG - ----- AMR Graph file (penman): test-01.stog.amr.penman
+- DEBUG - ----- AMR Graph file (dot): test-01.stog.amr.dot
+- DEBUG - ----- AMR Graph file (png): {os.path.basename(good_png_fn)}
+- DEBUG - ----- AMR Graph file (penman): test-02.stog.amr.penman
+- DEBUG - ----- AMR Graph file (dot): test-02.stog.amr.dot
+- DEBUG - ----- AMR Graph file (png): {os.path.basename(good_png_fn)}
+- INFO - 
+ === AMR Graphs Serialization to AMR-RDF Representation  === 
+- INFO - -- library: amrlk
+- INFO - -- Serialize AMR graphs to RDF using amr-ld library
+- DEBUG - ----- penman filepath: /home/lamenji/Workspace/Tetras/amrbatch/tests/output/Test-20230303/test-01/test-01.stog.amr.penman
+- DEBUG - ----- AMRLD filepath: /home/lamenji/Workspace/Tetras/amrbatch/amrbatch/amrld/wk/test-01.stog.amr.penman
+- INFO - -- Generating AMR RDF file (triple): test-01.stog.amr.nt
+- INFO - -- Generating AMR RDF file (turtle): test-01.stog.amr.ttl
+- INFO - -- Serialize AMR graphs to RDF using amr-ld library
+- DEBUG - ----- penman filepath: /home/lamenji/Workspace/Tetras/amrbatch/tests/output/Test-20230303/test-02/test-02.stog.amr.penman
+- DEBUG - ----- AMRLD filepath: /home/lamenji/Workspace/Tetras/amrbatch/amrbatch/amrld/wk/test-02.stog.amr.penman
+- INFO - -- Generating AMR RDF file (triple): test-02.stog.amr.nt
+- INFO - -- Generating AMR RDF file (turtle): test-02.stog.amr.ttl
diff --git a/tests/output/Test-20230302/test-01/test-01.stog.amr.dot b/tests/output/Test-20230302/test-01/test-01.stog.amr.dot
new file mode 100644
index 00000000..57af6466
--- /dev/null
+++ b/tests/output/Test-20230302/test-01/test-01.stog.amr.dot
@@ -0,0 +1,6 @@
+digraph amr_graph {
+	rankdir=LR size="12,8"
+	s [label="s/star" shape=circle]
+	s2 [label="s2/sun" shape=circle]
+	s -> s2 [label=":domain"]
+}
diff --git a/tests/output/Test-20230302/test-01/test-01.stog.amr.nt b/tests/output/Test-20230302/test-01/test-01.stog.amr.nt
new file mode 100644
index 00000000..6ebc9919
--- /dev/null
+++ b/tests/output/Test-20230302/test-01/test-01.stog.amr.nt
@@ -0,0 +1,21 @@
+<http://amr.isi.edu/rdf/core-amr#Concept> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://amr.isi.edu/entity-types#star> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#NamedEntity> .
+<http://amr.isi.edu/rdf/core-amr#Frame> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/rdf/amr-terms#sun> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/amr_data/test-01#root01> <http://amr.isi.edu/rdf/core-amr#has-sentence> "The sun is a star." .
+<http://amr.isi.edu/amr_data/test-01#s2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/amr-terms#sun> .
+<http://amr.isi.edu/rdf/core-amr#Role> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Term" .
+<http://amr.isi.edu/rdf/core-amr#Concept> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Concept" .
+<http://amr.isi.edu/amr_data/test-01#s> <http://amr.isi.edu/rdf/amr-terms#domain> <http://amr.isi.edu/amr_data/test-01#s2> .
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Role> .
+<http://amr.isi.edu/rdf/amr-terms#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Role> .
+<http://amr.isi.edu/amr_data/test-01#s> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/entity-types#star> .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-PropBank-Role" .
+<http://amr.isi.edu/rdf/core-amr#Frame> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-PropBank-Frame" .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-EntityType" .
+<http://amr.isi.edu/rdf/core-amr#Role> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Role" .
+<http://amr.isi.edu/amr_data/test-01#root01> <http://amr.isi.edu/rdf/core-amr#has-id> "test-01" .
+<http://amr.isi.edu/amr_data/test-01#root01> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#AMR> .
+<http://amr.isi.edu/amr_data/test-01#root01> <http://amr.isi.edu/rdf/core-amr#root> <http://amr.isi.edu/amr_data/test-01#s> .
diff --git a/tests/output/Test-20230302/test-01/test-01.stog.amr.penman b/tests/output/Test-20230302/test-01/test-01.stog.amr.penman
new file mode 100644
index 00000000..4f70746d
--- /dev/null
+++ b/tests/output/Test-20230302/test-01/test-01.stog.amr.penman
@@ -0,0 +1,4 @@
+# ::id test-01
+# ::snt The sun is a star.
+(s / star
+      :domain (s2 / sun))
\ No newline at end of file
diff --git a/tests/output/Test-20230302/test-01/test-01.stog.amr.png b/tests/output/Test-20230302/test-01/test-01.stog.amr.png
new file mode 100644
index 0000000000000000000000000000000000000000..1184e154c13d623631e31e54b8ebd114be61aca3
GIT binary patch
literal 11670
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

literal 0
HcmV?d00001

diff --git a/tests/output/Test-20230302/test-01/test-01.stog.amr.ttl b/tests/output/Test-20230302/test-01/test-01.stog.amr.ttl
new file mode 100644
index 00000000..4ad04c79
--- /dev/null
+++ b/tests/output/Test-20230302/test-01/test-01.stog.amr.ttl
@@ -0,0 +1,36 @@
+@prefix ns1: <http://amr.isi.edu/rdf/core-amr#> .
+@prefix ns2: <http://amr.isi.edu/rdf/amr-terms#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+ns1:Concept a rdfs:Class ;
+    rdfs:label "AMR-Concept" .
+
+ns1:Role a rdfs:Class ;
+    rdfs:label "AMR-Role" .
+
+<http://amr.isi.edu/amr_data/test-01#root01> a ns1:AMR ;
+    ns1:has-id "test-01" ;
+    ns1:has-sentence "The sun is a star." ;
+    ns1:root <http://amr.isi.edu/amr_data/test-01#s> .
+
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> a ns1:Role ;
+    rdfs:label "AMR-PropBank-Role" .
+
+ns2:domain a ns1:Role .
+
+ns1:Frame a ns1:Concept ;
+    rdfs:label "AMR-PropBank-Frame" .
+
+<http://amr.isi.edu/amr_data/test-01#s> a <http://amr.isi.edu/entity-types#star> ;
+    ns2:domain <http://amr.isi.edu/amr_data/test-01#s2> .
+
+<http://amr.isi.edu/amr_data/test-01#s2> a ns2:sun .
+
+<http://amr.isi.edu/entity-types#star> a ns1:NamedEntity .
+
+ns2:sun a ns1:Concept .
+
+ns1:NamedEntity a ns1:Concept ;
+    rdfs:label "AMR-EntityType",
+        "AMR-Term" .
+
diff --git a/tests/output/Test-20230302/test-02/test-02.stog.amr.dot b/tests/output/Test-20230302/test-02/test-02.stog.amr.dot
new file mode 100644
index 00000000..1b8f97f7
--- /dev/null
+++ b/tests/output/Test-20230302/test-02/test-02.stog.amr.dot
@@ -0,0 +1,9 @@
+digraph amr_graph {
+	rankdir=LR size="12,8"
+	p [label="p/planet" shape=circle]
+	n [label="n/name" shape=circle]
+	p -> p [label=":domain"]
+	p -> n [label=":name"]
+	node_0 [label="\"Earth\"" shape=rectangle]
+	n -> node_0 [label=":op1"]
+}
diff --git a/tests/output/Test-20230302/test-02/test-02.stog.amr.nt b/tests/output/Test-20230302/test-02/test-02.stog.amr.nt
new file mode 100644
index 00000000..2cdb95fe
--- /dev/null
+++ b/tests/output/Test-20230302/test-02/test-02.stog.amr.nt
@@ -0,0 +1,18 @@
+<http://amr.isi.edu/amr_data/test-02#root01> <http://amr.isi.edu/rdf/core-amr#has-id> "test-02" .
+<http://amr.isi.edu/amr_data/test-02#root01> <http://amr.isi.edu/rdf/core-amr#root> <http://amr.isi.edu/amr_data/test-02#p> .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/rdf/core-amr#Concept> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Concept" .
+<http://amr.isi.edu/rdf/core-amr#Role> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://amr.isi.edu/rdf/core-amr#Frame> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Role> .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-EntityType" .
+<http://amr.isi.edu/rdf/core-amr#Concept> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://amr.isi.edu/rdf/core-amr#Frame> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-PropBank-Frame" .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Term" .
+<http://amr.isi.edu/amr_data/test-02#p> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/entity-types#planet> .
+<http://amr.isi.edu/amr_data/test-02#p> <http://www.w3.org/2000/01/rdf-schema#label> "Earth" .
+<http://amr.isi.edu/rdf/core-amr#Role> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Role" .
+<http://amr.isi.edu/entity-types#planet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#NamedEntity> .
+<http://amr.isi.edu/amr_data/test-02#root01> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#AMR> .
+<http://amr.isi.edu/amr_data/test-02#root01> <http://amr.isi.edu/rdf/core-amr#has-sentence> "Earth is a planet." .
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-PropBank-Role" .
diff --git a/tests/output/Test-20230302/test-02/test-02.stog.amr.penman b/tests/output/Test-20230302/test-02/test-02.stog.amr.penman
new file mode 100644
index 00000000..c43f2d1e
--- /dev/null
+++ b/tests/output/Test-20230302/test-02/test-02.stog.amr.penman
@@ -0,0 +1,6 @@
+# ::id test-02
+# ::snt Earth is a planet.
+(p / planet
+      :domain p
+      :name (n / name
+            :op1 "Earth"))
\ No newline at end of file
diff --git a/tests/output/Test-20230302/test-02/test-02.stog.amr.png b/tests/output/Test-20230302/test-02/test-02.stog.amr.png
new file mode 100644
index 0000000000000000000000000000000000000000..ccf17ae6265b900965bce09be359fa5500c2400f
GIT binary patch
literal 18820
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
PFfe$!`njxgN@xNAo<+DT

literal 0
HcmV?d00001

diff --git a/tests/output/Test-20230302/test-02/test-02.stog.amr.ttl b/tests/output/Test-20230302/test-02/test-02.stog.amr.ttl
new file mode 100644
index 00000000..5f7d3d7f
--- /dev/null
+++ b/tests/output/Test-20230302/test-02/test-02.stog.amr.ttl
@@ -0,0 +1,29 @@
+@prefix ns1: <http://amr.isi.edu/rdf/core-amr#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+ns1:Concept a rdfs:Class ;
+    rdfs:label "AMR-Concept" .
+
+ns1:Role a rdfs:Class ;
+    rdfs:label "AMR-Role" .
+
+<http://amr.isi.edu/amr_data/test-02#root01> a ns1:AMR ;
+    ns1:has-id "test-02" ;
+    ns1:has-sentence "Earth is a planet." ;
+    ns1:root <http://amr.isi.edu/amr_data/test-02#p> .
+
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> a ns1:Role ;
+    rdfs:label "AMR-PropBank-Role" .
+
+ns1:Frame a ns1:Concept ;
+    rdfs:label "AMR-PropBank-Frame" .
+
+<http://amr.isi.edu/amr_data/test-02#p> a <http://amr.isi.edu/entity-types#planet> ;
+    rdfs:label "Earth" .
+
+<http://amr.isi.edu/entity-types#planet> a ns1:NamedEntity .
+
+ns1:NamedEntity a ns1:Concept ;
+    rdfs:label "AMR-EntityType",
+        "AMR-Term" .
+
diff --git a/tests/output/Test-20230302/test.sentence.txt b/tests/output/Test-20230302/test.sentence.txt
new file mode 100644
index 00000000..2bc85c3e
--- /dev/null
+++ b/tests/output/Test-20230302/test.sentence.txt
@@ -0,0 +1,2 @@
+The sun is a star.
+Earth is a planet.
\ No newline at end of file
diff --git a/tests/output/Test-20230303/test-01/test-01.stog.amr.dot b/tests/output/Test-20230303/test-01/test-01.stog.amr.dot
new file mode 100644
index 00000000..57af6466
--- /dev/null
+++ b/tests/output/Test-20230303/test-01/test-01.stog.amr.dot
@@ -0,0 +1,6 @@
+digraph amr_graph {
+	rankdir=LR size="12,8"
+	s [label="s/star" shape=circle]
+	s2 [label="s2/sun" shape=circle]
+	s -> s2 [label=":domain"]
+}
diff --git a/tests/output/Test-20230303/test-01/test-01.stog.amr.nt b/tests/output/Test-20230303/test-01/test-01.stog.amr.nt
new file mode 100644
index 00000000..49251ca4
--- /dev/null
+++ b/tests/output/Test-20230303/test-01/test-01.stog.amr.nt
@@ -0,0 +1,22 @@
+<http://amr.isi.edu/amr_data/test-01#root01> <http://amr.isi.edu/rdf/core-amr#has-sentence> "The sun is a star." .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-EntityType" .
+<http://amr.isi.edu/rdf/core-amr#Frame> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/rdf/core-amr#Concept> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Concept" .
+<http://amr.isi.edu/amr_data/test-01#s> <http://amr.isi.edu/rdf/amr-terms#domain> <http://amr.isi.edu/amr_data/test-01#s2> .
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Role> .
+<http://amr.isi.edu/entity-types#star> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#NamedEntity> .
+<http://amr.isi.edu/amr_data/test-01#root01> <http://amr.isi.edu/rdf/core-amr#has-id> "test-01" .
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-PropBank-Role" .
+<http://amr.isi.edu/rdf/amr-terms#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Role> .
+<http://amr.isi.edu/rdf/core-amr#Role> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://amr.isi.edu/amr_data/test-01#s> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/entity-types#star> .
+<http://amr.isi.edu/amr_data/test-01#root01> <http://amr.isi.edu/rdf/core-amr#root> <http://amr.isi.edu/amr_data/test-01#s> .
+<http://amr.isi.edu/rdf/core-amr#Frame> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-PropBank-Frame" .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/rdf/core-amr#Concept> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://amr.isi.edu/amr_data/test-01#root01> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#AMR> .
+<http://amr.isi.edu/amr_data/test-01#s2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/amr-terms#sun> .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Term" .
+<http://amr.isi.edu/rdf/amr-terms#sun> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/rdf/core-amr#Role> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Role" .
+
diff --git a/tests/output/Test-20230303/test-01/test-01.stog.amr.penman b/tests/output/Test-20230303/test-01/test-01.stog.amr.penman
new file mode 100644
index 00000000..4f70746d
--- /dev/null
+++ b/tests/output/Test-20230303/test-01/test-01.stog.amr.penman
@@ -0,0 +1,4 @@
+# ::id test-01
+# ::snt The sun is a star.
+(s / star
+      :domain (s2 / sun))
\ No newline at end of file
diff --git a/tests/output/Test-20230303/test-01/test-01.stog.amr.png b/tests/output/Test-20230303/test-01/test-01.stog.amr.png
new file mode 100644
index 0000000000000000000000000000000000000000..1184e154c13d623631e31e54b8ebd114be61aca3
GIT binary patch
literal 11670
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

literal 0
HcmV?d00001

diff --git a/tests/output/Test-20230303/test-01/test-01.stog.amr.ttl b/tests/output/Test-20230303/test-01/test-01.stog.amr.ttl
new file mode 100644
index 00000000..4ad04c79
--- /dev/null
+++ b/tests/output/Test-20230303/test-01/test-01.stog.amr.ttl
@@ -0,0 +1,36 @@
+@prefix ns1: <http://amr.isi.edu/rdf/core-amr#> .
+@prefix ns2: <http://amr.isi.edu/rdf/amr-terms#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+ns1:Concept a rdfs:Class ;
+    rdfs:label "AMR-Concept" .
+
+ns1:Role a rdfs:Class ;
+    rdfs:label "AMR-Role" .
+
+<http://amr.isi.edu/amr_data/test-01#root01> a ns1:AMR ;
+    ns1:has-id "test-01" ;
+    ns1:has-sentence "The sun is a star." ;
+    ns1:root <http://amr.isi.edu/amr_data/test-01#s> .
+
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> a ns1:Role ;
+    rdfs:label "AMR-PropBank-Role" .
+
+ns2:domain a ns1:Role .
+
+ns1:Frame a ns1:Concept ;
+    rdfs:label "AMR-PropBank-Frame" .
+
+<http://amr.isi.edu/amr_data/test-01#s> a <http://amr.isi.edu/entity-types#star> ;
+    ns2:domain <http://amr.isi.edu/amr_data/test-01#s2> .
+
+<http://amr.isi.edu/amr_data/test-01#s2> a ns2:sun .
+
+<http://amr.isi.edu/entity-types#star> a ns1:NamedEntity .
+
+ns2:sun a ns1:Concept .
+
+ns1:NamedEntity a ns1:Concept ;
+    rdfs:label "AMR-EntityType",
+        "AMR-Term" .
+
diff --git a/tests/output/Test-20230303/test-02/test-02.stog.amr.dot b/tests/output/Test-20230303/test-02/test-02.stog.amr.dot
new file mode 100644
index 00000000..1b8f97f7
--- /dev/null
+++ b/tests/output/Test-20230303/test-02/test-02.stog.amr.dot
@@ -0,0 +1,9 @@
+digraph amr_graph {
+	rankdir=LR size="12,8"
+	p [label="p/planet" shape=circle]
+	n [label="n/name" shape=circle]
+	p -> p [label=":domain"]
+	p -> n [label=":name"]
+	node_0 [label="\"Earth\"" shape=rectangle]
+	n -> node_0 [label=":op1"]
+}
diff --git a/tests/output/Test-20230303/test-02/test-02.stog.amr.nt b/tests/output/Test-20230303/test-02/test-02.stog.amr.nt
new file mode 100644
index 00000000..92e70c98
--- /dev/null
+++ b/tests/output/Test-20230303/test-02/test-02.stog.amr.nt
@@ -0,0 +1,19 @@
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Term" .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/rdf/core-amr#Concept> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://amr.isi.edu/amr_data/test-02#root01> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#AMR> .
+<http://amr.isi.edu/amr_data/test-02#p> <http://www.w3.org/2000/01/rdf-schema#label> "Earth" .
+<http://amr.isi.edu/rdf/core-amr#Concept> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Concept" .
+<http://amr.isi.edu/amr_data/test-02#root01> <http://amr.isi.edu/rdf/core-amr#root> <http://amr.isi.edu/amr_data/test-02#p> .
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Role> .
+<http://amr.isi.edu/rdf/core-amr#Role> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-Role" .
+<http://amr.isi.edu/rdf/core-amr#Frame> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#Concept> .
+<http://amr.isi.edu/entity-types#planet> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/rdf/core-amr#NamedEntity> .
+<http://amr.isi.edu/amr_data/test-02#p> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://amr.isi.edu/entity-types#planet> .
+<http://amr.isi.edu/amr_data/test-02#root01> <http://amr.isi.edu/rdf/core-amr#has-id> "test-02" .
+<http://amr.isi.edu/amr_data/test-02#root01> <http://amr.isi.edu/rdf/core-amr#has-sentence> "Earth is a planet." .
+<http://amr.isi.edu/rdf/core-amr#Frame> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-PropBank-Frame" .
+<http://amr.isi.edu/rdf/core-amr#Role> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://amr.isi.edu/rdf/core-amr#NamedEntity> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-EntityType" .
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> <http://www.w3.org/2000/01/rdf-schema#label> "AMR-PropBank-Role" .
+
diff --git a/tests/output/Test-20230303/test-02/test-02.stog.amr.penman b/tests/output/Test-20230303/test-02/test-02.stog.amr.penman
new file mode 100644
index 00000000..c43f2d1e
--- /dev/null
+++ b/tests/output/Test-20230303/test-02/test-02.stog.amr.penman
@@ -0,0 +1,6 @@
+# ::id test-02
+# ::snt Earth is a planet.
+(p / planet
+      :domain p
+      :name (n / name
+            :op1 "Earth"))
\ No newline at end of file
diff --git a/tests/output/Test-20230303/test-02/test-02.stog.amr.png b/tests/output/Test-20230303/test-02/test-02.stog.amr.png
new file mode 100644
index 0000000000000000000000000000000000000000..ccf17ae6265b900965bce09be359fa5500c2400f
GIT binary patch
literal 18820
zcmeAS@N?(olHy`uVBq!ia0y~yU{YsbVA#pQ#=yYvdGY+?3=9lxN#5=*4F5rJ!QSPQ
z85k58JY5_^D(1YoTN%;&^S}Lv=b7qT_&dFBURvj|=(19Z<R(6^Z>ei8-}ou<*f{Nt
ziA1ur_ZgSY2~V7*XU%Z&jGWAMHKfJscIE$nAKw0v5nWk)u6EV+$Gc*#m(2ft=l%1{
zbG21-f7j{T9Ft&HY!Ptk$T>0Xu@xhTd7^!V1&HqOS@@_$z==cAsI^Pji9@mFgou_O
zhhmF>Qm|A^;il5pVHTE_2Tz{l^q!{k(25VF<;a?YqUz3VJO^i)W*0m?C90yPRwVnp
zJ0&IMz~RHpii(Oc?jU6;)0nO^?hAQ-ZtlgM#pxd^Y}PHV+4$o}#T>g@sav;hN!U~v
zTrULKH1o=XuE}jVH#Q{hD19xqtK{XOQV}N(MVGX|LZ#HOu&@|+g%$y)lv!uQ)z8nf
zJ=`a2Jz>IxhP1P@4xT;BdwIG4`ojN@9wo_G7O@Bl3Z6KBzP+!H@6Me&26cZbG&D6C
z8Oq+>={#`2fx%&W-rWs(cdc^n?UDTW@#BSS*N#om41VzDO^>*KT*B>bxgK6#P3zX_
zrJb3<Xl=b)EBDyZqYsaC3h$`@ZzqwwVcWK2XJ#5-+?E^t&`y5)&)fO?ug*w4Jx#Zx
zzrTIiGPQmGer5Ma8oSx-_i^G-T*5e^lW$}G{e7+5x0|P(pVzx-lhMO(M~=8eL_|Dz
zaIjgzBtu}C&&;Nt9-f-dXU(t5sVgfpU%PfKVq+3()wegDKR-V|eC3Kr@$+-8>*MxL
zm_D7ILBgUy;o6$W<{djMT-@Cc-@Yv!yQ}2jnVH5Dr%h|C`}^zRiHXV|zI|(JZDn2N
zJG;%g{M~_r2N!y&--)mL$!c5u&84!^GVR=)&WXzIN){Fp&z?Q=@beRU_dRj;$B!Sc
z=JogW9c$qfPDn{<xw$!g@scGh$;bPS&a<sP^7FMCDEy@-Gj?`%_8fm~sH&>^?a$BR
zhh^E>*=!9*j~?xOvp@B;7+V9cgn>hf_5Abc3=uv)Jtw{yr=K%mICJ>0bIR^nv!o_Z
zo}B#s-Cg0l>K`8znGcAFir&1u+`sj<u#k`h!?uElP7{-B{{Q`+^Xtn?rQ4rAf1bH)
znVPg!NygOctClT0_U6r-Rd>%l{uohIw5cFEFi<f2;v&|~Teq&=WUtsFaLFU}qr~Li
z&`x=~8V*%eRS5|R1_n8siUz&dT??YO=k2KezV5`n^YiW7=gpI2<B@3K7T0572nr5P
z%*p9l7rR?YRdwm9kEJCg6XwtFpEE}$BQukc;mXyk3zsf!J>D<R{XMzIF)&bY*|KFG
z9v%XD`kI=JU0qx@HZ}qxA}V+O{rH%?V%4fezO&7g-hO?5U;g^~cy~v~#uH_wrKKfr
zZ;5W)xG{8Fc2<^>scC4+?wK<si;9XSOrHGtWxN8&@fInkedbU0n`_niXU?=~Yz!Iq
z_tj3VEiEloR9CNZU$yDLh3nVXfBW(4*RK<2&mNtu?%#5h^TWQ3p91~Io12=ProKIO
z>J&r6rAt8*-&R#sad2@RdU|^L#HmwT4;^x1a0m(#irZh;+ttN&;`Hh8*)NmhYrlq0
z&DD+C;*ge>wsxLBhhmEfn^Ewbnl+W5pD{F;=idvdT(f2kk9_=xz|hdOh4l;-e}8Q~
zQTHeyDvFDpon1vm<-qad?1$U=-A_-`Wn@?#w)W80?CYzZsI&+;omhS{r!XluxA)oE
z*~*rdlCG|<hmu$s-rd_9{j|UC`@6drSA}Y;sH;DIdwYAv#YL?jHoke2V^jM}B=`0<
z(bqD{hK7b6{r$&R1TNlC_}FdYaT8P1qt`&?&ZQ|Q-ekyzhKB0I?U7g?xA)McrQV7H
z91IMstgI3HYAUBDuUN4n;qI<d4GoQk{(k;br%y97yuY{i@SUB-fni~7XJ?y-@01OZ
zcXM-_FnRLfx3{;u{%X0izh2(Z&@d^xUBHPWGib+~zGzKF#f7&nT8WB^<{a%3_3`xV
zeEH&qL3DI<T0+7Bzd05MpFDj!v#pKo@#mj!9v$sI^!&~J{qtYGdS&G6>zkIHefr9k
zD=p_&mb|%Pc<lM-nS1uwWZ&GR`uOut9X-9ipTB<_+s!{;VIvnD9-dxfH~;S5>glqU
zMJ^UX9>KwrKmM#Kdwos!m_#x=zg)_#Teo~%U0ZM7x@DxTt^MrPt5a{@ypdpd_Tt5f
zy5Dcjw<RC%)5@J^UB2#^&i1^!Ni}x!x8~fObn^6RkQIOa{$2XrzE!}9<6+yIzH2`(
zyuQAE;-pDTs;a6pX3hkq<-oweL($f1YHAsGcWo`GZ**w*{r$bNy}kUcTem{5J@WMT
zUvH#!?9wHn{QLVvC3iCK*&qAm(^GGo%1<sSyQfYSy>j&`;~x2wpMQKz-c$9J>+S9B
z?!Ujioj7Gm%bhzh4DYSK8Xa3zlJoY`QtnfyPOUn7=<&yb-`{d4zCCvA*wr!tP>~`v
zF=wVGxUz9#NIC5?A6)-T@Cum&s*hZjop=+Flqt-?Qt{~t=REuRKJ)y05AN<Rzi{PB
zOIsV;tu2|#mzIM(s5t5JlJ3b*o}{p_vn#8puyAs6R{Z{!+xuHeLgK)|gN*Cet&=cL
z>p5Yg1*+%-=d0aRG*eMwiQbmu=;Fe1YfEPH!DjZw;p^izY}nxN``g=#n^L_^vaj*{
z{Q2|5`Sb2>ZfyVl{mwsf<cNZik&u^{*9?P1CNcfE9zI#Cg1<!^iY*h4Ey?V?=IQBq
z@XycBg+D)~?%2Ki@bTm9=gysrH!+N^tFz;ix9hpPyIk4WSlD~I-qA}-y%#Q8q;&8}
zi-42I<clR;lkNZgU@m@krg7y;&9XN)7^|y)SIMqlvxaBizI_q9%XDvT&+mWmAfe>V
zjX<AFPQ{i9YO6o;tETlN{`>QDhFPvuO-)U~-(O#=#MKxUtXR?E+Aa3*-QC>*p`opF
z=gR8E?ow$x0<!AzwH52<aIi3)nPJFWS663I_C~_3S4wqaSyy+rVd<+77FJe86&03s
z>(&Wnf-?k@)c4%EqS|2zudl5I6)OuIn^kU2b5LlQK3)9WJlpOM9|~^Vy5+US7F6X;
z%-VDGWPJVKR!(8H2mSW{4lMDUyyQ|^WTYghZd6fGQ7|+VymjkVQ08<{W^<8BFZ}f7
zWpG49M8c&do*%w`otkxfecaxrrAt-UtX*69>r3X!ZN8wgiK%zJMPkpvt5-!WEiF5`
zyC0`?<cEZa#KgpGsQ+K*GtVaS)mu>7;f;8#?Z?E-Y?yXN;>fXMi_*`}oAY#reZ3tM
z6Vrze51k+8Y;tvV-BI+EOGH%k;iE@~BF#YUj5gDCkCv=i!=t9Awqg7B_WASWmq!*A
z7hhZ%tX@%3vB0^VZ%4sHro1~l8b5t1`t#+of5grr)#X1yO&7_jcUN4y_Ve}n{S)TR
z>pMMNzxa|}GLNUH=Z>16MtX63Iu<QblCh}}ICbijhPHOIgF?feJvJpJB^D>$K^|l2
zU1pKklX!WVuY`S_4G#~`l6(J7PuEXOO>O=1r9?wR!$Cp7K|z3l!OP35<#%XE$OR2K
zCl19Y!cu2>HU<U;f*LIS{ru{0vokUh?(M03@UcQeUte5I?dn2pbx?$#mGUhtdT~MV
z#;se24jpRR%wuO~w_)?<=0%GhsefM#ZuqT?T&&^O)!kkA>4|4Wb#?J9XFor_<9)Kt
zd-nW6QKJ{TtL4xkr;3V-0$El!H@ArWb+#2Yaa;ROpFHX4?CgAMB`7PjEe;e>e|~Om
z^V+q#U%q_V(Z|Fv!#rP3Mn-1U-o2Msg=(KTY1$QU4QgNt_C8wwWU2S`2k+jUE9FtN
zw6y&3^QWWZ!dD3zy1Kf2LV`{lioEX4`hJ@>ZJID^R@c7T-$k;nEejVaZp*nD^i=C)
zczo^AKqXMpOU(Fi^yJmm;R_cmXo%ZeRVcf(D{^z%!J|iApM2|Ew@$CU6BJuFuRrLX
zyu1AUp&K_McGUIiJp5Q;QSw4y%G9Zh3|(DaCPAPy|Feh9-uX>4JO729#n1Jt&YhmF
z4{Bh2`BL)a$rA;0bMeZ`%8Jj=co`NfSir#4$e^XAm2qv2<dY{)7A#$=`seyGUug*`
zsY3@2I7C!jaq;)(zr8*G_?MTL6$Lm}oaa<*5%?s@yU${0{eQbTbLXzEU9)G8%=Wyy
zPBAeuLPA0lX3Xe#@+3t>M1<pe=G9fAB_$;b)~@ZHrW?(~aOKJs1$FiI@bz&Ik9La-
zaIl;>ecCxLPOhl9_~W~~)(r30_iV|&&iCxuvke<IG%Q`JTJ`l6tFyE7M48~_ey$D<
z42KRKLUKXnj}MAz=jL!S2yn3ccs{?r;Nc-w7dN*@$9knTw6vOb?Xo&^_H1HqZf~cs
z`Xc9czC+sbT3TB1chc(W>@HopG-2AbwswAbB|}3&MMcFMn^Hlg{Dp0~(O+I(X8-%^
z>)`{9%oq37R?AovFr=lWl{^KNy+3*6l6wke7p<FTU(aW2Yy0QZX?+hrKevnwjiTb>
zh3nVzhlhuQ4EXl#+lyOUvwJ5m>I^O{G<@{vQNi0=rZIb~L?=$1sG+0NGIOS68^3%X
zs1tDQn%Ljp-=|lIff7RFsk{wGJ#%t&%HH4WoviM^XvGSSZ{NOs`0$}&_ik$+U*Da5
z><|8C9l3b%qDB2b8^3urojpA~peEYAd-rCTWD4Edl6kn)1yn3tGg<R!$%YLA?fmk`
z-tYh42Wn6sI>dDE-aQH1DwA8=^Us&=@lWbeR8wO+-Y<WAWAgD2&(2EoNE)#eKR?&n
z-OYXdBPh{DUNq>Myk?Egn;RRM_y7NA4JvBu{#5wPx05X^D~oYoJ-Ph-y@yXuPQJ0b
zTz}Ex#fiDOyz=t$;9kKwEpLxtkg0d}R*Uz`+q*?YNzJpX?V2-3CNcfXq)9?krc7C|
zVg-kd9RI6VuNdx?CtSaHv2ofov69l##Egs%K3S^;+1J+@7#S^ks>G35k+R$3<muCg
zm-)`#kbInPOU6Z}$?E>cnpnA|uDYac&%b}{+S=%c@89#=+S=;G?*pZqzi&<*YcVO&
z)YR<g=x|6$QF-+E@x)oPxQ<DPh>C(DjG38vOXg*^sHmt5*RHi~+GI3k>eP#SDvJ${
zeRy?Mo8f)?zi=_bnKNg4czZkN<>@gvgocWyrKN!i+U{;{8Cltd%a$E`dRnceW?qh%
zx~r?}jV+nNX8HGcKn=a<Z9JRP&aS$AVpf}ysi|o8^>s%#CLh1Bvp7BH))vlYHr_{8
zVv0$h-`q5AX=_tbQeqMm6s-98h&5_!7OUO-emUE!1BVVVJ$v@dz`$TddEvijXQh`c
zSpuqtIy*Z%`udK|wJtyK_+vtHGIM%*`i@<@4&A&tb6uE_QgzB|P>pl{zC5V9ULC%E
zL(R{kGxP1`SFKtV<34#7JHK4Q(^FG9czBK+Xk^}4`Z{dJj2Q*8-4m=TzrT|O)r`vS
zeGd+`at8zjIlaHP_u+#F4R*D^4qUt_=;h@Vbn?@)v(hp9>tv_v#U5JfJzYRvo}ZVO
zw@1p9D=seX#pUJwAw>dCcG}WDZcCOeGcq?fKlb?JjOo+Gt3N(sy*|-GR9gD<n>TM}
zELx-#y{kmC`ujWC>k~OvZvF6~;Mv=^XQQ@c9Go&`%8d<)hi{ymte*O+_Ro`(!rRK;
zMqS%koX*xTbJna)UteF}{QUg<V%gpa%k;WGKU%VAQB&^ST~kf-@6DMxbLPhV|NqT?
z?P0Wd&z?ECx3~4KT(xRb-rZdrZ`_Djrz{wx+~{!N+#JipRo~v6WY_?b0GapZP0qT-
zwP7(aGPCXL?Ji%unCRu@b>{TxZrh3v4X-0wOhWI7sY^;qo;iB7RZ~lAlYIT3iBqRc
zDUftev#tEpvUBH7LsnK+kUPWT;?9+-IJIbLY2BD<oF4K0-CfE4<H^o#Jc-xW$3M3U
zn>%I7lnsa5`8WH`wK8;db$#~q>CvE|pdEd#9>IrW3yXez$y~N_<;h(oFAqI>^k_%d
z#RLu(rfs#q%a$!#bm-TYmxqmvjd%9BaB%bRq#QeT%*WBOv9hXa)9&*3MY5hcUf$j}
z7dp2`OxKH@F=vj<Y=cCm>Tho(uW#hY)Y`Pfj<LZ(;lQfU)ejy%WaQ`PKXUx|;bX_#
zZW&6+$o03ga*I7U)+>GD?Ag}dUfxBE7VYSBowdTfU+&=DyRwVj``enEncv;t&u?#U
zU-J4|@9T`Dg)3HY<mcyu`b6vZ|8vU8(b-k@wk!AcwuO84%z0hWVp4ZWr}f^R%EN5D
zQb(ptoqBU$?e8TwOBM$O1RQYdkvJ$KB64G0?Cu?X&a);=nk2NX?r#;ymmt6E#qK&%
zs<Ki;PcO~>&j;q<z`#T?F|jwNrfSEyD=jgcd@pxy{r|tyzrMLSd28O?T?g;=Pg7-T
zZ20?q|Nm4Qx&FV;?f*Zt;>%=8N=llsaibxqCv$sOskXMZ_G7C_S8Qv3OyHHVnDDW}
z#;o>NNmxY0iBc6Osl_@g&lH1Nc03XW463TC9NgT_&(F<Oy_+(*@W}~5pSf0|^XARF
zu{~ejSHty4pCPDcmi+Y8)ED>n+kbm=liAkRc3pCzmVtr5=Crd;v(0h~9v$g)E4J<y
zkesOd(N6v3$&)W`Z`T(Q5h?ikDpbqoNY0}pouJm~$H&JFv#w}}h>I7?cA6+vR#r+_
zm1u;miD(qn4tsEBrm^on1IC8H#cmJ3y}ca}9^Srot!_<i?an?IkHtzCAE}s`iPir4
z;@Hk73#x5?1x%i>(79bnM~5dcFtDJ!{P^wd`8)euq#CoYuRD0^6j%AXJB}qKCfC+P
zI(NUQT@bswtfQyr$ezm2AMTdlKY07Lw5zLY%yFe9ffH`z&Rw!Z#lp(!(7}U@jEs!E
zRk1RWh0o8)etCVJf7-NZ7Ul2eTv^7d-s_)`pkQNbdvSk#y^K`}$E;biV%#TXDk>^|
z`1Z|hx!>G^cXuo^GBXQhJ14aH7-hdsNlOD6SyffFqvWN~Ec1N5cWNHILc+oapMN$i
zc;FyoUDmVj<s|*G4-Xtcjeg_wb4S+i|L667VN}(hABJo^5}*i**-^mw>(?((l2|BI
zKY#L_J25+U?sW9^<yBNv44L6Ev$d7Asi~>p)fLS%bFHVpwph}5b3-CCX#DE^{{M2;
z<?ogpdcrLsE&ce^RBcd+2O6@PF$0_!bT-y~0=2eZuix*MnW=f`(4hqj7b>1RJUObU
ztgLPSe*16l?sm_w|2Ols#S+GZp2Tx=EJ4ldZ*Oike|>$uSazl3rK?w6U0hgtdV3$f
zdDHXy`ubwo&IxRuIY&Dk6b`(&xOn2MSzQ}87`%A(s_XTIC48V}L45sR(bZvVo954#
zzh2nU6TK;g^V{3o?ZWDQ3CDUQV~%HDFflPH`1r{6#_ijO@7|U5^z;OI{-9v={K=uK
z!xBF~JKNFM=XQRc?a@LHCAMxc-9!2N|F+GTArTQ7St#3nVnMI8dD6{IsTLI<6!z@h
zyR+|d#-8f$e9UY-2Nt{cgHn%#lvEKYmYi&4lbV~GA3l88xVQRy(yc9-k2u_pEZMV1
z=I`(C$1gAU7ZewF-+rs3W3hXG(xW4tH}+H-*VNSP=)3%4Pu*WBKR-WEV{={H-mYtF
zqd`7zTk!9wXIh$?j;=1q(7(UGcWX-sE}k<-rsVxS*>B&zad2=vu;QBtYL-dZ)mVt>
z$NAJwR(Wx>TfCs4pkdoKvqOguUtHwMy-rzB>Gi8{P=D~@_D|8<^DcU-A6~R*(Suj7
zx@v!aOZ@cYWXy3zncemO?Q(K+L4B$>_xH=&$o0SW=)DDMA20Wp-?3xIf&2I8zqV*O
zvFn$p`t5DGhc7Ml{`mcVJ*Y&SbFhO&Cvp?Z?(+9;Nl8jpB`*$?${d<l{{G&=^7r=+
zsj6mdvU}Ol(a|t_wshIsTdgyV(~D%=1tP<~KT<I@6@B*XS;Vdq&9L=xy6+NPn7q8b
z6O)sfV`F1mT3at}f2x-C?95Dy!bdER9zR~`F?G}bKhNz!p_i1Dl#rWywp7L`CG>9h
z<bQvED=RBAZ_mHqwrSI*9nFHAJL~>h$;ikQJUGB8HS;3NT#G`c`!%0=K^@1WBOL1<
zn^?-<<Jw>OSuJX7*3nWGr<B0EU6bwq{}GOhi|gp@Y@9oHu1b?2=PdhryMMo4>)TX(
zXmERPqPTM9O3)bb63@vQqOp9o_5Wn9UArb>kigI<V|fVVnv2uL)sG%MYG7#SxWDdi
zMu{Ku*I!?=OI}`L1&y?RdwY9lpYxKG3kw`ioH^qX6C?B0_+f;H2S*!^WK*}e{-LvH
zdqLqmOJCow?$1Z}oV&Y3zrVllKHDr;MYPA`#=X7OhUM>KRMgZKWnW(xb6ioV?9&s^
z9ywbnK|#R>pMS<2S7dPOlj*cBf2Uw*I58|&-Q~)3QT6}-e(U%2^lV5v%B2&(FJ{ug
zj+W4nkOQ}FNzJt`cS}f6xL(-7A}T6+@X8etKR-WEg1=sP;{VALC&0t$B`<^4L~ZQ?
zIc$=C^wf&S$9h4%p=W1jtFLr$@p|&~>Bh3RQ7o*ipduIKs4Zz{r9?zT5)QZV#<(lW
zXWZXs`|tDo{|}zeuXoGJ(z;&AF;R2tzM@G}r?Ms|C$EX#&c`jTH>E^RiM7Y@%ZrQ5
zpz%#UzGqf^6C0*X5s8S3I&}TI_~!KU&#d@<dPGJ_u359@!p3BGD|XJG|Fi0&)1RK2
zYEkfj;nJl`FaBjH7d<;8$s=zk<LT-7;@Vp2>xCUNDyym<eS3S`!^fv(&YT-!it0%v
z4-c{K*u7g>Pp?mHv&xgbw?skh(hJwGA3xN}{qkOh@?nYQnKLEdynUPbB~*FxtXW-p
zvAZ68cz77piN9WWLjB8|o5H_-{krnMd&2ju>(8HDSm>;wr*~{k<YpDw4iCxx<A)Em
zau<Gi5tx#mUM$<*aq-vJ*9+IL?>9_7Rv_D2bL`X8(}E%*ElZZDtXnLgB%D?H^vI=4
zLbg?37UW;+y|TOf{etDo+f}`%CA_?}H0HQs(uA2aJNsm<lb)ZO3mOc%UU(wi;8;Rp
zBBQpp_K%-G3uTv|?Cj`p@blxlZa7OvTwMIcix)LJUVh$Qnv|TJn4jPO`uh6C>F4K7
z^7XJVuK!mv$G%>UU*2wsX}MHmE4R3kh6YE!ob4jc>rx${Y;f=1y&dK6<$8L1clKRg
zVqs<V2-Kc9p0P<uS=oMGJ;+=>84Ct(Zf-3fshuw`FMs^;@$rtXu18i}E0=?2YOG2)
zxW#l999qICX<epsYg=x2?eA}evP(T@8K?6}B!BVm`oC$@rmR2zKc0NFWXl#2b^m!w
zSRc(|C@wCJh>m`|e*ZtPQ4by@h=_?L9ctl>aaW9Yh>Me(H*cOr)fWvdEv+4W&K%3_
zBImTUwm!VNI$XjuYs!{S0(`x))?$v1jvAo$3)f0^dwY8x34?}d(=!_O?A`nE%}rw$
zH@70$Rsp}-O%|LS91idA?OnKjz5ZI87U$$+J&tj4a)%Bd-r48$N<&?pU0gq|W%_jS
z>wzA!CGYM?g5t+-<C2rBH(CgCuyFA59{up}@Y0#>1uLA}`8I6YbZBSs^BsLouU@>k
zxH#k99!t=m*t*3NtUi7E<dl%0aBpAj=~9uETpSz@`|JL$Fi>W&3!L-k^LcyFkpBY5
z<|Q-R3vwPDXasdzuN!*E{`~zr`OAxopxg#>L9etq-_oT^IXF2VT6Kk}sHz@3dXyDZ
z-9J4&{o|LH!RwR-B?FQRg`}joYHMp}UE0$rX;GjM6de5V#YN?Hizn!Rd39C$$noRJ
zA08Zxaaa5b8g`gxTm9(M)6+5T6L+xl%N@9RQ!@Ej&%##C&JL;W$tzZ9?AW!-%b0s2
z<F{|$0zyNV@>TK%q@<`wBo~yFJh9?hsV*))UG3s`Z*Onz@^^O*u8G{7QKzc3=oWae
z%{=dp!+g8iC3D*gd;$XnZL7Z>*_wTQN1xNa02ddQHEY%^Si1CRsYsCjxpU_#{`@e!
zbm`KLKBd5@s3?<FJt5u;clClsO#%Z2Wn^TQ%xymb?q1!$KY#PL`}=CU6`k8S>hJ9+
zRQ~k&GpNl8s!G+=)PDT?{eE@LioLbJ#g6yMI_Ko*fCeIBV`F)w&3NSG<mTIaJ3U>$
z@WTVgJ+;5ZKyEtJ$_<*YU}0rFc>lh<s;cUXtE<KL{eHJQEBwj7=kx0yJb&Ka&M)ue
z=*T#2+O!#l$!%BMceb{-CqFpQ7?eBN!|naOy%*O+8oRi-B!DZ_gWcl#pi#>^dn$!N
zm4S)LkrNY@K@Gl#cJJQ3)6mmnV*pKXoH}(1l$1f^-e$SC5)QR+f~t~m{YDdmt8tb)
zD?h7Uxq1~ev6}f@(dfXrbA0`Bwue@SuU~R0E+9aFjbBb@PtV##i<(TcuN^pZ2GoMR
zv7=DAskzxO?~Vm%kfQ$2NA@>w--3pY9vXIacVAo=YyIQbuR}L)N`8KJwz;p5?^vH~
z_sz}e+~0ryxG~!-_t4MJ&mX>g$?5Ly4l0)4y?giL>GXI3Vc}-b2$6fg+>i71|AOCs
zxKsN2+QD<@_&{^DUtV7Rc-H*>gGWcZLFKKIl9I~*)4%O4EiHFcf7hEccka?_Y7=Er
zQ&YdZyBodg{lX_tQb19$|KG3GC%$=4*ISr<eH{k}$AJxrhYhN~<(xQqGVwqIBWRpP
zE8HP+V-oAHudmxztk3{C2;{^Ajm(C*w@jWqeVX{-K;w^($K{uPtMXtzzRIxpna{Hq
zFCy+bFX8m?_fKbtC@I+za!cAYON9BrvvYH`H`U(WmdnHN``PS#mu>$+{U3%KJBy#U
z+y-^Lo;-OHQB}3;#J=onYZ4i5oSkjH+V<OzkB?oq`Oh$DWK1wlKPPhY-NT0m88%GU
zkLTLn+TL!=uqJ+gozibHF)<@sTia!;SD(JOw>tdveW$;3>}qG7Jb7|sQxnt5E$%A$
zZzUTeGhu51Zf#xT+|C!2o&WsYTpk8vV`JgG)925pOG!!jL`TowTlY6ArCwfMo~_~M
zuU}l-=USC^F(zEQcFjjYfMYv13)8j5?)=9df4tEvZN4hE{{FsN9){oV>;G#%3;$MG
z`}<pJ@v}1%t9JXwhJ}eSA5c<OUTqWdcIsrvytKzYBPFAiwZFdwgonE)B`pfM_4)JX
z!(U%t-&p$kT9$lydAaz{o!QsdF(?>4*$}xoZAaN#saxCg^*61bJzJXL%8s-P$G1Cb
ztrx4S`MGn`*)Ly89&T%9=Vx-5divej+2+S5C^~<5bd)=0PsPStWk=tBdwbi!$jE7R
z*xDtR<R;p9dwVZgy7b}K*VltG^Uuw(+)?>?*$JkK<$iMyot~}_>eg+^xfzu5Uo&_a
zL&g4ow~o8@NGM)9IQ97BgO@K0_Za%+OHOWEd<)z=oMBP8Xv<~+$)v2Tt|?PQR&H6k
zXwj#Wt*ZNfz0#gIKYB|B<AcAq{HH#7`gGy4Wo@CW!yX=NW(SR?y1KR&D6RhU=TBDu
z--||f54C>Ey7ez{cE7wm8$-^`O{~@5--+Jbzp22>$LGj}h0fVExsQsTpOgLNbn(QD
z*|VDs+m<X*0i|TE+_LxgVxK%e^}V9>?{cl}q3=E~ytXzv{ASqCqYF2de^PxExYXk0
z`Sb3Mj*OsIvFkkjPahsSgT@4<&2k#%&W&9=zx>aS!Z-K!N+0-b@5IQ+IH~JKf~2J6
z!;_QMV~(%b`uKQ%@}D0cH*DB&;Lp#`pn+Bm4UGpE7rW1}tKIcs-wumVG0(|rzD+xK
zR&M?6u{t=%%Zm#XVpF%h%6fWg>WTB`#phK&xy-}MyKvR2uIlgaJl9(MoUv+^7Q=(H
zv&}>0R_|F9yz_iJ7dQ9noYgjNrN7NxUSC^#`0wxUpyKq&^XJJ&Is_xO<;?t$^`^Z(
z-R}6kdvg2#eCk$td@bYFmdrzyYmfEI_e&b5)qJy@U;Xw`z*38qYqF%B3WY>OT5jBk
zm@#Ws-NnyU-{19KTN~Z|$6s*~4==BvxcKqXo~YY<tIb)M82jXGwLaBNc#_MPo}M1F
zr$X@5sZ#|-MM9N2wzjhO?%n(G_xpX-YyaBk+0|-Yex4H<DG6HWv9tJjk?hig4?b2H
z7#KYG;^qAG_pe`HUx&)=E_}?!5OSMy_pazeQ|GJ4h(<k{HffSljqlQ>OFO!{4lVJV
z+|nQZZ*Jt)EYWqbyW47ie_NP*yf3s*SVE%1y8NAocA4nrw6lla-rjCl`>W*3tE;QS
z&i}lVE#9tG>v!q$<%5quN*zh6Pd_)OvAetbgLF>r*8KZ&etv%Oe{3>~%gc}Nsr+n_
zxf_(ZXS@A+e9@{DG{M9m@bYnBV4&i~QmcJ`zeSh4xglu(_lxkP$&*`e$M37@%)Gp8
z;hsG*vAaqpM*N;yR8$lY5y9c??A*CMG<@R3i4}i;nYQstA1j^0wiIOY?xx7Q8FTOL
ztxkS&Vj>4W|M7*+?Jc*Bjf^%FJ@wj>b#>J(K?_AiMWw%cl9G}NK0I)gkd!o?>8h#y
z|6E3PHZwy`ZtlY;PePu?m$G*6khQOq@$>WBQTaJ->hYZ1+{El`?T<Y1tGo&)O`gnb
zYPvP+dGQ2Q(3D(nZ|)WOvhZ~=2iHb#x5(UG`uduNme#6opVsX7`}6sHP?N=Pu9fPY
zYy0c#-`v?L%&;Nlq)_5S(3%fW|Bzur@pHe#^qaiWW((^7|NHRqW8=bwilD@icXt<O
zyY%m$KS3*yjvhT~DtG(t-PjxDDfjkN9x988jct`b18U?PYUO6!vtLVCR+cw9IyxdU
z^5BspEVfl&8Wt{8+_Gg$!M8UzqxSyWv&ZJ)AAwR(JC9+-CCP|sEbQ#g;o;)8RbL)h
zc{MLuzrMexhiBy$Q8~Fj<MeY0_xIH*-R_sQZUc>SfM#bK8yVNET?>l06)RUNT3PM7
z#Z+^0lIo2OiOfDeJ_%V_pgF2TXU_0U*Na_M6rKL;%*=wKqC?AkXEW@1pYZz0la`B%
z-LG5y2G!G_B2_sTyY)``p*y#yhsVX$_2JXg(}i-~=d8MO?d0jx!eLdL-n_ZFIibgM
z>E^`X5X;jUadGpGychia^Jn78Nva#RZ4=9j-kK%K!qoU7-PF{S;r;LOnjJyg_Uy4?
za0m_-PE1TZaq85e%gg;2E?Lr&cX!vqHEVd1kN1hbTfbyU$m5OSYa&2PSRR)7`uZ{)
zcy)EP>#sE{R<Gv%9~~Yp?&#=P@$-|aoJ|F2d`Lo4lCwWjdb(chp(`tcL8A_w!fFfR
z_tymktk|}`YHLw(F=NQvBii2Q=2$kb-~VscGL8RER#sLgPM@Ca6%7iwy?bqYdV5{B
zX=`gIe|~oM$IIpOCrp~8G^b^4?(J=+a^AkaywA_icdx3lGBP&42%18ZlnmYdzDLq{
z)!WO9)~tzn{bu9FjS_}QENy(UT>k$4JQ4;DH#%d(?(V4+o^6)fw12<-t*zO|OJ!yT
z=eFNC#h>c=dq?uCeYL+q6CHPU6f%p7if-7v`S6~~&#TS~%gFFVM@MhTy}d2&_)5RD
zG&Rutymk4z2Uk~zzqqneSj~T)&ZWtJUtL`tu{CSzhvyeA1b~L)5)%_AOrPGqcdzZU
zv$MmWvLyFBys|RbqWBpPs2OQ$YWn5vZSmk`K7#ksR@K-ZJ$iIU@$<e9`_}K-v*(H!
z^J*QxqT*uJy6*Lno6|zwUSHW_*E4nMRrUU>%Y3CL&P-nYnm_3B#^2xGM!zkyoB#i$
z8KZ-<^W$!-)cQ3WHVFLt_Yc$_ymIA=LE<5n9%*wvK0dzrf1Bscp3Tk5+N!VB@#@jz
zzT(<nUk-v6$W5EpR`&K*;<YuA8#ZoS`DxFO9~CJnDGy$+-@op2Aqx{DXo{j+Tpu*6
zq8qiPVe(|*Wj-^NHZgrZe*E3-?fTpD@ArNAQUWTDxW#lFj`zt5%FFlPulvn=e!ji?
zbiLRO6(1jE{lAfxmX`GY-`|e@e)q^o$)4U`!^A@@H*VkVem?z|WK>jCkhULaiunJ3
zt(7ZQbksDi;H|Cwd%mu&X4P5!z?hhx1q&2dSXdUgc8f_Er}3!y%wVva&u_U?YWl?0
zo2P1rb9HO^`ue)KxNt0&S<yRPKVHeqY}>8luYT3Nzq(o+G)Cy&FSl^X5*9f*InW$E
zD7`X(8u<$sE@WhwVO5&7b^DD;lPB9(+g<y<_4=vf#`Dk2GF^RYNzkN8^X8pXQc?nq
zYG1x`CB?StOM?CXKgQPO?__Ro$rR4Mx=Qr&_3P>W^X)_{;}R1Uv#+g@{QYwI{8yzi
z-rnBJmM>S|q-$k0OH)H*gJUz>#sv!$!~_Hmxb?}LeDd_^&5g;&TYmrj{eHiWl2VhU
zg@pkFXpH)hS@^n`lNB~`Q%@fD^76VdLD6|eQxjA4o(e<j>Tf!?cNVK>UtY%h`o>1(
z>Thpmo_HM?7?_xrmIgA!)x{;mJh1mjh+m)b+RhuZjOy#_*&LqCpEOB``9MiY$&Eih
zKi{0H9iCP5@BRM&=eBIwqB8IE{Q7@_ep5^f9ypklya*_JbcD0)&yT{i#6-}XK}1kc
z(A4LDKOE*?<Jv8Di1X#EqB;Nm{x&WxE!|f6Ij!v9pUQ2eufvutUVJzwCnq8?F>$Np
z-Me>ho|ve7^W<c8&;-ehdGq8hU$~G^|M#mns430O#g)X)CzG%?dVAX2+uPG!U0s!O
z+ge*Uis?ofaC38)JvkvLCL(g=Sik&vh7G*ZW*!gBW3E0t+#b0(?d+0E(=0;#4sFZ7
zZ?|%rw3JlTW6LFL*Xr7|+s%=9=R9dnOYV&gi98IOH*QR<v5Wt4{?MT&NePLN-*a~D
zxi2dtGh_2+W9zav64u4fctC23pPfm(c=2M+wKb7E47c}GZvODzGb(D<2aD}_cUOI@
z*|KTVs*iib+WmbGg)Oz1X;Wz=ZIUs;rRmC%OP3}wCM@@#FLtx;-5pD|23|Rvh?L(i
zFE5v5D0_ZxZk6ovU5}o;xw-kwks~crr%vt6DK9Hai;9X`vt>(2O7&Ce_uuc=i{E_r
z>eVTR4cqhYb8TN6w|CbqNrA_YAA{zw<mBX(Zij}3&TMXGehg~cN-})g|Nn3Q<ZrVl
zz3Q6$$}Yva?9GX~9}n5TJvhib@p=CJeRH?w-VW1>)V4nYYHk<l#q2C<WlZQ6(_QsR
zMq69ktmw&!D%s=5j=4QK&6wQd>gHy|kaK#P?p3+l2M#zqv03*=z}(O<QB+j)(A$0c
z_J!J+gBDlr+GTb5+BLD6qB9JSweicJd-CMTjkVF+v;Nq2cJJSBKY8-x$raX*3<@4N
zq-ABDV%TtQt~F>~*{Rc~mtHC>J$kbJzlf-)B*V3BxzXE7UIu~MQlDxvMbv+Pdn+u)
zCMYPF^ZD6XQ!(|@%Kg$(Qe9^}=1!cb_-D<HEt!|q?ayah$^ZZPe7@BA?7|-*g+WiZ
z`DJEms(*haA}YH2i@c;wg@K8wsi2fpS5p(y!_?Og9wbOeN*+9OW=-7jm3@2n+BP*c
zt-AC1{q^<oN=ix-rc4QWyY%d<G{e0$KaD^W<au{@G5+{(+!c0iO~gs)SY|<iLEPRd
z)l178wWq#sJUw0Ce1%^KZ=mn=GVM^mKi^(lR0j1T?f?By-c|m-uTxk(>CKIebLMRR
z`|E4-qD6~7Jb#t;mi1o$zumRJ&1!0DUX{+Vt^O7=(`Z5d{e1ypVQwKIAzP1^mzIiJ
z_G_pAFD)(>-gzcIb~dO7vpRgeLG7<ETF)Qf*q97j*!1J)&)RQh$+eoAnvMzr2kzgG
zzp>vd?B?y;htHkkTkO^=lxJP}X-UX0$-Db%e^2h84qBlC8Vb;j-Ub>uH83`A-oD*@
z-_K{#ozIyS-dM!1+_PuTvD(+4>fT>pKi|W=Y1fzJpFe8W*rYEpE&A*n+BNypr=rd~
z^MA|8%FfNYoqK(q?5EG4C(fJ4S6p1o!NN4hx|~l~&1c2+!mLG0m$tUFu)Mjom3!vQ
znH67OiAp4&ICF+2;Iq%-`LmC1S+j;mQc@DMg7U}5$E$7Zt*xb*8X3yp-<#Tbb%D11
zmFw%{&ld`PT6l_o%a0!wpjBTgDlE^QJqxl=&o<81|M0K7WzQZPHh#I7^^ae?ehpd?
zyrc57T2WC^OaJug)4fZ+-9J5DKm6t9kbnS&1;2LM99jFxM#emE&XL<$T3Y89E?J_Y
z6T3^~`MJ4|Q<n7i_WJe)|GfV6Z`@7)4R&^R@~f@Qmn`)vT(o3K%c4a}E7@1RJp1wE
znx^{yf6f2>{eEAnUEumR3)7j_<$9nQ2SH`Ggg-w%UbuFRt^c@lLV`ls+gqW}XS#`s
zh%8vMrl+fm>(7V7{HArY4GaxeUjBG=?WeO9|Ni{c3UBSGkhQPd6L$Zeh=@o)TwLF|
zxz@?2rf7cn^vUV=w%m=Wr>FVXaX-E^(>VRYa{u{NrJL$MJYcN)`ihm6l~pHxpNyKC
z+M$(vZ9I}n7jM?joiitE&U9y~*Alfq+&!<YpHuMiP%HP=Uvq*&LR=yvC9TTdbZ`o*
z9XNfO``EE#re%|+tMKynW~tjge)LzbdzG%=jun%*xVR?Fo2Peav$eIg^vszvFI>GU
zdah1VMux}N*Z0fI%gaGc9amS@y8nO6U%Ytn;K|9!O8rNVAHV+mY2)$7p!RiQV&a9%
zmxbf>R)<*bKhR!WtD&jc$&)+RBvYu3SDKBVzrQMVW$&a(LJaX{bNV~tpZ?6q$>H($
z_wSLn-*>9oJu-6U<l=9|TwGiNqN1(5(q>m)Th#yisUEklrgN@!dD6K#mP-Aeuet)C
zu33Kc=+V%1a}16dRDH?lk+a=(D$3+hSWplXD=Vv(&#Q%-6f$pb({<~WYW19~R{L><
zvgfbg@Aq%4{+<U~=HHNV@BP$p2d)3}T-@A}Zg0!w;Nx58UUYKRC$G?uke2!xOFUg&
zS-q#}2>Q8&Mn!eCa*HoovxaAN_<FIpOb$N2V-F5CXU}0@wC(uHzCC+vtV&)qOxKU^
z^11%!*Vk+oR@SS(P5=G*d>%Bk3K|+RvN2FqWd$wjS-N!TiPx{LtQ0mfG71O`Y}~WQ
zW{yRnQ`X@<D=i+LYu_%Pc6L^)cKA9_M?7M4n(x#@EEV=5v%6Q%onQR#Pvw-UQ#soO
zu7^H-vtLk9P{|dvIAir(d1slbudiASlaD<((kZMIFLCPBDNuLK#m((nR!3#+-s<mu
zDK9iu&OKG^5gjePIsN>xsoLQaX3pe{kB^_J<<s!J*fUg*mBHiL-?+*%r<MvhIXf@i
zcB^!5?H$*$qg|qBE?o*zvMtUIvdlVm|NeYQ2?>Mf=;&n&7ap8to`23P?~cYDeO1*~
z#so%2#;;a=`}f;F{`}J?G<2$_rlz6Y{PW-5-#;%=ec$@#ks~c1D{MfuLDjc6Cv|jm
zZoIg-SdszMoJcz}<KVk{dr$wUvAcZfQW8VN{e88q#~*zDxu*8_w?hw;Pfybo-X<$8
zeR@~<`*R>`*Q{AHW9LpwP~%~B`1*B5XWqWKxf#?BSrfe6&nG;5datZ?SkC^>=RLi=
zk{E8>-Ce%)T3YbehZ(Y_rl#NCZogkwbmQ^yrluwdhOnR@rHgaA#r4z7%*+nO{hhkl
zkWbF$#IJ8}Pcs<k>gpbQ{`uzK>hCvhY)qcHa%JY;eq{lU8%?a-Gd6890yX{iR((y1
z-CdSyoPI7vH)>15+NiCdwbVzC9Jx~QCiV0*!|d$rhb!1Xi*O{8?d<Fh1=hK_x%HfX
z&Rslh%9IU9yTvy@J3HIBwzf7cJ^gq|Ny&`8du_cvJSMz&zw1&Puk?(C3m1mm$~s{u
zv-a|)RByA=S0Q3@a(YHuuY*+#qn3Yq@ALG2M}NCe_&;M~<K);~C4zSA_r3q#%+4Qn
zGAJtQ)SWwbA~vU;ozdINd->Y6wCn3)lY44^{?zcBFSYh?vd<T`YuDCBZ_K@Iw$gVd
z&z|`a+UDlsGiT1!(9}G5cXxSUTpXXVv9U@1y_g;MkM&A#tooYu<k_>Z-Fkkx{gWq7
z3{0Jw&&<sHP*?t##5|kIrZsDHGP1H3c~94?`1WRI!KT^MbfXsqFZT=0`x+vrY-ALa
zvU}RJu&I7KBqb$JoH)_2YnN3|Pfu2i-h;2NuUC9{z-VG>nms2mPzW@W{Nzc?nl)>(
zrrWDODt>pza*jnI)8k{k&9i6U7C+0!&2aJJ#Rs2%R(yQadV;0o(X<&eB9<D<%|8#C
z6<@96m!6o&sI07fW~MRw>uYOQe=f|)$+@s8)tlk{dC-=O#ap(B#O^9-+_lSUUEE%+
zH~GnVd41{U=Y>|kS+YcB;%d-fNkK`8i<6Vn)QcJN_m6?<+M*&OFK_RK>(}$g#@?M(
z@0kQ@y0o;nKb~LzZ(`JJ-oTU;m2YouHWxlV1{y$)x2ZaN@uHxZnAo9I-Hwu!^z_BP
zv(2u?cAi-mG)Km+Mq+dN`Dw3GAMtm0`4<)x2>5l!%zr%Lymjd-5ztiYq)9>(7pA&=
zTe4&cXb*~qhetzeE9><_28RE?@BhEBzrH?Zf8E|wZ}u<wrshAdXU!U&mbSJc*`<Mt
zAGJu&*YaCc<9hk(RoBA8jUmf7u3!80_4UhAEJ2^%+%(R}%nVGt#1K;UukP2Em1jiM
z^YZe1(?S|mY%4#x{JGpDe2F3Cr9gH<0s}*+-g+;mr$*=c<!le_|NoC$U0q$qqF}+X
zzu=x`#%z6CzMp&4{pZybr3g=yUA1b}g^L#tPFDBd(dTre=bZDUkkFk)NeKxImX?-F
zmM-<InQ`aF#$?y9o~OSop8Q|Tf3)rBjT<|>?6od!*jxP_H0VD$E8f^C#dWK5=hrV^
zK+CT6J_$&IW|@8k<T#u;bEe?=IoWl|0)}3Ger~R=N7d7}s4dyJs?1HixVZS&g6u<H
z-rj}(|JBZXx!=L={GmfkoSd97#}$%Fo}ZIlv0}x7<l}uY?ust2R_Xfb=;$ojl*cmB
z_xroM&Y78-waM8IYu2uvIDfwXUq7jdv(57lojLQSyM3DQC5e#eIT2A&kM8ZQJ`@?|
zd3n-=2@I*JPqWgMRX43nKR*vNA*ZCI1oE_sl9H1}ubrZ=@7AN9>*MwYgoU;3*kJ*h
zXL)dIYxah%TmL@l?BOV%GG)qz-R1dOeo~!t=E&UHTRpu?_)<z}^c)E(sYS87%XXB#
zowen&fMmhfS68LP!&Ek%zIjt}x_<mKD>lLA)6?~x<KpI>bH0>vb;ps!_xJV|K0PIx
znWku@ps&xbsj2zm?r!tzfhWX^3JXC~Mg{->)vjASp{lE+qhapcxdpH4oMz3E>J|<U
z4+jk$-Q8V&>5Q{Q*~dq&Cr+O9Og$Q^6t`{Lwv4N*L}P6;Sq>dO{Bjy!=A|qhKQ>+|
z&?@d-RhN#$>?m;D(I%J~AtEC3;Mudb$?E<^vaMG@J7Yfn_?XNiWzz9lqorWku}4c{
zcb6HMnyxLJXnW}g2Mbe6Yb$6TCdOT{^vTPYohMFstX!w%cjWbniOL3MW^U`__U`C&
z;z-ZZ@nZmO32ba^6yRXFbjsO6L{_%<&6^w^dAm8UHJ0?T@ymf)Co;BGQ(kK<;nUL6
z`fxqI{^04;+@NJ97A*zOCLcXH!!Q{%!M*?gzv!q+j`luzdp>V(Z}57{)+-YiEm8tC
zgTd3>tyc~n?G~RncP_8LzyG?$0*6-mi>ZTFe;OJ#?%%(E%O`=pDO0B^YG`mIAM1Gt
znxWL!*I%+^$psr%-U;*P%ge~fB;@3rDHU<D_<FN);@&-bHWWT~%ek{d@a!zp$!=<g
z8jGKwQ#3ah7gqCm0GiC6XIp*f$Pt$6@9$dIuGPI>=%EYh^IO#ZGTD}Y|6J)5wU-wc
zyIa)#vAAwHYf4j7la%~p!(%s=&zm!KDr;?Rt&CL($K&Ju;?)*P(x9MdbZEG6Az<BN
z0mB>H^W~qNnc3{#FXtE^KmWDG5;4#+w%Xs{6m@lZL5on2X9oSKv0Jow@y@=BDXy-r
z2QOayc-Z&md|f|=gd-h-pxKO&kSR|t37)g5{Uvhj*s%}azk@ba?dWqpvS7^`9$D+M
zBOQXu8**=(t$RG-JZR6<!i9>{^kTbGPfsh9Z5LRVTEFSM=hB_U&y}pKq|Ec~Oej$}
z)cE%HcF>6F;WpmKR$PL@uCA^>e*8#ye{b)JlP4cq@%`k9kB>Jv2AZpbEL{kl16m?<
z>(;Dyt!7TFtgJsC_uFqMc<7{|rBwu4`EX{Y@xo=x+@7!P(bmy9(kE*TlAQHt!i4|9
zs~@p2)YQ}n2naM>xf0^}OfhI%_I14v6*fNe?dHDLa5)na60#xTAQPyka`WcRnB$73
zAHIHd_4MR?c7Fc(QW2*Vx3$0KFuYf1H!?MC-MiP8PtHc;WsD0K7Z(?3m!oCzvxK*|
zwt^O=fCkltg@rAwtsj4QcsS;`qP(ZSzdLBVXwA=}H8DFUf!4Ql-TG?D$WU2Xxh7_(
zP+eW!j`H{ORGbAhZ*I$#2BqA)<@XC^TRl2ft<u_-dz;PP-X6S|puHyL;i1-y+uL--
zbfb=doaME4{Tzn(>*qy8L>xGBgr%{uanc!A6&-79>ABYB#~vN+-k5b&Yu#f3PHCeQ
zj!Ty=6}-Nt`zl&R8ML2-k(uqmpP!!#%FCZy@hNUvQs&%gU-IuyC6Anq1h`UJA8+r;
zsw`xdd&>m0tnd5#`^zmwXEhw}mp^>w4A1LpYn%J~`L7qw+B0dA5Xb?yZp})2ptfX{
zzP=yBfxCBQBO@a_y1SeA?AZfa<J8sP@7^zGTkzzB;4HyyoIgJvm*1FrTI|U2<BLJ%
z@bSz`pcDhz*`%t<T2)mQb6nBo+Lg5yo}QkKQ>TiW<=kj!<reo+l9)K5tBdQ#?c2_t
zo}A(9Vir#IpFLsICL;?gE6@u4jT<*^kzsXra&|UMIUxYrGB8=q_Yug0E56Al*{38W
zHKm@OmiYA4RFf?`8b5yh>gwdg^zF?}=T=YQ#Vb~T*3Lb8d3kxno(jY3g|n8NIpgCq
z$3igqc;C`PEff4#T%IcY;IHlFcXxL?`}^}JCMJGqU&mPS<%QsyHET9xTvS>Uxw-AN
zMT>G{V<Tv3f1j+i+v`-%z{*O?n3$LebLaN%*kQ3H=jNo>9xW$U?YetyWy#-PrC(lN
zW}j`I4_ZBcM6#zN($kZ(>iauhx&HPUGbA)LH49}s3o_2lu>_6UK6>=%!pdOvb&pLr
zPfyc5yng?`uGiPsAHH*E4k%%50vVZ-p5A_Sb$Ig2OG`mJOv5#l813xrDt>%W1UaXb
z^WZeyXwbrUP^o<F-o&QAzrQCxKGu6<Yqq$kTFVuuz3b*Mytj_9va|#hQ094e7I;rJ
z(oj%f0Ie+pEsU-DlCkcwfaJ&b`~NS3k64IYxq5YH-xZCyw$)<FZaoK1P1Sx`rlq(w
zc>isyshc)!N=Qy_mb0yTaAjrimH#enHg$g_%*@O_eED+Z++6FOea<O9Sy@`3VlyeJ
z>B5Bo4Q=gW*_DBvy}hlgS8LnY+HOogFSqWoz@>nW<ra($D^_THd3~K9v=aHOg_iQY
zeYM<n^ZAcSBqb#+ShVO+sftqbyE{9X-QC?SEG-oc3?@9&6PgTJI16&JMdc?I5fPCc
zeJ&o(f&1;$<sW_i`Qhu=qpz;6E_`r+u~2r}mB7eINl>rx%o!gRHnyNdr>vB`yuJks
z6k6Ka4xK*Dy>#i)8279Xj~+dG@ah#8H#fJ8ecc=`VW)i)ZgdGV{P=b|e`D5Ftuu2h
zh1LD%i9BC;Qaqt2@z<A^9i5#Ae|~<Rn38g&R7L6WoVjyBV^b3*2<+Is`|;P;*JIqX
zHXJ&9_~ENpT*bx3b8M@p?UN7)Vow5<#&2(J1sVMC<;za(@O2%(KP(Xw(~W8Yt)yaP
zWZbZEBWQ)S!koEt3%|Y!z2hIHnaIGvsR%k3V0StHx^?SJx|Z`bH8mMjd`JMT+gP}8
zp@~Do1S_HHLM8^#g3Aet&ITnf0`BaqjTZ8qAhjlbzZ^)ok(u2f;Q+(B#}n9&-MJ$Z
z7#IlJ%y@ra?Z+o4h1V&YO6=RW50u)|&d=*z?B0Lr)%lhy%`RQSm6er0e*Qdo>J%3<
zJD*EU%^sCmit?c4zMu-|?d|P{PoM4vtpI*?W25rAxV>G^&dxr3>=@g@g9kxNl|eh+
zmoHb}_xqhSXmihvU8UN+5h_dOsRYeoXz1$Va&mG?$j#-oo8P}-gMp{%)hC9>Ky!hh
z5fN$gyd!^peg>_uwup_5{qy(x{STi$HMO_1i|Ir-$fm9aZC|aft_CgXy0f!5Vp9s|
z^@$vrA}V2X7#dcs(gLk*DR~i4^Y`m@i@HBMRAy&SI(7OqXgSD_U%wvR*q9u#B}4G~
zL=WYKixx4($H%j<usrzi@Gz*MC1+oErc`GpXlnb$ty@mP!NQ=;Fbf=;L1}HV;>AZS
z3{$2|DR^_k5VQy6@v+{+*VaaZ*0TpjL}=*z0@<8*$6}rGM7NA5CnoNw`)hUT^y$Rx
z?C$&Z|7DpP8(v4u@$~m^Z*ON;^Pk5fFE8KH-tO%0-w)aoq4g<yiNSoM{^QR7|NULK
zVns*l>1hwo&NeS7ENq-J=ScQqx7QyZ9|tWz2Ti`eyrgPjWmP2GX_9p7)-BLNn0tFF
zo8{|%FoO2nZQW{mYg_K=Qj?XM+S-Soot<r1_9kM=v}uoybPCTfO698U6I7~e4YFMg
zic4kpz6aay*EP?cEzKLcW^qFU184y;gMhHG^WoOc5YT4o!)?5vErz>xS-pAl#-Q+#
z%ado%ie!BsEn2iFAvd>IzW$G3x0tSzlM~aNxpQ~+xq2*C{W|IX<;%i`hK3&g{_fx3
z-7Wn2DK*nQW5d0@)$O1f_sk5#L-!YN+-P`xqlfV2oyF;(=)ADdc}K-ZB_AK352y9_
zo1E&r4ccv)c(@HTEam3r=HcgeY?f(u2CtHnO3&oi6T`y7K$X<qy|%x;zwcM|o_4{b
z;XJ572hABTcJBxI7gREywehq#{P^R8r%zj}zrRa7)*}g;s^#I~*#PPVKYdy#yZ+vy
z#fuFS4lvxfc~enan_E#)5j3C2!^^v~&&^}<ftzQ8czJn2N#()8<{Nvf&2w^c1f-=;
zhsw-U72w!V{yr`uI=cDz<A=}A&IaYC>l-;38CI-boqTs!sfV}s;qUkB`|s{9KYZbW
zK)0Cgp~LO`JNv%7o;r1^;Mo~T3oEOp^UoJAS;8W&A9v*I>+6{+e2SNjr8s0|X%!b2
zCl?hJ<=op-`R3~C@EG?=oaXuW!1GjIUS4n7<?9kuRaIl$m7YuntsLBzbMw%xt=Y#J
z463WEzunH?zj4nVn{|t?zWDX^HOLGfclY*_Cr=udmzS44Jtev>S@6=7)Q=L$J+GNK
zE9@uUn5gUystG?-*nl>;&af)YnjEvw*4kQnb=cZN^7VfhtE;Qu+}zB*Y}qo<mWFFu
zT3Q7^Kc)Wo`4cn+s-drce1T)LLE0IK9XobBSiOGVBa_>2Z*K<`lF7&W9^Ttq{o>YE
z?LB+;Jb3w%v$nSO+$KRM28NqP!E-{YetuE~t!Mu8?RGv$(Y1B4-HC_WOgmpL;O64m
zQ2V<q=k6}iwNYCS{rdXau<p+fwU4(vAAkM!HhPXtC8!<N(beVT>dNZl>-+H0BPMZi
z@ee<1R;*s_ZF2bT?s7pnxxNn{3P63Nr>Cc9-2L@`Yq7rm$v1@(2j)*SI^4R<ty|18
zHo!o;w<~Bu#{t&>?bw#x3b#a_n!U2;P`Xvp80ILm##OgP<K&UllprtO8L<in4fz*p
z##M>Wee$8mVopVWMdg0^8E?;&r+qzh=KW98gGn0?q-|cfe*O9t*VS8UynnV%)<2ja
z(B0jA<Np2jxb?>`T@pHW?AWRz|HcZNzOP?P*Q{BiF#r7FyzR+#b#h4?cU)O4_-TJt
zb#?RYw{54N9(wswv&K$dqRr9WoqbD`?v^OsTeoi?+@v$bOLf+)S^tVH>g(%|KYpz2
zv{1llp#W1O!=F0)b?eq0_-wNzNYh76xUIe2(8!3X*UkCh{0W~z_C0)Z`sq{EY15|{
zR#b3I^=fTxWxbKJZB@pqmcxl_)~!p*&gSMhoKRLKR<?WZi~NZ#Q@SH`*tXy9?e6CO
z@we{B-@2B=i7A^S8RoB5*crpu>J-TFTBws{WeC^H5~-gxayI9crFxZS`iPy=p6Ib4
zXyt{wcYDvB^W)*;b6S7>|Fr#`oGTrk%KPmrkZIq#)iftB&q+h%P}bI@v@|wbTic~_
zZ=;KL%Eai2o0*vv6cjMDIyJt0nR({y*@X)iF1+$sFsSHej+no{e?>(FXf%A$MU9Gi
z?n)CGKKxu7s3PR3BIKwb;Gj2MyzkkwG>xfVCsH;E-Dg#NA|B#r@l&YN1+@41?c3Zt
zckenbzkD!j>!GBL4XHPS`oH&o`e}3S{P~UBx3jk&Zp<+0x_B|r$JaNprbcG#)~!qB
zCJH!lXo^o2_uE%fQ*+>LS#o)~IA1%n&3WhLmk;Kc9nLXJ&dA^}H8oY8-T%B&Mqd8#
z%aTJcOO%8<7pz{*9kyC@^5n@GnVFh5b3og&C0E}m_*8x~M@(H^9aIQhe#vsYP@wzh
zi}&x_FJ>G$aDZV;RPIHsrkOr$jSiqG@woNka{cV)=H>z%ECv!h2D8u3m@%UvYOUU>
zubhf46SRV4A3jN!IsWj?8y>lS_PF)p+qZ9Luq)quCBq~mH<$JFri4hb-rn9;)^ekn
zJUoXTG(?<q#2$bBD#|dyZ@FOiQ7-QH^XAXz?q%qEEWpDy@ni~UchtRmaS}Xi61{FS
zeAGNtCI#7Xfp*wl3Q4#48EGS@Z^F24{rbZC`gjiUl_9TgKM&RrX<d~Z9UZ-pX=T{z
z%)g+`ub;B(`U^hg3w5$o%ws?Qx#Rfb6HkjgmS6Tzn>@j5X@UgX*RNkEcr9&pV_*fH
z`LHBI1AO+wk~J=?@^^=Vjw1>&;R5Ys=g`zPW%#G@RRFY&Sh4=+XZFy$ks-50o+vOd
PFfe$!`njxgN@xNAo<+DT

literal 0
HcmV?d00001

diff --git a/tests/output/Test-20230303/test-02/test-02.stog.amr.ttl b/tests/output/Test-20230303/test-02/test-02.stog.amr.ttl
new file mode 100644
index 00000000..5f7d3d7f
--- /dev/null
+++ b/tests/output/Test-20230303/test-02/test-02.stog.amr.ttl
@@ -0,0 +1,29 @@
+@prefix ns1: <http://amr.isi.edu/rdf/core-amr#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+ns1:Concept a rdfs:Class ;
+    rdfs:label "AMR-Concept" .
+
+ns1:Role a rdfs:Class ;
+    rdfs:label "AMR-Role" .
+
+<http://amr.isi.edu/amr_data/test-02#root01> a ns1:AMR ;
+    ns1:has-id "test-02" ;
+    ns1:has-sentence "Earth is a planet." ;
+    ns1:root <http://amr.isi.edu/amr_data/test-02#p> .
+
+<http://amr.isi.edu/frames/ld/v1.2.2/FrameRole> a ns1:Role ;
+    rdfs:label "AMR-PropBank-Role" .
+
+ns1:Frame a ns1:Concept ;
+    rdfs:label "AMR-PropBank-Frame" .
+
+<http://amr.isi.edu/amr_data/test-02#p> a <http://amr.isi.edu/entity-types#planet> ;
+    rdfs:label "Earth" .
+
+<http://amr.isi.edu/entity-types#planet> a ns1:NamedEntity .
+
+ns1:NamedEntity a ns1:Concept ;
+    rdfs:label "AMR-EntityType",
+        "AMR-Term" .
+
diff --git a/tests/output/Test-20230303/test.sentence.txt b/tests/output/Test-20230303/test.sentence.txt
new file mode 100644
index 00000000..2bc85c3e
--- /dev/null
+++ b/tests/output/Test-20230303/test.sentence.txt
@@ -0,0 +1,2 @@
+The sun is a star.
+Earth is a planet.
\ No newline at end of file
diff --git a/tests/test_amrbatch_main.py b/tests/test_amrbatch_main.py
index f5d67831..5da50414 100644
--- a/tests/test_amrbatch_main.py
+++ b/tests/test_amrbatch_main.py
@@ -10,9 +10,10 @@
 import subprocess, os
 from datetime import datetime
 
-FILE_PATH = f'{os.path.dirname(os.path.abspath(__file__))}'
-INPUT_DIR_PATH = f'{FILE_PATH}/input/'
-OUTPUT_DIR_PATH = f'{FILE_PATH}/output/'
+TESTS_PATH = f'{os.path.dirname(os.path.abspath(__file__))}'
+INPUT_DIR_PATH = f'{TESTS_PATH}/input/'
+OUTPUT_DIR_PATH = f'{TESTS_PATH}/output/'
+AMR_MODEL_PATH = f'{TESTS_PATH}/../amr_models/model_parse_xfm_bart_large-v0_1_0'
 
 from context import amrbatch
 
@@ -23,14 +24,15 @@ from context import amrbatch
 #==============================================================================
 
 # -- Input Data
-amrld_file_path = f'{INPUT_DIR_PATH}test.txt'
+input_filename = f'test.txt'
+input_filepath = f'{INPUT_DIR_PATH}{input_filename}'
 
 
 # -- Output references
 base_output_name = f'Test'
 time_ref = f'{datetime.now().strftime("%Y%m%d")}'
-out_dir_path = f'{OUTPUT_DIR_PATH}{base_output_name}-{time_ref}/'
-os.makedirs(out_dir_path, exist_ok=True)
+output_dirpath = f'{OUTPUT_DIR_PATH}{base_output_name}-{time_ref}/'
+os.makedirs(output_dirpath, exist_ok=True)
 penman_output_file = f'{base_output_name}.pnm'
 turtle_output_file = f'{base_output_name}.ttl'
 
@@ -41,5 +43,10 @@ turtle_output_file = f'{base_output_name}.ttl'
 #==============================================================================
 
 # -- Parsing from a file
-amrbatch.parsing_sentences_from_file(
-    input_file_path, penman_output_file=None, turtle_output_file=None)
+amr_graph_list = amrbatch.parse_sentences_from_file(
+    input_filepath, amr_model_path=AMR_MODEL_PATH,
+    output_dirpath=output_dirpath, amrld_serialization=True)
+
+print(f'\n *** TEST RESULT ***')
+for amr_graph in amr_graph_list:
+    print(f'\n{amr_graph}')
\ No newline at end of file
-- 
GitLab