tab2rdf.py doesn't generate Turtle

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

tab2rdf.py doesn't generate Turtle

Jonathan Rees-3
I'm trying to use http://www.w3.org/2000/10/swap/tab2n3.py
and have discovered the hard way that it doesn't generate Turtle...
not that it claims to, but I felt like complaining.

Apparently the Turtle grammar requires a predicate and object
following each subject, and in the output of tab2n3 there are subjects
with no predicate and object. E.g.

# headings found:  3 ['strain_id', 'strain_name', 'strain_type']
[
    :strain_id "MGI:2164743";
    :strain_name "(C57BL/6JEiJ x C3Sn.BLiA-Pde6b<+>)F1";
    :strain_type "Not Specified";
 ] .

Here's what the Turtle submission says:

[6] triples ::= subject predicateObjectList
[7] predicateObjectList ::= verb objectList ( ';' verb objectList )* ( ';')?

To generate correct Turtle is possible but awkward. You could say
tab2n3 is working as designed, and was never meant to generate Turtle,
only N3, but... wouldn't it be nice?

Jonathan

Reply | Threaded
Open this post in threaded view
|

Re: tab2rdf.py doesn't generate Turtle

Tim Berners-Lee
SIgh.  A random and unnecessary departure of turtle from N3 IMHO.

Changed the code anyway.  Almost 10 years on

Tim


total revisions: 6; selected revisions: 6
description:
----------------------------
revision 1.6
date: 2010/08/02 22:01:22;  author: timbl;  state: Exp;  lines: +31 -8
See mail from JAR to public-cwm-talk mid:[hidden email]
----------------------------
revision 1.5
date: 2007/10/18 20:55:41;  author: timbl;  state: Exp;  lines: +38 -17
doublequote escaping
----------------------------
revision 1.4
date: 2007/06/26 02:36:15;  author: syosi;  state: Exp;  lines: +55 -55
fix tabs
----------------------------
revision 1.3
date: 2000/11/10 23:04:18;  author: timbl;  state: Exp;  lines: +1 -1
Starting basis for qualifiers
----------------------------
revision 1.2
date: 2000/11/02 20:48:45;  author: timbl;  state: Exp;  lines: +10 -0
first schema hack
----------------------------
revision 1.1
date: 2000/10/31 15:56:37;  author: timbl;  state: Exp;
Hacked TabDelimted-windows format to n3 converter
=============================================================================

On 2010-08 -02, at 16:37, Jonathan Rees wrote:

> I'm trying to use http://www.w3.org/2000/10/swap/tab2n3.py
> and have discovered the hard way that it doesn't generate Turtle...
> not that it claims to, but I felt like complaining.
>
> Apparently the Turtle grammar requires a predicate and object
> following each subject, and in the output of tab2n3 there are subjects
> with no predicate and object. E.g.
>
> # headings found:  3 ['strain_id', 'strain_name', 'strain_type']
> [
>    :strain_id "MGI:2164743";
>    :strain_name "(C57BL/6JEiJ x C3Sn.BLiA-Pde6b<+>)F1";
>    :strain_type "Not Specified";
> ] .
>
> Here's what the Turtle submission says:
>
> [6] triples ::= subject predicateObjectList
> [7] predicateObjectList ::= verb objectList ( ';' verb objectList )* ( ';')?
>
> To generate correct Turtle is possible but awkward. You could say
> tab2n3 is working as designed, and was never meant to generate Turtle,
> only N3, but... wouldn't it be nice?
>
> Jonathan
>


Reply | Threaded
Open this post in threaded view
|

Re: tab2rdf.py doesn't generate Turtle

Andy Seaborne-3
SPARQL allows

[ :p 123 ] .
(1 2 3 4) .

but does not allow the triple-less forms:

[] .
() .

        Andy

On 02/08/2010 11:04 PM, Tim Berners-Lee wrote:

