
    Pi(<                    V   d Z ddlmZ ddlZddl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 ddlmZmZmZmZmZ d	d
lmZ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gZ(ej)        ej*        ej+        ej,        hZ- G d de          Z.	 	 	 	 	 	 	 ddZ/ G d d          Z0dS )a  
This serialiser will output an RDF Graph as a JSON-LD formatted document. See http://json-ld.org/

Example:
    ```python
    >>> from rdflib import Graph
    >>> testrdf = '''
    ... @prefix dc: <http://purl.org/dc/terms/> .
    ... <http://example.org/about>
    ...     dc:title "Someone's Homepage"@en .
    ... '''

    >>> g = Graph().parse(data=testrdf, format='n3')

    >>> print(g.serialize(format='json-ld', indent=2))
    [
      {
        "@id": "http://example.org/about",
        "http://purl.org/dc/terms/title": [
          {
            "@language": "en",
            "@value": "Someone's Homepage"
          }
        ]
      }
    ]

    ```
    )annotationsN)IOAnyDictListOptional)DATASET_DEFAULT_GRAPH_IDGraph_ObjectType)RDFXSD)
Serializer)BNodeIdentifiedNode
IdentifierLiteralURIRef   )UNDEFContext)CONTEXTGRAPHIDLANGLISTSETVOCAB)_HAS_ORJSONjsonorjsonJsonLDSerializerfrom_rdfc                  2     e Zd ZdZd fdZ	 	 dddZ xZS )r!   zJSON-LD RDF graph serializer.storer
   c                X    t          t          |                               |           d S N)superr!   __init__)selfr$   	__class__s     u/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/rdflib/plugins/serializers/jsonld.pyr(   zJsonLDSerializer.__init__<   s(    %%..u55555    Nstream	IO[bytes]baseOptional[str]encodingkwargsr   returnNonec                L   |pd}|dvrt          j        d|            |                    d          }|                    dd          f}|                    dd          }|                    dd          }|                    d	d
          }	|                    dd          }
|                    dd          }|                    dd          }t          | j        |||||          }t
          rqt          j        }|	|t          j        z  }|r|t          j	        z  }|rt          j        d           t          j
        ||          }|                    |           d S t          j
        ||	|
||          }|                    |                    |d                     d S )Nutf-8)r6   zutf-16z7JSON should be encoded as unicode. Given encoding was: contextuse_native_typesFuse_rdf_typeauto_compactindentr   
separators),z: 	sort_keysTensure_ascii)r:   z#Cannot use ensure_ascii with orjson)option)r;   r<   r>   r?   replace)warningswarngetr"   r$   r   r    OPT_NON_STR_KEYSOPT_INDENT_2OPT_SORT_KEYSdumpswriter   encode)r)   r-   r/   r1   r2   context_datar8   r9   r:   r;   r<   r>   r?   objr@   
data_bytesdatas                    r+   	serializezJsonLDSerializer.serialize?   s    &w...MWXWW   zz),,"JJ'95AACzz.%88zz.%88Ha((ZZk::
JJ{D11	zz.%88J%
 
 
  	; 1F!&-- /&.. ECDDDc&999JLL$$$$$:%#)  D LLXy99:::::r,   )r$   r
   NN)
r-   r.   r/   r0   r1   r0   r2   r   r3   r4   )__name__
__module____qualname____doc__r(   rO   __classcell__)r*   s   @r+   r!   r!   9   sd        ''6 6 6 6 6 6 #"&	2; 2; 2; 2; 2; 2; 2; 2; 2;r,   Fc                   |s-|r+t          d |                                 D                       }t          |t                    r|}|                                }nt          ||          }t          |||          }	|	                    |           }
|	j        j        r;t          |
t                    r|
                    t                    |
i}
||
t          <   |
S )Nc              3  h   K   | ]-\  }}|r&t          |          d k    |t          |          fV  .dS )z$http://www.w3.org/XML/1998/namespaceN)str).0pfxnss      r+   	<genexpr>zfrom_rdf.<locals>.<genexpr>   sX       
 
b
 2ww"HHH #b''NHHHH
 
r,   )r/   )dict
namespaces
isinstancer   to_dict	Converterconvertr7   activelistget_keyr   r   )graphrK   r/   r8   r9   r:   	startnodeindexr7   	converterresults              r+   r"   r"   t   s      
L 
 
 
"--//
 
 
 
 
 ,(( 3((,T222'#3\BBIu%%F 'fd## 	6ooe,,f5F&wMr,   c                  N    e Zd ZddZdd	Zdd
ZddZddZd dZd!dZ	d"dZ
dS )#ra   r7   r   r8   boolr9   c                >    || _         |j        p|| _        || _        d S r&   )r7   rc   r8   r9   )r)   r7   r8   r9   s       r+   r(   zConverter.__init__   s'     ' B2B(r,   rf   r
   c                   |j         rt          |                                          }t          d |D                       }|r|j        j        t          k    r|j        }nt                      }|g}|j        }|D ]<}||v rt          |j        t                    r|
                    |           7||z  }=n
