-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathenexa-add-file
executable file
·48 lines (41 loc) · 1.54 KB
/
enexa-add-file
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
#!/bin/sh
set -eu
DIR="$(dirname "$(realpath "$0")")"/
FILE="$1"
PROPERTY="${2:-}"
# Copy file if necessary
case "$FILE" in
"$ENEXA_SHARED_DIRECTORY"*)
TARGET="$FILE"
;;
*)
mkdir -p "$ENEXA_MODULE_INSTANCE_DIRECTORY"
TARGET=$(mktemp --tmpdir="$ENEXA_MODULE_INSTANCE_DIRECTORY" --suffix ".$(basename "$FILE")" XXXXXXXXXX)
cp "$FILE" "$TARGET"
;;
esac
# Get path relative to the ENEXA shared directory
NAME=$(echo "$TARGET" |perl -pe '$q = quotemeta $ENV{ENEXA_SHARED_DIRECTORY}; s/$q//')
# Create request content
CONTENT="@prefix enexa: <http://w3id.org/dice-research/enexa/ontology#> . _:new enexa:location 'enexa-dir:/$NAME' . _:new enexa:experiment <$ENEXA_EXPERIMENT_IRI> . "
# If there are additional triples, append them
if [ ! -z "$PROPERTY" ]; then
CONTENT="$CONTENT <$ENEXA_MODULE_INSTANCE_IRI> <$PROPERTY> _:new ."
fi
RESOURCE_URI=$(curl \
-s \
-o /dev/null --dump-header - \
-X POST \
-H "Content-Type: text/turtle" \
--data-raw "$CONTENT" \
"$ENEXA_SERVICE_URL"add-resource \
|awk '/^Content-Location: / { sub(/^[^:]+: /, ""); print }' |tr -d $'\r')
# OLD APPROACH: send data to the SPARQL endpoint
#PROPERTY_TRIPLES=""
#if [ ! -z "$PROPERTY" ]; then
# PROPERTY_TRIPLES="<$ENEXA_MODULE_INSTANCE_IRI> <$PROPERTY> <$RESOURCE_URI> ."
#fi
#
#echo "PREFIX enexa: <http://w3id.org/dice-research/enexa/ontology#> INSERT DATA { <$RESOURCE_URI> enexa:location 'enexa-dir:/$NAME' . $PROPERTY_TRIPLES }" \
# |"$DIR"/sparql-update "$ENEXA_META_DATA_ENDPOINT"
echo "$RESOURCE_URI"