Andy Seaborne wrote:
>>   public Node create(String label) {
>>       return Node.createAnon(new AnonId(filename + "-" + label)) ;
>>   }
> 
> The way I thought was to allocate a UUID per parser run (or any other
> sufficiently large random number), xor the label into the UUID to
> produce the bNode label.  This is a non-localised label allocation scheme.

Hi Andy,
I am not sure this would work with MapReduce as filers are split into multiple
chunks and different machines can process splits from the same file.

Let's say I have this file, split into two chunks:

  ----------------------------

  <foo:bar> <foo:p> _:bnode1 .      split 1
  _:bnode1 <foo:q> "1" .

  ----------------------------

  _:bnode1 <foo:r> "2" .            split 2

  ----------------------------

I need to ensure the 'bnode1' label in split 1 and 2 refers to the same blank
node even if the splits are parsed separately. However, the same 'bnode1' label
from a different file must represent a different blank node. In practice, with
MapReduce, I cannot assume that a file is parsed in a single "parser run".

> 
>> Therefore, I would like to have my own
>> LabelToNode implementation with an Allocator<String, Node>  which
>> takes into
>> account the filename (or an hash of it) when it creates a new blank node.
>> But LabelToNode constructor is private.
>>
>> Could we make it protected?
> 
> Now public.

Thanks.

Paolo

> 
>>
>> Or, alternatively, how can I construct a LabelToNode object which will
>> be using
>> my MapReduceAllocator?
> 
> LabelToNode createUseLabelAsGiven()
> 
>     Andy

Reply via email to