
    i!                     d    d Z ddlmZ ddlmZmZ ddlmZmZm	Z	 dgZ
 ed      Z G d de	      Zy)	z2
Notation 3 (N3) RDF graph serializer for RDFLib.
    )Graph)OWL	Namespace)OBJECTSUBJECTTurtleSerializerN3Serializerz#http://www.w3.org/2000/10/swap/log#c                        e Zd ZdZddef fdZ fdZ fdZd fd	Z fdZ	d fd	Z
 fd	Zd fd
	Zd Zd Z xZS )r	   n3storec                     t         t        |   |       | j                  j	                  t
        j                  dt        j                  di       || _	        y )N=z=>)
superr	   __init__keywordsupdater   sameAsSWAP_LOGimpliesparent)selfr   r   	__class__s      LC:\Projects\mas-dev\.venv\Lib\site-packages\rdflib/plugins/serializers/n3.pyr   zN3Serializer.__init__   s>    lD*51cjj#x/?/?FG    c                 8    t         t        |           i | _        y N)r   r	   reset_storesr   r   s    r   r   zN3Serializer.reset   s    lD')r   c                 D    | j                   st        t        |           y y r   )r   r   r	   endDocumentr   s    r   r!   zN3Serializer.endDocument   s    {{,13 r   c                     t         t        |   |      }| j                  || j                  j                         z  }|S r   )r   r	   indentr   )r   modifierr#   r   s      r   r#   zN3Serializer.indent   s:    |T1(;;;"dkk((**Fr   c                 B   t         t        |   |       t        |d   t              r|d   D ]  }| j                  |        t        |d   t              r|d   D ]  }| j                  |        t        |d   t              r|d   D ]  }| j                  |        y y )Nr         )r   r	   preprocessTriple
isinstancer   )r   tripletr   s      r   r(   zN3Serializer.preprocessTriple$   s    lD26:fQi'AY%%a( fQi'AY%%a( fQi'AY%%a(  (r   c                     d }| j                   | j                   j                  ||      }|t        t        |   ||      }|S r   )r   getQNamer   r	   )r   uri
gen_prefixqnamer   s       r   r-   zN3Serializer.getQName0   sE    ;;"KK((j9E=,6sJGEr   c                     | j                  |       | j                  |      }t        |      dk(  ry| j                  |      xs t        t
        |   |      S )Nr   F)subjectDonebuildPredicateHashlens_clauser   r	   	statement)r   subject
propertiesr   s      r   r6   zN3Serializer.statement8   sP    !,,W5
z?a}}W%U|T)LW)UUr   c                 V    | j                  ||      st        t        |   |||       y y r   )p_clauser   r	   path)r   nodepositionnewliner   s       r   r;   zN3Serializer.path?   s)    }}T8,,*47C -r   c                     t        |t              r[| j                  d| j                         z          | j	                  |t
               | j                  |       | j                  d       yy)N
z .TF)r)   r   writer#   r:   r   predicateList)r   r7   s     r   r5   zN3Serializer.s_clauseC   sQ    gu%JJtdkkm+,MM'7+w'JJtr   c                    t        |t              r| j                  |       |t        u r| j	                  d       | j	                  d       | xj
                  dz  c_        t        ||       }|j                  | j                         | xj
                  dz  c_        | j	                  | j                         dz          yy)N {r&   )r   }TF)
r)   r   r2   r   rA   depthr	   	serializestreamr#   )r   r<   r=   
serializers       r   r:   zN3Serializer.p_clauseM   s    dE"T"6!

3JJsOJJ!OJ%d48J  -JJ!OJJJt{{}s*+r   r   )r   )T)F)__name__
__module____qualname__
short_namer   r   r   r!   r#   r(   r-   r6   r;   r5   r:   __classcell__)r   s   @r   r	   r	      sC    Je 
4
)VDr   N)__doc__rdflib.graphr   rdflib.namespacer   r   !rdflib.plugins.serializers.turtler   r   r   __all__r   r	    r   r   <module>rV      s:     + O O
:;M# Mr   