#
# KEHOME/bin/mkr2rdf
# Sep/15/2003 Oct/1/2005
# translate MKR propositions to RDF triples
# Usage:
# mkr2rdf [-q]
# proposition
# ...
# EOF
#
# triple ::=
# subject predicate object
#
# proposition ::=
# context
# sentence
# context ::=
# at view = vname
# sentence ::=
# statement
# question
# command
# assignment
# control structure
# command ::=
# do action ... done
# assignment ::=
# let variable = value
# control structure ::=
# exit
# statement ::=
# subject is object # identity/alias
# subject is object with differentia # definition
# subject isa object with differentia # definition
# subject isu object with differentia # definition
# subject iss object with differentia # definition
# subject has attribute
# subject has attribute = value
# subject do action done
# subject do action = event done
# subject do action pplist done
# subject do action = event pplist done
# subject rel relation # binary relation
# subject rel relation = value # binary relation
# subject isin relation # n-ary relation
# subject isin relation = value # n-ary relation
# subject haspart part # part
# subject haspart part = value # part
# subject isapart object # part
#
# subject brel object # binary relation
#
# brel ::=
# isa | iss | isu
# isc | isg | isp
# isalt | ismem
# isany | isall
#
#
# Examples:
# RogerCostello isu Person;
# DickMcCullough has label = "Dr. Richard H. McCullough";
#echo "# mkr2rdf $@" >&2
info="# INFO: mkr2rdf:"
warning="# WARNING: mkr2rdf:"
mt='#$UniversalVocabularyMt'
if [ -n "$1" ]
then prompt=''
else prompt='ke$ \c'
fi
if [ -n "$prompt" ]
then echo -e "$prompt" >&2
fi
while read subject verb object mod1 mod2 mod3 mod4 mod5 mod6 ; do
subject="${subject%;}"
verb="${verb%;}"
object="${object%;}"
mod1="${mod1%;}"
mod2="${mod2%;}"
mod3="${mod3%;}"
mod4="${mod4%;}"
mod5="${mod5%;}"
mod6="${mod6%;}"
mods="$mod1 $mod2 $mod3 $mod4 $mod5 $mod6"
proposition="$subject $verb $object $mods"
notimplemented="not implemented: $proposition"
diff=""
op=""
value=""
case "$mod1" in
with) diff="$mod2 $mod3 $mod4 $mod5 $mod6";;
*=) op="$mod1"; value="$mod2 $mod3 $mod4 $mod5 $mod6";;
*) object="$object $mod1 $mod2 $mod3 $mod4 $mod5 $mod6";;
esac
object="${object%done}"
value="${value%done}"
#echo "$info subject=$subject"
#echo "$info verb=$verb"
#echo "$info object=$object"
#echo "$info op=$op"
#echo "$info value=$value"
#echo "$info diff=$diff"
case "$subject" in
at) echo "$warning" context "$notimplemented"; continue;;
do|hdo|vdo) echo "$warning" command "$notimplemented"; continue;;
let|unlet|vlet) echo "$warning" assignment "$notimplemented"; continue;;
exit) exit;;
esac
if [ -n "$diff" ]
then echo "$warning" definition "$notimplemented"; continue
fi
case "$verb" in
is) echo "$subject" "sameAs" "$object";;
has) echo "$subject" "$object" "$value";;
do) echo "$subject" "$object" "$value";;
rel) echo "$subject" "$object" "$value";;
isin) echo "$subject" "$object" "$value";;
haspart)echo "$subject" "$object" "$value";;
isapart)echo "$subject" "$object" "$value";;
isa)
echo "$subject iss $object" | mkr2rdf -q;
echo "$subject isu $object" | mkr2rdf -q;;
iss) echo "$subject" "subClassOf" "$object";;
isu) echo "$subject" "type" "$object";;
isc)
echo "$subject isg $object" | mkr2rdf -q;
echo "$subject isp $object" | mkr2rdf -q;;
isg) echo "$object" "subClassOf" "$subject";;
isp) echo "$object" "type" "$subject";;
isa\*)
echo "$subject iss* $object" | mkr2rdf -q;
echo "$subject isu* $object" | mkr2rdf -q;;
iss\*) echo "$subject" "subClassOf" "$object";;
isu\*) echo "$subject" "type" "$object";;
isc\*)
echo "$subject isg* $object" | mkr2rdf -q;
echo "$subject isp* $object" | mkr2rdf -q;;
isg\*) echo "$object" "subClassOf" "$subject";;
isp\*) echo "$object" "type" "$subject";;
*) echo "$subject" "$object" "$value";;
esac # end case $verb
if [ -n "$prompt" ]
then echo -e "$prompt" >&2
fi
done
#