o
    iP                     @   sV   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 de	ZdS )	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                       s   e Zd ZdZddef fddZ fddZ fdd	Zd fdd	Z fddZ	d fdd	Z
 fddZd fdd	Zdd Zdd Z  ZS )r   n3Nstorec                    s2   t t| | | jtjdtjdi || _	d S )N=z=>)
superr   __init__keywordsupdater   sameAsSWAP_LOGimpliesparent)selfr
   r   	__class__ X/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/rdflib/plugins/serializers/n3.pyr      s   
zN3Serializer.__init__c                    s   t t|   i | _d S N)r   r   reset_storesr   r   r   r   r      s   
zN3Serializer.resetc                    s   | j stt|   d S d S r   )r   r   r   endDocumentr   r   r   r   r      s   zN3Serializer.endDocumentr   c                    s,   t t| |}| jd ur|| j 7 }|S r   )r   r   indentr   )r   modifierr   r   r   r   r      s   
zN3Serializer.indentc                    s   t t| | t|d tr|d D ]}| | qt|d tr.|d D ]}| | q&t|d trA|d D ]	}| | q9d S d S )Nr         )r   r   preprocessTriple
isinstancer   )r   tripletr   r   r   r"   #   s   zN3Serializer.preprocessTripleTc                    s:   d }| j d ur| j ||}|d u rtt| ||}|S r   )r   getQNamer   r   )r   uri
gen_prefixqnamer   r   r   r&   /   s   
zN3Serializer.getQNamec                    s>   |  | | |}t|dkrdS | |ptt| |S )Nr   F)subjectDonebuildPredicateHashlens_clauser   r   	statement)r   subject
propertiesr   r   r   r.   7   s
   

zN3Serializer.statementFc                    s(   |  ||stt| ||| d S d S r   )p_clauser   r   path)r   nodepositionnewliner   r   r   r2   >   s   zN3Serializer.pathc                 C   sD   t |tr | d|    | |t | | | d dS dS )N
z .TF)r#   r   writer   r1   r   predicateList)r   r/   r   r   r   r-   B   s   


zN3Serializer.s_clausec                 C   s~   t |tr=| | |tu r| d | d |  jd7  _t|| d}|| j |  jd8  _| | 	 d  dS dS )N {r    )r   }TF)
r#   r   r*   r   r7   depthr   	serializestreamr   )r   r3   r4   
serializerr   r   r   r1   L   s   



zN3Serializer.p_clauser   )r   )T)F)__name__
__module____qualname__
short_namer   r   r   r   r   r"   r&   r.   r2   r-   r1   __classcell__r   r   r   r   r      s    
N)__doc__rdflib.graphr   rdflib.namespacer   r   !rdflib.plugins.serializers.turtler   r   r   __all__r   r   r   r   r   r   <module>   s    