
    PiY_                       d Z ddlmZ ddlZddlZddlmZmZmZm	Z	m
Z
mZmZ ddlZddlmZmZ ddlmZmZ ddlmZm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#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 d	dl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 ddgZ8 e  e9ej:                  e.e0          Z;dZ< G d dej=        j>                  Z?	 	 	 	 	 	 d$d%d!Z@ G d" d#          Z>dS )&aY  
This parser will interpret a JSON-LD document as an RDF Graph. See http://json-ld.org/

Example:
    ```python
    >>> from rdflib import Graph, URIRef, Literal
    >>> test_json = '''
    ... {
    ...     "@context": {
    ...         "dc": "http://purl.org/dc/terms/",
    ...         "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
    ...         "rdfs": "http://www.w3.org/2000/01/rdf-schema#"
    ...     },
    ...     "@id": "http://example.org/about",
    ...     "dc:title": {
    ...         "@language": "en",
    ...         "@value": "Someone's Homepage"
    ...     }
    ... }
    ... '''
    >>> g = Graph().parse(data=test_json, format='json-ld')
    >>> list(g) == [(URIRef('http://example.org/about'),
    ...     URIRef('http://purl.org/dc/terms/title'),
    ...     Literal("Someone's Homepage", lang='en'))]
    True

    ```
    )annotationsN)TYPE_CHECKINGAnyDictIterableListOptionalUnion)ConjunctiveGraphGraph)RDFXSD)InputSourceURLInputSource)BNodeIdentifiedNodeLiteralNodeURIRef   )UNDEFContextTerm)CONTEXTGRAPHIDINCLUDEDINDEXJSONLANGLISTNESTNONEREVSETTYPEVALUEVOCAB)_HAS_ORJSONVOCAB_DELIMScontext_from_urlinputsourcejsonorjsonsource_to_jsonJsonLDParserto_rdfTc                  6     e Zd Z fdZ	 	 	 	 	 	 	 dddZ xZS )r/   c                V    t          t          |                                            d S N)superr/   __init__)self	__class__s    q/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/rdflib/plugins/parsers/jsonld.pyr5   zJsonLDParser.__init__Q   s%    lD!!**,,,,,    皙?Futf-8Nsourcer   sinkr   versionfloat	skolemizeboolencodingOptional[str]basecontextLOptional[Union[List[Union[Dict[str, Any], str, None]], Dict[str, Any], str]]generalized_rdfOptional[bool]extract_all_scriptskwargsr   returnNonec
           
        |dvrt          j        d|z             |s=|                    |                                p|                                pd          }|}|sMt          |d          r=t          |d          r-t          rt          |t                    sJ t          |          }	 t          |          }n# t          $ r d}Y nw xY w	 t          |                                          j        }n# t          $ r d}Y nw xY wt          |||	          \  }}|t          ||          }|j        st#          |j        |j        	          }n|}t)          |||||t+          |          |
           dS )a  Parse JSON-LD from a source document.

        The source document can be JSON or HTML with embedded JSON script
        elements (type attribute = `application/ld+json`). To process as HTML
        `source.content_type` must be set to "text/html" or
        `application/xhtml+xml.

        Args:
            source: InputSource with JSON-formatted data (JSON or HTML)
            sink: Graph to receive the parsed triples
            version: parse as JSON-LD version, defaults to 1.1
            skolemize: whether to skolemize blank nodes, defaults to False
            encoding: character encoding of the JSON (should be "utf-8"
            base: JSON-LD [Base IRI](https://www.w3.org/TR/json-ld/#base-iri), defaults to None
            context: JSON-LD [Context](https://www.w3.org/TR/json-ld/#the-context), defaults to None
            generalized_rdf: parse as [Generalized RDF](https://www.w3.org/TR/json-ld/#relationship-to-rdf), defaults to False
            extract_all_scripts: if source is an HTML document then extract
                script element). This is ignored if `source.system_id` contains
                a fragment identifier, in which case only the script element with
                matching id attribute is extracted.
        )r;   zutf-16z9JSON should be encoded as unicode. Given encoding was: %s urllinksr:   NrD   )store
identifier)r@   )warningswarn
absolutizegetPublicIdgetSystemIdhasattrr   
isinstancer   r+   r?   
ValueErrorr   fragment	Exceptionr.   context_awarer   rR   rS   r0   rA   )r6   r<   r=   r>   r@   rB   rD   rE   rG   rI   rJ   context_datafragment_iddata	html_base	conj_sinks                   r8   parsezJsonLDParser.parseT   s   P ...M)+34  
  	W??6#5#5#7#7#U6;M;M;O;O#USUVVD 	? 6 6 	?767;S;S 	? :!&.999996v>>L	GnnGG 	 	 	GGG		 !3!3!5!566?KK 	 	 	KKK	 )>QRRi )$///D ! 	(tzdoVVVIII!!	
 	
 	
 	
 	
 	
s$   -B= =CC&C7 7DD)r:   Fr;   NNFF)r<   r   r=   r   r>   r?   r@   rA   rB   rC   rD   rC   rE   rF   rG   rH   rI   rH   rJ   r   rK   rL   )__name__
__module____qualname__r5   rd   __classcell__)r7   s   @r8   r/   r/   P   ss        - - - - - ")" */.3!W
 W
 W
 W
 W
 W
 W
 W
 W
r9   Fra   r   datasetr   rD   rC   r_   rF   r>   Optional[float]rG   rA   allow_lists_of_listsrH   r@   c                    t          ||          }|r|                    |           t          |||          }	|	                    | ||          S )N)rD   r>   )rG   rk   r@   )r   loadParserrd   )
ra   ri   rD   r_   r>   rG   rk   r@   rE   parsers
             r8   r0   r0      se    " 4111G #\"""'1  F
 <<gw///r9   c                      e Zd Z	 	 	 d:d;dZd<dZ	 d=d>dZd?dZ	 	 d@dAd!ZdBd%Ze	dCd(            Z
	 d=dDd+ZdEd.ZdFd0ZdGd3Ze	dHd6            ZedId9            ZdS )Jrn   FNrG   rA   rk   rH   r@   c                P    || _         || _        ||nt          | _        i | _        d S r3   )r@   rG   ALLOW_LISTS_OF_LISTSrk   invalid_uri_to_bnode)r6   rG   rk   r@   s       r8   r5   zParser.__init__   s>     #. $/ ! % 	!
 79!!!r9   ra   r   rE   r   ri   r   rK   c                j   d}t          |t                    r|}nht          |t                    rS|                    t                    }|r|                    ||j                   d}|}t          |t                    s|g}|j        r|                    d |j                   |j	        
                                D ]F\  }}|j        r:|j                            t                    r|                    ||j                   G|j        r|j        n|}	|D ]}
|                     ||	||
|           |	S )NFT)rZ   listdictgetr   rm   rD   vocabbindtermsitemsidendswithr*   r^   default_context_add_to_graph)r6   ra   rE   ri   
topcontext	resourceslocal_contextnametermgraphnodes              r8   rd   zParser.parse   sI   
dD!! 
	(IId## 	( HHW--M "]GL999!
Ii.. (&K	= 	.LLw}---!---// 	, 	,JD$w ,47++L99 ,T47+++ ,3+@M''g 	J 	JDwwjIIIIr9   r   r   r   Optional[Node]c                   t          |t                    r|                    |          rd S t          |v r<|s:|t                   }|r|                    |          }nt          |j                  }|                    |          }|                    |          }|-| 	                    ||          }|t          |          dk    r|}t          |t                    r|                     ||          }	n)t                      }	| j        r|	                                }	|	d S |d u }
|                                D ]\  }}|t          k    s||                    t"                    v r-|t$          k    s||                    t$                    v r8|                                D ]"\  }}|                     ||||	||d|
           #|                     ||||	|||
           |	S )NrQ   r   T)reverseno_id)r   )rZ   rv   	get_valuer   
subcontextr   doc_baseget_context_for_typeget_id_get_nested_idlenstr
_to_rdf_idr   r@   r{   get_keysr   r$   _key_to_graph)r6   ri   r   rE   r   r   r   id_val	nested_idsubjr   keyobjrkeyrobjs                  r8   r   zParser._add_to_graph   s    $%% 	):):4)@)@ 	Fd??:? MM 9!,,];;!w'7888 ..t44%%>++GT::I$Y!););"fc"" 	(??7F33DD77D~ (~~''<4 $

 	Y 	YHCg~~(8(8(<(<!<!<czzSG$4$4S$9$999"%))++ 
 
JD$&& $# ' 	 	 	 	
 ""7E7D#sRW"XXXXr9   Dict[str, Any]rC   c                $   |                                 D ]\  }}|j        dk    r||                    t                    v r|j                            |          }|r|j        Pt          |t                    r|n|g}|D ]}t          |t                    s|
                    |          }|sC|                    |j                            |                    }|                     ||          }t          |t                    r|c c S d S )Nr:   )r{   r>   r   r"   rz   rw   r|   rZ   ru   rv   r   get_context_for_termr   r   )	r6   rE   r   r   r   r   objsr   r   s	            r8   r   zParser._get_nested_id7  s.   

 	& 	&HC#%%#1A1A$1G1G*G*G}((-- DGO(d33>ss# 
& 
&C%c400 ! $^^C00F! F%,%A%A#M--c22& &
 "&!4!4Z!E!E!&#.. &%&	& 	&r9   r   r   r   r   r   r   r   rL   c	           
        t          |t                    r|}	n|g}	j                            |          }
|
r|
j        }|
j        t          k    r|                     |          g}	nTt          |
j	        v r| 
                    |	          g}	n/t          |t                    r|                     |
|          }	nd }t          ||fv rt          }
t          ||fv r^|j        r6|s4t"          rt          |t$                    sJ |                    |          }n|}|	D ]}|                     |||           d S t*          ||fv r|	D ]}|                     |||           d S t,          ||fv r|	D ]}|                     |||           d S j        dk    r|                    t2                    v rj                            |          }
|
r	|
j        d S t          |t                    r|n|g}|D ]~}t          |t                    s|                                D ]Q\  }}|                    t6                    v r"                    |          }|                     ||||||           Rd S |
r|
j        n                    |          }                    |
          dfd |	          }	|sd S |
r
|
j         r| }| !                    |          }|r4| j"        sd S tG          |          }| j$        r|$                                }ntK          |          }|	D ]Q}| &                    |||
|          }||r|'                    |||f           9|'                    |||f           Rd S )Nr:   nIterable[Any]rK   	List[Any]c                    g }| D ]i}t          |t                    r                    |          }||}t          |t                    r| |          z  }T|                    |           j|S r3   )rZ   rv   get_setru   append)r   	flattenedr   r   rE   flattens       r8   r   z%Parser._key_to_graph.<locals>.flatten  s    I & &c4(( #"??3//D'"c4(( -I  %%%%r9   )r   r   rK   r   )(rZ   ru   rz   rw   r|   typer   _to_typed_json_valuer!   	container_expand_nested_listrv   _parse_containerr&   	TYPE_TERMr   r^   r   r   get_contextr   r%   r   r>   r   r"   r{   r   r   r   expandr   r   _get_bnodeidrG   r   r@   r   
_to_objectadd)r6   ri   r   rE   r   r   r   r   r   	obj_nodesr   term_idsubgraphonoder   nkeynobjr   pred_uribidpredobj_noder   s      `                  @r8   r   zParser._key_to_graphJ  sR    c4   	III}  %% 		gGyD  !66s;;<		''!55i@@A		C&& F 11'4EE	GC>!!DS'N""$ !U !  A%g/?@@@@@"..t44 " F F""7HguEEEEF3.  " C C""7E7EBBBBFW~%%" C C""7E7EBBBBF?c!!cW-=-=d-C-C&C&C=$$S))D $S$//:33cUD 	U 	U!#t,, "%))++ U UJD$w//3333 !(!=!=c!B!BJ&&wz4tTTTTU F";477s(;(;..t44	 	 	 	 	 	 	 GI&&	 	F 	"DL 	"!kG )) 	$' ::D~ (~~''(##D! 	- 	-H//'5'4JJC{ -		3d+,,,,		4s+,,,,	- 	-r9   r   r   r   c                    t           j        v rtg }|                                D ][\  }}t          |t                    s|g}|                    t                    v r||z  }?|D ]}|                    ||f           \|S j        dk    }|r<t          j        v r.t          j        v r fd|                                D             S |r:t          j        v r,t          j        v rd |                                D             S |r%t          j        v rt          t          |i          gS |r.t          j        v r fd|                                D             S |r0t          j        v r" fd|                                D             S t          j        v rg }|                                D ]\  }	}
t          |
t                    s|
g}
|
D ]}|rj        r|	                    t                    vrpt          |t                    s	t          |i}|                    j        g           }t          |t                    s|g}|                    |	           ||j        <   |                    |           |S |gS )Nr:   c                    g | ]k\  }}|                     t                    v rt          t          |i          n3t	          |t                    rt          t
          |t          |i          n|lS  )r   r#   rv   r   rZ   r   .0korE   s      r8   
