private StringBuilder appendValue(StringBuilder sb, Literal lit) { sb.append('"'); sb.append(lit.getLabel().replace("\"", "\\\"")); sb.append('"'); if (Literals.isLanguageLiteral(lit)) { sb.append('@'); sb.append(lit.getLanguage()); } else { sb.append("^^<"); sb.append(lit.getDatatype().stringValue()); sb.append('>'); } return sb; }
private void appendURI(StringBuilder sb, IRI uri) { String str = uri.toString(); if (str.length() > 50) { sb.append("<").append(str, 0, 19).append(".."); sb.append(str, str.length() - 29, str.length()).append(">\n"); } else { sb.append("<").append(uri).append(">\n"); } }
@Override public void handleStatement(Statement st) throws RDFHandlerException { Resource subject = SESAME.WILDCARD.equals(st.getSubject()) ? null : st.getSubject(); IRI predicate = SESAME.WILDCARD.equals(st.getPredicate()) ? null : st.getPredicate(); Value object = SESAME.WILDCARD.equals(st.getObject()) ? null : st.getObject(); Resource context = st.getContext(); try { if (context != null) { conn.remove(subject, predicate, object, st.getContext()); } else { conn.remove(subject, predicate, object); } } catch (RepositoryException e) { throw new RDFHandlerException(e); } }
public void addURI(final IRI uri) { // If possible, add a qualified name as well. String prefix = uriToPrefix.get(uri.getNamespace()); if (null != prefix) { String qName = prefix + ":" + uri.getLocalName(); allQNames.add(qName); } }
private void writeLiteral(Literal lit) throws IOException String label = lit.getLabel(); IRI datatype = lit.getDatatype(); if (XMLSchema.INTEGER.equals(datatype) || XMLSchema.DECIMAL.equals(datatype) || XMLSchema.DOUBLE.equals(datatype)) writer.write(lit.getLanguage().get()); else if (!XMLSchema.STRING.equals(datatype) || !xsdStringToPlainLiteral()) {
private void writeLiteral(Literal literal) throws IOException { String label = literal.getLabel(); IRI datatype = literal.getDatatype(); if (Literals.isLanguageLiteral(literal)) { out.writeByte(LANG_LITERAL_VALUE); writeString(label); writeString(literal.getLanguage().get()); } else { out.writeByte(DATATYPE_LITERAL_VALUE); writeString(label); writeString(datatype.toString()); } }
jg.writeStringField("value", ((IRI)value).toString()); jg.writeObjectField("xml:lang", lit.getLanguage().orElse(null)); IRI datatype = lit.getDatatype(); boolean ignoreDatatype = datatype.equals(XMLSchema.STRING) && xsdStringToPlainLiteral(); if (!ignoreDatatype) { jg.writeObjectField("datatype", lit.getDatatype().stringValue());
@Override public TupleFunction parse(IRI funcUri, TripleSource store) throws OpenRDFException { return functionRegistry.get(funcUri.stringValue()).orElse(null); } }
/** * Tests N-Quads parsing with literal and language. */ @Test public void testParseBasicLiteralLang() throws RDFHandlerException, IOException, RDFParseException { final ByteArrayInputStream bais = new ByteArrayInputStream( "<http://www.v/dat/4b2-21> <http://www.w3.org/20/ica#dtend> \"2010-05-02\"@en <http://sin.siteserv.org/def/>.".getBytes()); final TestRDFHandler rdfHandler = new TestRDFHandler(); parser.setRDFHandler(rdfHandler); parser.parse(bais, "http://test.base.uri"); final Statement statement = rdfHandler.getStatements().iterator().next(); Assert.assertEquals("http://www.v/dat/4b2-21", statement.getSubject().stringValue()); Assert.assertEquals("http://www.w3.org/20/ica#dtend", statement.getPredicate().stringValue()); Assert.assertTrue(statement.getObject() instanceof Literal); Literal object = (Literal)statement.getObject(); Assert.assertEquals("2010-05-02", object.stringValue()); Assert.assertEquals("en", object.getLanguage().orElse(null)); Assert.assertEquals(RDF.LANGSTRING, object.getDatatype()); Assert.assertEquals("http://sin.siteserv.org/def/", statement.getContext().stringValue()); }
/** * Tests N-Quads parsing with literal and datatype. */ @Test public void testParseBasicLiteralDatatype() throws RDFHandlerException, IOException, RDFParseException { final ByteArrayInputStream bais = new ByteArrayInputStream(("<http://www.v/dat/4b2-21> " + "<http://www.w3.org/20/ica#dtend> " + "\"2010\"^^<http://www.w3.org/2001/XMLSchema#integer> " + "<http://sin.siteserv.org/def/>.").getBytes()); final TestRDFHandler rdfHandler = new TestRDFHandler(); parser.setRDFHandler(rdfHandler); parser.parse(bais, "http://test.base.uri"); final Statement statement = rdfHandler.getStatements().iterator().next(); Assert.assertEquals("http://www.v/dat/4b2-21", statement.getSubject().stringValue()); Assert.assertEquals("http://www.w3.org/20/ica#dtend", statement.getPredicate().stringValue()); Assert.assertTrue(statement.getObject() instanceof Literal); Literal object = (Literal)statement.getObject(); Assert.assertEquals("2010", object.stringValue()); Assert.assertFalse(object.getLanguage().isPresent()); Assert.assertEquals("http://www.w3.org/2001/XMLSchema#integer", object.getDatatype().toString()); Assert.assertEquals("http://sin.siteserv.org/def/", statement.getContext().stringValue()); }
static void registerSpinParsingFunctions(SpinParser parser, FunctionRegistry functionRegistry) { if (!(functionRegistry.get(FN.CONCAT.toString()).get() instanceof org.openrdf.spin.function.Concat)) { functionRegistry.add(new org.openrdf.spin.function.Concat()); } if (!functionRegistry.has(SPIN.EVAL_FUNCTION.toString())) { functionRegistry.add(new EvalFunction(parser)); } if (!functionRegistry.has(SPIN.ASK_FUNCTION.toString())) { functionRegistry.add(new AskFunction(parser)); } if(!functionRegistry.has(SPIF.CONVERT_SPIN_RDF_TO_STRING_FUNCTION.toString())) { functionRegistry.add(new ConvertSpinRDFToString(parser)); } if(!functionRegistry.has(SPIF.CAN_INVOKE_FUNCTION.toString())) { functionRegistry.add(new CanInvoke(parser)); } }
@Override protected Value evaluate(ValueFactory valueFactory, Value arg1, Value arg2) throws ValueExprEvaluationException { if (!(arg1 instanceof Literal)) { throw new ValueExprEvaluationException("First argument must be a literal"); } if (!(arg2 instanceof IRI)) { throw new ValueExprEvaluationException("Second argument must be a datatype"); } Literal value = (Literal) arg1; IRI targetDatatype = (IRI) arg2; Function func = FunctionRegistry.getInstance().get(targetDatatype.stringValue()).orElse(null); return (func != null) ? func.evaluate(valueFactory, value) : valueFactory.createLiteral(value.getLabel(), targetDatatype); } }
Models.objectLiteral(model.filter(resource, INCLUDE_INFERRED, null)).ifPresent( lit -> setIncludeInferred(lit.booleanValue())); Models.objectLiteral(model.filter(resource, MAX_QUERY_TIME, null)).ifPresent( lit -> setMaxQueryTime(lit.intValue())); Models.objectLiteral(model.filter(resource, QUERY_LANGUAGE, null)).ifPresent( lit -> setQueryLanguage(QueryLanguage.valueOf(lit.getLabel()))); Models.objectIRI(model.filter(resource, QUERY_LANGUAGE, null)).ifPresent( iri -> setBaseURI(iri.stringValue()));
@Override public void parse(Model m, Resource implNode) throws RepositoryConfigException { super.parse(m, implNode); try { Models.objectIRI(m.filter(implNode, QUERY_ENDPOINT, null)).ifPresent( iri -> setQueryEndpointUrl(iri.stringValue())); Models.objectIRI(m.filter(implNode, UPDATE_ENDPOINT, null)).ifPresent( iri -> setUpdateEndpointUrl(iri.stringValue())); } catch (ModelException e) { throw new RepositoryConfigException(e.getMessage(), e); } } }
@Override public void parse(Model graph, Resource implNode) throws SailConfigException { super.parse(graph, implNode); Literal indexDirLit = Models.objectLiteral(graph.filter(implNode, INDEX_DIR, null)).orElseThrow( () -> new SailConfigException("no value found for " + INDEX_DIR)); setIndexDir(indexDirLit.getLabel()); for (Statement stmt : graph.filter(implNode, null, null)) { if (stmt.getPredicate().getNamespace().equals(LuceneSailConfigSchema.NAMESPACE)) { if (stmt.getObject() instanceof Literal) { String key = stmt.getPredicate().getLocalName(); setParameter(key, stmt.getObject().stringValue()); } } } } }
private void parseNegativeNTriplesSyntaxTests(TestSuite suite, String fileBasePath, String testBaseUrl, String manifestBaseUrl, RepositoryConnection con) throws Exception { StringBuilder negativeQuery = new StringBuilder(); negativeQuery.append(" PREFIX mf: <http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#>\n"); negativeQuery.append(" PREFIX qt: <http://www.w3.org/2001/sw/DataAccess/tests/test-query#>\n"); negativeQuery.append(" PREFIX rdft: <http://www.w3.org/ns/rdftest#>\n"); negativeQuery.append(" SELECT ?test ?testName ?inputURL ?outputURL \n"); negativeQuery.append(" WHERE { \n"); negativeQuery.append(" ?test a rdft:TestNTriplesNegativeSyntax . "); negativeQuery.append(" ?test mf:name ?testName . "); negativeQuery.append(" ?test mf:action ?inputURL . "); negativeQuery.append(" }"); TupleQueryResult queryResult = con.prepareTupleQuery(QueryLanguage.SPARQL, negativeQuery.toString()).evaluate(); // Add all negative parser tests to the test suite while (queryResult.hasNext()) { BindingSet bindingSet = queryResult.next(); IRI nextTestUri = (IRI)bindingSet.getValue("test"); String nextTestName = ((Literal)bindingSet.getValue("testName")).getLabel(); String nextTestFile = removeBase(((IRI)bindingSet.getValue("inputURL")).toString(), manifestBaseUrl); String nextInputURL = fileBasePath + nextTestFile; String nextBaseUrl = testBaseUrl + nextTestFile; suite.addTest(new NegativeParserTest(nextTestUri, nextTestName, nextInputURL, nextBaseUrl, createNTriplesParser(), FailureMode.IGNORE_FAILURE)); } queryResult.close(); }
private void parseNegativeTriGEvalTests(TestSuite suite, String fileBasePath, String testBaseUrl, String manifestBaseUrl, RepositoryConnection con) throws Exception { StringBuilder negativeEvalQuery = new StringBuilder(); negativeEvalQuery.append(" PREFIX mf: <http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#>\n"); negativeEvalQuery.append(" PREFIX qt: <http://www.w3.org/2001/sw/DataAccess/tests/test-query#>\n"); negativeEvalQuery.append(" PREFIX rdft: <http://www.w3.org/ns/rdftest#>\n"); negativeEvalQuery.append(" SELECT ?test ?testName ?inputURL ?outputURL \n"); negativeEvalQuery.append(" WHERE { \n"); negativeEvalQuery.append(" ?test a rdft:TestTrigNegativeEval . "); negativeEvalQuery.append(" ?test mf:name ?testName . "); negativeEvalQuery.append(" ?test mf:action ?inputURL . "); negativeEvalQuery.append(" }"); TupleQueryResult queryResult = con.prepareTupleQuery(QueryLanguage.SPARQL, negativeEvalQuery.toString()).evaluate(); // Add all negative eval tests to the test suite while (queryResult.hasNext()) { BindingSet bindingSet = queryResult.next(); IRI nextTestUri = (IRI)bindingSet.getValue("test"); String nextTestName = ((Literal)bindingSet.getValue("testName")).getLabel(); String nextTestFile = removeBase(((IRI)bindingSet.getValue("inputURL")).stringValue(), manifestBaseUrl); String nextInputURL = fileBasePath + nextTestFile; String nextBaseUrl = testBaseUrl + nextTestFile; suite.addTest(new NegativeParserTest(nextTestUri, nextTestName, nextInputURL, nextBaseUrl, createTriGParser(), FailureMode.IGNORE_FAILURE)); } queryResult.close(); }
/** * Tests basic N-Quads parsing with blank node. */ @Test public void testParseBasicBNode() throws RDFHandlerException, IOException, RDFParseException { final ByteArrayInputStream bais = new ByteArrayInputStream( "_:a123456768 <http://www.w3.org/20/ica#dtend> <http://sin/value/2> <http://sin.siteserv.org/def/>.".getBytes()); final TestRDFHandler rdfHandler = new TestRDFHandler(); parser.setRDFHandler(rdfHandler); parser.parse(bais, "http://test.base.uri"); Assert.assertThat(rdfHandler.getStatements().size(), is(1)); final Statement statement = rdfHandler.getStatements().iterator().next(); Assert.assertTrue(statement.getSubject() instanceof BNode); Assert.assertEquals("http://www.w3.org/20/ica#dtend", statement.getPredicate().stringValue()); Assert.assertTrue(statement.getObject() instanceof IRI); Assert.assertEquals("http://sin/value/2", statement.getObject().stringValue()); Assert.assertEquals("http://sin.siteserv.org/def/", statement.getContext().stringValue()); }
private void updateRuleProperties(Statement st) { boolean changed = false; IRI pred = st.getPredicate(); if (RDFS.SUBPROPERTYOF.equals(pred) && SPIN.RULE_PROPERTY.equals(st.getObject())) { changed = true; } else if (SPIN.NEXT_RULE_PROPERTY_PROPERTY.equals(pred)) { changed = true; } else if (SPIN.RULE_PROPERTY_MAX_ITERATION_COUNT_PROPERTY.equals(pred)) { changed = true; } if (changed) { resetRuleProperties(); } } }
query.append(" WHERE { ?s ?p ?o } "); TupleQuery tq = conn.prepareTupleQuery(QueryLanguage.SPARQL, query.toString()); TupleQueryResult result = tq.evaluate(); assertNotNull(result); while (result.hasNext()) { BindingSet bs = result.next(); assertNotNull(bs); Resource s = (Resource)bs.getValue("s"); assertFalse(bob.equals(s)); // should not be present in default assertFalse(alice.equals(s)); // should not be present in result.close();