package org.deri.grefine.reconcile.model;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
/**
* @author fadmaa
* complex reconciliation requests will use additional properties to make reconciliation more precise... this class is used to represent these additional
* properties aka context
*/
public class ReconciliationRequestContext {
private final Set<PropertyContext> properties;
public ReconciliationRequestContext(Set<PropertyContext> props){
this.properties = props;
}
public ReconciliationRequestContext(PropertyContext... prop){
this.properties = new LinkedHashSet<ReconciliationRequestContext.PropertyContext>(Arrays.asList(prop));
}
public Set<PropertyContext> getProperties() {
return properties;
}
/**
* @author fadmaa
* A property id and its value
*/
public static class PropertyContext{
private final String pid;
private final ValueContext v;
public PropertyContext(String pid, ValueContext v) {
this.pid = pid;
this.v = v;
}
public PropertyContext(String pid, String v) {
this.pid = pid;
this.v = new TextualValueContext(v);
}
public String getPid() {
return pid;
}
public ValueContext getV() {
return v;
}
}
public static interface ValueContext{
public String asSparqlValue();
public boolean isIRI();
}
public static class IdentifiedValueContext implements ValueContext{
private final String id;
public String getId() {
return id;
}
public String toString(){
return id;
}
public IdentifiedValueContext(String id){
this.id = id;
}
public String asSparqlValue(){
return "<" + id + ">";
}
public boolean isIRI(){
return true;
}
}
public static class TextualValueContext implements ValueContext{
private final String text;
public String getText() {
return text;
}
public String asSparqlValue(){
return "'" + text + "'";
}
public TextualValueContext(String text){
this.text = text;
}
public boolean isIRI(){
return false;
}
public String toString(){
return text;
}
}
}