> SIgh.  A random and unnecessary departure of turtle from N3 IMHO.
>
> Changed the code anyway.  Almost 10 years on
>
> Tim
>
>
> total revisions: 6; selected revisions: 6
> description:
> ----------------------------
> revision 1.6
> date: 2010/08/02 22:01:22;  author: timbl;  state: Exp;  lines: +31 -8
> See mail from JAR to public-cwm-talk mid:[hidden email]
> ----------------------------
> revision 1.5
> date: 2007/10/18 20:55:41;  author: timbl;  state: Exp;  lines: +38 -17
> doublequote escaping
> ----------------------------
> revision 1.4
> date: 2007/06/26 02:36:15;  author: syosi;  state: Exp;  lines: +55 -55
> fix tabs
> ----------------------------
> revision 1.3
> date: 2000/11/10 23:04:18;  author: timbl;  state: Exp;  lines: +1 -1
> Starting basis for qualifiers
> ----------------------------
> revision 1.2
> date: 2000/11/02 20:48:45;  author: timbl;  state: Exp;  lines: +10 -0
> first schema hack
> ----------------------------
> revision 1.1
> date: 2000/10/31 15:56:37;  author: timbl;  state: Exp;
> Hacked TabDelimted-windows format to n3 converter
> =============================================================================
>
> On 2010-08 -02, at 16:37, Jonathan Rees wrote:
>
>> I'm trying to use http://www.w3.org/2000/10/swap/tab2n3.py
>> and have discovered the hard way that it doesn't generate Turtle...
>> not that it claims to, but I felt like complaining.
>>
>> Apparently the Turtle grammar requires a predicate and object
>> following each subject, and in the output of tab2n3 there are subjects
>> with no predicate and object. E.g.
>>
>> # headings found:  3 ['strain_id', 'strain_name', 'strain_type']
>> [
>>     :strain_id "MGI:2164743";
>>     :strain_name "(C57BL/6JEiJ x C3Sn.BLiA-Pde6b<+>)F1";
>>     :strain_type "Not Specified";
>> ] .
>>
>> Here's what the Turtle submission says:
>>
>> [6] triples ::= subject predicateObjectList
>> [7] predicateObjectList ::= verb objectList ( ';' verb objectList )* ( ';')?
>>
>> To generate correct Turtle is possible but awkward. You could say
>> tab2n3 is working as designed, and was never meant to generate Turtle,
>> only N3, but... wouldn't it be nice?
>>
>> Jonathan
>>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: tab2rdf.py doesn't generate Turtle

Jonathan Rees-3
In reply to this post by Tim Berners-Lee
Thanks for the quick fix. Now I'm having trouble with files that have
empty columns (two tabs in a row).  It would be nice if the script
interpreted that situation as meaning that the value is the empty
string; or else as there being no value at all... anything that treats
tabs as significant and keeps things aligned the way Excel would.

(Also, if there is an extra column with an empty value, i.e. extra tab
char at end of line, you get syntactically incorrect output.)

Thanks
Jonathan

head1 head2 head3
x11 x12 x13
x21 x23
x31 x32
x41 x42
x51 x52 x54
x61 x62 x63 x64

On Mon, Aug 2, 2010 at 6:04 PM, Tim Berners-Lee <[hidden email]> wrote:

