import io from typing import Union, Iterator from pyoxigraph import Triple, Quad from .pyoxigraph import parse as pyparse def parse( input: Union[io.RawIOBase, io.BufferedIOBase, str], mime_type: str, base_iri: Union[str, None] = None, ) -> Iterator[Union[Triple, Quad]]: """Parses RDF graph and dataset serialization formats. It currently supports the following formats: * `N-Triples `_ (``application/n-triples``) * `N-Quads `_ (``application/n-quads``) * `Turtle `_ (``text/turtle``) * `TriG `_ (``application/trig``) * `RDF/XML `_ (``application/rdf+xml``) It supports also some MIME type aliases. For example, ``application/turtle`` could also be used for `Turtle `_ and ``application/xml`` for `RDF/XML `_. :param input: The binary I/O object or file path to read from. For example, it could be a file path as a string or a file reader opened in binary mode with ``open('my_file.ttl', 'rb')``. :param mime_type: the MIME type of the RDF serialization. :param base_iri: the base IRI used to resolve the relative IRIs in the file or :py:const:`None` if relative IRI resolution should not be done. :return: an iterator of RDF triples or quads depending on the format. :raises ValueError: if the MIME type is not supported. :raises SyntaxError: if the provided data is invalid. >>> input = io.BytesIO(b'

"1" .') >>> list(parse(input, "text/turtle", base_iri="http://example.com/")) [ predicate= object=>>] """ return pyparse(input, mime_type, base_iri)