Katrin Tomanek wrote:
> Hi,
> 
> is there a way to instantiate a type system object in UIMA by reading
> the type system descriptor xml file?
> 
> So, what I try to circumvent is that I can only get my type system
> object from a CAS or an AE or so.
> 
> Any hints?
> 
> Thanks,
> Katrin

Hi Katrin,

there is no easy way to create a type system without a CAS, but
there's a fairly painless way to create a CAS from just a type
system descriptor.  You can then just grab the type system from
that CAS.  Here are a few lines of code that do that:

package org.apache.uima.test;

import java.io.IOException;

import org.apache.uima.UIMAFramework;
import org.apache.uima.cas.TypeSystem;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.metadata.TypeSystemDescription;
import org.apache.uima.util.CasCreationUtils;
import org.apache.uima.util.InvalidXMLException;
import org.apache.uima.util.XMLInputSource;
import org.apache.uima.util.XMLParser;

public class TypeSystemTest {

  private static TypeSystem createTypeSystemFromDescriptor(String 
tsDescriptorName)
      throws InvalidXMLException, IOException, ResourceInitializationException {
    // Get XML parser from framework
    XMLParser xmlParser = UIMAFramework.getXMLParser();
    // Parse type system descriptor
    TypeSystemDescription tsDesc = xmlParser.parseTypeSystemDescription(new 
XMLInputSource(
        tsDescriptorName));
    // Use type system description to create CAS and get the type system object
    return CasCreationUtils.createCas(tsDesc, null, null).getTypeSystem();
  }

  public static void main(String[] args) {
    try {
      // Create type system
      TypeSystem ts = createTypeSystemFromDescriptor(args[0]);
      // Print type system to stdout for verification
      System.out.println(ts.toString());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

}

HTH,
Thilo

Reply via email to