public Set<Statement> findTransitiveProperty(Resource subj,URI prop,Value obj,Resource... contxts) throws InferenceEngineException {
  if (transitivePropertySet.contains(prop)) {
    Set<Statement> sts=new HashSet();
    boolean goUp=subj == null;
    chainTransitiveProperty(subj,prop,obj,(goUp) ? (obj) : (subj),sts,goUp,contxts);
    return sts;
  }
 else   return null;
}

public Set < Statement > findTransitiveProperty ( Resource subj , URI prop , Value obj , Resource ... contxts ) throws InferenceEngineException { if ( transitivePropertySet . contains ( prop ) ) { Set < Statement > sts = new HashSet ( ) ; boolean goUp = subj == null ; chainTransitiveProperty ( subj , prop , obj , ( goUp ) ? ( obj ) : ( subj ) , sts , goUp , contxts ) ; return sts ; } else return null ; }
todo : this chaining can be slow at query execution . the other option is to perform this in the query itself , but that will be constrained to how many levels we decide to go
