diff --git a/.gitignore b/.gitignore
index d18021646..2bb9b7ddd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,3 +29,6 @@ utilities/rdbmigration/.work
**/.classpath
**/.project
**/bin/
+/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/logs/
+/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/data/
+/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/previous-harvest/
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/diff-additions.config.xml b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/diff-additions.config.xml
new file mode 100644
index 000000000..5da668a40
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/diff-additions.config.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+ harvested-data.model.xml
+
+
+
+ previous-harvest.model.xml
+
+
+
+
+ filename=data/vivo-additions.rdf.xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INFO
+
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/diff-subtractions.config.xml b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/diff-subtractions.config.xml
new file mode 100644
index 000000000..2b1455071
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/diff-subtractions.config.xml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+ previous-harvest.model.xml
+
+
+
+ harvested-data.model.xml
+
+
+
+ filename=data/vivo-subtractions.rdf.xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INFO
+
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/harvested-data.model.xml b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/harvested-data.model.xml
new file mode 100644
index 000000000..e722f84a1
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/harvested-data.model.xml
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+ tdb
+ data/harvested-data/
+
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openAlexFetch.bat b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openAlexFetch.bat
new file mode 100644
index 000000000..781a5e826
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openAlexFetch.bat
@@ -0,0 +1,93 @@
+@echo off
+
+IF exist data (
+ rmdir /s /q data
+)
+
+IF exist logs (
+ rmdir /s /q logs
+)
+
+REM set to the directory where the harvester was installed or unpacked
+REM HARVESTER_INSTALL_DIR is set to the location of the installed harvester
+REM If the deb file was used to install the harvester then the
+REM directory should be set to /usr/share/vivo/harvester which is the
+REM current location associated with the deb installation.
+REM Since it is also possible the harvester was installed by
+REM uncompressing the tar.gz the setting is available to be changed
+REM and should agree with the installation location
+set HARVESTER_INSTALL_DIR=C:\Users\KampeB\Dev\Harvester
+set HARVEST_NAME=OpenAlex-Fetch
+FOR %%A IN (%Date:/=%) DO SET Today=%%A
+
+REM set the CLASSPATH and HARVESTER_JAVA_OPTS to be used by all commands
+set CLASSPATH=%HARVESTER_INSTALL_DIR%/build/harvester.jar;%HARVESTER_INSTALL_DIR%/build/dependency/*
+set HARVESTER_JAVA_OPTS=-Xms1024M -Xmx2048M
+
+REM Execute Fetch
+REM This stage of the script is where the information is gathered together into one local
+REM place to facilitate the further steps of the harvest. The data is stored locally
+REM in a format based off of the source. The format is a form of RDF but not in the VIVO ontology
+echo Fetch from OpenAlex
+@java %HARVESTER_JAVA_OPTS% -cp %CLASSPATH% org.vivoweb.harvester.fetch.JSONFetch -X openalexfetch.config.xml
+ if %errorlevel% neq 0 exit /b %errorlevel%
+
+REM Execute Translate
+REM This is the part of the script where the input data is transformed into valid RDF
+REM Translate will apply an xslt file to the fetched data which will result in the data
+REM becoming valid RDF in the VIVO ontology
+echo Translate data to valid RDF
+@java %HARVESTER_JAVA_OPTS% -cp %CLASSPATH% org.vivoweb.harvester.translate.XSLTranslator -X xsltranslator.config.xml
+ if %errorlevel% neq 0 exit /b %errorlevel%
+
+REM Execute Transfer to import from record handler into local temp model
+REM From this stage on the script places the data into a Jena model. A model is a
+REM data storage structure similar to a database, but in RDF.
+REM The harvester tool Transfer is used to move/add/remove/dump data in models.
+echo Transfer RDF into temporary triple store
+@java %HARVESTER_JAVA_OPTS% -cp %CLASSPATH% org.vivoweb.harvester.transfer.Transfer -X transfer.config.xml
+ if %errorlevel% neq 0 exit /b %errorlevel%
+
+REM Perform an update
+REM The harvester maintains copies of previous harvests in order to perform the same harvest twice
+REM but only add the new statements, while removing the old statements that are no longer
+REM contained in the input data. This is done in several steps of finding the old statements,
+REM then the new statements, and then applying them to the Vivo main model.
+
+REM Find Subtractions
+REM When making the previous harvest model agree with the current harvest, the statements that exist in
+REM the previous harvest but not in the current harvest need to be identified for removal.
+echo Find Subtractions
+@java %HARVESTER_JAVA_OPTS% -cp %CLASSPATH% org.vivoweb.harvester.diff.Diff -X diff-subtractions.config.xml
+ if %errorlevel% neq 0 exit /b %errorlevel%
+
+REM Find Additions
+REM When making the previous harvest model agree with the current harvest, the statements that exist in
+REM the current harvest but not in the previous harvest need to be identified for addition.
+echo Find Additions
+@java %HARVESTER_JAVA_OPTS% -cp %CLASSPATH% org.vivoweb.harvester.diff.Diff -X diff-additions.config.xml
+ if %errorlevel% neq 0 exit /b %errorlevel%
+
+REM Apply Subtractions to Previous model
+echo Apply Subtractions to Previous model
+@java %HARVESTER_JAVA_OPTS% -cp %CLASSPATH% org.vivoweb.harvester.transfer.Transfer -w INFO -o previous-harvest.model.xml -r data/vivo-subtractions.rdf.xml -m
+ if %errorlevel% neq 0 exit /b %errorlevel%
+
+REM Apply Additions to Previous model
+echo Apply Additions to Previous model
+@java %HARVESTER_JAVA_OPTS% -cp %CLASSPATH% org.vivoweb.harvester.transfer.Transfer -w INFO -o previous-harvest.model.xml -r data/vivo-additions.rdf.xml
+ if %errorlevel% neq 0 exit /b %errorlevel%
+
+REM Now that the changes have been applied to the previous harvest and the harvested data in vivo
+REM agree with the previous harvest, the changes are now applied to the vivo model.
+REM Apply Subtractions to VIVO model
+echo Apply Subtractions to VIVO model
+@java %HARVESTER_JAVA_OPTS% -cp %CLASSPATH% org.vivoweb.harvester.transfer.Transfer -w INFO -o vivo.model.xml -r data/vivo-subtractions.rdf.xml -m
+ if %errorlevel% neq 0 exit /b %errorlevel%
+
+REM Apply Additions to VIVO model
+echo Apply Additions to VIVO model
+@java %HARVESTER_JAVA_OPTS% -cp %CLASSPATH% org.vivoweb.harvester.transfer.Transfer -w INFO -o vivo.model.xml -r data/vivo-additions.rdf.xml
+ if %errorlevel% neq 0 exit /b %errorlevel%
+
+echo Harvest completed successfully
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openAlexFetch.sh b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openAlexFetch.sh
new file mode 100644
index 000000000..b9178031e
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openAlexFetch.sh
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+export HARVESTER_INSTALL_DIR=/home/kampeb/vivo-fid-bau-1-12/openalex-harvester/
+export HARVEST_NAME=OpenAlex-Harvest
+export DATE=`date +%Y-%m-%d'T'%T`
+
+# Add harvester binaries to path for execution
+# The tools within this script refer to binaries supplied within the harvester
+# Since they can be located in another directory their path should be
+# included within the classpath and the path environment variables.
+export PATH=$PATH:$HARVESTER_INSTALL_DIR/bin
+export CLASSPATH=$HARVESTER_INSTALL_DIR/build/harvester.jar:$HARVESTER_INSTALL_DIR/build/dependency/*
+
+# Exit on first error
+# The -e flag prevents the script from continuing even though a tool fails.
+# Continuing after a tool failure is undesirable since the harvested
+# data could be rendered corrupted and incompatible.
+set -e
+
+# Supply the location of the detailed log file which is generated during the script.
+# If there is an issue with a harvest, this file proves invaluable in finding
+# a solution to the problem. It has become common practice in addressing a problem
+# to request this file. The passwords and usernames are filtered out of this file
+# to prevent these logs from containing sensitive information.
+echo "Full Logging in $HARVEST_NAME.$DATE.log"
+if [ ! -d logs ]; then
+ mkdir logs
+fi
+cd logs
+touch $HARVEST_NAME.$DATE.log
+ln -sf $HARVEST_NAME.$DATE.log $HARVEST_NAME.latest.log
+cd ..
+
+#clear old data
+
+# For a fresh harvest, the removal of the previous information maintains data integrity.
+# If you are continuing a partial run or wish to use the old and already retrieved
+# data, you will want to comment out this line since it could prevent you from having
+# the required harvest data.
+rm -rf data
+
+# Execute Fetch
+# This stage of the script is where the information is gathered together into one local
+# place to facilitate the further steps of the harvest. The data is stored locally
+# in a format based off of the source. The format is a form of RDF but not in the VIVO ontology
+# The JDBCFetch tool in particular takes the data from the chosen source described in its
+# configuration XML file and places it into record set in the flat RDF directly
+# related to the rows, columns and tables described in the target database.
+echo Execute jsonfetch from OpenAlex.org
+harvester-jsonfetch -w DEBUG -X openAlexfetch.config.xml
+
+# Execute Translate
+# This is the part of the script where the input data is transformed into valid RDF
+# Translate will apply an xslt file to the fetched data which will result in the data
+# becoming valid RDF in the VIVO ontology
+echo Execute translate
+harvester-xsltranslator -X xsltranslator.config.xml
+
+# Execute Transfer to import from record handler into local temp model
+# From this stage on the script places the data into a Jena model. A model is a
+# data storage structure similar to a database, but in RDF.
+# The harvester tool Transfer is used to move/add/remove/dump data in models.
+# For this call on the transfer tool:
+# -s refers to the source translated records file, which was just produced by the translator step
+# -o refers to the destination model for harvested data
+# -d means that this call will also produce a text dump file in the specified location
+echo Execute initial transfer to triple store
+harvester-transfer -s translated-records.config.xml -o harvested-data.model.xml -d data/harvested-data/imported-records.rdf.xml
+
+# Perform an update
+# The harvester maintains copies of previous harvests in order to perform the same harvest twice
+# but only add the new statements, while removing the old statements that are no longer
+# contained in the input data. This is done in several steps of finding the old statements,
+# then the new statements, and then applying them to the Vivo main model.
+
+# Find Subtractions
+# When making the previous harvest model agree with the current harvest, the statements that exist in
+# the previous harvest but not in the current harvest need to be identified for removal.
+echo Find Subtractions
+harvester-diff -X diff-subtractions.config.xml
+
+# Find Additions
+# When making the previous harvest model agree with the current harvest, the statements that exist in
+# the current harvest but not in the previous harvest need to be identified for addition.
+echo Find Additions
+harvester-diff -X diff-additions.config.xml
+
+# Apply Subtractions to Previous model
+echo Apply Subtractions to Previous model
+harvester-transfer -o previous-harvest.model.xml -r data/vivo-subtractions.rdf.xml -m
+# Apply Additions to Previous model
+echo Apply Additions to Previous model
+harvester-transfer -o previous-harvest.model.xml -r data/vivo-additions.rdf.xml
+
+# Now that the changes have been applied to the previous harvest and the harvested data in vivo
+# agree with the previous harvest, the changes are now applied to the vivo model.
+# Apply Subtractions to VIVO
+echo Apply Subtractions to VIVO
+harvester-transfer -o vivo.model.xml -r data/vivo-subtractions.rdf.xml -m
+# Apply Additions to VIVO for pre-1.2 versions
+echo Apply Additions to VIVO
+harvester-transfer -o vivo.model.xml -r data/vivo-additions.rdf.xml
+
+#Output some counts
+ORGS=`cat data/vivo-additions.rdf.xml | grep 'http://xmlns.com/foaf/0.1/Organization' | wc -l`
+PEOPLE=`cat data/vivo-additions.rdf.xml | grep 'http://xmlns.com/foaf/0.1/Person' | wc -l`
+POSITIONS=`cat data/vivo-additions.rdf.xml | grep 'positionForPerson' | wc -l`
+echo "Imported $ORGS organizations, $PEOPLE people, and $POSITIONS positions"
+
+echo 'Harvest completed successfully'
\ No newline at end of file
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openAlexFetchPartly.sh b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openAlexFetchPartly.sh
new file mode 100644
index 000000000..888a2b0cd
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openAlexFetchPartly.sh
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+export HARVESTER_INSTALL_DIR=/home/kampeb/vivo-fid-bau-1-12/openalex-harvester/
+export HARVEST_NAME=OpenAlex-Harvest
+export DATE=`date +%Y-%m-%d'T'%T`
+
+# Add harvester binaries to path for execution
+# The tools within this script refer to binaries supplied within the harvester
+# Since they can be located in another directory their path should be
+# included within the classpath and the path environment variables.
+export PATH=$PATH:$HARVESTER_INSTALL_DIR/bin
+export CLASSPATH=$HARVESTER_INSTALL_DIR/build/harvester.jar:$HARVESTER_INSTALL_DIR/build/dependency/*
+
+# Exit on first error
+# The -e flag prevents the script from continuing even though a tool fails.
+# Continuing after a tool failure is undesirable since the harvested
+# data could be rendered corrupted and incompatible.
+set -e
+
+# Supply the location of the detailed log file which is generated during the script.
+# If there is an issue with a harvest, this file proves invaluable in finding
+# a solution to the problem. It has become common practice in addressing a problem
+# to request this file. The passwords and usernames are filtered out of this file
+# to prevent these logs from containing sensitive information.
+echo "Full Logging in $HARVEST_NAME.$DATE.log"
+if [ ! -d logs ]; then
+ mkdir logs
+fi
+cd logs
+touch $HARVEST_NAME.$DATE.log
+ln -sf $HARVEST_NAME.$DATE.log $HARVEST_NAME.latest.log
+cd ..
+
+#clear old data
+
+# For a fresh harvest, the removal of the previous information maintains data integrity.
+# If you are continuing a partial run or wish to use the old and already retrieved
+# data, you will want to comment out this line since it could prevent you from having
+# the required harvest data.
+#rm -rf data
+
+# Execute Fetch
+# This stage of the script is where the information is gathered together into one local
+# place to facilitate the further steps of the harvest. The data is stored locally
+# in a format based off of the source. The format is a form of RDF but not in the VIVO ontology
+# The JDBCFetch tool in particular takes the data from the chosen source described in its
+# configuration XML file and places it into record set in the flat RDF directly
+# related to the rows, columns and tables described in the target database.
+#echo Execute jsonfetch from OpenAlex.org
+#harvester-jsonfetch -w DEBUG -X openAlexfetch.config.xml
+
+# Execute Translate
+# This is the part of the script where the input data is transformed into valid RDF
+# Translate will apply an xslt file to the fetched data which will result in the data
+# becoming valid RDF in the VIVO ontology
+#echo Execute translate
+#harvester-xsltranslator -X xsltranslator.config.xml
+
+# Execute Transfer to import from record handler into local temp model
+# From this stage on the script places the data into a Jena model. A model is a
+# data storage structure similar to a database, but in RDF.
+# The harvester tool Transfer is used to move/add/remove/dump data in models.
+# For this call on the transfer tool:
+# -s refers to the source translated records file, which was just produced by the translator step
+# -o refers to the destination model for harvested data
+# -d means that this call will also produce a text dump file in the specified location
+#echo Execute initial transfer to triple store
+#harvester-transfer -s translated-records.config.xml -o harvested-data.model.xml -d data/harvested-data/imported-records.rdf.xml
+
+# Perform an update
+# The harvester maintains copies of previous harvests in order to perform the same harvest twice
+# but only add the new statements, while removing the old statements that are no longer
+# contained in the input data. This is done in several steps of finding the old statements,
+# then the new statements, and then applying them to the Vivo main model.
+
+# Find Subtractions
+# When making the previous harvest model agree with the current harvest, the statements that exist in
+# the previous harvest but not in the current harvest need to be identified for removal.
+#echo Find Subtractions
+#harvester-diff -X diff-subtractions.config.xml
+
+# Find Additions
+# When making the previous harvest model agree with the current harvest, the statements that exist in
+# the current harvest but not in the previous harvest need to be identified for addition.
+#echo Find Additions
+#harvester-diff -X diff-additions.config.xml
+
+# Apply Subtractions to Previous model
+#echo Apply Subtractions to Previous model
+#harvester-transfer -o previous-harvest.model.xml -r data/vivo-subtractions.rdf.xml -m
+# Apply Additions to Previous model
+#echo Apply Additions to Previous model
+#harvester-transfer -o previous-harvest.model.xml -r data/vivo-additions.rdf.xml
+
+# Now that the changes have been applied to the previous harvest and the harvested data in vivo
+# agree with the previous harvest, the changes are now applied to the vivo model.
+# Apply Subtractions to VIVO
+echo Apply Subtractions to VIVO
+harvester-transfer -o vivo.model.xml -r data/vivo-subtractions.rdf.xml -m
+# Apply Additions to VIVO for pre-1.2 versions
+echo Apply Additions to VIVO
+harvester-transfer -o vivo.model.xml -r data/vivo-additions.rdf.xml
+
+# Output some counts
+ORGS=`cat data/vivo-additions.rdf.xml | grep 'http://xmlns.com/foaf/0.1/Organization' | wc -l`
+PEOPLE=`cat data/vivo-additions.rdf.xml | grep 'http://xmlns.com/foaf/0.1/Person' | wc -l`
+POSITIONS=`cat data/vivo-additions.rdf.xml | grep 'positionForPerson' | wc -l`
+echo "Imported $ORGS organizations, $PEOPLE people, and $POSITIONS positions"
+
+echo 'Harvest completed successfully'
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openAlexfetch.config.xml b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openAlexfetch.config.xml
new file mode 100644
index 000000000..8f0db16db
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openAlexfetch.config.xml
@@ -0,0 +1,27 @@
+
+
+
+ # harvesting publications from TIB – Leibniz Information Centre for Science and Technology. exchange the ROR ID to test with your institution.
+ https://api.openalex.org/works?filter=authorships.institutions.ror:https://ror.org/04aj4c181&per-page=200&mailto=forschungsatlas@tib.eu&cursor=*
+
+ # harvesting of publications from the subfield "Semantic Web and Ontology Develoment", should result in ca. 9-10k publications
+
+
+ # harvesting of publications from the journal "Quantitative Science Studies".
+
+
+ # FIDBAU
+
+
+ raw-records.config.xml
+ http://vivo.example.com/harvest/aims_users/
+ publication
+ uid
+ $.results
+ INFO
+
+
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openalex-to-vivo.datamap.xsl b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openalex-to-vivo.datamap.xsl
new file mode 100644
index 000000000..f318495de
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/openalex-to-vivo.datamap.xsl
@@ -0,0 +1,1513 @@
+
+
+
+
+
+
+ https://forschungsatlas.fid-bau.de/individual/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ T00:00:00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Authorship for
+
+
+ Authorship for
+
+
+
+
+
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+
+
+
+
+
+ vCard for:
+
+
+
+
+
+
+
+
+
+
+ vCard name for:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ journal-article
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/previous-harvest.model.xml b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/previous-harvest.model.xml
new file mode 100644
index 000000000..6542cb903
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/previous-harvest.model.xml
@@ -0,0 +1,10 @@
+
+
+
+ tdb
+ previous-harvest
+
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/raw-records.config.xml b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/raw-records.config.xml
new file mode 100644
index 000000000..8fd6c045f
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/raw-records.config.xml
@@ -0,0 +1,299 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.vivoweb.harvester.util.repo.TextFileRecordHandler
+ data/raw-records
+
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/transfer.config.xml b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/transfer.config.xml
new file mode 100644
index 000000000..5a46d1df1
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/transfer.config.xml
@@ -0,0 +1,38 @@
+
+
+
+
+ INFO
+
+
+ translated-records.config.xml
+
+
+ harvested-data.model.xml
+ data/harvested-data/imported-records.rdf.xml
+
+
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/translated-records.config.xml b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/translated-records.config.xml
new file mode 100644
index 000000000..4835eda84
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/translated-records.config.xml
@@ -0,0 +1,299 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.vivoweb.harvester.util.repo.TextFileRecordHandler
+ data/translated-records
+
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/usage.txt b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/usage.txt
new file mode 100644
index 000000000..efb259765
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/usage.txt
@@ -0,0 +1,20 @@
+usage: JSONFetch
+ -d,--description a descriptive name for the json
+ object [have multiple -d for more
+ names]
+ -f,--file file containing json
+ -h,--help Help Message
+ -i,--id a single id for the json object
+ [have multiple -i for more ids]
+ -n,--namespaceBase the base namespace to use for each
+ node created
+ -o,--output RecordHandler config file path
+ -O,--outputOverride override the RH_PARAM of output
+ recordhandler using VALUE
+ -p,--path a single path for the json object
+ [have multiple -p for more json
+ paths]
+ -u,--url url which produces json
+ -w,--wordiness Set the console log level
+ -X,--config XML Configuration File
+
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/vivo.model.xml b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/vivo.model.xml
new file mode 100644
index 000000000..274049f41
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/vivo.model.xml
@@ -0,0 +1,104 @@
+
+
+
+
+ tdb
+ /opt/data/forschungsatlas/tdbContentModels
+ http://vitro.mannlib.cornell.edu/default/vitro-kb-2
+
\ No newline at end of file
diff --git a/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/xsltranslator.config.xml b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/xsltranslator.config.xml
new file mode 100644
index 000000000..d3a824fb2
--- /dev/null
+++ b/example-scripts/bash-scripts/full-harvest-examples/1.13-1.15-examples/example-openalex/xsltranslator.config.xml
@@ -0,0 +1,17 @@
+
+
+
+ INFO
+
+ raw-records.config.xml
+
+
+ translated-records.config.xml
+
+
+ openalex-to-vivo.datamap.xsl
+
diff --git a/src/main/java/org/vivoweb/harvester/fetch/JSONFetch.java b/src/main/java/org/vivoweb/harvester/fetch/JSONFetch.java
index 2c47bfaee..5c1dc0915 100644
--- a/src/main/java/org/vivoweb/harvester/fetch/JSONFetch.java
+++ b/src/main/java/org/vivoweb/harvester/fetch/JSONFetch.java
@@ -5,18 +5,18 @@
******************************************************************************/
package org.vivoweb.harvester.fetch;
-import java.io.IOException;
+import java.io.IOException;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import net.minidev.json.JSONObject;
import net.minidev.json.JSONArray;
+import net.minidev.json.parser.JSONParser;
+import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.vivoweb.harvester.util.FileAide;
-import org.vivoweb.harvester.util.InitLog;
-import org.vivoweb.harvester.util.SpecialEntities;
-import org.vivoweb.harvester.util.WebAide;
+import org.vivoweb.harvester.util.*;
import org.vivoweb.harvester.util.args.ArgDef;
import org.vivoweb.harvester.util.args.ArgList;
import org.vivoweb.harvester.util.args.ArgParser;
@@ -289,8 +289,9 @@ private String buildNodeTypeNS(String nodeName) {
* @throws IOException error getting recrords
*/
public void execute() throws IOException {
-
+ JSONParser parser = new JSONParser();
String jsonpath = new String();
+ List