/** Create a tokenizer for a line * @param line * Content * @return Tokenizer */ protected Tokenizer getTokenizer(String line) { return TokenizerFactory.makeTokenizerString(line); }
/** Create a tokenizer for a line * @param line * Content * @return Tokenizer */ protected Tokenizer getTokenizer(String line) { return TokenizerFactory.makeTokenizerString(line); }
/** * Parse a string into a stream of Quads. * @param line the line of text * @return the Quad */ public static Stream<Quad> parseQuad(final String line) { final List<Token> tokens = new ArrayList<>(); makeTokenizerString(line).forEachRemaining(tokens::add); final List<Node> nodes = tokens.stream().filter(Token::isNode).map(Token::asNode).filter(Objects::nonNull) .collect(toList()); if (nodes.size() == 3) { return of(rdf.asQuad(create(defaultGraphIRI, nodes.get(0), nodes.get(1), nodes.get(2)))); } else if (nodes.size() == 4) { return of(rdf.asQuad(create(nodes.get(3), nodes.get(0), nodes.get(1), nodes.get(2)))); } else { LOGGER.warn("Skipping invalid data value: {}", line); return empty(); } }
/** Parse a string to get one Node (the first token in the string) */ public static Node parse(String string) { Tokenizer tokenizer = TokenizerFactory.makeTokenizerString(string); if ( ! tokenizer.hasNext() ) return null; Token t = tokenizer.next(); Node n = profile.create(null, t); if ( tokenizer.hasNext() ) Log.warn(RiotLib.class, "String has more than one token in it: "+string); return n; }
/** Parse a string to get one Node (the first token in the string) */ public static Node parse(String string) { Tokenizer tokenizer = TokenizerFactory.makeTokenizerString(string) ; if ( ! tokenizer.hasNext() ) return null ; Token t = tokenizer.next(); Node n = profile.create(null, t) ; if ( tokenizer.hasNext() ) Log.warn(RiotLib.class, "String has more than one token in it: "+string) ; return n ; }
/** * Convert a "modified" header field into an Instant * @param line the line * @return the instant */ private static Instant modifiedToInstant(final String line) { final Tokenizer tokenizer = makeTokenizerString(line); try { tokenizer.next(); // H tokenizer.next(); // modified if (tokenizer.hasNext()) { final Node n = tokenizer.next().asNode(); if (nonNull(n) && n.isLiteral()) { return parse(n.getLiteralLexicalForm()); } } } finally { tokenizer.close(); } return null; }
Tokenizer tokenizer = TokenizerFactory.makeTokenizerString(str) ; if ( ! tokenizer.hasNext() ) throw new TDBException("Failed to tokenise: "+str) ;
/** Parse a string into a node. * <p> * Allows surrounding white space. * </p> * @param nodeString Node string to parse * @param pmap Prefix Map, null to use no prefix mappings * @return Parsed Node * @throws RiotException Thrown if a valid node cannot be parsed */ public static Node parseNode(String nodeString, PrefixMap pmap) { Tokenizer tokenizer = TokenizerFactory.makeTokenizerString(nodeString) ; if ( ! tokenizer.hasNext() ) throw new RiotException("Empty RDF term") ; Token token = tokenizer.next() ; Node node = token.asNode(pmap) ; if ( node == null ) throw new RiotException("Bad RDF Term: "+nodeString) ; if ( tokenizer.hasNext() ) throw new RiotException("Trailing characters in string: "+nodeString) ; if ( node.isURI() ) { // Lightly test for bad URIs. String x = node.getURI() ; if ( x.indexOf(' ') >= 0 ) throw new RiotException("Space(s) in IRI: "+ nodeString) ; } return node ; }
/** * Parse a string into a node. * <p> * Allows surrounding white space. * </p> * * @param nodeString Node string to parse * @param pmap Prefix Map, null to use no prefix mappings * @return Parsed Node * @throws RiotException Thrown if a valid node cannot be parsed */ public static Node parseNode(String nodeString, PrefixMap pmap) { Tokenizer tokenizer = TokenizerFactory.makeTokenizerString(nodeString) ; if ( !tokenizer.hasNext() ) throw new RiotException("Empty RDF term") ; Token token = tokenizer.next() ; Node node = token.asNode(pmap) ; if ( node == null ) throw new RiotException("Bad RDF Term: " + nodeString) ; if ( tokenizer.hasNext() ) throw new RiotException("Trailing characters in string: " + nodeString) ; if ( node.isURI() ) { // Lightly test for bad URIs. String x = node.getURI() ; if ( x.indexOf(' ') >= 0 ) throw new RiotException("Space(s) in IRI: " + nodeString) ; } return node ; }
public static void parse(String testString) { // Need a prefix mapping. Tokenizer tokenizer = TokenizerFactory.makeTokenizerString(prefixMap+"\n"+testString) ; StreamRDF sink = StreamRDFLib.sinkNull() ; LangTurtle parser = RiotParsers.createParserTurtle(tokenizer, sink, RiotLib.dftProfile()) ; parser.parse(); tokenizer.close(); } }
TokenizerFactory.makeTokenizerString(pair[1]) .next() .asNode());
static void testRead(String x, Binding ... bindings) { Tokenizer t = TokenizerFactory.makeTokenizerString(x) ; BindingInputStream inStream = new BindingInputStream(t) ; if ( bindings.length == 0 ) { for ( ; inStream.hasNext() ; ) inStream.next() ; return ; } int i ; for ( i = 0 ; inStream.hasNext() ; i++ ) { Binding b = inStream.next() ; assertTrue("Bindings do not match: expected="+bindings[i]+" got="+b, equalBindings(bindings[i], b)) ; } assertEquals("Wrong length: expect= "+bindings.length+" got="+i,bindings.length, i) ; }
@Test public void nquads_01() { { String s = "<x> <p> <q> <g> ." ; CatchParserOutput sink = parseCapture(s, Lang.NQ) ; assertEquals(1, sink.startCalled) ; assertEquals(1, sink.finishCalled) ; assertEquals(0, sink.triples.size()) ; assertEquals(1, sink.quads.size()) ; Quad q = SSE.parseQuad("(<g> <x> <p> <q>)") ; assertEquals(q, last(sink.quads)) ; } // Old style, deprecated. Tokenizer tokenizer = TokenizerFactory.makeTokenizerString("<x> <p> <q> <g>.") ; CatchParserOutput sink = new CatchParserOutput() ; ParserProfile x = makeParserProfile(IRIResolver.createNoResolve(), null, false); LangRIOT parser = RiotParsers.createParserNQuads(tokenizer, sink, x) ; parser.parse(); assertEquals(1, sink.startCalled) ; assertEquals(1, sink.finishCalled) ; assertEquals(0, sink.triples.size()) ; assertEquals(1, sink.quads.size()) ; Quad q = SSE.parseQuad("(<g> <x> <p> <q>)") ; assertEquals(q, last(sink.quads)) ; }
@Test public void ntriples_01() { { String s = "<x> <p> <q> ." ; CatchParserOutput sink = parseCapture(s, Lang.NT) ; assertEquals(1, sink.startCalled) ; assertEquals(1, sink.finishCalled) ; assertEquals(1, sink.triples.size()) ; assertEquals(0, sink.quads.size()) ; Triple t = SSE.parseTriple("(<x> <p> <q>)") ; assertEquals(t, last(sink.triples)) ; } // Old style, direct to LangRIOT -- very deprecated. // NQ version tests that relative URIs remain relative. Tokenizer tokenizer = TokenizerFactory.makeTokenizerString("<x> <p> <q> .") ; CatchParserOutput sink = new CatchParserOutput() ; ParserProfile profile = makeParserProfile(IRIResolver.createNoResolve(), null, false); LangRIOT parser = RiotParsers.createParserNTriples(tokenizer, sink, profile) ; parser.parse(); assertEquals(1, sink.startCalled) ; assertEquals(1, sink.finishCalled) ; assertEquals(1, sink.triples.size()) ; assertEquals(0, sink.quads.size()) ; assertEquals(SSE.parseTriple("(<x> <p> <q>)"), last(sink.triples)) ; }
@Test public void turtle_01() { // Verify the expected output works. { String s = "<x> <p> <q> ." ; CatchParserOutput sink = parseCapture(s, Lang.TTL) ; assertEquals(1, sink.startCalled) ; assertEquals(1, sink.finishCalled) ; assertEquals(1, sink.triples.size()) ; assertEquals(0, sink.quads.size()) ; Triple t = SSE.parseTriple("(<http://base/x> <http://base/p> <http://base/q>)") ; assertEquals(t, last(sink.triples)) ; } // Old style, deprecated. Tokenizer tokenizer = TokenizerFactory.makeTokenizerString("<x> <p> <q> .") ; CatchParserOutput sink = new CatchParserOutput() ; ParserProfile maker = makeParserProfile(IRIResolver.create("http://base/"), null, true); LangRIOT parser = RiotParsers.createParserTurtle(tokenizer, sink, maker) ; parser.parse(); assertEquals(1, sink.startCalled) ; assertEquals(1, sink.finishCalled) ; assertEquals(1, sink.triples.size()) ; assertEquals(0, sink.quads.size()) ; assertEquals(SSE.parseTriple("(<http://base/x> <http://base/p> <http://base/q>)"), last(sink.triples)) ; }