StatementConvertor.java
/*******************************************************************************
* Copyright (c) 2022 Eclipse RDF4J contributors.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Distribution License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*******************************************************************************/
package org.eclipse.rdf4j.query.algebra.evaluation.impl.evaluationsteps;
import java.util.function.BiConsumer;
import java.util.function.Predicate;
import org.eclipse.rdf4j.model.Statement;
import org.eclipse.rdf4j.model.Value;
import org.eclipse.rdf4j.query.BindingSet;
import org.eclipse.rdf4j.query.MutableBindingSet;
import org.eclipse.rdf4j.query.algebra.Var;
import org.eclipse.rdf4j.query.algebra.evaluation.impl.QueryEvaluationContext;
class StatementConvertor {
public static BiConsumer<MutableBindingSet, Statement> s(QueryEvaluationContext context, Var s) {
BiConsumer<Value, MutableBindingSet> setS = context.addBinding(s.getName());
Predicate<BindingSet> sIsSet = context.hasBinding(s.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !sIsSet.test(result)) {
setS.accept(st.getSubject(), result);
}
};
}
public static BiConsumer<MutableBindingSet, Statement> p(QueryEvaluationContext context, Var p) {
BiConsumer<Value, MutableBindingSet> setP = context.addBinding(p.getName());
Predicate<BindingSet> pIsSet = context.hasBinding(p.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !pIsSet.test(result)) {
setP.accept(st.getPredicate(), result);
}
};
}
public static BiConsumer<MutableBindingSet, Statement> o(QueryEvaluationContext context, Var o) {
BiConsumer<Value, MutableBindingSet> setO = context.addBinding(o.getName());
Predicate<BindingSet> oIsSet = context.hasBinding(o.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !oIsSet.test(result)) {
setO.accept(st.getObject(), result);
}
};
}
public static BiConsumer<MutableBindingSet, Statement> c(QueryEvaluationContext context, Var c) {
BiConsumer<Value, MutableBindingSet> setC = context.addBinding(c.getName());
Predicate<BindingSet> cIsSet = context.hasBinding(c.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !cIsSet.test(result)) {
setC.accept(st.getContext(), result);
}
};
}
public static BiConsumer<MutableBindingSet, Statement> sp(QueryEvaluationContext context, Var s, Var p) {
BiConsumer<Value, MutableBindingSet> setS = context.addBinding(s.getName());
Predicate<BindingSet> sIsSet = context.hasBinding(s.getName());
BiConsumer<Value, MutableBindingSet> setP = context.addBinding(p.getName());
Predicate<BindingSet> pIsSet = context.hasBinding(p.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !sIsSet.test(result)) {
setS.accept(st.getSubject(), result);
}
if (empty || !pIsSet.test(result)) {
setP.accept(st.getPredicate(), result);
}
};
}
public static BiConsumer<MutableBindingSet, Statement> so(QueryEvaluationContext context, Var s, Var o) {
BiConsumer<Value, MutableBindingSet> setS = context.addBinding(s.getName());
Predicate<BindingSet> sIsSet = context.hasBinding(s.getName());
BiConsumer<Value, MutableBindingSet> setO = context.addBinding(o.getName());
Predicate<BindingSet> oIsSet = context.hasBinding(o.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !sIsSet.test(result)) {
setS.accept(st.getSubject(), result);
}
if (empty || !oIsSet.test(result)) {
setO.accept(st.getObject(), result);
}
};
}
public static BiConsumer<MutableBindingSet, Statement> sc(QueryEvaluationContext context, Var s, Var c) {
BiConsumer<Value, MutableBindingSet> setS = context.addBinding(s.getName());
Predicate<BindingSet> sIsSet = context.hasBinding(s.getName());
BiConsumer<Value, MutableBindingSet> setC = context.addBinding(c.getName());
Predicate<BindingSet> cIsSet = context.hasBinding(c.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !sIsSet.test(result)) {
setS.accept(st.getSubject(), result);
}
if (empty || !cIsSet.test(result)) {
setC.accept(st.getContext(), result);
}
};
}
public static BiConsumer<MutableBindingSet, Statement> po(QueryEvaluationContext context, Var p, Var o) {
BiConsumer<Value, MutableBindingSet> setP = context.addBinding(p.getName());
Predicate<BindingSet> pIsSet = context.hasBinding(p.getName());
BiConsumer<Value, MutableBindingSet> setO = context.addBinding(o.getName());
Predicate<BindingSet> oIsSet = context.hasBinding(o.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !pIsSet.test(result)) {
setP.accept(st.getPredicate(), result);
}
if (empty || !oIsSet.test(result)) {
setO.accept(st.getObject(), result);
}
};
}
public static BiConsumer<MutableBindingSet, Statement> pc(QueryEvaluationContext context, Var p, Var c) {
BiConsumer<Value, MutableBindingSet> setP = context.addBinding(p.getName());
Predicate<BindingSet> pIsSet = context.hasBinding(p.getName());
BiConsumer<Value, MutableBindingSet> setC = context.addBinding(c.getName());
Predicate<BindingSet> cIsSet = context.hasBinding(c.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !pIsSet.test(result)) {
setP.accept(st.getPredicate(), result);
}
if (empty || !cIsSet.test(result)) {
setC.accept(st.getContext(), result);
}
};
}
public static BiConsumer<MutableBindingSet, Statement> oc(QueryEvaluationContext context, Var o, Var c) {
BiConsumer<Value, MutableBindingSet> setO = context.addBinding(o.getName());
Predicate<BindingSet> oIsSet = context.hasBinding(o.getName());
BiConsumer<Value, MutableBindingSet> setC = context.addBinding(c.getName());
Predicate<BindingSet> cIsSet = context.hasBinding(c.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !oIsSet.test(result)) {
setO.accept(st.getObject(), result);
}
if (empty || !cIsSet.test(result)) {
setC.accept(st.getContext(), result);
}
};
}
public static BiConsumer<MutableBindingSet, Statement> spo(QueryEvaluationContext context, Var s, Var p, Var o) {
BiConsumer<Value, MutableBindingSet> setS = context.addBinding(s.getName());
Predicate<BindingSet> sIsSet = context.hasBinding(s.getName());
BiConsumer<Value, MutableBindingSet> setP = context.addBinding(p.getName());
Predicate<BindingSet> pIsSet = context.hasBinding(p.getName());
BiConsumer<Value, MutableBindingSet> setO = context.addBinding(o.getName());
Predicate<BindingSet> oIsSet = context.hasBinding(o.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !sIsSet.test(result)) {
setS.accept(st.getSubject(), result);
}
if (empty || !pIsSet.test(result)) {
setP.accept(st.getPredicate(), result);
}
if (empty || !oIsSet.test(result)) {
setO.accept(st.getObject(), result);
}
};
}
public static BiConsumer<MutableBindingSet, Statement> spc(QueryEvaluationContext context, Var s, Var p, Var c) {
BiConsumer<Value, MutableBindingSet> setS = context.addBinding(s.getName());
Predicate<BindingSet> sIsSet = context.hasBinding(s.getName());
BiConsumer<Value, MutableBindingSet> setP = context.addBinding(p.getName());
Predicate<BindingSet> pIsSet = context.hasBinding(p.getName());
BiConsumer<Value, MutableBindingSet> setC = context.addBinding(c.getName());
Predicate<BindingSet> cIsSet = context.hasBinding(c.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !sIsSet.test(result)) {
setS.accept(st.getSubject(), result);
}
if (empty || !pIsSet.test(result)) {
setP.accept(st.getPredicate(), result);
}
if (empty || !cIsSet.test(result)) {
setC.accept(st.getContext(), result);
}
};
}
public static BiConsumer<MutableBindingSet, Statement> soc(QueryEvaluationContext context, Var s, Var o, Var c) {
BiConsumer<Value, MutableBindingSet> setS = context.addBinding(s.getName());
Predicate<BindingSet> sIsSet = context.hasBinding(s.getName());
BiConsumer<Value, MutableBindingSet> setO = context.addBinding(o.getName());
Predicate<BindingSet> oIsSet = context.hasBinding(o.getName());
BiConsumer<Value, MutableBindingSet> setC = context.addBinding(c.getName());
Predicate<BindingSet> cIsSet = context.hasBinding(c.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !sIsSet.test(result)) {
setS.accept(st.getSubject(), result);
}
if (empty || !oIsSet.test(result)) {
setO.accept(st.getObject(), result);
}
if (empty || !cIsSet.test(result)) {
setC.accept(st.getContext(), result);
}
};
}
public static BiConsumer<MutableBindingSet, Statement> poc(QueryEvaluationContext context, Var p, Var o, Var c) {
BiConsumer<Value, MutableBindingSet> setP = context.addBinding(p.getName());
Predicate<BindingSet> pIsSet = context.hasBinding(p.getName());
BiConsumer<Value, MutableBindingSet> setO = context.addBinding(o.getName());
Predicate<BindingSet> oIsSet = context.hasBinding(o.getName());
BiConsumer<Value, MutableBindingSet> setC = context.addBinding(c.getName());
Predicate<BindingSet> cIsSet = context.hasBinding(c.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !pIsSet.test(result)) {
setP.accept(st.getPredicate(), result);
}
if (empty || !oIsSet.test(result)) {
setO.accept(st.getObject(), result);
}
if (empty || !cIsSet.test(result)) {
setC.accept(st.getContext(), result);
}
};
}
public static BiConsumer<MutableBindingSet, Statement> spoc(QueryEvaluationContext context, Var s, Var p, Var o,
Var c) {
BiConsumer<Value, MutableBindingSet> setS = context.addBinding(s.getName());
Predicate<BindingSet> sIsSet = context.hasBinding(s.getName());
BiConsumer<Value, MutableBindingSet> setP = context.addBinding(p.getName());
Predicate<BindingSet> pIsSet = context.hasBinding(p.getName());
BiConsumer<Value, MutableBindingSet> setO = context.addBinding(o.getName());
Predicate<BindingSet> oIsSet = context.hasBinding(o.getName());
BiConsumer<Value, MutableBindingSet> setC = context.addBinding(c.getName());
Predicate<BindingSet> cIsSet = context.hasBinding(c.getName());
return (result, st) -> {
boolean empty = result.isEmpty();
if (empty || !sIsSet.test(result)) {
setS.accept(st.getSubject(), result);
}
if (empty || !pIsSet.test(result)) {
setP.accept(st.getPredicate(), result);
}
if (empty || !oIsSet.test(result)) {
setO.accept(st.getObject(), result);
}
if (empty || !cIsSet.test(result)) {
setC.accept(st.getContext(), result);
}
};
}
}