David,
In my use case I don't have control over the n-quads generation. So, I
cannot create named resources instead of blank nodes.
Andy,
After looking into the jena source code, was able to find a nice utility
that solves my problem.
Here is the interesting part of new code :
> Node sNode = output.get(0).getSubject();
if (sNode.isBlank() {
System.out.pritnln(NodeFmtLib.str(sNode));
The NodeFmtLib.str() returns me the same blank node id as specified in the
n-quad.
--Souri
On Sat, Apr 25, 2015 at 2:10 AM, Andy Seaborne <[email protected]> wrote:
> On 24/04/15 20:00, souri datta wrote:
>
>> Hi,
>> When I am parsing an N-quad using Jena, is it possible to keep the
>> blank
>> node id same after parsing?
>>
>> For e.g., if I have a blank n-quad like
>>
>> _:bsomerandomid <ns:pred> <http://foo.com> <foo> .
>>
>> After parsing, when I do
>>
>> subject.getBlankNodeId() it runs a randomly generated string which is
>> different from "_:bsomerandomid" .
>>
>> Is it possible to set some flags so that I get blank the same id as
>> present
>> in the input quad?
>>
>
> Hi,
>
> As David say, blank nodes are not for identification so maybe you need
> some kind of stable label liek a <urn:uuid:....>
>
> Warning - if you work with the blanknode labels as given you will not be
> following RDF. "_:a" in one file is different to "_:a" in another file or
> even if the same file is read twice.
>
> With your code (*) I get
>
> bsomerandomid
>
> The "_:" is not part of the blank node id.
>
> "createUseLabelEncoded" generates legal blank node labels directly related
> to the string given.
>
> The correct form generates a globally unique id that never clashes with
> any other (well, its related to a 122 bit random number).
>
> Please take care with code next time - HTML gets converted and formatted
> HTML is messed up.
>
> Andy
>
>
>
>>
>> Thanks,
>> Souri
>>
>>
>>
>> *Code used:*
>> *private ParserProfileBase profile = new ParserProfileBase(new
>> Prologue(null,*
>> * IRIResolver.createNoResolve()),*
>> * ErrorHandlerFactory.errorHandlerStrictSilent(),*
>> * LabelToNode.createUseLabelEncoded());*
>> * profile.setStrictMode(true);*
>> *}*
>> *List<Quad> output = new ArrayList<>();*
>> *Tokenizer tokenizer = TokenizerFactory.makeTokenizerString(line);*
>> *LangNQuads parser = new LangNQuads(tokenizer, profile, null);*
>> * while (parser.hasNext()) {*
>> * output.add(parser.next());*
>> * }*
>> * output.get(0).getSubject().getBlankNodeId();*
>>
>>
>