> SIgh.  A random and unnecessary departure of turtle from N3 IMHO.
>
> Changed the code anyway.  Almost 10 years on
>
> Tim
>
>
> total revisions: 6;     selected revisions: 6
> description:
> ----------------------------
> revision 1.6
> date: 2010/08/02 22:01:22;  author: timbl;  state: Exp;  lines: +31 -8
> See mail from JAR to public-cwm-talk mid:[hidden email]
> ----------------------------
> revision 1.5
> date: 2007/10/18 20:55:41;  author: timbl;  state: Exp;  lines: +38 -17
> doublequote escaping
> ----------------------------
> revision 1.4
> date: 2007/06/26 02:36:15;  author: syosi;  state: Exp;  lines: +55 -55
> fix tabs
> ----------------------------
> revision 1.3
> date: 2000/11/10 23:04:18;  author: timbl;  state: Exp;  lines: +1 -1
> Starting basis for qualifiers
> ----------------------------
> revision 1.2
> date: 2000/11/02 20:48:45;  author: timbl;  state: Exp;  lines: +10 -0
> first schema hack
> ----------------------------
> revision 1.1
> date: 2000/10/31 15:56:37;  author: timbl;  state: Exp;
> Hacked TabDelimted-windows format to n3 converter
> =============================================================================
>
> On 2010-08 -02, at 16:37, Jonathan Rees wrote:
>
>> I'm trying to use http://www.w3.org/2000/10/swap/tab2n3.py
>> and have discovered the hard way that it doesn't generate Turtle...
>> not that it claims to, but I felt like complaining.
>>
>> Apparently the Turtle grammar requires a predicate and object
>> following each subject, and in the output of tab2n3 there are subjects
>> with no predicate and object. E.g.
>>
>> # headings found:  3 ['strain_id', 'strain_name', 'strain_type']
>> [
>>    :strain_id "MGI:2164743";
>>    :strain_name "(C57BL/6JEiJ x C3Sn.BLiA-Pde6b<+>)F1";
>>    :strain_type "Not Specified";
>> ] .
>>
>> Here's what the Turtle submission says:
>>
>> [6]   triples ::=     subject predicateObjectList
>> [7]   predicateObjectList     ::=     verb objectList ( ';' verb objectList )* ( ';')?
>>
>> To generate correct Turtle is possible but awkward. You could say
>> tab2n3 is working as designed, and was never meant to generate Turtle,
>> only N3, but... wouldn't it be nice?
>>
>> Jonathan
>>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: tab2rdf.py doesn't generate Turtle

Jonathan Rees-3
Ah, I think this is my problem... too few headings added to top of
file. The comment about getting a syntax error on output when there
are too many input columns and the last is empty still holds, but
that's really an input error so I'll take the blame. Sorry for the
false alarm

Jonathan

# headings found:  3 ['head1', 'head2', 'head3']
[]
    :head1 "x11";
    :head2 "x12";
    :head3 "x13".
[]
    :head1 "x21";
    :head3 "x23".
#  3 headings but 2 values
[]
    :head1 "x31";
    :head2 "x32".
[]
    :head1 "x41";
    :head2 "x42";
#  3 headings but 4 values
[]
    :head1 "x51";
    :head2 "x52";
    :column3 "x54".
#  3 headings but 4 values
[]
    :head1 "x61";
    :head2 "x62";
    :head3 "x63";
    :column3 "x64".
# Total number of records: 6



On Wed, Aug 11, 2010 at 10:56 AM, Jonathan Rees <[hidden email]> wrote:

