#!/bin/sh
#
# (C) 2014 INRIA
# J. Euzenat
#
# Version of 17/10/2014 - 18:30
#

echo This file is not to be run at once, only for cut-and-paste
exit

# ----------------------------------------------------------------------------------------
# Variables

CWD=`pwd`
LIB=$CWD/lib
CLASSPATH=.:$LIB/slf4j/logback-classic-1.0.9.jar:$LIB/slf4j/logback-core-1.0.9.jar:$LIB/procalign.jar:$LIB/jena/jena.jar:$LIB/slf4j/slf4j-api.jar:$LIB/xerces/xercesImpl.jar:$LIB/xerces/xml-apis.jar:$LIB/jena/iri.jar:$LIB/jena/httpcore.jar:$LIB/jena/httpclient.jar:$LIB/cli/commons-cli.jar:$LIB/hermit/hermit.jar:$LIB/owlapi30/owlapi-bin.jar:$LIB/logmap/logmap.jar

----------------------------------------------------------------------------------------
# Test
java -jar $LIB/procalign.jar --help

# Try to access ontologies with Jena/Count

javac -cp $CLASSPATH omt/Count.java
#java -cp $CLASSPATH omt.Count
java -cp $CLASSPATH omt.Count ontologies/cose.owl

# ----------------------------------------------------------------------------------------
# Let's do some first matches

listontos=`ls ontologies/*.owl|sed "s:ontologies/\([^.]*\).owl:\1:"`

echo $listontos

/bin/rm -rf exact
mkdir exact

for f in $listontos
do
found=false
for g in $listontos
do
#echo $f $g

if [ $found == true ]
then
	echo $g-$f
	java -cp $CLASSPATH -jar $LIB/procalign.jar file:ontologies/$f.owl file:ontologies/$g.owl > exact/$f-$g.rdf
else
if [ $f == $g ]
then
#	echo found $f
	found=true
fi
fi
done
done

# ----------------------------------------------------------------------------------------
# Count the number of matching elements

for i in `ls exact/*.rdf`
do
echo $i `grep entity1 $i|wc -l` >> exact-count.txt
done

mv exact-count.txt exact/

# ----------------------------------------------------------------------------------------
# Use more elaborate matchers for doing the same thing

f=cose
g=dog

java -cp $CLASSPATH -jar $LIB/procalign.jar -i fr.inrialpes.exmo.align.impl.method.StringDistAlignment file:$CWD/ontologies/$f.owl file:$CWD/ontologies/$g.owl -o exact.rdf
java -cp $CLASSPATH -jar $LIB/procalign.jar -i fr.inrialpes.exmo.align.impl.method.StringDistAlignment -DstringFunction=levenshteinDistance file:$CWD/ontologies/$f.owl file:$CWD/ontologies/$g.owl -o edna.rdf
java -cp $CLASSPATH -jar $LIB/procalign.jar -i fr.inrialpes.exmo.align.impl.method.StringDistAlignment -DstringFunction=smoaDistance file:$CWD/ontologies/$f.owl file:$CWD/ontologies/$g.owl -o smoa.rdf

# ----------------------------------------------------------------------------------------
# LogMap

cd logmap2_v2.3
java -cp $CLASSPATH -jar logmap2_standalone.jar MATCHER file:$CWD/ontologies/$f.owl file:$CWD/ontologies/$g.owl /tmp false
cd ..
mv /tmp/logmap2_mappings.rdf logmap.rdf

# ----------------------------------------------------------------------------------------
# Aroma

java -jar aroma-1.2/lib/aroma.jar ontologies/$f.owl ontologies/$g.owl > aroma.rdf

# ----------------------------------------------------------------------------------------
# Find interesting thresholds

java -cp $CLASSPATH fr.inrialpes.exmo.align.cli.ParserPrinter file:smoa.rdf -t 0.5 -o smoa5.rdf

# ----------------------------------------------------------------------------------------
# Ask server

