#!/bin/bash
# get_merged_all.sh - In a WDEF, reduce all properties already in Wikidata.
# Copyright (C) 2023 Pierre Choffet
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of version 3 of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
readonly SCRIPT_DIR="$(dirname "$0")"
set -euo pipefail
function usage() {
cat << EOF
USAGE: get_merged_all.sh
From a given WDEF, remove all properties that are already in Wikidata. The reduced
WDEF is returned.
EOF
}
if [ "$#" -ne 1 ]
then
usage >&2
exit 1
fi
readonly WDEF_PATH="${1}"
# Check wdef exists
if [ ! -s "${WDEF_PATH}" ]
then
echo "WDEF file doesn't exist. Exiting" >&2
exit
fi
read -r -a WDIDS <<<"$(xmlstarlet sel -N wdef=https://purl.choffet.net/wdef -t -m "/wdef:knowledge/wdef:element[substring(@wdef:id, 1, 1) = 'Q']" -v '@wdef:id' -v "' '" "${WDEF_PATH}")"
LAST_ITERATION_PATH=$(mktemp)
cp "${WDEF_PATH}" "${LAST_ITERATION_PATH}"
for qid in "${WDIDS[@]}"
do
NEW_WDEF_PATH="$(mktemp)"
"${SCRIPT_DIR}/get_merged_element.sh" "${LAST_ITERATION_PATH}" "${qid}" > "${NEW_WDEF_PATH}"
rm "${LAST_ITERATION_PATH}"
LAST_ITERATION_PATH="${NEW_WDEF_PATH}"
done
cat "${NEW_WDEF_PATH}"
rm "${NEW_WDEF_PATH}"