
    01i}                        S r SSKJr  SSKrSSK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Jr  SSKJrJr  SSKJr  SSKJrJrJrJr   SSKrS	rS/r  " S S\5      r!g! \ a    SrS
r Nf = f)z~
HextuplesSerializer RDF graph serializer for RDFLib.
See <https://github.com/ontola/hextuples> for details about the format.
    )annotationsN)IOAnyCallableListOptionalTypeUnioncast)DATASET_DEFAULT_GRAPH_IDConjunctiveGraphDatasetGraph)RDFXSD)
Serializer)BNodeIdentifiedNodeLiteralURIRefTFHextuplesSerializerc                     ^  \ rS rSr% SrS\S'   S\S'   SU 4S jjrSS jr  S         SS	 jjrSS
 jr	S r
SS jrSrU =r$ )r      z+
Serializes RDF graphs to NTriples format.
z"List[Union[Graph, IdentifiedNode]]contextsr   dumpsc                T  > [         (       a  [        R                  " S5      U l        [        R                  " S5      U l        [        R                  " S5      U l        [        R                  " S[        R                  R                  S5      -   S-   5      U l	        [        R                  " S[        R                  R                  S5      -   S-   5      U l        OASU l        SU l        SU l        [        R                   U l	        [        R                   U l        [        X ];  U 5      $ )	Ns	   "localId"s
   "globalId"s   ""   "utf-8localIdglobalId )_HAS_ORJSONorjsonFragmentstr_local_idstr_global_idemptyr   
langStringencodelang_strr   string
xsd_stringsuper__new__)clsstore	__class__s     Y/home/james-whalen/.local/lib/python3.13/site-packages/rdflib/plugins/serializers/hext.pyr.   HextuplesSerializer.__new__$   s    ;060MC171OC)/)?CI,2OOs~~,,W55<-CL /5ooszz((11D8/CN  )C *CCI!nn-CL #

|CNS&s++    c                   U   U   [        U[        [        45      (       a  [        U[        5      (       a  [        O[        U l        [	        UR                  5       5      U l        UR                  (       a7  UR                  U l        U R
                  R                  UR                  5        O"S U l        O[        U l        U/U l        S U l        [        R                  " X5        g N)
isinstancer   r   
graph_typelistr   default_contextappendr   r   __init__)selfr0   s     r2   r<   HextuplesSerializer.__init__7   s    eg'7899%eW55;K O !!12DM$$','<'<$$$U%:%:;'+$#DO"GDM#'D D(r4   c                |   Ub  [         R                  " S5        US;  a  [         R                  " SU S35        U R                  R                  SL a  [	        S5      eU R
                   H  nU H  n[        [        [        [        4   U R                  [        L a  U R                  OF[        (       a+  [        R                  " SU R!                  U5      -   S-   5      OU R!                  U5      5      nU R#                  Xg5      nUc  M  UR%                  [        (       a  UOUR'                  5       5        M     M     g )NzIbase has no meaning for Hextuples serialization. I will ignore this valueNr   z8Hextuples files are always utf-8 encoded. I was passed: z*, but I'm still going to use utf-8 anyway!Tz>Hextuple serialization can't (yet) handle formula-aware stores")warningswarnr0   formula_aware	Exceptionr   r   r
   strbytesr8   r   r'   r"   r#   r$   _context_str	_hex_linewriter)   )	r=   streambaseencodingkwargscontexttriplecontext_strhls	            r2   	serializeHextuplesSerializer.serializeK   s    MM+
 ?*MM!!)
 +;; ::##t+P 
 }}G! ##u*%  ??e3 

  +{ #OOC$2C2CG2L,Ls,RS!%!2!27!; ^^F8>LL{{		D# " %r4   c                t   [        US   [        [        45      (       Ga  [        US   [        5      (       a  US   OU R	                  US   5      n[        US   [        5      (       a  U R
                  nO[        US   [        5      (       a  U R                  nOd[        US   [        5      (       aK  US   R                  b  US   R                   nO+US   R                  b  U R                  nOU R                  nOg [        US   [        5      (       a.  US   R                  b  US   R                   nOU R                  nOU R                  nU R	                  US   5      US   UUUU/n[        (       a%  [        R                  " U[        R                  S9nU$ [         R                  " U5      S-   nU$ g )Nr         )option
)r7   r   r   r   
_iri_or_bnr&   r%   datatypelanguager*   r,   r'   r"   r#   r   OPT_APPEND_NEWLINEjson)r=   rP   rQ   valuer[   r\   	line_listoutlines           r2   rI   HextuplesSerializer._hex_liney   s   1I
 
 fQi11 q	__VAY/  &)V,,--F1Iu--,,F1Iw//!9%%1"()"4"4!5Hay))5#'==#'?? &)W--!9%%1"()"4"4!5H#zzH::q	*q	I { ,,y9R9RS N **Y/$6Nr4   c                    [        U[        5      (       a  U $ [        U[        5      (       a  UR                  5        $ g r6   )r7   r   r   n3)r=   i_s     r2   rZ   HextuplesSerializer._iri_or_bn   s4    b&!!TNE""eegYr4   c                   [        U[        5      (       a  UR                  OUnU[        :X  a  gU R                  bh  [        U R                  [
        5      (       a  X R                  :X  a  g[        U R                  [        5      (       a  X R                  R                  :X  a  gU R                  [        L a  g[        U[        5      (       a  U $ UR                  5       $ )Nr!   )	r7   r   
identifierr   r:   r   r8   r   rd   )r=   rO   context_identifiers      r2   rH    HextuplesSerializer._context_str   s    ",We"<"<G' 	 !99+4//@@&*>*>>4//77&*>*>*I*II??e# ,f55 ""	
 $&&(	
r4   )r   r:   r8   )r0   z'Union[Graph, Dataset, ConjunctiveGraph]r@   )
rK   z	IO[bytes]rL   Optional[str]rM   rk   rN   r   returnNone)rQ   zUnion[bytes, str])rO   zUnion[Graph, IdentifiedNode]rl   rF   )__name__
__module____qualname____firstlineno____doc____annotations__r.   r<   rS   rI   rZ   rH   __static_attributes____classcell__)r1   s   @r2   r   r      sx     10O,&). #")	,E,E ,E  	,E
 ,E 
,E\4l
 
r4   )"rr   
__future__r   r^   rB   typingr   r   r   r   r   r	   r
   r   rdflib.graphr   r   r   r   rdflib.namespacer   r   rdflib.serializerr   rdflib.termr   r   r   r   r#   r"   ImportError__all__r    r4   r2   <module>r      sp   
 #   G G G S S % ( > >K
 !
!s
* s
  FKs   A! !
A.-A.