org.semanticweb.owlapitools.decomposition.Signature Maven / Gradle / Ivy
package org.semanticweb.owlapitools.decomposition;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Stream;
import javax.annotation.Nullable;
import org.semanticweb.owlapi.model.OWLEntity;
import org.semanticweb.owlapi.util.OWLAPIStreamUtils;
/**
* class to hold the signature of a module
*/
public class Signature {
/**
* set to keep all the elements in signature
*/
private final Set set = new HashSet<>();
/**
* true if concept TOP-locality; false if concept BOTTOM-locality
*/
private boolean topCLocality = false;
/**
* true if role TOP-locality; false if role BOTTOM-locality
*/
private boolean topRLocality = false;
/**
* empty signature
*/
public Signature() {
super();
}
/**
* @param sig signature elements
*/
public Signature(Stream sig) {
addAll(sig);
}
/**
* @param p entity to add to signature
* @return true if p was not in the signature already
*/
public boolean add(OWLEntity p) {
return set.add(p);
}
/**
* @param p all entities to add
*/
public void addAll(Stream p) {
OWLAPIStreamUtils.add(set, p);
}
/**
* @param top set new locality polarity
*/
public void setLocality(boolean top) {
this.setLocality(top, top);
}
/**
* @param topC new concept locality polarity
* @param topR new role locality polarity
*/
public void setLocality(boolean topC, boolean topR) {
topCLocality = topC;
topRLocality = topR;
}
@Override
public boolean equals(@Nullable Object obj) {
if (obj == null) {
return false;
}
if (this == obj) {
return true;
}
if (obj instanceof Signature) {
return set.equals(((Signature) obj).set);
}
return false;
}
@Override
public int hashCode() {
return set.hashCode();
}
/**
* @param p entity to find
* @return true iff signature contains p
*/
public boolean contains(OWLEntity p) {
return set.contains(p);
}
/**
* @return the set of entities
*/
public Set getSignature() {
return set;
}
/**
* @return true iff concepts are treated as TOPs
*/
public boolean topCLocal() {
return topCLocality;
}
/**
* @return true iff roles are treated as TOPs
*/
public boolean topRLocal() {
return topRLocality;
}
/**
* @param s2 signature to intersect
* @return intersection
*/
public List intersect(Signature s2) {
List ret = new ArrayList<>();
Set s = new HashSet<>(set);
s.retainAll(s2.set);
ret.addAll(s);
return ret;
}
}