Skip to content

Commit

Permalink
[New] Truncating repetitive occurrence of long variable binding value
Browse files Browse the repository at this point in the history
  • Loading branch information
blcham committed Jul 5, 2022
1 parent f5b7d89 commit e26fe65
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ public interface ExecutionContext {
VariablesBinding getVariablesBinding();

String toSimpleString();
String toTruncatedSimpleString();


//getReadOnlyModel();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,12 @@ public VariablesBinding getVariablesBinding() {

@Override
public String toSimpleString() {
return getSimpleString(false);
}

StringBuilder sb = new StringBuilder();

sb.append("Context ").append(this.hashCode()).append("[ \n")
.append("\t varBindings = ").append(variablesBinding).append("\n")
.append("\t modelSize = ").append(defaultModel.listStatements().toList().size())
.append("]");

return sb.toString();
@Override
public String toTruncatedSimpleString() {
return getSimpleString(true);
}

public void setDefaultModel(Model defaultModel) {
Expand All @@ -36,4 +33,22 @@ public void setDefaultModel(Model defaultModel) {
public void setVariablesBinding(VariablesBinding variablesBinding) {
this.variablesBinding = variablesBinding;
}

private String getSimpleString(boolean truncate) {
StringBuilder sb = new StringBuilder();

sb.append("Context ").append(this.hashCode()).append("[ \n")
.append("\t varBindings = ").append(getVariablesBindingString(truncate)).append("\n")
.append("\t modelSize = ").append(defaultModel.listStatements().toList().size())
.append("]");

return sb.toString();
}

private String getVariablesBindingString(boolean truncate) {
if (truncate) {
return variablesBinding.toTruncatedString();
}
return variablesBinding.toString();
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
package cz.cvut.spipes.engine;

import cz.cvut.spipes.modules.Module;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.time.Instant;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

class ExecutionEngineImpl implements ExecutionEngine {

Expand Down Expand Up @@ -63,7 +64,7 @@ private ExecutionContext _executePipeline(long pipelineExecutionId, Module modul

LOG.info(" ##### " + module.getLabel());
if (LOG.isTraceEnabled()) {
LOG.trace("Using input context {}", context.toSimpleString()); //TODO redundant code -> merge
LOG.trace("Using input context {}", context.toTruncatedSimpleString()); //TODO redundant code -> merge
}
ExecutionContext outputContext = module.execute();
if (LOG.isTraceEnabled()) {
Expand All @@ -82,7 +83,7 @@ private ExecutionContext _executePipeline(long pipelineExecutionId, Module modul
LOG.info(" ##### " + module.getLabel());
ExecutionContext mergedContext = mergeContexts(resource2ContextMap);
if (LOG.isTraceEnabled()) {
LOG.trace("Using input merged context {}", mergedContext.toSimpleString());
LOG.trace("Using input merged context {}", mergedContext.toTruncatedSimpleString());
}
fire((l) -> {l.moduleExecutionStarted(pipelineExecutionId, moduleExecutionId, module, mergedContext, predecessorId); return null;});

Expand Down
Original file line number Diff line number Diff line change
@@ -1,31 +1,25 @@
package cz.cvut.spipes.engine;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.apache.jena.query.QuerySolution;
import org.apache.jena.query.QuerySolutionMap;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.RDFNode;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.rdf.model.ResourceFactory;
import org.apache.jena.rdf.model.Statement;
import org.apache.jena.rdf.model.*;
import org.apache.jena.vocabulary.RDF;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.*;
import java.util.stream.Collectors;

public class VariablesBinding {

// TODO stream variables etc.

private static Logger LOG = LoggerFactory.getLogger(VariablesBinding.class);
private static final int MAX_TRUNCATED_VALUE_SIZE = 300;
QuerySolutionMap binding = new QuerySolutionMap();

public VariablesBinding() {
Expand Down Expand Up @@ -79,15 +73,15 @@ public VariablesBinding extendConsistently(VariablesBinding newVarsBinding) {
VariablesBinding conflictingBinding = new VariablesBinding();

newVarsBinding.getVarNames().forEachRemaining(
var -> {
RDFNode oldNode = this.getNode(var);
RDFNode newNode = newVarsBinding.getNode(var);
v -> {
RDFNode oldNode = this.getNode(v);
RDFNode newNode = newVarsBinding.getNode(v);

if ((oldNode != null) && (!oldNode.equals(newNode))) {
conflictingBinding.add(var, newNode);
LOG.warn("Variable \"{}\" have been bind to value \"{}\", ignoring assignment to value \"{}\".", var, oldNode, newNode);
conflictingBinding.add(v, newNode);
LOG.warn("Variable \"{}\" have been bind to value \"{}\", ignoring assignment to value \"{}\".", v, oldNode, newNode);
} else {
this.add(var, newNode);
this.add(v, newNode);
}
}
);
Expand All @@ -104,11 +98,11 @@ public VariablesBinding extendConsistently(VariablesBinding newVarsBinding) {
public VariablesBinding restrictTo(@NotNull List<String> varNames) {
VariablesBinding newBinding = new VariablesBinding();
varNames.forEach(
var -> {
RDFNode oldNode = this.getNode(var);
v -> {
RDFNode oldNode = this.getNode(v);

if (oldNode != null) {
newBinding.add(var, oldNode);
newBinding.add(v, oldNode);
}
}
);
Expand All @@ -125,17 +119,17 @@ public VariablesBinding restrictTo(@NotNull String ... varNames) {
}


final String BASE_URI = "http://onto.fel.cvut.cz/ontologies/s-pipes/";
final String QUERY_SOLUTION = BASE_URI + "query_solution";
final String HAS_BINDING = BASE_URI + "has_binding";
final String HAS_BOUND_VARIABLE = BASE_URI + "has_bound_variable";
final String HAS_BOUND_VALUE = BASE_URI + "has_bound_value";
static final String BASE_URI = "http://onto.fel.cvut.cz/ontologies/s-pipes/";
static final String QUERY_SOLUTION = BASE_URI + "query_solution";
static final String HAS_BINDING = BASE_URI + "has_binding";
static final String HAS_BOUND_VARIABLE = BASE_URI + "has_bound_variable";
static final String HAS_BOUND_VALUE = BASE_URI + "has_bound_value";

private static Property p(String property) {
return ResourceFactory.createProperty(property);
}

public void save(final OutputStream os, final String lang) throws IOException {
public void save(final OutputStream os, final String lang) {
getModel().write(os, lang);
}

Expand Down Expand Up @@ -187,4 +181,17 @@ public void load(final InputStream is, final String lang) throws IOException {
public String toString() {
return binding.asMap().toString();
}

public String toTruncatedString() {
return binding.asMap().entrySet().stream()
.map(e -> new AbstractMap.SimpleEntry<>(e.getKey(), getTruncatedValue(e.getValue().toString()))).
collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)).toString();
}

private static String getTruncatedValue(@NotNull String value) {
if (value.length() > MAX_TRUNCATED_VALUE_SIZE) {
return "... " + value.substring(0, MAX_TRUNCATED_VALUE_SIZE).replace("\n", "\\n") + " ...";
}
return value;
}
}

0 comments on commit e26fe65

Please sign in to comment.