
    Pi;                        d Z ddlmZ ddlZddlZddlmZ ddlmZm	Z	m
Z
mZmZmZmZ ddlmZmZmZ ddlmZmZ ddlmZmZmZ 	 ddlZd	Zn# e$ r dZd
ZY nw xY werddlmZ dgZ G d de          ZdS )z
This is a rdflib plugin for parsing Hextuple files, which are Newline-Delimited JSON
(ndjson) files, into Conjunctive. The store that backs the graph *must* be able to
handle contexts, i.e. multiple graphs.
    )annotationsN)TextIOWrapper)TYPE_CHECKINGAnyBinaryIOListOptionalTextIOUnion)ConjunctiveGraphDatasetGraph)InputSourceParser)BNodeLiteralURIRefTF)BufferedReaderHextuplesParserc                  4     e Zd ZdZ fdZdd	ZdddZ xZS )r   z(
    An RDFLib parser for Hextuples
    c                r    t          t          |                                            d | _        d| _        d S )NF)superr   __init__default_context	skolemize)self	__class__s    o/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/rdflib/plugins/parsers/hext.pyr   zHextuplesParser.__init__%   s2    ot$$--///04    ds Union[Dataset, ConjunctiveGraph]tupList[Union[str, None]]returnNonec                   |d         |d         |d         |d         t          d|           |d                             d          rFt          |d                             dd          	          }| j        r|                                }nt          |d                   }t          |d                   }|d         d
k    rt          |d                   }n|d         dk    rFt          |d                             dd          	          }| j        r|                                }nP|d         +t          |d         t          |d                             }nt          |d         |d                   }|d         |d                             d          r)t          |d                             dd                    nt          |d                   }t          |t                    r| j        r|                                }|                    |          	                    |||f           d S | j
        | j
        	                    |||f           d S t          d          )Nr            z;subject, predicate, value, datatype cannot be None. Given: _z_: )valueglobalIdlocalId   )datatype)lang   zNo context to parse into!)
ValueError
startswithr   replacer   r   r   
isinstanceget_contextaddr   	Exception)r   r    r"   spocs          r   _parse_hextuplezHextuplesParser._parse_hextuple*   sR    q6>SV^s1v~QScSS   q6S!! 	CFNN444555A~ "KKMMs1vA 3q6NN q6Zs1vAAVy  CFNN444555A~ "KKMM1v~CFVCF^^<<<CFQ000 q6 q6$$T**$c!fnnT2..///CF^^ 
 !U## " "KKMMNN1!!1a),,,,,!- $$aAY/////7888r   Fsourcer   graphr   r   boolkwargsr   c                   |                     d          dvr+t          j        d|                     d           d           |j        j        s
J d            || _        t          |j        d          }|j        }t          |t          t          f          r|j        | _        nF|j
        8|j
        |j
        k    r|| _        n'|                    |j
                  | _        n|| _        | j        |ur!| j        |_        |                    |           	 |                                }n# t          t          f$ r d }Y nw xY w	 |                                }n# t          t          f$ r d }Y nw xY w|!|t#          dt%          |                     t&          r||J t(          r2||}	n t&          rt          |t*                    sJ |}	t,          j        }
n@||}	n/t&          rt          |t0                    sJ t+          |d	
          }	t2          j        }
|	D ]h}t5          |          dk    s|                                r* |
|          }d |D             }|d         dk    rd|d<   |                     ||           id S )Nencoding)Nutf-8z8Hextuples files are always utf-8 encoded, I was passed: z", but I'm still going to use utf-8z-Hextuples Parser needs a context-aware store!T)storedefault_unionzLSource does not have a character stream or a byte stream and cannot be used rE   )rD   r   c                "    g | ]}|d k    r|ndS )r+   N ).0xs     r   
<listcomp>z)HextuplesParser.parse.<locals>.<listcomp>   s$    GGG177aaGGGr   r(   r+   )getwarningswarnrF   context_awarer   r   r   r6   r   
identifierr7   remove_graphgetCharacterStreamAttributeErrorLookupErrorgetByteStreamr3   typer   _HAS_ORJSONr   orjsonloadsr   jsonlenisspacer>   )r   r?   r@   r   rB   r    
ds_defaulttext_streambinary_stream
use_streamrZ   lineraw_linehex_tuple_lines                 r   parsezHextuplesParser.parse`   s   ::j!!88M3!'J!7!73 3 3   K%	; 	;:	; 	;% #5;d;;;'
eg'7899 		.#(#8D  ):#888',$$')~~e6F'G'G$$ $.D z11!%!5BOOJ'''	,2,E,E,G,GKK, 	 	 	KKK		!060D0D0F0FMM, 	! 	! 	! MMM	! =#8m_cdj_k_kmm    	H*m.G.GG 	(*

  B%k=AAAAA(
LEE&(

  E%m^DDDDD*=7KKK
JE 	5 	5D4yyA~~~  #(%++HGGhGGGN{b  $&q!  ^4444	5 	5s$   D, ,EEE E10E1)r    r!   r"   r#   r$   r%   )F)
r?   r   r@   r   r   rA   rB   r   r$   r%   )__name__
__module____qualname____doc__r   r>   re   __classcell__)r   s   @r   r   r       sy             
39 39 39 39lL5 L5 L5 L5 L5 L5 L5 L5 L5r   ) ri   
__future__r   r[   rN   ior   typingr   r   r   r   r	   r
   r   rdflib.graphr   r   r   rdflib.parserr   r   rdflib.termr   r   r   rY   rX   ImportErrorr   __all__r   rI   r   r   <module>rs      sq    # " " " " "         N N N N N N N N N N N N N N N N N N 9 9 9 9 9 9 9 9 9 9 - - - - - - - - . . . . . . . . . .MMMKK   FKKK  "!!!!!!
L5 L5 L5 L5 L5f L5 L5 L5 L5 L5s   A 	AA