You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Martynas Jusevičius <ma...@graphity.org> on 2015/09/18 00:34:07 UTC

Bug in PrintUtil or Node prevents roundtripping Rules

Hey,

I have a List<Rule> created using Rule.parseRules from a String:

[inheritance: (?template rdf:type <http://graphity.org/gp#Template>),
(?template ?p ?o), (?p rdf:type owl:AnnotationProperty), (?p
rdfs:isDefinedBy <http://graphity.org/gp#>), (?subClass
rdfs:subClassOf ?template), noValue(?subClass ?p) -> (?subClass ?p ?o)
]

When the list is serialized back to String again, I get

Re: Bug in PrintUtil or Node prevents roundtripping Rules

Posted by Martynas Jusevičius <ma...@graphity.org>.
Here's my workaround:
https://github.com/Graphity/graphity-processor/blob/master/src/main/java/org/graphity/processor/util/RulePrinter.java

Not tested really, but solves my immediate problem.

On Fri, Sep 18, 2015 at 1:00 PM, Martynas Jusevičius
<ma...@graphity.org> wrote:
> Done: https://issues.apache.org/jira/browse/JENA-1030
>
> On Fri, Sep 18, 2015 at 11:00 AM, Martynas Jusevičius
> <ma...@graphity.org> wrote:
>> Should we create a ticket for this at least? Let me know if you want
>> me to do it.
>>
>> On Fri, Sep 18, 2015 at 10:55 AM, Dave Reynolds
>> <da...@gmail.com> wrote:
>>> Hi Martynas,
>>>
>>> On 18/09/15 09:25, Martynas Jusevičius wrote:
>>>>
>>>> I'm on SPIN API 1.3.1 = Jena 2.11.0.
>>>
>>>
>>> Ah, so patching Jena, even Jena2, won't help anyway unless you can upgrade.
>>>
>>>> There is no other way of serializing Rules to String though? It would make
>>>> sense for toString() to do this, but for now I guess I'll need to work
>>>> around this with my own printer.
>>>
>>>
>>> No there's no separate serializer. It would make sense for the toString to
>>> be round trippable and if it's just the URIs that are broken then as I say
>>> that's easy to fix.
>>>
>>> I could put a fix in the Jena2 branch if that would help but if you are
>>> stuck on 2.11.0 then I guess it doesn't actually solve your immediate
>>> problem.
>>>
>>> Dave
>>>
>>>
>>>> On Fri 18 Sep 2015 at 09:58 Dave Reynolds <da...@gmail.com>
>>>> wrote:
>>>>
>>>>> Hi Martynas,
>>>>>
>>>>> On 17/09/15 23:37, Martynas Jusevičius wrote:
>>>>>>
>>>>>> Hit send too soon!
>>>>>>
>>>>>> When the list is serialized back to String again, I get
>>>>>>
>>>>>> [[ inheritance: (?template rdf:type http://graphity.org/gp#Template)
>>>>>> (?template ?p ?o) (?p rdf:type owl:AnnotationProperty) (?p
>>>>>> rdfs:isDefinedBy http://graphity.org/gp#) (?subClass rdfs:subClassOf
>>>>>> ?template) noValue(?subClass ?p) -> (?subClass ?p ?o) ]]
>>>>>>
>>>>>> Notice the missing < > brackets on URIs. Reparsing the string gives an
>>>>>> exception:
>>>>>>
>>>>>> com.hp.hpl.jena.reasoner.rulesys.Rule$ParserException: Malformed rule
>>>>>> At 'http://graphity.org/gp# ) ( ?subClass rdfs:subClassOf ?template )
>>>>>> noValue ( ?subClass ?p ) -> ( ?subClass ?p ?o ) ] ] '
>>>>>>
>>>>>> Can you confirm this is a bug? I need to roundtrip Rules from Strings
>>>>>> to objects and back.
>>>>>
>>>>>
>>>>> There's no guarantee that Rule.toString will round trip, it's just there
>>>>> for debugging, that's why the javadoc says "Printable string describing
>>>>> the rule".
>>>>>
>>>>> However, it ought to be easy to put <> round the absolute URIs and if
>>>>> that's enough to give you round tripping then great.
>>>>>
>>>>> Can't do this myself at present - I don't have a working built of Jena3,
>>>>> still on Jena2. Are you on Jena2 or Jena3?
>>>>>
>>>>> Dave
>>>>>
>>>>
>>>

Re: Bug in PrintUtil or Node prevents roundtripping Rules

Posted by Martynas Jusevičius <ma...@graphity.org>.
Done: https://issues.apache.org/jira/browse/JENA-1030

On Fri, Sep 18, 2015 at 11:00 AM, Martynas Jusevičius
<ma...@graphity.org> wrote:
> Should we create a ticket for this at least? Let me know if you want
> me to do it.
>
> On Fri, Sep 18, 2015 at 10:55 AM, Dave Reynolds
> <da...@gmail.com> wrote:
>> Hi Martynas,
>>
>> On 18/09/15 09:25, Martynas Jusevičius wrote:
>>>
>>> I'm on SPIN API 1.3.1 = Jena 2.11.0.
>>
>>
>> Ah, so patching Jena, even Jena2, won't help anyway unless you can upgrade.
>>
>>> There is no other way of serializing Rules to String though? It would make
>>> sense for toString() to do this, but for now I guess I'll need to work
>>> around this with my own printer.
>>
>>
>> No there's no separate serializer. It would make sense for the toString to
>> be round trippable and if it's just the URIs that are broken then as I say
>> that's easy to fix.
>>
>> I could put a fix in the Jena2 branch if that would help but if you are
>> stuck on 2.11.0 then I guess it doesn't actually solve your immediate
>> problem.
>>
>> Dave
>>
>>
>>> On Fri 18 Sep 2015 at 09:58 Dave Reynolds <da...@gmail.com>
>>> wrote:
>>>
>>>> Hi Martynas,
>>>>
>>>> On 17/09/15 23:37, Martynas Jusevičius wrote:
>>>>>
>>>>> Hit send too soon!
>>>>>
>>>>> When the list is serialized back to String again, I get
>>>>>
>>>>> [[ inheritance: (?template rdf:type http://graphity.org/gp#Template)
>>>>> (?template ?p ?o) (?p rdf:type owl:AnnotationProperty) (?p
>>>>> rdfs:isDefinedBy http://graphity.org/gp#) (?subClass rdfs:subClassOf
>>>>> ?template) noValue(?subClass ?p) -> (?subClass ?p ?o) ]]
>>>>>
>>>>> Notice the missing < > brackets on URIs. Reparsing the string gives an
>>>>> exception:
>>>>>
>>>>> com.hp.hpl.jena.reasoner.rulesys.Rule$ParserException: Malformed rule
>>>>> At 'http://graphity.org/gp# ) ( ?subClass rdfs:subClassOf ?template )
>>>>> noValue ( ?subClass ?p ) -> ( ?subClass ?p ?o ) ] ] '
>>>>>
>>>>> Can you confirm this is a bug? I need to roundtrip Rules from Strings
>>>>> to objects and back.
>>>>
>>>>
>>>> There's no guarantee that Rule.toString will round trip, it's just there
>>>> for debugging, that's why the javadoc says "Printable string describing
>>>> the rule".
>>>>
>>>> However, it ought to be easy to put <> round the absolute URIs and if
>>>> that's enough to give you round tripping then great.
>>>>
>>>> Can't do this myself at present - I don't have a working built of Jena3,
>>>> still on Jena2. Are you on Jena2 or Jena3?
>>>>
>>>> Dave
>>>>
>>>
>>

Re: Bug in PrintUtil or Node prevents roundtripping Rules

Posted by Martynas Jusevičius <ma...@graphity.org>.
Should we create a ticket for this at least? Let me know if you want
me to do it.

