All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.aksw.facete.v3.api.path.NestedVarMap Maven / Gradle / Ivy

There is a newer version: 5.2.0-1
Show newest version
package org.aksw.facete.v3.api.path;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;

import org.aksw.jena_sparql_api.relationlet.VarRefStatic;
import org.apache.jena.sparql.core.Var;

public interface NestedVarMap
//	extends Cloneable
{
	
	Set getVarsMentioned();
	NestedVarMap get(String alias);
	void transformValues(Function fn);

	Set getFixedFinalVars();
	Map getLocalToFinalVarMap();
	Map getMemberVarMap();

	default NestedVarMap get(String ... aliases) {
		NestedVarMap result = get(Arrays.asList(aliases));
		return result;
	}

	default NestedVarMap get(List aliases) {
		NestedVarMap result;
		if(aliases.isEmpty()) {
			result = this;
		} else {
			String alias = aliases.iterator().next();
			
			List sublist = aliases.subList(1, aliases.size());
			result = get(alias).get(sublist);
		}
		
		return result;
	}
	
	default boolean isFixed(Var var) {
		Set fixedVars = getFixedFinalVars();
		boolean result = fixedVars.contains(var);
		return result;
	}
	
	default boolean isFixed(VarRefStatic varRef) {
		List labels = varRef.getLabels();
		NestedVarMap nvm = get(labels);
		Var v = varRef.getV();
		boolean result = nvm.isFixed(v);
		return result;
	}
	
	NestedVarMap clone();// throws CloneNotSupportedException;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy