Skip to content

Commit 6f1d537

Browse files
authored
Merge pull request #453 from kbss-cvut/fix-write-script-file-overrides
Fix writeScript file overrides
2 parents 97df443 + b830846 commit 6f1d537

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

s-pipes-core/src/main/java/cz/cvut/spipes/util/JenaUtils.java

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
package cz.cvut.spipes.util;
22

33
import cz.cvut.spipes.riot.CustomLangs;
4+
import cz.cvut.spipes.riot.SPipesFormatter;
45
import org.apache.commons.codec.digest.DigestUtils;
56
import org.apache.jena.graph.Graph;
67
import org.apache.jena.graph.compose.MultiUnion;
78
import org.apache.jena.rdf.model.*;
8-
import org.apache.jena.riot.*;
9+
import org.apache.jena.riot.Lang;
10+
import org.apache.jena.riot.RDFFormat;
11+
import org.apache.jena.riot.RDFWriter;
12+
import org.apache.jena.riot.system.PrefixMapFactory;
913
import org.apache.jena.util.FileUtils;
1014
import org.apache.jena.util.iterator.ExtendedIterator;
1115
import org.apache.jena.vocabulary.OWL;
@@ -17,7 +21,9 @@
1721
import java.io.*;
1822
import java.nio.file.Files;
1923
import java.nio.file.Path;
20-
import java.util.*;
24+
import java.util.ArrayList;
25+
import java.util.Comparator;
26+
import java.util.List;
2127
import java.util.stream.Stream;
2228

2329
public class JenaUtils {
@@ -154,6 +160,29 @@ public static void writeScript(OutputStream outputStream, Model model) {
154160
.output(outputStream);
155161
}
156162

163+
/**
164+
* Common method to write SPipes scripts to specified file using {@link Path}.
165+
* Preferred over {@link #writeScript(OutputStream, Model)} for modifying <b>existing</b>
166+
* SPipes scripts as it avoids file truncation if the model is invalid.
167+
* To write generic rdf data use {@link #write(OutputStream, Model)} instead.
168+
*
169+
* @param scriptPath path to write data to
170+
* @param model rdf data to write
171+
* @throws IllegalArgumentException if model is not valid SPipes script
172+
* @throws IOException if writing fails
173+
*/
174+
public static void writeScript(Path scriptPath, Model model) throws IOException {
175+
SPipesFormatter formatter = getScriptFormatter(model);
176+
try (OutputStream os = Files.newOutputStream(scriptPath)) {
177+
formatter.writeTo(os);
178+
}
179+
}
180+
181+
public static SPipesFormatter getScriptFormatter(Model model) {
182+
Graph graph = model.getGraph();
183+
return new SPipesFormatter(graph, PrefixMapFactory.create(graph.getPrefixMapping()));
184+
}
185+
157186
/**
158187
* Hotfix for default namespace bug in Jena: default namespace of an import is returned when <code>model</code>
159188
* does not declare it.

0 commit comments

Comments
 (0)