> Thanks for the quick fix. Now I'm having trouble with files that have
> empty columns (two tabs in a row).  It would be nice if the script
> interpreted that situation as meaning that the value is the empty
> string; or else as there being no value at all... anything that treats
> tabs as significant and keeps things aligned the way Excel would.
>
> (Also, if there is an extra column with an empty value, i.e. extra tab
> char at end of line, you get syntactically incorrect output.)
>
> Thanks
> Jonathan
>
> head1   head2   head3
> x11     x12     x13
> x21             x23
> x31     x32
> x41     x42
> x51     x52             x54
> x61     x62     x63     x64
>
> On Mon, Aug 2, 2010 at 6:04 PM, Tim Berners-Lee <[hidden email]> wrote:
>> SIgh.  A random and unnecessary departure of turtle from N3 IMHO.
>>
>> Changed the code anyway.  Almost 10 years on
>>
>> Tim
>>
>>
>> total revisions: 6;     selected revisions: 6
>> description:
>> ----------------------------
>> revision 1.6
>> date: 2010/08/02 22:01:22;  author: timbl;  state: Exp;  lines: +31 -8
>> See mail from JAR to public-cwm-talk mid:[hidden email]
>> ----------------------------
>> revision 1.5
>> date: 2007/10/18 20:55:41;  author: timbl;  state: Exp;  lines: +38 -17
>> doublequote escaping
>> ----------------------------
>> revision 1.4
>> date: 2007/06/26 02:36:15;  author: syosi;  state: Exp;  lines: +55 -55
>> fix tabs
>> ----------------------------
>> revision 1.3
>> date: 2000/11/10 23:04:18;  author: timbl;  state: Exp;  lines: +1 -1
>> Starting basis for qualifiers
>> ----------------------------
>> revision 1.2
>> date: 2000/11/02 20:48:45;  author: timbl;  state: Exp;  lines: +10 -0
>> first schema hack
>> ----------------------------
>> revision 1.1
>> date: 2000/10/31 15:56:37;  author: timbl;  state: Exp;
>> Hacked TabDelimted-windows format to n3 converter
>> =============================================================================
>>
>> On 2010-08 -02, at 16:37, Jonathan Rees wrote:
>>
>>> I'm trying to use http://www.w3.org/2000/10/swap/tab2n3.py
>>> and have discovered the hard way that it doesn't generate Turtle...
>>> not that it claims to, but I felt like complaining.
>>>
>>> Apparently the Turtle grammar requires a predicate and object
>>> following each subject, and in the output of tab2n3 there are subjects
>>> with no predicate and object. E.g.
>>>
>>> # headings found:  3 ['strain_id', 'strain_name', 'strain_type']
>>> [
>>>    :strain_id "MGI:2164743";
>>>    :strain_name "(C57BL/6JEiJ x C3Sn.BLiA-Pde6b<+>)F1";
>>>    :strain_type "Not Specified";
>>> ] .
>>>
>>> Here's what the Turtle submission says:
>>>
>>> [6]   triples ::=     subject predicateObjectList
>>> [7]   predicateObjectList     ::=     verb objectList ( ';' verb objectList )* ( ';')?
>>>
>>> To generate correct Turtle is possible but awkward. You could say
>>> tab2n3 is working as designed, and was never meant to generate Turtle,
>>> only N3, but... wouldn't it be nice?
>>>
>>> Jonathan
>>>
>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: tab2rdf.py doesn't generate Turtle

Jonathan Rees-3
Ah, there still is a bug, when a line with correct number of column
ends in *two* tab characters / empty columns... (this is a real life
example)

Input:  (note 3rd line ends with two tab characters)

head1 head2 head3 head4
x11 x12 x13 x13
x21 x22

Output:

# headings found:  4 ['head1', 'head2', 'head3', 'head4']
[]
    :head1 "x11";
    :head2 "x12";
    :head3 "x13";
    :head4 "x13".
#  4 headings but 3 values
[]
    :head1 "x21";
    :head2 "x22";
# Total number of records: 2


On Wed, Aug 11, 2010 at 11:07 AM, Jonathan Rees <[hidden email]> wrote:

> Ah, I think this is my problem... too few headings added to top of
> file. The comment about getting a syntax error on output when there
> are too many input columns and the last is empty still holds, but
> that's really an input error so I'll take the blame. Sorry for the
> false alarm
>
> Jonathan
>
> # headings found:  3 ['head1', 'head2', 'head3']
> []
>    :head1 "x11";
>    :head2 "x12";
>    :head3 "x13".
> []
>    :head1 "x21";
>    :head3 "x23".
> #  3 headings but 2 values
> []
>    :head1 "x31";
>    :head2 "x32".
> []
>    :head1 "x41";
>    :head2 "x42";
> #  3 headings but 4 values
> []
>    :head1 "x51";
>    :head2 "x52";
>    :column3 "x54".
> #  3 headings but 4 values
> []
>    :head1 "x61";
>    :head2 "x62";
>    :head3 "x63";
>    :column3 "x64".
> # Total number of records: 6
>
>
>
> On Wed, Aug 11, 2010 at 10:56 AM, Jonathan Rees <[hidden email]> wrote:
>> Thanks for the quick fix. Now I'm having trouble with files that have
>> empty columns (two tabs in a row).  It would be nice if the script
>> interpreted that situation as meaning that the value is the empty
>> string; or else as there being no value at all... anything that treats
>> tabs as significant and keeps things aligned the way Excel would.
>>
>> (Also, if there is an extra column with an empty value, i.e. extra tab
>> char at end of line, you get syntactically incorrect output.)
>>
>> Thanks
>> Jonathan
>>
>> head1   head2   head3
>> x11     x12     x13
>> x21             x23
>> x31     x32
>> x41     x42
>> x51     x52             x54
>> x61     x62     x63     x64
>>
>> On Mon, Aug 2, 2010 at 6:04 PM, Tim Berners-Lee <[hidden email]> wrote:
>>> SIgh.  A random and unnecessary departure of turtle from N3 IMHO.
>>>
>>> Changed the code anyway.  Almost 10 years on
>>>
>>> Tim
>>>
>>>
>>> total revisions: 6;     selected revisions: 6
>>> description:
>>> ----------------------------
>>> revision 1.6
>>> date: 2010/08/02 22:01:22;  author: timbl;  state: Exp;  lines: +31 -8
>>> See mail from JAR to public-cwm-talk mid:[hidden email]
>>> ----------------------------
>>> revision 1.5
>>> date: 2007/10/18 20:55:41;  author: timbl;  state: Exp;  lines: +38 -17
>>> doublequote escaping
>>> ----------------------------
>>> revision 1.4
>>> date: 2007/06/26 02:36:15;  author: syosi;  state: Exp;  lines: +55 -55
>>> fix tabs
>>> ----------------------------
>>> revision 1.3
>>> date: 2000/11/10 23:04:18;  author: timbl;  state: Exp;  lines: +1 -1
>>> Starting basis for qualifiers
>>> ----------------------------
>>> revision 1.2
>>> date: 2000/11/02 20:48:45;  author: timbl;  state: Exp;  lines: +10 -0
>>> first schema hack
>>> ----------------------------
>>> revision 1.1
>>> date: 2000/10/31 15:56:37;  author: timbl;  state: Exp;
>>> Hacked TabDelimted-windows format to n3 converter
>>> =============================================================================
>>>
>>> On 2010-08 -02, at 16:37, Jonathan Rees wrote:
>>>
>>>> I'm trying to use http://www.w3.org/2000/10/swap/tab2n3.py
>>>> and have discovered the hard way that it doesn't generate Turtle...
>>>> not that it claims to, but I felt like complaining.
>>>>
>>>> Apparently the Turtle grammar requires a predicate and object
>>>> following each subject, and in the output of tab2n3 there are subjects
>>>> with no predicate and object. E.g.
>>>>
>>>> # headings found:  3 ['strain_id', 'strain_name', 'strain_type']
>>>> [
>>>>    :strain_id "MGI:2164743";
>>>>    :strain_name "(C57BL/6JEiJ x C3Sn.BLiA-Pde6b<+>)F1";
>>>>    :strain_type "Not Specified";
>>>> ] .
>>>>
>>>> Here's what the Turtle submission says:
>>>>
>>>> [6]   triples ::=     subject predicateObjectList
>>>> [7]   predicateObjectList     ::=     verb objectList ( ';' verb objectList )* ( ';')?
>>>>
>>>> To generate correct Turtle is possible but awkward. You could say
>>>> tab2n3 is working as designed, and was never meant to generate Turtle,
>>>> only N3, but... wouldn't it be nice?
>>>>
>>>> Jonathan
>>>>
>>>
>>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: tab2rdf.py doesn't generate Turtle

Jonathan Rees-3
Also if the last column(s) contain only spaces you get syntactically
incorrect output (stanza that ends in ; instead of .).

I now have my own version that works, but I can't give it to you
because you haven't given me a license to do so. (sorry, that's a
half-joke.) Any chance you can affix a license to the source file, or
put one in some other prominent location? I can't use this code in the
long run unless it's clear that I can redistribute it.

Best
Jonathan

On Wed, Aug 11, 2010 at 11:20 AM, Jonathan Rees <[hidden email]> wrote:

> Ah, there still is a bug, when a line with correct number of column
> ends in *two* tab characters / empty columns... (this is a real life
> example)
>
> Input:  (note 3rd line ends with two tab characters)
>
> head1   head2   head3   head4
> x11     x12     x13     x13
> x21     x22
>
> Output:
>
> # headings found:  4 ['head1', 'head2', 'head3', 'head4']
> []
>    :head1 "x11";
>    :head2 "x12";
>    :head3 "x13";
>    :head4 "x13".
> #  4 headings but 3 values
> []
>    :head1 "x21";
>    :head2 "x22";
> # Total number of records: 2
>
>
> On Wed, Aug 11, 2010 at 11:07 AM, Jonathan Rees <[hidden email]> wrote:
>> Ah, I think this is my problem... too few headings added to top of
>> file. The comment about getting a syntax error on output when there
>> are too many input columns and the last is empty still holds, but
>> that's really an input error so I'll take the blame. Sorry for the
>> false alarm
>>
>> Jonathan
>>
>> # headings found:  3 ['head1', 'head2', 'head3']
>> []
>>    :head1 "x11";
>>    :head2 "x12";
>>    :head3 "x13".
>> []
>>    :head1 "x21";
>>    :head3 "x23".
>> #  3 headings but 2 values
>> []
>>    :head1 "x31";
>>    :head2 "x32".
>> []
>>    :head1 "x41";
>>    :head2 "x42";
>> #  3 headings but 4 values
>> []
>>    :head1 "x51";
>>    :head2 "x52";
>>    :column3 "x54".
>> #  3 headings but 4 values
>> []
>>    :head1 "x61";
>>    :head2 "x62";
>>    :head3 "x63";
>>    :column3 "x64".
>> # Total number of records: 6
>>
>>
>>
>> On Wed, Aug 11, 2010 at 10:56 AM, Jonathan Rees <[hidden email]> wrote:
>>> Thanks for the quick fix. Now I'm having trouble with files that have
>>> empty columns (two tabs in a row).  It would be nice if the script
>>> interpreted that situation as meaning that the value is the empty
>>> string; or else as there being no value at all... anything that treats
>>> tabs as significant and keeps things aligned the way Excel would.
>>>
>>> (Also, if there is an extra column with an empty value, i.e. extra tab
>>> char at end of line, you get syntactically incorrect output.)
>>>
>>> Thanks
>>> Jonathan
>>>
>>> head1   head2   head3
>>> x11     x12     x13
>>> x21             x23
>>> x31     x32
>>> x41     x42
>>> x51     x52             x54
>>> x61     x62     x63     x64
>>>
>>> On Mon, Aug 2, 2010 at 6:04 PM, Tim Berners-Lee <[hidden email]> wrote:
>>>> SIgh.  A random and unnecessary departure of turtle from N3 IMHO.
>>>>
>>>> Changed the code anyway.  Almost 10 years on
>>>>
>>>> Tim
>>>>
>>>>
>>>> total revisions: 6;     selected revisions: 6
>>>> description:
>>>> ----------------------------
>>>> revision 1.6
>>>> date: 2010/08/02 22:01:22;  author: timbl;  state: Exp;  lines: +31 -8
>>>> See mail from JAR to public-cwm-talk mid:[hidden email]
>>>> ----------------------------
>>>> revision 1.5
>>>> date: 2007/10/18 20:55:41;  author: timbl;  state: Exp;  lines: +38 -17
>>>> doublequote escaping
>>>> ----------------------------
>>>> revision 1.4
>>>> date: 2007/06/26 02:36:15;  author: syosi;  state: Exp;  lines: +55 -55
>>>> fix tabs
>>>> ----------------------------
>>>> revision 1.3
>>>> date: 2000/11/10 23:04:18;  author: timbl;  state: Exp;  lines: +1 -1
>>>> Starting basis for qualifiers
>>>> ----------------------------
>>>> revision 1.2
>>>> date: 2000/11/02 20:48:45;  author: timbl;  state: Exp;  lines: +10 -0
>>>> first schema hack
>>>> ----------------------------
>>>> revision 1.1
>>>> date: 2000/10/31 15:56:37;  author: timbl;  state: Exp;
>>>> Hacked TabDelimted-windows format to n3 converter
>>>> =============================================================================
>>>>
>>>> On 2010-08 -02, at 16:37, Jonathan Rees wrote:
>>>>
>>>>> I'm trying to use http://www.w3.org/2000/10/swap/tab2n3.py
>>>>> and have discovered the hard way that it doesn't generate Turtle...
>>>>> not that it claims to, but I felt like complaining.
>>>>>
>>>>> Apparently the Turtle grammar requires a predicate and object
>>>>> following each subject, and in the output of tab2n3 there are subjects
>>>>> with no predicate and object. E.g.
>>>>>
>>>>> # headings found:  3 ['strain_id', 'strain_name', 'strain_type']
>>>>> [
>>>>>    :strain_id "MGI:2164743";
>>>>>    :strain_name "(C57BL/6JEiJ x C3Sn.BLiA-Pde6b<+>)F1";
>>>>>    :strain_type "Not Specified";
>>>>> ] .
>>>>>
>>>>> Here's what the Turtle submission says:
>>>>>
>>>>> [6]   triples ::=     subject predicateObjectList
>>>>> [7]   predicateObjectList     ::=     verb objectList ( ';' verb objectList )* ( ';')?
>>>>>
>>>>> To generate correct Turtle is possible but awkward. You could say
>>>>> tab2n3 is working as designed, and was never meant to generate Turtle,
>>>>> only N3, but... wouldn't it be nice?
>>>>>
>>>>> Jonathan
>>>>>
>>>>
>>>>
>>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: tab2rdf.py doesn't generate Turtle