|g}|j        }| j        }g }	|D ]}i }
d }t          |j        t                    r/|j        |k    r$|                    |j                  }||
|j        <   |                     |          }|s/t          |          dk    r|
                    |d                    n|s||
|j        <   |	rS|	d                             |                    t(                              |k    r|	d                             |
           |	
                    |
           t          |          dk    rYt          |	          dk    rF| j        j        s:|	d         }|                    |j                  }t          |          dk    r|r|}	n't          |	          dk    r| j        j        r|	d         }	|	S )Nc              3  6   K   | ]}|j         t          k    V  d S r&   )
identifierr	   )rY   cs     r+   r\   z$Converter.convert.<locals>.<genexpr>   s;       ) )=> 88) ) ) ) ) )r,      r   )context_awarerd   contextsanydefault_contextrp   r	   r
   r_   r   appendr7   
shrink_iriid_key
from_graphlenupdate	graph_keyrD   re   r   rc   )r)   rf   all_contextshas_dataset_default_iddefault_graphgraphsdefault_graph_idgr7   objsrL   	graphnamenodesdefaultitemss                  r+   rb   zConverter.convert   s     	0 0 011L%( ) )BN) ) ) & &" '( )48PPP % 5 %#_F,7! ' ';;alF33 'MM!$$$$!Q&MM' WF$/, 	! 	!ACI!,// 4<#333 ' 2 21< @ @I*3C'OOA&&E /Uq

