<?xml version="1.0"?>

<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at
 
        http://www.apache.org/licenses/LICENSE-2.0
 
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
 -->

<project name="wordnet" default="default">

  <description>
    WordNet
  </description>

  <property name="prolog.file" location="prologwn/wn_s.pl"/>
  <property name="synindex.dir" location="index"/>

  <available property="synindex.exists" file="${synindex.dir}" type="dir"/>

  <import file="../contrib-build.xml"/>

  <target name="index" depends="compile" description="Build WordNet index">
    <fail if="synindex.exists">
      Index already exists - must remove first.
    </fail>

    <java classname="org.apache.lucene.wordnet.Syns2Index">
      <classpath>
        <path refid="compile.classpath"/>
        <pathelement location="${build.dir}/classes"/>
      </classpath>

      <arg file="${prolog.file}"/>
      <arg file="${synindex.dir}"/>
    </java>
  </target>


  <target name="synonym" description="Find synonyms for word">
    <fail unless="synindex.exists">
      Index does not exist.
    </fail>

    <fail unless="word">
      Must specify 'word' property.
    </fail>
    
    <java classname="org.apache.lucene.wordnet.SynLookup">
      <classpath>
        <path refid="compile.classpath"/>
        <pathelement location="${build.dir}/classes"/>
      </classpath>

      <arg file="${synindex.dir}"/>
      <arg value="${word}"/>
    </java>
  </target>

  <target name="expand" description="Perform synonym expansion on a query">
    <fail unless="synindex.exists">
      Index does not exist.
    </fail>

    <fail unless="query">
      Must specify 'query' property.
    </fail>
    
    <java classname="org.apache.lucene.wordnet.SynExpand">
      <classpath>
        <path refid="compile.classpath"/>
        <pathelement location="${build.dir}/classes"/>
      </classpath>

      <arg file="${synindex.dir}"/>
      <arg value="${query}"/>
    </java>
  </target>

</project>