On Fri, Sep 18, 2015 at 10:55 AM, Dave Reynolds
<da...@gmail.com> wrote:
> Hi Martynas,
>
> On 18/09/15 09:25, Martynas Jusevičius wrote:
>>
>> I'm on SPIN API 1.3.1 = Jena 2.11.0.
>
>
> Ah, so patching Jena, even Jena2, won't help anyway unless you can upgrade.
>
>> There is no other way of serializing Rules to String though? It would make
>> sense for toString() to do this, but for now I guess I'll need to work
>> around this with my own printer.
>
>
> No there's no separate serializer. It would make sense for the toString to
> be round trippable and if it's just the URIs that are broken then as I say
> that's easy to fix.
>
> I could put a fix in the Jena2 branch if that would help but if you are
> stuck on 2.11.0 then I guess it doesn't actually solve your immediate
> problem.
>
> Dave
>
>
>> On Fri 18 Sep 2015 at 09:58 Dave Reynolds <da...@gmail.com>
>> wrote:
>>
>>> Hi Martynas,
>>>
>>> On 17/09/15 23:37, Martynas Jusevičius wrote:
>>>>
>>>> Hit send too soon!
>>>>
>>>> When the list is serialized back to String again, I get
>>>>
>>>> [[ inheritance: (?template rdf:type http://graphity.org/gp#Template)
>>>> (?template ?p ?o) (?p rdf:type owl:AnnotationProperty) (?p
>>>> rdfs:isDefinedBy http://graphity.org/gp#) (?subClass rdfs:subClassOf
>>>> ?template) noValue(?subClass ?p) -> (?subClass ?p ?o) ]]
>>>>
>>>> Notice the missing < > brackets on URIs. Reparsing the string gives an
>>>> exception:
>>>>
>>>> com.hp.hpl.jena.reasoner.rulesys.Rule$ParserException: Malformed rule
>>>> At 'http://graphity.org/gp# ) ( ?subClass rdfs:subClassOf ?template )
>>>> noValue ( ?subClass ?p ) -> ( ?subClass ?p ?o ) ] ] '
>>>>
>>>> Can you confirm this is a bug? I need to roundtrip Rules from Strings
>>>> to objects and back.
>>>
>>>
>>> There's no guarantee that Rule.toString will round trip, it's just there
>>> for debugging, that's why the javadoc says "Printable string describing
>>> the rule".
>>>
>>> However, it ought to be easy to put <> round the absolute URIs and if
>>> that's enough to give you round tripping then great.
>>>
>>> Can't do this myself at present - I don't have a working built of Jena3,
>>> still on Jena2. Are you on Jena2 or Jena3?
>>>
>>> Dave
>>>
>>
>

Re: Bug in PrintUtil or Node prevents roundtripping Rules

Posted by Dave Reynolds <da...@gmail.com>.
Hi Martynas,

On 18/09/15 09:25, Martynas Jusevičius wrote:
> I'm on SPIN API 1.3.1 = Jena 2.11.0.

Ah, so patching Jena, even Jena2, won't help anyway unless you can upgrade.

> There is no other way of serializing Rules to String though? It would make
> sense for toString() to do this, but for now I guess I'll need to work
> around this with my own printer.

No there's no separate serializer. It would make sense for the toString 
to be round trippable and if it's just the URIs that are broken then as 
I say that's easy to fix.

I could put a fix in the Jena2 branch if that would help but if you are 
stuck on 2.11.0 then I guess it doesn't actually solve your immediate 
problem.

Dave

> On Fri 18 Sep 2015 at 09:58 Dave Reynolds <da...@gmail.com> wrote:
>
>> Hi Martynas,
>>
>> On 17/09/15 23:37, Martynas Jusevičius wrote:
>>> Hit send too soon!
>>>
>>> When the list is serialized back to String again, I get
>>>
>>> [[ inheritance: (?template rdf:type http://graphity.org/gp#Template)
>>> (?template ?p ?o) (?p rdf:type owl:AnnotationProperty) (?p
>>> rdfs:isDefinedBy http://graphity.org/gp#) (?subClass rdfs:subClassOf
>>> ?template) noValue(?subClass ?p) -> (?subClass ?p ?o) ]]
>>>
>>> Notice the missing < > brackets on URIs. Reparsing the string gives an
>>> exception:
>>>
>>> com.hp.hpl.jena.reasoner.rulesys.Rule$ParserException: Malformed rule
>>> At 'http://graphity.org/gp# ) ( ?subClass rdfs:subClassOf ?template )
>>> noValue ( ?subClass ?p ) -> ( ?subClass ?p ?o ) ] ] '
>>>
>>> Can you confirm this is a bug? I need to roundtrip Rules from Strings
>>> to objects and back.
>>
>> There's no guarantee that Rule.toString will round trip, it's just there
>> for debugging, that's why the javadoc says "Printable string describing
>> the rule".
>>
>> However, it ought to be easy to put <> round the absolute URIs and if
>> that's enough to give you round tripping then great.
>>
>> Can't do this myself at present - I don't have a working built of Jena3,
>> still on Jena2. Are you on Jena2 or Jena3?
>>
>> Dave
>>
>


Re: Bug in PrintUtil or Node prevents roundtripping Rules

Posted by Martynas Jusevičius <ma...@graphity.org>.
I'm on SPIN API 1.3.1 = Jena 2.11.0.

There is no other way of serializing Rules to String though? It would make
sense for toString() to do this, but for now I guess I'll need to work
around this with my own printer.
On Fri 18 Sep 2015 at 09:58 Dave Reynolds <da...@gmail.com> wrote:

