
    Pi7                        d dl m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 d dlmZ d dlmZ d dlmZ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  erd d
lm!Z! ddZ"ddZ#ddZ$ G d de          Z%dS )    )annotationsdedent)Any	GeneratorIterableIteratorMappingOptionalTuple)Graph)	has_httpx)RepositoryNotFoundError)DATASET_DEFAULT_GRAPH_IDDataset_ContextType	_QuadType_TriplePatternType_TripleType)VALID_STOREStore)BNodeNodeURIRefVariable)RDF4JClientquerystrextra_bindingsMapping[str, Any]returnc                    t          t          |                                                    }|s| S d                    d                    d |D                       d| g          S )N
c                &    g | ]\  }}d |d|dS )zPREFIX z: <> ).0kvs      o/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/rdflib/plugins/stores/rdf4j.py
<listcomp>z$_inject_prefixes.<locals>.<listcomp>   s+    GGGdaAAAqqq1GGG     )setlistitemsjoin)r   r   bindingss      r*   _inject_prefixesr3      so    4,,..//00H 99IIGGhGGGHH	
  r,   noder   c                r    t          | t                    rt          d          |                                 S )NzaSPARQL-based stores do not support BNodesSee http://www.w3.org/TR/sparql11-query/#BGPsparqlBNodes)
isinstancer   	Exceptionn3)r4   s    r*   _node_to_sparqlr9   %   s<    $ 
G
 
 	
 7799r,   repository_idc                (    t          d|  d          S )Nzu
        PREFIX config: <tag:rdf4j.org,2023:config/>

        []    a config:Repository ;
            config:rep.id "a  " ;
            config:rep.impl
                [
                    config:rep.type "openrdf:SailRepository" ;
                    config:sail.impl
                        [
                            config:native.tripleIndexers "spoc,posc" ;
                            config:sail.defaultQueryEvaluationMode "STANDARD" ;
                            config:sail.iterationCacheSyncThreshold "10000" ;
                            config:sail.type "openrdf:NativeStore" ;
                        ] ;
                ] ;
        .
    r   )r:   s    r*   _default_repo_configr<   .   s-    	 *		 	 	  r,   c                       e Zd ZdZdZdZdZdZ	 	 	 	 d>d? fdZe	d             Z
e	d             Z	 d@dAdZd@dBdZ	 	 dCdDd ZdEd#Z	 dFdGd&Z	 dFdHd)Z	 dFdId,ZdJdKd1ZdLd3ZdMd5ZdNd7ZdOd:ZdOd;ZdFdPd=Z xZS )Q
RDF4JStorezAn RDF4J store.TFN      >@base_urlr   r:   configuration
str | Noneauthtuple[str, str] | Nonetimeoutfloatcreateboolc                    |t          |          }t          |||fi || _        || _        d | _        |                     ||           t                                                       d S N)r<   r   _client_repository_id_repoopensuper__init__)	selfr@   r:   rA   rC   rE   rG   kwargs	__class__s	           r*   rP   zRDF4JStore.__init__M   sr      0??M"8T7EEfEE+
		-(((r,   c                    | j         S rJ   )rK   rQ   s    r*   clientzRDF4JStore.client_   s
    |r,   c                p    | j         )| j        j                            | j                  | _         | j         S rJ   )rM   rV   repositoriesgetrL   rU   s    r*   repozRDF4JStore.repoc   s/    :155d6IJJDJzr,   str | tuple[str, str] | Noner!   
int | Nonec                   	 | j                                          ni# t          $ r\ |r?| j        j                            | j        |           | j                                          nt          d| j         d          Y nw xY wt          S )NzRepository z not found.)	rZ   healthr   rV   rX   rG   rL   r7   r   )rQ   rA   rG   s      r*   rN   zRDF4JStore.openi   s    	PI& 	P 	P 	P P(//0C]SSS	  """" Nd.A N N NOOO #"	P s    A#BBcommit_pending_transactionNonec                8    | j                                          d S rJ   )rV   close)rQ   r_   s     r*   rb   zRDF4JStore.closex   s    r,   tripler   context_ContextType | Nonequotedc                (   |\  }}}||j         t          k    rdn|j                                         }|                                 d|                                 d|                                 d| d}| j                            |           d S )Nr-    z .
identifierr   r8   rZ   upload)	rQ   rc   rd   rf   spo
graph_name	statements	            r*   addzRDF4JStore.add{   s     1a '"48P"P"P B#&&(( 	
 ttvv@@@@@@*@@@		#####r,   quadsIterable[_QuadType]c           	     >   d}|D ]}\  }}}}||j         t          k    rdn|j                                         }|                                 d|                                 d|                                 d| d}||z  }~| j                            |           d S )Nr-   rh   z .
ri   )	rQ   rr   
statementsrl   rm   rn   cro   rp   s	            r*   addNzRDF4JStore.addN   s    
 	$ 	$JAq!Q 90H H H \__&& 
 4466FFADDFFFFQTTVVFFjFFFI)#JJ	$$$$$r,   r   Optional[_ContextType]c                b    |\  }}}||j         nd }| j                            ||||           d S rJ   )rj   rZ   delete)rQ   rc   rd   rl   rm   rn   gs          r*   removezRDF4JStore.remove   sC    
 1a")"5G4	Aq!$$$$$r,   triple_pattern>Iterator[Tuple[_TripleType, Iterator[Optional[_ContextType]]]]c              #  &  K   |\  }}}||j         nd }| j                            ||||          }t          |t                    r2|D ]-\  }}}}|||ft          t          | |          g          fV  .d S |D ]}	|	t          d g          fV  d S )Nrj   )rj   rZ   rY   r6   r   iterr   )
