def get_relations(options = {:target_type => nil, :relation_type => nil,
:required_attributes => [], :direction => nil})
Utils.check_options options,
:target_type, :relation_type, :required_attributes, :direction
target_type = Utils.add_namespace(options[:target_type], NS_REL_1)
relation_type = Utils.add_namespace(options[:relation_type], NS_REL_1)
required_attributes =
options[:required_attributes] ? options[:required_attributes] : []
direction = options[:direction]
if target_type
result = relations[target_type].to_a
else
result = relations.values.flatten
end
result = result.find_all { |r| r.direction == direction } if direction
result = result.find_all{ |r| r.type == relation_type } if relation_type
required = required_attributes.map{|a| Utils.add_namespace(a, NS_REL_1)}.to_set
result.find_all do |r|
required.subset?( r.attributes.to_set )
end
end