
    01i                       S r SSKJr  SSKrSSKrSSKJrJr  SSKJrJ	r	J
r
JrJrJrJr  SSKJrJrJrJrJrJrJrJr  SSKJrJrJr  SSKJrJr  SS	KJ r J!r!J"r"  SS
KJ
r#  \RH                  " S5        \\-  r%\" S\" S\%5      \" \" S\RL                  " 5       5      \
" S5      RM                  5       \" S\5      RM                  5       -   -  5      -   5      r'\(" 5       r)\" \	" 5       5      \" S5      -  r*\*RW                  S 5        \'\-  \-  \-  \-  r,\*\,-  \" \" S5      \*\,-  -   5      -   r-\-R]                  5         \\" \" S5      \-   5      -   r/\/R]                  5          " S S\5      r0g)z
This implements the Tab Separated SPARQL Result Format

It is implemented with pyparsing, reusing the elements from the SPARQL Parser
    )annotationsN)IOUnion)
FollowedByLineEndLiteralOptionalParserElementSuppress
ZeroOrMore)BLANK_NODE_LABELIRIREFLANGTAGSTRING_LITERAL1STRING_LITERAL2BooleanLiteralNumericLiteralVar)Comp	CompValueParam)ResultResultParser)BNode
IdentifierURIRef)r   z 
literalstringlangz^^datatype	c                    [         $ N)
NONE_VALUE)xs    b/home/james-whalen/.local/lib/python3.13/site-packages/rdflib/plugins/sparql/results/tsvresults.py<lambda>r'   8   s        c                  8    \ rS rSrSrSSS jjr    S	S jrSrg)
TSVResultParserC   z/Parses SPARQL TSV results into a Result object.Nc                f   [        UR                  S5      [        5      (       a  [        R                  " S5      " U5      n[        S5      nUR                  5       n[        [        R                  UR                  5       SS95      Ul        / Ul         UR                  5       nU(       d   U$ UR                  S5      nUS:X  a  M4  [        R                  USS9n0 n[        UR                  U5       H  u  pU R                  U	5      n
U
c  M  XU'   M!     UR                  R!                  U5        M  )Nr   zutf-8SELECTT)	parse_all
 )
isinstancereadbytescodecs	getreaderr   readlinelistHEADERparse_stringstripvarsbindingsROWzipconvertTermappend)selfsourcecontent_typerheaderlinerowthis_row_dictvarval_readvals              r&   parseTSVResultParser.parseG   s   fkk!ne,, %%g.v6F8"f))&,,.D)IJ
??$D  ::d#Drz""44"8CM!$QVVS!1&&x0;%(c" "2 JJm,# r(   c                D   U[         L a  g [        U[        5      (       aH  UR                  S:X  a)  [	        UR
                  UR                  UR                  S9$ [        SU< 35      e[        U[        [        [        45      (       a  U$ [        S[        U5       S35      e)Nr   )r   r    z I dont know how to handle this: zUnexpected type z found in TSV result)r$   r1   r   name
RDFLiteralr   r   r    	Exceptionr   r   
ValueErrortype)rA   ts     r&   r?   TSVResultParser.convertTermg   s     
?a##vv"!!((!**MM KLLJv677H/Qy8LMNNr(    r#   )rB   r   rC   ztyping.Optional[str]returnr   )rT   z3Union[object, RDFLiteral, BNode, CompValue, URIRef]rW   ztyping.Optional[Identifier])__name__
__module____qualname____firstlineno____doc__rL   r?   __static_attributes__rV   r(   r&   r*   r*   C   s#    9@ODO	$Or(   r*   )1r\   
__future__r   r4   typingr   r   	pyparsingr   r   r   r	   r
   r   r   rdflib.plugins.sparql.parserr   r   r   r   r   r   r   r   !rdflib.plugins.sparql.parserutilsr   r   r   rdflib.queryr   r   rdflib.termr   r   r   rP   set_default_whitespace_charsStringleave_whitespace
RDFLITERALobjectr$   EMPTYset_parse_actionTERMr=   parse_with_tabsr8   r*   rV   r(   r&   <module>rn      so   #     	 	 	 E D - 1 1 -  * *5 1 
?	*	(Ffg..01
$-
(
(
*

F
#
4
4
67	7
 X
79
4 00   + ,F-->Ot|z(4.EDL"ABB    	z(4.3./	/    1Ol 1Or(   