58$$$$ ).G%& !QGOOB$7$788IEEQs####C    v;;!D		Qt|7J1gGKK 122E7||q  U YY!^^ 3^7Dr,   c                X   i }t          |                                          D ]f}t          |t                    s8t          |t                    r:t          |                    d |                    s|                     |||           gt          |                                          S r&   )	setsubjectsr_   r   r   ru   process_subjectrd   values)r)   rf   nodemapss       r+   rz   zConverter.from_graph   s    "$U^^%%&& 	8 	8A!V$$ 81e$$8-0a1H1H-I-I8 $$UAw777GNN$$%%%r,   r   r   c           	     `   t          |t                    r| j                            |          }n,t          |t                    r|                                }nd }||v rd S i }||| j        j        <   |||<   |                    |          D ]\  }}|                     ||||||            |S r&   )	r_   r   r7   rx   r   n3ry   predicate_objectsadd_to_node)r)   rf   r   r   node_idnodepos           r+   r   zConverter.process_subject   s    a   	l--a00GG5!! 	ddffGG G g4$+T\ !++A.. 	< 	<DAq UAq!T7;;;;r,   r   r   r   s_nodeDict[str, Any]c                l     j         }t          |t                    rJ|j        rt	          |j                  nd }|j        }	|                    t	          |          ||	          nt                    |t          j	                  r	t          d gnd g}
|
D ]E}t          t          t          fD ]*}|                    t	          |          ||          r n+r nFd }|j         }rPj        }j        r                     |j                  }nKj        r |j        j        k    rt	          |          }n$|j        rj        |j        t	          |          }t          j        v r( fd                     |          D             }n0t(          j        v r|	r|                    |i           }|                    |	          }t	          |          }|st.          j        v r3t          |t0                    s|gx||	<   }|                    |           n|||	<   d S t.          j        v rd}n|                    |          }|j                            |          }|r|j        s|j        r|}sH|t          j        k    r8 j        s1t          |t:                    r|                    |          }|j        }|                     |          }|                    |          }|r.t          |t0                    s|g}|                    |           n|r|g}n|}|||<   d S )N)languagec                v    g | ]5}                     |j                  p                    |          6S  )type_coercetypeto_raw_value)rY   vrf   r   r   r)   terms     r+   
<listcomp>z)Converter.add_to_node.<locals>.<listcomp>1  sY         $$Q	22 ?((1g>>  r,   T) r7   r_   r   datatyperX   r   	find_termvaluer   firstr   r   r   r   rc   namer   r   	containerto_collectionr   
setdefaultrD   r   rd   rw   	to_symboltermsr9   r   type_keyr   )r)   rf   r   r   r   r   r   r7   r   r   
containersr   coercionr   use_setp_keyr   r   key_termr   s   ```   `            @r+   r   zConverter.add_to_node  s    ,a!! 	*+*>s1:$HzH$$SVVX$IIDD).Q	)B)BN$J'  	!#UE 2  H #,,SVVXyIID  E n$ )	)IEy ''4955 1:#>#>1vv! t}'<AS1vvt~%%        "//q99  
 ''H'))%448,,1vv +SDN22%fd33 <4:8;h&MM$''''&*E(O&& %%a((E}((//H X] h.@  )AMM$2CMa(( 0",,Q//D(<$$UAq'::D

5!! 	eT**  LL 	FEEEur,   coerce_typerX   c                   |t           k    rZt          |t                    r| j                            |          S t          |t
                    r|                                S |S |t          k    r/t          |t                    r| j                            |          S t          |t                    rt          |j                  |k    r|S d S r&   )r   r_   r   r7   rx   r   r   r   r   r   rX   r   )r)   r   r   s      r+   r   zConverter.type_coerce]  s    "!V$$ |..q111Au%% ttvvE!!jF&;&;!<))!,,,7## 	AJ;(F(FH4r,   r   c                     j         }                     |          }|. fd                     |          D             }|j        |iS t          |t                    ryd}                     |          }|rC|r1t          fd                    d |          D                       s|S |||j                 <   |j        |	                                iS t          |t                    r|j        |                    |          iS t          |t                    rƉ j        o|j        t          v }	|	r|                                }
nt#          |          }
|j        r8|	r j         j        r|
S |j        |                    |j                  |j        |
iS |j        r%|j        |j        k    r|j        |j        |j        |
iS |j        r|j        r|j        s	|j        |
iS |
S d S )Nc                @    g | ]}                     |          S r   )r   )rY   lorf   r   r   r)   s     r+   r   z*Converter.to_raw_value.<locals>.<listcomp>r  s=        !!%B88  r,   Fc              3  (   K   | ]}|k    |V  d S r&   r   )rY   s2r   s     r+   r\   z)Converter.to_raw_value.<locals>.<genexpr>}  s(      $U$UBRSTWWRWWWW$U$Ur,   )r7   r   list_keyr_   r   r   ru   r   ry   r   r   rx   r   r8   r   PLAIN_LITERAL_TYPEStoPythonrX   rc   r   r   	value_keyr   lang_key)r)   rf   r   r   r   r7   collembedonodenativer   s   ``` `      r+   r   zConverter.to_raw_valuel  sP    ,!!%++      ,,UA66  D $d++5!! "	  ((7;;E ; ;$U$U$U$U%..q2I2I$U$U$U!U!U ; L5:GE'.12NADDFF++6"" 	NG$6$6q$9$9::7## 	*Pqz=P/PF JJLLFFz  dl1 H$g&7&7
&C&C%q   
g.> > >(!*g6GKK^ w'7 
 )1--)	 	r,   l_c                *   |t           j        k    r"|                    |t           j                  sd S g }t	          |g          }|r|t           j        k    r|S t          |t                    rd S d\  }}|                    |          D ]R\  }}|s|t           j        k    r|}|s|t           j        k    r|}/|t           j	        k    s|t           j
        k    r d S S|                    |           |}||v rd S |                    |           |d S d S )NrP   )r   nilr   r   r   r_   r   r   restr   r   rw   add)	r)   rf   r   
list_nodeschainr   r   r   r   s	            r+   r   zConverter.to_collection  s9   ==R!;!;=424
RD		 	SW}}!!"f%% t$KE4//33    1  ciEE  !sx--DD#(]]a38mm44 '4e$$$BU{{tIIbMMM%  	 	 	 	 	r,   N)r7   r   r8   rl   r9   rl   )rf   r
   )rf   r
   r   r   )
rf   r
   r   r   r   r   r   r   r   r   )r   r   r   rX   )rf   r
   r   r   r   r   r   r   )rf   r
   r   r   )rQ   rR   rS   r(   rb   rz   r   r   r   r   r   r   r,   r+   ra   ra      s        ) ) ) )
A A A AF
& 
& 
& 
&   0U U U Un   - - - -^     r,   ra   )NNFFFNF)1rT   
__future__r   rB   typingr   r   r   r   r   rdflib.graphr	   r
   r   rdflib.namespacer   r   rdflib.serializerr   rdflib.termr   r   r   r   r   shared.jsonld.contextr   r   shared.jsonld.keysr   r   r   r   r   r   r   shared.jsonld.utilr   r   r    __all__booleanintegerdoublestringr   r!   r"   ra   r   r,   r+   <module>r      s   H # " " " " "  0 0 0 0 0 0 0 0 0 0 0 0 0 0 E E E E E E E E E E % % % % % % % % ( ( ( ( ( ( J J J J J J J J J J J J J J 2 2 2 2 2 2 2 2 K K K K K K K K K K K K K K K K K K : : : : : : : : : :z
* {CKSZH 8; 8; 8; 8; 8;z 8; 8; 8;z 	
" " " "JY Y Y Y Y Y Y Y Y Yr,   