<listcomp>z+Parser._parse_container.<locals>.<listcomp>  s        Aq G,,T2222 %$$$4>q$4G4GNr1eQ/000Q	  r9   c                @    g | ]\  }}t          t          |i          S r   )rv   r   )r   r   r   s      r8   r   z+Parser._parse_container.<locals>.<listcomp>  s(    ===AD%$$===r9   c                    g | ]L\  }}t          |t                    r0|                    t                    vrt          t          |ifi |n|MS r   )rZ   rv   r   r#   r   r   s      r8   r   z+Parser._parse_container.<locals>.<listcomp>  sv        Aq "!T**/08H8H8N8N/N/N "a&&A&&&	  r9   c           	     >   g | ]\  }}t          |t          t          f          rv|                    t                    vrZ                    t          |t                    r.t          j        t          k    r	                    |          n|in||          n|S r   )
rZ   rv   r   r   r#   	_add_typer   r   r(   r   )r   r   r   rE   r6   r   s      r8   r   z+Parser._parse_container.<locals>.<listcomp>  s        Aq "!dC[11
 78w?O?OPT?U?U6U6U NN  *!S11#Rdi56H6H!2!2!2aPP!"     r9   )r    r   r{   rZ   ru   r   r#   r   r>   r   r   r   rv   r&   indexrw   )r6   rE   r   r   r   langvaluesvv11r   nodesr   s   ```         r8   r   zParser._parse_container  s    4>!!I #		 4 4f!&$// &$XF7++D1111'II# 4 4!((!T33334o$ ;	5DN**rT^/C/C     IIKK     1	Udn,,$.1H1H====== .	Udn,,%&&'' +	R4>))     IIKK     !	TT^++       IIKK   " dn$$I!iikk + +
