#<HTML>
#<XMP>
# KEHOME/bin/PutData
# Aug/10/2003

# Usage:
#	mkrPutData statement
#	PutData triple
# triple ::=
#	subject predicate object
# statement ::=
#	subject is   object			# identity/alias
#	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 brel object		# binary relation
#	subject rel  relation		# binary relation
#	subject rel  relation = value	# binary relation
#	subject isin relation		# n-ary relation
#	subject isin relation = value	# n-ary relation
#
# brel ::=
#	isa | isu | iss
#	isc | isp | isg
#	isalt | ismem
#	isany | isall
#
# Example:
#	mkrPutData Roger_Costello isu  Person
#	PutData    Roger_Costello type Person

subject="$1"
predicate="$2"
object="$3"
flags=""

# setup Sun Java and Stanford TAP environment
#============================================#
 tapfile="$KEHOME/xml/tap.rdf"  # production
#tapfile="test.rdf"             # test
. systype.env
case "$systype" in
Linux)  
	export TAP_HOME="/home/tap";
	export CLASSPATH=".:../../tap.jar:../../edu/stanford/TAP/" ;
	export JAVA_HOME="/usr/java/j2sdk1.4.2";
	export PATH="$JAVA_HOME/bin:$PATH";;
Cygwin)
	export TAP_HOME="/home/tap";
	export CLASSPATH=".;../../tap.jar;../../edu/stanford/TAP/" ;
	export JAVA_HOME="/home/java";
	export PATH="$JAVA_HOME/bin:$PATH";;
Interix)
	export TAP_HOME="/home/tap";
	export CLASSPATH=".;../../tap.jar;../../edu/stanford/TAP/" ;
	export JAVA_HOME="/home/java";
	export PATH="$JAVA_HOME/bin:$PATH";;
Windows)
	export TAP_HOME="/home/tap";
	export CLASSPATH=".;../../tap.jar;../../edu/stanford/TAP/" ;
	export JAVA_HOME="/home/java";
	export PATH="$JAVA_HOME/bin;$PATH";;
WinXP)
	export TAP_HOME="C:/home/tap";
	export CLASSPATH=".;../../tap.jar;../../edu/stanford/TAP/" ;
	export JAVA_HOME="C:/home/java";
	export PATH="$JAVA_HOME/bin;$PATH";;
Win98)
	export TAP_HOME="E:/home/tap";
	export CLASSPATH=".;../../tap.jar;../../edu/stanford/TAP/" ;
	export JAVA_HOME="F:/home/java";
	export PATH="$JAVA_HOME/bin;$PATH";;
esac

cd "$TAP_HOME/Java/examples/tutorial"

# build the Java program
#=======================#
cat <<EOF  >mkrPutData.java
import edu.stanford.TAP.Abbrev;
import edu.stanford.TAP.Client;
import edu.stanford.TAP.Resource;
import edu.stanford.TAP.XML;
import edu.stanford.TAP.KB;

import edu.stanford.TAP.KB_MemHash;
import edu.stanford.TAP.Import_Guess;
import edu.stanford.TAP.Export_RDF;
import edu.stanford.TAP.Export_MCF;
import java.io.*;

public class mkrPutData
{

    // put the path to the kb you want to modify here. or pass it in.
    public static final String kbFile = "$tapfile";

    public static void main(String argv[])
    {
	String tapuri    = "http://tap.stanford.edu/data/";
	String subject   = argv[0];
	String predicate = argv[1];
	String object    = argv[2];
	String flags     = "$flags";
	if (!Abbrev.IsStandardTag(subject)) {
	    subject = tapuri + subject;
	}
	if (!Abbrev.IsStandardTag(predicate)) {
	    predicate = tapuri + predicate;
	}
	if (!Abbrev.IsStandardTag(object)) {
	    object = tapuri + object;
	}
	//System.out.println("# INFO: PutData: tapuri = "    + tapuri);
	//System.out.println("# INFO: PutData: kbFile = "    + kbFile);
	//System.out.println("# INFO: PutData: subject = "   + subject);
	//System.out.println("# INFO: PutData: predicate = " + predicate);
	//System.out.println("# INFO: PutData: object = "    + object);

	KB kb = new KB_MemHash();
	Import_Guess.LoadFile(kb, kbFile);
	kb.Assert(subject,predicate,object);
	FileOutputStream out = null;
	try {
            out = new FileOutputStream(kbFile);
	}
	catch(FileNotFoundException e) {
            System.err.println("Couldn't open output file " + kbFile);
            return;
	}
	if(kbFile.endsWith(".rdf")) {
            Export_RDF.DoSerialize(out, kb);
	}
	else if(kbFile.endsWith(".mcf")) {
            Export_MCF.DoSerialize(out, kb);
	}

    }
}
EOF

# compile & execute Java program
#===============================#
case "$systype" in 
Linux)
	javac mkrPutData.java ;
	java  mkrPutData "$subject" "$predicate" "$object" ;;
Cygwin)
	javac mkrPutData.java ;
	java  mkrPutData "$subject" "$predicate" "$object" ;;
Interix)
	javac.exe mkrPutData.java ;
	java.exe  mkrPutData "$subject" "$predicate" "$object" ;;
Windows)
	javac.exe mkrPutData.java ;
	java.exe  mkrPutData "$subject" "$predicate" "$object" ;;
WinXP)
	javac.exe mkrPutData.java ;
	java.exe  mkrPutData "$subject" "$predicate" "$object" ;;
Win98)
	javac.exe mkrPutData.java ;
	java.exe  mkrPutData "$subject" "$predicate" "$object" ;;
esac
chmod 777 mkrPutData.java
chmod 777 mkrPutData.class
#</XMP>
#</HTML>
