View Javadoc

1   package com.ontotext.ordi.mapper.console;
2   
3   import java.io.File;
4   import java.io.FileFilter;
5   import java.io.FileWriter;
6   
7   import org.openrdf.model.impl.StatementImpl;
8   import org.openrdf.rio.RDFWriter;
9   import org.openrdf.rio.turtle.TurtleWriter;
10  
11  import com.ontotext.ordi.mapper.model.MapperDescriptor;
12  import com.ontotext.ordi.mapper.model.RDFResultSet;
13  import com.ontotext.ordi.mapper.processor.N3MapperDescriptorImpl;
14  import com.ontotext.ordi.mapper.processor.Processor;
15  
16  public class CommandLine {
17  
18      public static void main(String[] args) {
19          File input = null;
20          File output = null;
21          if (args.length == 2) {
22              input = new File(args[0]);
23              output = new File(args[1]);
24          }
25          if (input == null || input.exists() == false
26                  || input.isDirectory() == false) {
27              System.out.println("Invalid descriptor_path!\n");
28              printUsage();
29              System.exit(1);
30          }
31          if (output.isFile() == true) {
32              System.out
33                      .println("Invalid output_path! Specify a valid directory name!\n");
34              printUsage();
35              System.exit(1);
36          }
37          if (output.exists() == false) {
38              output.mkdir();
39          }
40          try {
41              
42              for (File descriptor : input.listFiles()) {
43                  System.out.println(descriptor);
44              }
45              
46              for (File descriptor : input.listFiles(new Filter())) {
47                  long start = System.currentTimeMillis();
48                  System.out.println(String.format("Processing %s...", descriptor
49                          .getAbsoluteFile()));
50                  File result = new File(output + File.separator
51                          + descriptor.getName().replaceAll(".n3", ".nt"));
52                  if (result.exists()) {
53                      System.out.println(String.format(
54                              "Processed %s! (already completed)", descriptor
55                                      .getAbsoluteFile()));
56                      continue;
57                  }
58                  MapperDescriptor mapper = new N3MapperDescriptorImpl(descriptor);
59                  Processor processor = new Processor(mapper);
60                  RDFResultSet rdfresult = processor.evaluate(null, null, null,
61                          null);
62                  RDFWriter writer = new TurtleWriter(new FileWriter(result));
63                  writer.startRDF();
64                  int counter = 0;
65                  
66                  while (rdfresult.next()) {
67                      writer.handleStatement(new StatementImpl(rdfresult
68                              .getSubject(), rdfresult.getPredicate(), rdfresult
69                              .getObject()));     
70                      counter++;
71                  }
72                  writer.endRDF();
73                  System.out.println(String.format("Processed %s! (%d ms) %d statemets",
74                          descriptor.getAbsoluteFile(), System
75                                  .currentTimeMillis()
76                                  - start, counter));
77              }
78          } catch (Exception e) {
79              e.printStackTrace();
80          }
81      }
82  
83      private static void printUsage() {
84          System.out.println("Converts RDBMS to RDF data model.");
85          System.out.println();
86          System.out.println("rdbmsconverter descriptor_path output_path");
87          System.out.println();
88          System.out.println("  descriptor_path     Specified a path to descriptors with n3");
89          System.out.println("                      extension to be converted to NTriple. Each");
90          System.out.println("                      descriptor generetase a new file with rdf in");
91          System.out.println("                      the current directory.");
92          System.out.println("  output_path         Specified a path for the output files");
93          System.out.println();
94          System.out.println("Example usage:");
95          System.out.println();
96          System.out.println("  rdbmsconverter /myDescriptorDir/ -d /myDescriptorDir/output/");
97          System.out.println();
98      }
99  
100     private static class Filter implements FileFilter {
101         public boolean accept(File file) {
102             return file.getAbsolutePath().endsWith(".n3") ? true : false;
103         }
104     }
105 }