U!%.. $"GE! 	+ 	+D 2tz 2c9I9I$9O9O.O.O)$55 .$&:D!%$*b!9!9)&$77 .&,XFc***+1TZ($$T****	+ ur9   r   r   c                    |                      |          pg }|rt          |t                    s|g}|                    |           ||t          <   |S r3   )get_typerZ   ru   r   r&   )rE   r   r   otypes       r8   r   zParser._add_type  sW      ##)r 	E400 	GEQ$r9   Optional[Term]inlistc                
   t          |t                    r"|\  }}|d S |rd|v rd S t          ||          S t          |t                    rA|                    |          }	|	(|r	| j        sd S |                     |||||	          }
|
r|
S nG|r|j        r|j        t          k    r| 	                    |          }n|d S |j        t          k    r2t          |t                    rt          |                    |          i}n|j        t          k    rGt          |t                    r2t          |                    |          p|                    |          i}nzt           |j        t"          |i}nd|d S t          |t$                    rt          |t&          j                  S |r|j        t,          ur|j        }n|j        }t          ||          S |                    |          }| r|                    |          pd }|                    |          }||                    t                    v r?| 	                    |          }|                    |          }|                    |          }|s%|                    t"                    |v s	t"          |v rR|d S |rd|v rd S t          ||          S |r$t          ||                    |                    S t          |          S |                     ||||          S )N )r   )datatype)rZ   tupler   rv   get_listrk   	_add_listr   r   r   r   r   resolver(   r   resolve_irir&   r'   r?   r   doublelanguager   get_languager   r   r   get_keyr   )r6   ri   r   rE   r   r   r   valuer   	node_listlistrefr   s               r8   r   zParser._to_object  s*    dE"" 	-KE4} t5t,,,,dD!! "	0((..I$ $"; F..%$	RR #"N  0	 09$$44T::DD\FY"__D#)>)>_ 5 56DDY%''JtS,A,A't 4 4 Q8K8KD8Q8QRDD $)UD9DD<FdE** >"4#*==== ,DM66=DD"+Dt$////##D))86 0 0 6 6>$!!$''w''----,,U33D''--H%%d++E 	E7??5))T11Ud]]}t &$;;Fu40000 &uw~~h/G/GHHHHu~~%%%gugtDDDr9   r   Optional[IdentifiedNode]c                   |                      |          }|r,t          |          }| j        r|                                S |S |                    |          }| j        sd|vrd S t          |          }t          |          s?|| j        vr)t          t          j	        d                    | j        |<   | j        |         }|S )N:   )
r   r   r@   r   rG   r   r   rs   secretstoken_urlsafe)r6   rE   r   r   burir   s          r8   r   zParser._to_rdf_idf  s    '' 	c

A~ %{{}}$H//&))C' CsNNt#)#;;Dt99 9!:::8=g>STV>W>W8X8XD-f508Kr9   refc                p    |                     d          sd S |                    dd          d         }|pd S )Nz_:   )
startswithsplit)r6   r   r   s      r8   r   zParser._get_bnodeidx  s=    ~~d## 	Fiia  ${dr9   r   r   c           	        t          |t                    s|g}t                      }| j        r)t          |t                    r|                                }|d }}|D ]}	|	|r$|                    |t
          j        |f           |}|                     |||||	d          }
