-
Notifications
You must be signed in to change notification settings - Fork 4
/
ModuleTarql.java
101 lines (84 loc) · 3.33 KB
/
ModuleTarql.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package cz.cvut.spipes.modules;
import cz.cvut.spipes.constants.KBSS_MODULE;
import cz.cvut.spipes.engine.ExecutionContext;
import cz.cvut.spipes.engine.ExecutionContextFactory;
import cz.cvut.spipes.modules.annotations.SPipesModule;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.ResourceFactory;
import org.deri.tarql.tarql;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
@Deprecated //TODO merge with TarqlModule functionality
@SPipesModule(label = "tarql-XXX-2", comment = "")
public class ModuleTarql extends AbstractModule {
private static final Logger LOG = LoggerFactory.getLogger(ModuleTarql.class);
private static final String TYPE_URI = KBSS_MODULE.uri + "tarql" + "-XXX-2";
private static Property getParameter(final String name) {
return ResourceFactory.createProperty(TYPE_URI + "/" + name);
}
/**
* File with the TARQL script
*/
static final Property P_TARQL_STRING = getParameter("p-tarql-string");
@Parameter(urlPrefix = TYPE_URI + "/", name = "p-tarql-string")
private String tarqlString;
/**
* Ontology IRI
*/
static final Property P_ONTOLOGY_IRI = getParameter("p-ontology-iri");
@Parameter(urlPrefix = TYPE_URI + "/", name = "p-ontology-iri")
private String ontologyIRI;
/**
* Input File
*/
static final Property P_INPUT_FILE = getParameter("p-input-file");
@Parameter(urlPrefix = TYPE_URI + "/", name = "p-input-file")
private String inputFile;
// /**
// * No header
// */
// static final Property P_NO_HEADER = getParameter("p-no-header");
// private boolean noHeader;
@Override
public ExecutionContext executeSelf() {
LOG.info("Running TARQL on " + inputFile);
Model model = ModelFactory.createDefaultModel();
try {
final File output = File.createTempFile("output", ".nt");
try (PrintStream s = new PrintStream(new FileOutputStream(output))) {
final File queryFile = File.createTempFile("query", ".tarql");
final String queryString = tarqlString.replaceAll("\\?__FN__", "\"" + ontologyIRI + "\"");
Files.write(Paths.get(queryFile.toURI()), queryString.getBytes());
final PrintStream origStream = System.out;
System.setOut(s);
tarql.main(
"--ntriples",
// noHeader ? "-H" : "",
queryFile.getAbsolutePath(),
inputFile
);
System.setOut(origStream);
model.read(new FileInputStream(output), "", "N-TRIPLE");
}
} catch (IOException e) {
e.printStackTrace();
}
return ExecutionContextFactory.createContext(model);
}
@Override
public String getTypeURI() {
return TYPE_URI;
}
@Override
public void loadConfiguration() {
inputFile = this.getStringPropertyValue(P_INPUT_FILE);
tarqlString = this.getStringPropertyValue(P_TARQL_STRING);
ontologyIRI = this.getStringPropertyValue(P_ONTOLOGY_IRI);
// noHeader = this.getPropertyValue(P_NO_HEADER, false);
}
}