Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.rdf.model.ResourceFactory;
import org.apache.jena.shared.PrefixMapping;
import org.apache.jena.sparql.graph.PrefixMappingMem;
import org.apache.jena.sparql.lang.arq.javacc.ParseException;
Expand Down Expand Up @@ -122,7 +121,7 @@ public BindingSet handleNewKnowledgeBase(ReactExchangeInfo ei) {

try {
Model model = eu.knowledge.engine.smartconnector.impl.Util.generateModel(this.aKI.getPattern(),
ei.getArgumentBindings());
eu.knowledge.engine.smartconnector.impl.Util.translateFromApiBindingSet(ei.getArgumentBindings()));

Resource kb = model.listSubjectsWithProperty(RDF.type, Vocab.KNOWLEDGE_BASE).next();
this.metadata.add(model);
Expand All @@ -141,7 +140,7 @@ public BindingSet handleChangedKnowledgeBase(ReactExchangeInfo ei) {

try {
Model model = eu.knowledge.engine.smartconnector.impl.Util.generateModel(this.aKI.getPattern(),
ei.getArgumentBindings());
eu.knowledge.engine.smartconnector.impl.Util.translateFromApiBindingSet(ei.getArgumentBindings()));

// this is a little more complex... we have to:
// - extract the knowledge base that this message is about
Expand Down Expand Up @@ -206,7 +205,8 @@ public void fetchInitialData() {
// using the BindingSet#generateModel() helper method, we can combine the graph
// pattern and the bindings for its variables into a valid RDF Model.
this.metadata = eu.knowledge.engine.smartconnector.impl.Util.generateModel(this.aKI.getPattern(),
askResult.getBindings());
eu.knowledge.engine.smartconnector.impl.Util
.translateFromApiBindingSet(askResult.getBindings()));
this.metadata.setNsPrefixes(this.prefixes);

} catch (ParseException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,13 +147,13 @@ private Map<TripleNode, TripleNode> mergeContexts(Map<TripleNode, TripleNode> ex
for (Map.Entry<TripleNode, TripleNode> newEntry : newContext.entrySet()) {
Node node;
if ((node = getOtherNode(existingContext, newEntry.getKey().node)) != null) {
if (!node.equals(newEntry.getValue().node)) {
if (!node.sameValueAs(newEntry.getValue().node)) {
return null;
}
} else {

for (TripleNode tn : existingContextValues) {
if (tn.node.equals(newEntry.getValue().node)) {
if (tn.node.sameValueAs(newEntry.getValue().node)) {
return null;
}
}
Expand All @@ -167,7 +167,7 @@ private Map<TripleNode, TripleNode> mergeContexts(Map<TripleNode, TripleNode> ex

public Node getOtherNode(Map<TripleNode, TripleNode> aContext, Node aNode) {
for (Map.Entry<TripleNode, TripleNode> entry : aContext.entrySet()) {
if (entry.getKey().node.equals(aNode)) {
if (entry.getKey().node.sameValueAs(aNode)) {
return entry.getValue().node;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package eu.knowledge.engine.reasoner.api;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.apache.jena.graph.Node;
import org.apache.jena.query.QuerySolution;
import org.apache.jena.sparql.core.Var;
import org.apache.jena.sparql.graph.PrefixMappingZero;
import org.apache.jena.sparql.sse.SSE;
Expand All @@ -17,6 +20,14 @@ public Binding() {
super();
}

public Binding(QuerySolution qs) {
Iterator<String> vars = qs.varNames();
while (vars.hasNext()) {
String var = vars.next();
super.put(Var.alloc(var), qs.get(var).asNode());
}
}

public Binding(Var variable, Node lit) {
super();
if (!lit.isConcrete())
Expand Down Expand Up @@ -72,4 +83,24 @@ public void putMap(Map<String, String> map) {

}

public boolean isSubBindingOf(Binding other) {
if (!other.keySet().containsAll(this.keySet())) {
return false;
}

return other.entrySet().stream().allMatch(b -> {
Var variable = b.getKey();
Node value = b.getValue();
return !this.containsKey(variable) || value.sameValueAs(this.get(variable));
});
}

public Binding keepOnly(Set<Var> variables) {
var b = new Binding();
for (var a : variables) {
b.put(a, this.get(a));
}
return b;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
import java.util.Map;
import java.util.Set;

import org.apache.jena.query.QuerySolution;
import org.apache.jena.query.ResultSet;

public class BindingSet extends HashSet<Binding> {
private static final long serialVersionUID = 8263643495419009027L;

Expand All @@ -17,6 +20,14 @@ public BindingSet(Collection<Binding> bindings) {
this.addAll(bindings);
}

public BindingSet(ResultSet rs) {
QuerySolution qs = null;
while (rs.hasNext()) {
qs = rs.next();
this.add(new Binding(qs));
}
}

public BindingSet(Binding... bindings) {
super();
for (Binding binding : bindings) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public String toString() {
sb.append(" ");
}
var truncatedNode = TriplePattern.trunc(n);
if (this.node.equals(n)) {
if (this.node.sameValueAs(n)) {
sb.append("|").append(truncatedNode).append("|");
} else {
sb.append(truncatedNode);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public Map<TripleNode, TripleNode> findMatches(TriplePattern other) {
substitutionMap.put(new TripleNode(this, this.getSubject(), 0),
new TripleNode(other, other.getSubject(), 0));
} else {
if (!this.getSubject().equals(other.getSubject())) {
if (!this.getSubject().sameValueAs(other.getSubject())) {
return null;
}
}
Expand All @@ -79,15 +79,15 @@ public Map<TripleNode, TripleNode> findMatches(TriplePattern other) {
substitutionMap.put(new TripleNode(this, this.getPredicate(), 1),
new TripleNode(other, other.getPredicate(), 1));
} else {
if (!this.getPredicate().equals(other.getPredicate())) {
if (!this.getPredicate().sameValueAs(other.getPredicate())) {
return null;
}
}

if (this.getObject() instanceof Var || other.getObject() instanceof Var) {
substitutionMap.put(new TripleNode(this, this.getObject(), 2), new TripleNode(other, other.getObject(), 2));
} else {
if (!this.getObject().equals(other.getObject())) {
if (!this.getObject().sameValueAs(other.getObject())) {
return null;
}
}
Expand Down Expand Up @@ -162,21 +162,21 @@ public boolean equals(Object obj) {
if (other.object != null) {
return false;
}
} else if (!object.equals(other.object)) {
} else if (!object.sameValueAs(other.object)) {
return false;
}
if (predicate == null) {
if (other.predicate != null) {
return false;
}
} else if (!predicate.equals(other.predicate)) {
} else if (!predicate.sameValueAs(other.predicate)) {
return false;
}
if (subject == null) {
if (other.subject != null) {
return false;
}
} else if (!subject.equals(other.subject)) {
} else if (!subject.sameValueAs(other.subject)) {
return false;
}
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ public boolean isConflicting(TripleVarBinding tvb) {
assert e.getKey().node.isVariable();
l = tvb.getVarValue((Var) e.getKey().node);

if (l != null && !e.getValue().equals(l)) {
if (l != null && !e.getValue().sameValueAs(l)) {
return true;
}
}
Expand Down Expand Up @@ -159,7 +159,7 @@ public boolean containsVar(Var aVar) {
assert aVar instanceof Var;

for (TripleNode tNode : this.tripleVarMapping.keySet()) {
if (tNode.node.equals(aVar)) {
if (tNode.node.sameValueAs(aVar)) {
return true;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -281,21 +281,21 @@ public Map<Match, TripleVarBindingSet> translate(Set<TriplePattern> aGraphPatter
var toTVar = new TripleNode(toTriple, (Var) toTNode.node, toTNode.nodeIdx);
var toBVarValue = toB.getVarValue((Var) toTVar.node);
if (fromB.containsKey(fromTVar) && !toB.containsKey(toTVar)
&& (toBVarValue == null || toBVarValue.equals(fromB.get(fromTVar)))) {
&& (toBVarValue == null || toBVarValue.sameValueAs(fromB.get(fromTVar)))) {
toB.put(toTVar, fromB.get(fromTVar));
} else if (fromB.containsKey(fromTVar) && toB.containsVar((Var) toTVar.node)
&& !fromB.get(fromTVar).equals(toBVarValue)) {
&& !fromB.get(fromTVar).sameValueAs(toBVarValue)) {
skip = true; // conflict, so skip
}
} else if (fromTNode.node instanceof Var && toTNode.node.isConcrete()) {
var fromTVar = new TripleNode(fromTriple, (Var) fromTNode.node, fromTNode.nodeIdx);
if (fromB.containsKey(fromTVar) && !fromB.get(fromTVar).equals(toTNode.node)) {
if (fromB.containsKey(fromTVar) && !fromB.get(fromTVar).sameValueAs(toTNode.node)) {
skip = true; // conflict, so skip
}
} else if (fromTNode.node.isConcrete() && toTNode.node instanceof Var) {
var toTVar = new TripleNode(toTriple, (Var) toTNode.node, toTNode.nodeIdx);
if (toB.containsVar((Var) toTVar.node)
&& !toB.getVarValue((Var) toTVar.node).equals(fromTNode.node)) {
&& !toB.getVarValue((Var) toTVar.node).sameValueAs(fromTNode.node)) {
skip = true;
} else
toB.put(toTVar, fromTNode.node);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,14 +112,14 @@ public CompletableFuture<BindingSet> handle(BindingSet bs) {

Node id;
if (incomingB.containsKey("id")
&& incomingB.get("id").equals(SSE.parseNode("<https://www.tno.nl/target1>"))) {
&& incomingB.get("id").sameValueAs(SSE.parseNode("<https://www.tno.nl/target1>"))) {

id = incomingB.get("id");
resultBinding.put("id", FmtUtils.stringForNode(id, new PrefixMappingZero()));
resultBinding.put("c", "\"Russia\"");
resultBinding.put("lang", "\"Russian\"");
} else if (incomingB.containsKey("id")
&& incomingB.get("id").equals(SSE.parseNode("<https://www.tno.nl/target0>"))) {
&& incomingB.get("id").sameValueAs(SSE.parseNode("<https://www.tno.nl/target0>"))) {
id = incomingB.get("id");
resultBinding.put("id", FmtUtils.stringForNode(id, new PrefixMappingZero()));
resultBinding.put("c", "\"Holland\"");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,13 +112,13 @@ public CompletableFuture<BindingSet> handle(BindingSet bs) {

Node id;
if (incomingB.containsKey("id")
&& incomingB.get("id").equals(SSE.parseNode("<https://www.tno.nl/target1>"))) {
&& incomingB.get("id").sameValueAs(SSE.parseNode("<https://www.tno.nl/target1>"))) {

id = incomingB.get("id");
resultBinding.put("id", FmtUtils.stringForNode(id, new PrefixMappingZero()));
resultBinding.put("c", "\"Russia\"");
} else if (incomingB.containsKey("id")
&& incomingB.get("id").equals(SSE.parseNode("<https://www.tno.nl/target0>"))) {
&& incomingB.get("id").sameValueAs(SSE.parseNode("<https://www.tno.nl/target0>"))) {
id = incomingB.get("id");
resultBinding.put("id", FmtUtils.stringForNode(id, new PrefixMappingZero()));
resultBinding.put("c", "\"Holland\"");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,18 +74,6 @@ public String get(String aVariableName) {
return this.map.get(aVariableName);
}

public boolean isSubBindingOf(Binding other) {
if (!other.getVariables().containsAll(this.getVariables())) {
return false;
}

return other.map.entrySet().stream().allMatch(b -> {
var variable = b.getKey();
var value = b.getValue();
return !this.containsKey(variable) || value.equals(this.get(variable));
});
}

public Binding keepOnly(Set<String> variables) {
var b = new Binding();
for (var a : variables) {
Expand Down
Loading
Loading