|
I|                    |t
          j        |
f           t                      }| j        r)t          |t                    r|                                }|r.|                    |t
          j        t
          j	        f           |S t
          j	        S )NT)r   )
rZ   ru   r   r@   r   r   restr   firstnil)r6   ri   r   rE   r   r   
first_subjr   r   r   r   s              r8   r   zParser._add_list  sB    )T** 	$"I+077
> 	0jU;; 	0#--//J  d 	( 	(D| 		440111//'5'4d/SSC{IItSY,---77D~ (*T5"9"9 (~~'' 	IItSXsw/0007Nr9   r   Dict[str, str]c                    t           rAt          j        | t          j        t          j        z                                d          }nt          j        | ddd          }t          t          j	        t          |iS )N)optionr;   ),r   TF)
separators	sort_keysensure_ascii)r)   r-   dumpsOPT_SORT_KEYSOPT_NON_STR_KEYSdecoder,   r&   r   r   r'   )r   
val_strings     r8   r   zParser._to_typed_json_value  s|     	$l+f.EE   fWoo J
 *5  J #(:
 	
r9   r   Dict[str, List[Any]]c                2      fd|D             }t           |iS )Nc                h    g | ].}t          |t                    r                    |          n|/S r   )rZ   ru   r   )r   r   clss     r8   r   z.Parser._expand_nested_list.<locals>.<listcomp>  sH     
 
 
IJ*Q*=*=DC##A&&&1
 
 
r9   )r!   )r  r   results   `  r8   r   zParser._expand_nested_list  s7    
 
 
 
NW
 
 
 f~r9   )FNF)rG   rA   rk   rH   r@   rA   )ra   r   rE   r   ri   r   rK   r   )F)ri   r   r   r   rE   r   r   r   r   rA   rK   r   )rE   r   r   r   rK   rC   )FF)ri   r   r   r   rE   r   r   r   r   r   r   r   r   rA   r   rA   rK   rL   )rE   r   r   r   r   r   rK   r   )rE   r   r   r   r   r   rK   r   )ri   r   r   r   rE   r   r   r   r   r   r   rA   rK   r   )rE   r   r   r   rK   r   )r   r   rK   rC   )ri   r   r   r   rE   r   r   r   r   r   rK   r   )r   r   rK   r   )r   r   rK   r  )re   rf   rg   r5   rd   r   r   r   r   staticmethodr   r   r   r   r   r   classmethodr   r   r9   r8   rn   rn      s        !&/3	9 9 9 9 9   F != = = = =@& & & &6 r- r- r- r- r-hN N N N`    \ ME ME ME ME ME^   $   ) ) ) )V 
 
 
 \
    [  r9   rn   )NNNFNF)ra   r   ri   r   rD   rC   r_   rF   r>   rj   rG   rA   rk   rH   r@   rA   )A__doc__
__future__r   r   rT   typingr   r   r   r   r   r	   r
   rdflib.parserrdflibrdflib.graphr   r   rdflib.namespacer   r   r   r   rdflib.termr   r   r   r   r   shared.jsonld.contextr   r   r   shared.jsonld.keysr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   shared.jsonld.utilr)   r*   r+   r,   r-   r.   __all__r   r   r   rr   ro   rn   r/   r0   r   r9   r8   <module>r     s   B # " " " " "   L L L L L L L L L L L L L L L L L L     0 0 0 0 0 0 0 0 % % % % % % % % 5 5 5 5 5 5 5 5 D D D D D D D D D D D D D D 8 8 8 8 8 8 8 8 8 8                                 "                8
$DSXe,,	 [
 [
 [
 [
 [
6=' [
 [
 [
B  	#!+/0 0 0 0 08u u u u u u u u u ur9   