rQ   r}   rd   rl   rm   rn   ro   result_graphr{   rc   s
             r*   tripleszRDF4JStore.triples   s      
 !1a+2+>W''D
y}}Q1j99lG,, 	+* C C
1a!QiuTa'@'@'@&A!B!BBBBBBC C ' + +dD6ll*****+ +r,   Optional[_TripleType]#Generator[_ContextType, None, None]c              #    K   |1| j                                         D ]}t          | |          V  d S |\  }}}t          |r|nt	          d                    t          |r|nt	          d                    t          |r|nt	          d                    f}d|z  }| j                             |          }|D ]}	t          | |	d                   V  d S )Nr   rl   rm   rn   z:SELECT DISTINCT ?graph WHERE { GRAPH ?graph { %s %s %s } }graph)rZ   graph_namesr   r9   r   r   )
rQ   rc   ro   rl   rm   rn   paramsr   resultrows
             r*   contextszRDF4JStore.contexts   s      >"i3355 9 9
DZ88888889 9 GAq!Q 9HSMM::Q 9HSMM::Q 9HSMM::F MvU  Y__U++F ; ;DS\:::::::; ;r,   prefix	namespacer   overridec                F    | j         j                            ||           d S rJ   )rZ   
namespacesr.   )rQ   r   r   r   s       r*   bindzRDF4JStore.bind   s#    	  33333r,   Optional[str]c                    t          d | j        j                                        D                       }|                    t          |                    S )Nc                *    g | ]}|j         |j        fS r&   )r   r   )r'   xs     r*   r+   z%RDF4JStore.prefix.<locals>.<listcomp>   s!    JJJak18$JJJr,   )dictrZ   r   r/   rY   r   )rQ   r   namespace_prefixess      r*   r   zRDF4JStore.prefix   sP    !JJdi.B.G.G.I.IJJJ
 
 "%%c)nn555r,   Optional[URIRef]c                f    | j         j                            |          }|t          |          nd S rJ   )rZ   r   rY   r   )rQ   r   r   s      r*   r   zRDF4JStore.namespace   s/    %))&11!'!3vf~~~=r,   Iterator[Tuple[str, URIRef]]c              #     K   | j         j                                        D ]}|j        t	          |j                  fV   d S rJ   )rZ   r   r/   r   r   r   )rQ   r   s     r*   r   zRDF4JStore.namespaces   sQ      i*//11 	: 	:F-(8!9!999999	: 	:r,   r   r   c                    |j         t          k    r6| j                            d|j                                                     d S d S )NzCREATE SILENT GRAPH )rj   r   rZ   updater8   rQ   r   s     r*   	add_graphzRDF4JStore.add_graph   sM    777IKE4D4G4G4I4IKKLLLLL 87r,   c                N    | j         j                            |j                   d S rJ   )rZ   graphsclearrj   r   s     r*   remove_graphzRDF4JStore.remove_graph   s$    	u/00000r,   intc                H    | j                             ||n|j                  S rJ   )rZ   sizerj   )rQ   rd   s     r*   __len__zRDF4JStore.__len__   s!    y~~ggg>PQQQr,   )NNr?   F)r@   r   r:   r   rA   rB   rC   rD   rE   rF   rG   rH   )F)rA   r[   rG   rH   r!   r\   )r_   rH   r!   r`   )NF)rc   r   rd   re   rf   rH   r!   r`   )rr   rs   r!   r`   rJ   )rc   r   rd   rx   r!   r`   )r}   r   rd   rx   r!   r~   )rc   r   r!   r   )T)r   r   r   r   r   rH   r!   r`   )r   r   r!   r   )r   r   r!   r   )r!   r   )r   r   r!   r`   )rd   re   r!   r   )__name__
__module____qualname____doc__context_awareformula_awaretransaction_awaregraph_awarerP   propertyrV   rZ   rN   rb   rq   rw   r|   r   r   r   r   r   r   r   r   r   __classcell__)rS   s   @r*   r>   r>   E   s       MMK %)'+      $   X   X KP         (,	$ $ $ $ $
% 
% 
% 
% +/% % % % % +/+ + + + +$ /3; ; ; ; ;(4 4 4 4 46 6 6 6> > > >: : : :M M M M
1 1 1 1R R R R R R R R Rr,   r>   N)r   r   r   r    r!   r   )r4   r   r!   r   )r:   r   r!   r   )&
__future__r   textwrapr   typingr   r   r   r	   r
   r   r   rdflibr   rdflib.contrib.rdf4jr   rdflib.contrib.rdf4j.exceptionsr   rdflib.graphr   r   r   r   r   r   rdflib.storer   r   rdflib.termr   r   r   r   r   r3   r9   r<   r>   r&   r,   r*   <module>r      s   " " " " " "       O O O O O O O O O O O O O O O O O O       * * * * * * C C C C C C                , + + + + + + + 5 5 5 5 5 5 5 5 5 5 5 5 1000000
 
 
 
      .ZR ZR ZR ZR ZR ZR ZR ZR ZR ZRr,   