protected function evaluateSet()
    {
        
        common_Logger::d('Constructed Set TYPE', array('Generis Term evaluateSet'));
    	$operator = $this->getUniquePropertyValue(new core_kernel_classes_Property(RulesRdf::PROPERTY_SET_OPERATOR));
    	$subSets = $this->getPropertyValuesCollection(new core_kernel_classes_Property(RulesRdf::PROPERTY_SUBSET));
    	$returnValue = new core_kernel_classes_ContainerCollection($this);

		foreach ($subSets->getIterator() as $aSet) {
    		
    		if ($aSet instanceof core_kernel_classes_Resource ) {
    			$newSet = new core_kernel_rules_Term($aSet->getUri());
    			$resultSet = $newSet->evaluate();
    			if ($resultSet instanceof core_kernel_classes_ContainerCollection  ) {
    				$returnValue = $this->evalutateSetOperation($operator,$returnValue,$resultSet);
				}
    			else {
					$collection = new core_kernel_classes_ContainerCollection($this);
    				$collection->add($resultSet);
    				$returnValue = $this->evalutateSetOperation($operator,$returnValue,$collection);
    			}	
    		}
    		else {
    			throw new common_Exception('Bad Type , waiting for a Resource ');
    		}
    	   
    	}    		
    	
    	return $returnValue;
        
    }