def find_canonical(predlist)
predlist.each do |pred|
identifier = {}
self.find(nil,pred,nil) do |subj,pred,obj|
master_id = self.find_subject_in_master(pred,obj)
if not master_id
if not identifier.has_key?(obj.to_s)
identifier[obj.to_s] = subj
elsif identifier[obj.to_s] != subj
new_value = identifier[obj.to_s]
if not @canonical.has_key?(subj.to_s)
@canonical[subj.to_s] = new_value
end
end
else
if identifier.has_key?(obj.to_s)
if identifier[obj.to_s] != master_id
@canonical[subj.to_s] = master_id
identifier[obj.to_s] = master_id
end
else
identifier[obj.to_s] = master_id
if @canonical.has_key?(subj.to_s)
if @canonical[subj.to_s] != master_id
@global_rewrites[master_id] = @canonical[subj.to_s]
end
else
if subj != master_id
@canonical[subj.to_s] = master_id
end
end
end
end
end
@pred_identifiers[pred] = identifier
end
end