> Hi Martynas,
>
> On 17/09/15 23:37, Martynas Jusevičius wrote:
> > Hit send too soon!
> >
> > When the list is serialized back to String again, I get
> >
> > [[ inheritance: (?template rdf:type http://graphity.org/gp#Template)
> > (?template ?p ?o) (?p rdf:type owl:AnnotationProperty) (?p
> > rdfs:isDefinedBy http://graphity.org/gp#) (?subClass rdfs:subClassOf
> > ?template) noValue(?subClass ?p) -> (?subClass ?p ?o) ]]
> >
> > Notice the missing < > brackets on URIs. Reparsing the string gives an
> > exception:
> >
> > com.hp.hpl.jena.reasoner.rulesys.Rule$ParserException: Malformed rule
> > At 'http://graphity.org/gp# ) ( ?subClass rdfs:subClassOf ?template )
> > noValue ( ?subClass ?p ) -> ( ?subClass ?p ?o ) ] ] '
> >
> > Can you confirm this is a bug? I need to roundtrip Rules from Strings
> > to objects and back.
>
> There's no guarantee that Rule.toString will round trip, it's just there
> for debugging, that's why the javadoc says "Printable string describing
> the rule".
>
> However, it ought to be easy to put <> round the absolute URIs and if
> that's enough to give you round tripping then great.
>
> Can't do this myself at present - I don't have a working built of Jena3,
> still on Jena2. Are you on Jena2 or Jena3?
>
> Dave
>

Re: Bug in PrintUtil or Node prevents roundtripping Rules

Posted by Dave Reynolds <da...@gmail.com>.
Hi Martynas,

On 17/09/15 23:37, Martynas Jusevičius wrote:
> Hit send too soon!
>
> When the list is serialized back to String again, I get
>
> [[ inheritance: (?template rdf:type http://graphity.org/gp#Template)
> (?template ?p ?o) (?p rdf:type owl:AnnotationProperty) (?p
> rdfs:isDefinedBy http://graphity.org/gp#) (?subClass rdfs:subClassOf
> ?template) noValue(?subClass ?p) -> (?subClass ?p ?o) ]]
>
> Notice the missing < > brackets on URIs. Reparsing the string gives an
> exception:
>
> com.hp.hpl.jena.reasoner.rulesys.Rule$ParserException: Malformed rule
> At 'http://graphity.org/gp# ) ( ?subClass rdfs:subClassOf ?template )
> noValue ( ?subClass ?p ) -> ( ?subClass ?p ?o ) ] ] '
>
> Can you confirm this is a bug? I need to roundtrip Rules from Strings
> to objects and back.

There's no guarantee that Rule.toString will round trip, it's just there 
for debugging, that's why the javadoc says "Printable string describing 
the rule".

However, it ought to be easy to put <> round the absolute URIs and if 
that's enough to give you round tripping then great.

Can't do this myself at present - I don't have a working built of Jena3, 
still on Jena2. Are you on Jena2 or Jena3?

Dave

Re: Bug in PrintUtil or Node prevents roundtripping Rules

Posted by Martynas Jusevičius <ma...@graphity.org>.
Hit send too soon!

When the list is serialized back to String again, I get

[[ inheritance: (?template rdf:type http://graphity.org/gp#Template)
(?template ?p ?o) (?p rdf:type owl:AnnotationProperty) (?p
rdfs:isDefinedBy http://graphity.org/gp#) (?subClass rdfs:subClassOf
?template) noValue(?subClass ?p) -> (?subClass ?p ?o) ]]

Notice the missing < > brackets on URIs. Reparsing the string gives an
exception:

com.hp.hpl.jena.reasoner.rulesys.Rule$ParserException: Malformed rule
At 'http://graphity.org/gp# ) ( ?subClass rdfs:subClassOf ?template )
noValue ( ?subClass ?p ) -> ( ?subClass ?p ?o ) ] ] '

Can you confirm this is a bug? I need to roundtrip Rules from Strings
to objects and back.


Martynas
graphityhq.com

On Fri, Sep 18, 2015 at 12:34 AM, Martynas Jusevičius
<ma...@graphity.org> wrote:
> Hey,
>
> I have a List<Rule> created using Rule.parseRules from a String:
>
> [inheritance: (?template rdf:type <http://graphity.org/gp#Template>),
> (?template ?p ?o), (?p rdf:type owl:AnnotationProperty), (?p
> rdfs:isDefinedBy <http://graphity.org/gp#>), (?subClass
> rdfs:subClassOf ?template), noValue(?subClass ?p) -> (?subClass ?p ?o)
> ]
>
> When the list is serialized back to String again, I get