curl -L -H "Accept:application/rdf+xml" 'http://al4sc.inrialpes.fr/rest/find?onto1=http://elite.polito.it/ontologies/dogont.owl&onto2=https://www.auto.tuwien.ac.at/downloads/thinkhome/ontology/EnergyResourceOntology.owl'

curl -L -H "Accept:application/rdf+xml" 'http://al4sc.inrialpes.fr/rest/find?onto1=http://casas.wsu.edu/owl/cose.owl&onto2=http://elite.polito.it/ontologies/dogont.owl'

curl -L -H "Accept:application/rdf+xml" 'http://al4sc.inrialpes.fr/alid/1413469503555/2639' > cose-dog.rdf

# ----------------------------------------------------------------------------------------
# Test consistency with HermiT

# Test merge
java -cp $CLASSPATH fr.inrialpes.exmo.align.cli.ParserPrinter file:smoa5.rdf -r fr.inrialpes.exmo.align.impl.renderer.OWLAxiomsRendererVisitor -o smoa5.owl

javac -cp $CLASSPATH omt/TestConsistency.java
java -cp $CLASSPATH omt.TestConsistency file:smoa5.rdf

# ----------------------------------------------------------------------------------------
# Compute (evaluation) measures

java -cp $CLASSPATH fr.inrialpes.exmo.align.cli.EvalAlign -i fr.inrialpes.exmo.align.impl.eval.PRecEvaluator file://$CWD/cose-dog.rdf file://$CWD/exact/cose-dog.rdf

# ----------------------------------------------------------------------------------------
# Compute diff

java -cp $CLASSPATH fr.inrialpes.exmo.align.cli.EvalAlign -i fr.inrialpes.exmo.align.impl.eval.DiffEvaluator file://$CWD/cose-dog.rdf file://$CWD/exact/cose-dog.rdf

# ----------------------------------------------------------------------------------------
# Transform query

# first invert the alignment
java -cp $CLASSPATH fr.inrialpes.exmo.align.cli.ParserPrinter -i file:cose-dog.rdf -o dog-cose.rdf

java -cp $CLASSPATH fr.inrialpes.exmo.align.cli.TransformQuery -a file:dog-cose.rdf -q query.sparql -Dcose=http://casas.wsu.edu/owl/cose.owl#

# ----------------------------------------------------------------------------------------
# LogMap repair

cd logmap2_v2.3
java -cp $CLASSPATH -jar logmap2_standalone.jar DEBUGGER file:$CWD/ontologies/$f.owl file:$CWD/ontologies/$g.owl RDF $CWD/smoa5.rdf /tmp false true
cd ..
mv /tmp/mappings_repaired_with_LogMap.rdf logmap-repaired.rdf

cd logmap2_v2.3
java -cp $CLASSPATH -jar logmap2_standalone.jar DEBUGGER file:$CWD/ontologies/$f.owl file:$CWD/ontologies/$g.owl RDF $CWD/cose-dog.rdf /tmp false true
grep entity1 ../cose-dog.rdf |wc -l
grep entity1 /tmp/mappings_repaired_with_LogMap.rdf |wc -l
cd ..
mv /tmp/mappings_repaired_with_LogMap.rdf cose-dog-repaired.rdf

java -cp $CLASSPATH omt.TestConsistency file:cose-dog.rdf
java -cp $CLASSPATH omt.TestConsistency file:cose-dog-repaired.rdf

java -cp $CLASSPATH omt.TestSubsumption file:cose-dog-repaired.rdf http://elite.polito.it/ontologies/dogont.owl#Thermostat http://casas.wsu.edu/owl/cose.owl#Sensor

# if disjoint
java -cp $CLASSPATH omt.TestSubsumption file:cose-dog-repaired.rdf http://elite.polito.it/ontologies/dogont.owl#Control http://casas.wsu.edu/owl/cose.owl#Sensor