Tim Berners-Lee
Ooops!

Added W3C license. (like MIT license) in
http://www.w3.org/2000/10/swap/tab2n3.py

Do you have some more tests which I could add  to
http://www.w3.org/2000/10/swap/test/csv/ ?

(I have two there!)

Tim


On 2010-09 -07, at 15:16, Jonathan Rees wrote:

> Also if the last column(s) contain only spaces you get syntactically
> incorrect output (stanza that ends in ; instead of .).
>
> I now have my own version that works, but I can't give it to you
> because you haven't given me a license to do so. (sorry, that's a
> half-joke.) Any chance you can affix a license to the source file, or
> put one in some other prominent location? I can't use this code in the
> long run unless it's clear that I can redistribute it.
>
> Best
> Jonathan
>
> On Wed, Aug 11, 2010 at 11:20 AM, Jonathan Rees <[hidden email]> wrote:
>> Ah, there still is a bug, when a line with correct number of column
>> ends in *two* tab characters / empty columns... (this is a real life
>> example)
>>
>> Input:  (note 3rd line ends with two tab characters)
>>
>> head1   head2   head3   head4
>> x11     x12     x13     x13
>> x21     x22
>>
>> Output:
>>
>> # headings found:  4 ['head1', 'head2', 'head3', 'head4']
>> []
>>    :head1 "x11";
>>    :head2 "x12";
>>    :head3 "x13";
>>    :head4 "x13".
>> #  4 headings but 3 values
>> []
>>    :head1 "x21";
>>    :head2 "x22";
>> # Total number of records: 2
>>
>>
>> On Wed, Aug 11, 2010 at 11:07 AM, Jonathan Rees <[hidden email]> wrote:
>>> Ah, I think this is my problem... too few headings added to top of
>>> file. The comment about getting a syntax error on output when there
>>> are too many input columns and the last is empty still holds, but
>>> that's really an input error so I'll take the blame. Sorry for the
>>> false alarm
>>>
>>> Jonathan
>>>
>>> # headings found:  3 ['head1', 'head2', 'head3']
>>> []
>>>    :head1 "x11";
>>>    :head2 "x12";
>>>    :head3 "x13".
>>> []
>>>    :head1 "x21";
>>>    :head3 "x23".
>>> #  3 headings but 2 values
>>> []
>>>    :head1 "x31";
>>>    :head2 "x32".
>>> []
>>>    :head1 "x41";
>>>    :head2 "x42";
>>> #  3 headings but 4 values
>>> []
>>>    :head1 "x51";
>>>    :head2 "x52";
>>>    :column3 "x54".
>>> #  3 headings but 4 values
>>> []
>>>    :head1 "x61";
>>>    :head2 "x62";
>>>    :head3 "x63";
>>>    :column3 "x64".
>>> # Total number of records: 6
>>>
>>>
>>>
>>> On Wed, Aug 11, 2010 at 10:56 AM, Jonathan Rees <[hidden email]> wrote:
>>>> Thanks for the quick fix. Now I'm having trouble with files that have
>>>> empty columns (two tabs in a row).  It would be nice if the script
>>>> interpreted that situation as meaning that the value is the empty
>>>> string; or else as there being no value at all... anything that treats
>>>> tabs as significant and keeps things aligned the way Excel would.
>>>>
>>>> (Also, if there is an extra column with an empty value, i.e. extra tab
>>>> char at end of line, you get syntactically incorrect output.)
>>>>
>>>> Thanks
>>>> Jonathan
>>>>
>>>> head1   head2   head3
>>>> x11     x12     x13
>>>> x21             x23
>>>> x31     x32
>>>> x41     x42
>>>> x51     x52             x54
>>>> x61     x62     x63     x64
>>>>
>>>> On Mon, Aug 2, 2010 at 6:04 PM, Tim Berners-Lee <[hidden email]> wrote:
>>>>> SIgh.  A random and unnecessary departure of turtle from N3 IMHO.
>>>>>
>>>>> Changed the code anyway.  Almost 10 years on
>>>>>
>>>>> Tim
>>>>>
>>>>>
>>>>> total revisions: 6;     selected revisions: 6
>>>>> description:
>>>>> ----------------------------
>>>>> revision 1.6
>>>>> date: 2010/08/02 22:01:22;  author: timbl;  state: Exp;  lines: +31 -8
>>>>> See mail from JAR to public-cwm-talk mid:[hidden email]
>>>>> ----------------------------
>>>>> revision 1.5
>>>>> date: 2007/10/18 20:55:41;  author: timbl;  state: Exp;  lines: +38 -17
>>>>> doublequote escaping
>>>>> ----------------------------
>>>>> revision 1.4
>>>>> date: 2007/06/26 02:36:15;  author: syosi;  state: Exp;  lines: +55 -55
>>>>> fix tabs
>>>>> ----------------------------
>>>>> revision 1.3
>>>>> date: 2000/11/10 23:04:18;  author: timbl;  state: Exp;  lines: +1 -1
>>>>> Starting basis for qualifiers
>>>>> ----------------------------
>>>>> revision 1.2
>>>>> date: 2000/11/02 20:48:45;  author: timbl;  state: Exp;  lines: +10 -0
>>>>> first schema hack
>>>>> ----------------------------
>>>>> revision 1.1
>>>>> date: 2000/10/31 15:56:37;  author: timbl;  state: Exp;
>>>>> Hacked TabDelimted-windows format to n3 converter
>>>>> =============================================================================
>>>>>
>>>>> On 2010-08 -02, at 16:37, Jonathan Rees wrote:
>>>>>
>>>>>> I'm trying to use http://www.w3.org/2000/10/swap/tab2n3.py
>>>>>> and have discovered the hard way that it doesn't generate Turtle...
>>>>>> not that it claims to, but I felt like complaining.
>>>>>>
>>>>>> Apparently the Turtle grammar requires a predicate and object
>>>>>> following each subject, and in the output of tab2n3 there are subjects
>>>>>> with no predicate and object. E.g.
>>>>>>
>>>>>> # headings found:  3 ['strain_id', 'strain_name', 'strain_type']
>>>>>> [
>>>>>>    :strain_id "MGI:2164743";
>>>>>>    :strain_name "(C57BL/6JEiJ x C3Sn.BLiA-Pde6b<+>)F1";
>>>>>>    :strain_type "Not Specified";
>>>>>> ] .
>>>>>>
>>>>>> Here's what the Turtle submission says:
>>>>>>
>>>>>> [6]   triples ::=     subject predicateObjectList
>>>>>> [7]   predicateObjectList     ::=     verb objectList ( ';' verb objectList )* ( ';')?
>>>>>>
>>>>>> To generate correct Turtle is possible but awkward. You could say
>>>>>> tab2n3 is working as designed, and was never meant to generate Turtle,
>>>>>> only N3, but... wouldn't it be nice?
>>>>>>
>>>>>> Jonathan
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>