#<HTML><pre>
# KEHOME/bin/mkr2rdf
# Sep/15/2003

# tranlate 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 ::=
#	set 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;; 
set|unset|vset)	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

#</pre></HTML>
