-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathload_commons.sh
More file actions
executable file
·91 lines (76 loc) · 3.15 KB
/
load_commons.sh
File metadata and controls
executable file
·91 lines (76 loc) · 3.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/bin/bash
# Constants
SILKNOW_PATH=${SILKNOW_PATH:-"/home/semantic/silknow"}
KB_PATH=${KB_PATH:-"${SILKNOW_PATH}/knowledge-base"}
CONVERTER_PATH=${CONVERTER_PATH:-"${SILKNOW_PATH}/converter"}
THESAURUS_PATH=${THESAURUS_PATH:-"${SILKNOW_PATH}/thesaurus"}
LOG_FILE=${LOG_FILE:-"load_commons.log"}
# $1 = path to directory which contains RDF files
delete_rdf() {
find "$1" -name "*.rdf" -or -name "*.rdf.gz" -type f -delete
find "$1" -name "*.rdfs" -or -name "*.rdfs.gz" -type f -delete
find "$1" -name "*.ttl" -or -name "*.ttl.gz" -type f -delete
find "$1" -name "*.n3" -or -name "*.n3.gz" -type f -delete
}
load() {
VIRTUOSO_VOCABULARIES_PATH="${VIRTUOSO_DUMPS_PATH}/vocabularies"
VIRTUOSO_MUSEUMS_PATH="${VIRTUOSO_DUMPS_PATH}/museums"
# Get container ID
containerId=$(docker ps -aqf "name=^${CONTAINER_NAME}$")
if [[ ! "${containerId}" ]]; then
echo "${CONTAINER_NAME}: Container not found"
exit 1
fi
echo "Docker container ID: ${containerId}"
# Copy files from thesaurus
cd "${THESAURUS_PATH}" || exit 1
git pull --rebase
mkdir -p "${VIRTUOSO_VOCABULARIES_PATH}/thesaurus"
cp "thesaurus.ttl" "${VIRTUOSO_VOCABULARIES_PATH}/thesaurus/"
# Update knowledge-base
echo "Updating knowledge-base repository"
cd "${KB_PATH}" || exit 1
git pull --rebase
# Copy files from vocabularies
for folder in "${KB_PATH}/vocabularies/"*; do
folderName=$(basename "$folder")
echo "Copying vocabularies from: ${folderName}"
mkdir -p "${VIRTUOSO_VOCABULARIES_PATH}/${folderName}"
delete_rdf "${VIRTUOSO_VOCABULARIES_PATH}/${folderName}"
cp -r "${KB_PATH}/vocabularies/${folderName}" "${VIRTUOSO_VOCABULARIES_PATH}/"
done
# Load files
for folder in "${KB_PATH}/vocabularies/"*; do
# graph extension name (ie. http://data.silknow.org/$2)
graphPart=$(basename "$folder")
# folder path in dumps/
folderPath="vocabularies/${graphPart}"
temp_file=$(mktemp)
touch "${temp_file}"
echo "Created temp file: ${temp_file}"
echo "DELETE FROM DB.DBA.load_list;" >> "${temp_file}"
echo "SPARQL CLEAR GRAPH <http://data.silknow.org/${graphPart}>;" >> "${temp_file}"
echo "ld_dir('dumps/${folderPath}/', '*.*', 'http://data.silknow.org/${graphPart}');" >> "${temp_file}"
echo "rdf_loader_run();" >> "${temp_file}"
echo "cl_exec('checkpoint');" >> "${temp_file}"
echo "SELECT * FROM DB.DBA.load_list WHERE ll_error IS NOT NULL;" >> "${temp_file}"
echo "DELETE FROM DB.DBA.load_list;" >> "${temp_file}"
echo "Copying SQL file to the Docker container"
docker cp "${temp_file}" "${containerId}:/load_commons.sql"
echo "Executing SQL file through isql-v inside the Docker container"
docker exec -i "${containerId}" sh -c "isql-v -U dba -P \${DBA_PASSWORD} < /load_commons.sql" &>> "${LOG_FILE}"
echo "Query output saved to ${LOG_FILE}"
echo "Removing temp file: ${temp_file}"
rm "${temp_file}"
done
}
# Node 1
echo "load_commons::node1"
CONTAINER_NAME="silknow_virtuoso"
VIRTUOSO_DUMPS_PATH="/var/docker/virtuoso/silknow/data/dumps"
load
# Node 2
echo "load_commons::node2"
CONTAINER_NAME="silknow_virtuoso_node2"
VIRTUOSO_DUMPS_PATH="/var/docker/virtuoso/silknow_node2/data/dumps"
load