Sign in

    moonttl

    MoonTTL is a high-performance RDF parsing and serialization library for MoonBit, supporting Turtle, TriG, N-Triples, N-Quads and N3 formats.

    n3
    turtle
    rdf
    Download zip
    Author
    Version
    0.1.3
    License
    MIT
    Last updated
    3 months ago
    Downloads
    400

    #MoonTTL

    MoonTTL 是一个使用 MoonBit 语言编写的高性能 RDF 解析与序列化库。本项目移植自 Rust 生态中的优秀库 Oxttl,旨在为 MoonBit 生态提供一套标准化、轻量级的语义网数据处理引擎。

    #特性

    • 多格式支持:完整支持 Turtle, TriG, N-Triples, N-Quads 和 N3 格式的解析与序列化。
    • RDF 1.2 兼容:除 N3 外,全面支持最新的 RDF 1.2 国际标准规范。
    • 高性能:基于 MoonBit 的高性能编译后端,提供低内存占用的流式解析能力。
    • 纯 MoonBit 实现:利用 MoonBit 的原生类型系统和 GC 机制,提供简洁的 API 体验。

    #安装

    确保你的环境中已经安装了 MoonBit 工具链。

    在你的 moon.mod.json 中添加依赖:

    { "name": "your_username/your_project", "deps": [ "thy1016/moonttl" ] }

    #命令行工具

    #从字符串解析

    moon run src/cmd/main -- "<http://example.org/s> <http://example.org/p> <http://example.org/o> ."

    #从文件解析

    echo '<http://example.org/s> <http://example.org/p> <http://example.org/o> .' > test.nq moon run src/cmd/main -- -f test.nq

    #详细输出模式

    moon run src/cmd/main -- -v -f test.nq

    #命令行选项

    • -f, --file <path> - 指定输入文件路径
    • -v, --verbose - 启用详细输出模式
    • <input> - 直接输入 N-Quads 格式的字符串

    #N-Quads 格式说明

    N-Quads 是一种简洁的 RDF 四元组格式,每行一个语句:

    <subject> <predicate> <object> <graph> .

    其中 graph 部分可选,默认为默认图。

    示例:
    <http://example.org/s> <http://example.org/p> <http://example.org/o> .

    #示例代码

    let content = "<http://example.org/s> <http://example.org/p> <http://example.org/o> .\n"
    let data = @utf8.encode(content)

    let lexer = @lib.Lexer::Lexer(
    @lib.RdfLexer::RdfLexer(@lib.RdfLexerMode::NTriples, false),
    data.to_array(),
    true,
    @lib.MIN_BUFFER_SIZE,
    @lib.MAX_BUFFER_SIZE,
    Some(b"#"),
    0,
    0,
    )

    let machine = @lib.NQuadsRecognizer::{
    stack: [@lib.NQuadsState::ExpectSubject],
    subjects: [],
    predicates: [],
    objects: [],
    lenient: false,
    debug_logger: @lib.make_mute_logger(),
    last_range: @lib.Range::default(),
    errors: [],
    }

    let context = @lib.RdfContext::NQuadsRecognizerContext(
    @lib.NQuadsRecognizerContext::{
    with_graph_name: false,
    lexer_options: { base_iri: None },
    },
    )

    let parser = @lib.ParserM::{
    lexer,
    engine: @lib.GenericStateMachine::{ machine, context, outputs: [] },
    context,
    errors: [],
    }

    for ;; {
    match parser.parse_next() {
    Some(Ok(quad)) => println("Parsed: \{quad}")
    Some(Err(e)) => println("Error: \{e}")
    None => break
    }
    }

    #项目结构

    src/ ├── lexer_*.mbt # 词法分析器 ├── parser*.mbt # 语法分析器 ├── nquads_*.mbt # N-Quads 格式支持 ├── turtle_*.mbt # Turtle 格式支持 ├── trig_*.mbt # TriG 格式支持 ├── n3_*.mbt # N3 格式支持 ├── iri.mbt # IRI 处理 ├── literal.mbt # 字面量处理 ├── langtag.mbt # 语言标签处理 └── tests/ # 测试文件

    #许可证

    本项目采用以下任一许可证:

    • Apache License, Version 2.0, (LICENSE-APACHE or <http://www.apache.org/licenses/LICENSE-2.0>)
    • MIT license (LICENSE-MIT or <http://opensource.org/licenses/MIT>)

    您可自行选择适用的许可证。

    #贡献

    除非您另有明确声明,否则您有意提交给 MoonTTL 的任何贡献(按 Apache-2.0 许可证的定义)均应按上述方式双重许可,不附加任何其他条款或条件。

    #Examples

    #解析 N-Quads 文件

    运行示例程序:

    moon run src/examples/nquads

    输出示例:

    Written N-Quads content to: ./example.nq Parsing N-Quads file... [1] Quad<http://example.org/s1, http://example.org/p1, http://example.org/o1> [2] Quad<http://example.org/s2, http://example.org/p2, http://example.org/o2> [3] Quad<http://example.org/s3, http://example.org/p3, http://example.org/o3> [4] Error: InvalidTurtleToken - Unexpected end of input turtle . === Summary === Total quads parsed: 3

    该示例展示了:
    • 从字符串创建 N-Quads 内容并写入文件
    • 从文件读取并解析为二进制数据
    • 使用词法分析器和状态机解析 RDF 四元组
    • 错误处理和结果汇总

    Ref

    using @moonbitlang/core/ref { type Ref }

    A simple mutable reference type that allows you to store and modify a value of any type.

    test {
    let x = @ref.Ref(42)
    @test.assert_eq(x.val, 42)
    x.val = 100
    @test.assert_eq(x.val, 100)
    }

    TransitionResult

    type TransitionResult[TR, S, O] = Result[(TR, S, O?), RuleRecognizerError]

    DebugLogger

    pub trait DebugLogger {
    fn info(Self, String) -> Unit
    fn error(Self, String) -> Unit
    fn warn(Self, String) -> Unit
    }

    ErrOut

    pub trait ErrOut {
    fn message(self : Self) -> String
    fn err_kind(self : Self) -> String
    }

    IriComponents

    pub trait IriComponents {
    fn query(self : Self) -> String?
    fn is_absolute(self : Self) -> Bool
    fn scheme(self : Self) -> String?
    fn authority(self : Self) -> String?
    fn path(self : Self) -> String?
    fn fragment(self : Self) -> String?
    }

    RuleRecognizer

    pub trait RuleRecognizer {
    fn error_recovery_state(Self) -> Self
    fn recognize_next(Self, token : LocatedTokenOrLineJump, context : RdfContext, results : Array[RdfOut]) -> Self
    fn recognize_end(Self, context : RdfContext, results : Array[RdfOut]) -> Unit
    fn lexer_options(context : RdfContext) -> LexerOptions?
    fn[DL : DebugLogger] debug_logger(Self, debug_logger : DL) -> Unit
    }

    StateMachine

    pub trait StateMachine {
    fn initial_state(Self) -> RdfState
    fn transition(Self, state : RdfState, event : LocatedTokenOrLineJump, context : RdfContext) -> Result[(Self, RdfState, RdfOut?), RuleRecognizerError]
    fn current_state(Self) -> RdfState
    fn step(Self, event : LocatedTokenOrLineJump) -> Self
    fn reset(Self) -> Self
    fn is_accepting(Self) -> Bool
    fn context(Self) -> RdfContext
    fn set_context(Self, RdfContext) -> Self
    fn[ST : StateWrapper] set_current_state(Self, state : ST) -> Self
    fn error_recovery_statemachine(Self) -> Self
    }

    StateWrapper

    pub trait StateWrapper {
    fn as_state_enum(Self) -> RdfState
    }

    状态包装 Trait(用于类型擦除和统一处理)

    StringRepr

    pub trait StringRepr {
    fn as_stringview(self : Self) -> StringView
    fn into_string(self : Self) -> String
    }

    TokenRecognizer

    pub trait TokenRecognizer {
    fn recognize_next_token(Self, data : ArrayView[Byte], is_ending : Bool, options : LexerOptions?, location_ctx : SourcePos) -> (Int, Result[LocatedTokenOrLineJump, TokenRecognizerError])?
    }

    IriError

    pub(all) suberror IriError {
    NoScheme
    Expected(Char, Int)
    InvalidIriCodePoint(Char, Int)
    InvalidPercentEncoding(Int)
    InvalidHostCharacter(Char, Int)
    InvalidHostIp(String, Int)
    InvalidPortCharacter(Char, Int)
    PathStartingWithTwoSlashes(Int)
    RelativePathSegment(Char, Int)
    InvalidErrMessage(String)
    }

    impl Show for IriError
    impl ErrOut for IriError

    IriError::position

    fn IriError::position(self : IriError) -> Int

    LanguageTagParseError

    pub(all) suberror LanguageTagParseError {
    TagParseErr(TagParseErr)
    }

    LexerError

    pub(all) suberror LexerError {
    OutOfMemory(String)
    IoReadError(String)
    SyntaxError(String)
    }

    impl Show for LexerError

    RuleRecognizerError

    pub(all) suberror RuleRecognizerError {
    SyntaxError(String, Range)
    BlankNodeOrIriError
    PredicateNotAnIRI
    LiteralDatatypeError
    TripleMissingDot
    InvalidLanguageTag
    BlankNodePropertyListMissingEndBracket
    }

    RuleRecognizerError::text_range

    TagParseErr

    pub(all) suberror TagParseErr {
    EmptyExtension
    EmptyPrivateUse
    ForbiddenChar
    InvalidSubtag
    InvalidLanguage
    SubtagTooLong
    EmptySubtag
    TooManyExtlangs
    InvalidLanguageLength
    }

    impl Show for TagParseErr

    TokenRecognizerError

    pub(all) suberror TokenRecognizerError {
    Invalid
    InvalidFormat(ArrayView[Byte], Range)
    InvalidToken(ArrayView[Byte], Range)
    InvalidCharacter(ArrayView[Byte], Range)
    IncompleteEscapeSequence(ArrayView[Byte], Range)
    InvalidEscapeSequence(ArrayView[Byte], Range)
    UnsupportedFeature(ArrayView[Byte], Range)
    IriTruncated(ArrayView[Byte], Range)
    IriParsingError(String, Range)
    UnexpectedEndOfInput(ArrayView[Byte], Range)
    InvalidErrMessage(ArrayView[Byte], Range, String)
    }

    TokenRecognizerError::range

    TurtleError

    pub(all) suberror TurtleError {
    TurtleParseError(String, Range)
    TurtleSyntaxError(String, Range)
    InvalidEscapeSequence
    InvalidCharacter(String)
    InvalidToken(SourcePos, String)
    UnexpectedEndOfInput(SourcePos, String)
    } derive(
    Debug
    )

    impl Show for TurtleError

    Anonymous

    pub(all) struct Anonymous {
    id : UInt64
    str : String
    } derive(Eq, Hash, ToJson,
    Debug
    )

    Anonymous::Anonymous

    fn Anonymous::Anonymous(id : UInt64, str : String) -> Anonymous

    Anonymous::default

    fn Anonymous::default() -> Anonymous

    AsyncReaderIterator

    pub struct AsyncReaderIterator[TR, RR] {
    reader : &
    Reader

    parser : Parser[TR, RR]
    }

    AsyncReaderIterator::next

    async fn[TR : TokenRecognizer, RR : RuleRecognizer] AsyncReaderIterator::next(self : AsyncReaderIterator[TR, RR]) -> Result[RdfOut, LexerError]?

    AsyncReaderN3Parser

    pub struct AsyncReaderN3Parser[RL] {
    inner : AsyncReaderIterator[RL, N3Recognizer]
    }

    AsyncReaderN3Parser::base_iri

    fn[RL] AsyncReaderN3Parser::base_iri(self : AsyncReaderN3Parser[RL]) -> String?

    AsyncReaderN3Parser::next

    async fn[RL : TokenRecognizer] AsyncReaderN3Parser::next(self : AsyncReaderN3Parser[RL]) -> Result[N3Quad, TurtleError]?

    AsyncReaderN3Parser::prefixes

    AsyncReaderNQuadsParser

    pub struct AsyncReaderNQuadsParser[RL] {
    inner : AsyncReaderIterator[RL, NQuadsRecognizer]
    }

    AsyncReaderNQuadsParser::next

    AsyncReaderNTriplesParser

    pub struct AsyncReaderNTriplesParser[RL] {
    inner : AsyncReaderIterator[RL, NQuadsRecognizer]
    }

    AsyncReaderNTriplesParser::next

    AsyncReaderTriGParser

    pub struct AsyncReaderTriGParser[RL] {
    inner : AsyncReaderIterator[RL, TriGRecognizer]
    }

    AsyncReaderTriGParser::base_iri

    fn[RL] AsyncReaderTriGParser::base_iri(self : AsyncReaderTriGParser[RL]) -> String?

    AsyncReaderTriGParser::next

    async fn[RL : TokenRecognizer] AsyncReaderTriGParser::next(self : AsyncReaderTriGParser[RL]) -> Result[Quad, TurtleError]?

    AsyncReaderTriGParser::prefixes

    AsyncReaderTurtleParser

    pub struct AsyncReaderTurtleParser[RL] {
    inner : AsyncReaderIterator[RL, TriGRecognizer]
    }

    AsyncReaderTurtleParser::base_iri

    fn[RL] AsyncReaderTurtleParser::base_iri(self : AsyncReaderTurtleParser[RL]) -> String?

    AsyncReaderTurtleParser::next

    AsyncReaderTurtleParser::prefixes

    AsyncWriterNQuadsSerializer

    pub struct AsyncWriterNQuadsSerializer[W] {
    buffer_writer :
    BufferedWriter
    [W]
    low_level_writer : LowLevelNQuadsSerializer
    }

    AsyncWriterNQuadsSerializer::serialize_quad

    AsyncWriterNTriplesSerializer

    pub struct AsyncWriterNTriplesSerializer[W] {
    buffer_writer :
    BufferedWriter
    [W]
    low_level_writer : LowLevelNTriplesSerializer
    }

    AsyncWriterNTriplesSerializer::serialize_triple

    fn[W] AsyncWriterNTriplesSerializer::serialize_triple(self : AsyncWriterNTriplesSerializer[W], t : Triple) -> Result[String, Unit]

    AsyncWriterTriGSerializer

    pub struct AsyncWriterTriGSerializer[W] {
    buffer_writer :
    BufferedWriter
    [W]
    low_level_writer : LowLevelTriGSerializer
    }

    AsyncWriterTriGSerializer::serialize_quad

    AsyncWriterTurtleSerializer

    pub struct AsyncWriterTurtleSerializer[W] {
    buffer_writer :
    BufferedWriter
    [W]
    low_level_writer : LowLevelTriGSerializer
    }

    AsyncWriterTurtleSerializer::finish

    async fn[W] AsyncWriterTurtleSerializer::finish(self : AsyncWriterTurtleSerializer[W]) -> W

    AsyncWriterTurtleSerializer::serialize_triple

    fn[W] AsyncWriterTurtleSerializer::serialize_triple(self : AsyncWriterTurtleSerializer[W], t : Triple) -> Result[String, Unit]

    BaseDirection

    pub(all) enum BaseDirection {
    Ltr
    Rtl
    } derive(Eq, Hash, ToJson,
    Debug
    )

    BlankNode

    pub(all) enum BlankNode {
    Named(String)
    Anonymous(Anonymous)
    } derive(Eq, Hash, ToJson,
    Debug
    )

    BlankNode::as_enum

    fn BlankNode::as_enum(self : BlankNode) -> NamedOrBlankNode

    BlankNode::as_n3term

    fn BlankNode::as_n3term(self : BlankNode) -> N3Term

    BlankNode::as_ref

    fn BlankNode::as_ref(self : BlankNode) -> BlankNodeRef

    BlankNode::default

    fn BlankNode::default() -> BlankNode

    BlankNode::new

    fn BlankNode::new(content : BlankNode) -> BlankNode

    BlankNode::new_from_unique_id

    fn BlankNode::new_from_unique_id(id : UInt64) -> BlankNode

    BlankNodeRef

    pub(all) enum BlankNodeRef {
    Named(StringView)
    Anonymous(Anonymous)
    } derive(Eq, Hash,
    Debug
    )

    BlankNodeRef::as_enum

    BlankNodeRef::as_n3term

    fn BlankNodeRef::as_n3term(self : BlankNodeRef) -> N3Term

    BlankNodeRef::as_term

    fn BlankNodeRef::as_term(self : BlankNodeRef) -> TermRef

    BlankNodeRef::new_unchecked

    fn BlankNodeRef::new_unchecked(iri : String) -> BlankNodeRef

    ConsoleLogger

    type ConsoleLogger

    ExtensionsIterator

    pub(all) struct ExtensionsIterator {
    input : String
    subtags : Array[String]
    index : Int
    }

    ExtensionsIterator::next

    GenericStateMachine

    pub(all) struct GenericStateMachine[M] {
    machine : M
    context : RdfContext
    outputs : Array[RdfOut]
    debug_logger : &DebugLogger
    }

    GenericStateMachine::GenericStateMachine

    fn[M] GenericStateMachine::GenericStateMachine(machine : M, context : RdfContext, debug_logger : &DebugLogger) -> GenericStateMachine[M]

    GenericStateMachine::remove_first_output

    fn[M] GenericStateMachine::remove_first_output(self : GenericStateMachine[M]) -> GenericStateMachine[M]

    GenericStateMachine::run

    GraphName

    pub(all) enum GraphName {
    DefaultGraph
    NamedNode(NamedNode)
    BlankNode(BlankNode)
    } derive(Eq, Hash, ToJson,
    Debug
    )

    GraphName::as_n3term

    fn GraphName::as_n3term(self : GraphName) -> N3Term

    GraphName::as_ref

    fn GraphName::as_ref(self : GraphName) -> GraphNameRef

    GraphName::default

    fn GraphName::default() -> GraphName

    GraphName::into_owned

    fn GraphName::into_owned(self : GraphName) -> GraphName

    GraphName::is_blank_node

    fn GraphName::is_blank_node(self : GraphName) -> Bool

    GraphName::is_default_graph

    fn GraphName::is_default_graph(self : GraphName) -> Bool

    GraphName::is_named_node

    fn GraphName::is_named_node(self : GraphName) -> Bool

    GraphNameRef

    pub(all) enum GraphNameRef {
    DefaultGraph
    NamedNodeRef(NamedNodeRef)
    BlankNodeRef(BlankNodeRef)
    } derive(Eq, Hash,
    Debug
    )

    HandleResult

    pub enum HandleResult {
    Continue(N3Recognizer)
    Stop(N3Recognizer)
    }

    Iri

    impl StringRepr for Iri

    Iri::Iri

    fn Iri::Iri(base_iri : String) -> Iri

    Iri::as_ref

    fn Iri::as_ref(iri : Iri) -> IriRef

    Iri::new

    fn Iri::new(base_iri : String) -> IriRef

    Iri::remove_dot_segments

    fn Iri::remove_dot_segments(_self : Iri, path : StringView) -> String

    IriPositions

    pub struct IriPositions {
    scheme_end : Int
    authority_end : Int
    path_end : Int
    query_end : Int
    } derive(Default,
    Debug
    )

    IriRef

    IriRef::expect

    fn IriRef::expect(self : IriRef, expected : Char) -> Result[Unit, IriError]

    IriRef::parse

    fn IriRef::parse(self : IriRef) -> Result[Iri, IriError]

    严格解析 IRI。如果格式不符合规范,返回错误。

    IriRef::parse_authority

    fn IriRef::parse_authority(self : IriRef) -> Result[Unit, IriError]

    IriRef::parse_domain_host

    fn IriRef::parse_domain_host(self : IriRef) -> Result[Unit, IriError]

    IriRef::parse_fragment

    fn IriRef::parse_fragment(self : IriRef) -> Result[Unit, IriError]

    IriRef::parse_host

    fn IriRef::parse_host(self : IriRef, unchecked? : Bool) -> Result[Unit, IriError]

    IriRef::parse_ipv6_host

    fn IriRef::parse_ipv6_host(self : IriRef) -> Result[Unit, IriError]

    IriRef::parse_path

    fn IriRef::parse_path(self : IriRef) -> Result[Unit, IriError]

    IriRef::parse_path_segment

    fn IriRef::parse_path_segment(self : IriRef) -> Result[String, IriError]

    IriRef::parse_percent_encoded

    fn IriRef::parse_percent_encoded(self : IriRef) -> Result[Char, IriError]

    IriRef::parse_query

    fn IriRef::parse_query(self : IriRef) -> Result[Unit, IriError]

    IriRef::parse_scheme

    fn IriRef::parse_scheme(self : IriRef) -> Result[Bool, IriError]

    IriRef::parse_unchecked

    fn IriRef::parse_unchecked(self : IriRef) -> Iri

    宽松解析 IRI。忽略非致命错误,尽力解析并返回结果。

    IriRef::peek

    fn IriRef::peek(self : IriRef) -> Char?

    IriRef::peek_match

    fn IriRef::peek_match(self : IriRef, pattern : Array[Char]) -> Bool

    IriRef::peek_match_range

    fn IriRef::peek_match_range(self : IriRef, pattern : Array[(Char, Char?)]) -> Int?

    IriRef::peek_next

    fn IriRef::peek_next(self : IriRef) -> Char?

    IriRef::relativize

    fn IriRef::relativize(base : IriRef, target : IriRef) -> Result[Iri, IriError]

    IriRef::resolve

    fn IriRef::resolve(self : IriRef, ref_iri_str : String, remove_dot_segments? : Bool) -> Result[Iri, IriError]

    IriRef::resolve_into

    fn IriRef::resolve_into(self : IriRef, relative_ref : String, buffer : StringBuilder) -> Result[Unit, IriError]

    IriRef::resolve_unchecked

    fn IriRef::resolve_unchecked(self : IriRef, ref_iri_str : String, remove_dot_segments? : Bool) -> Iri

    IriRef::try_match_range

    fn IriRef::try_match_range(self : IriRef, pattern : Array[(Char, Char?)]) -> Bool

    IriRef::validate

    fn IriRef::validate(self : IriRef) -> Result[Unit, IriError]

    LanguageTag

    pub(all) struct LanguageTag {
    tag : String
    positions : TagElementsPositions
    } derive(Default, Eq, Hash,
    Debug
    )

    impl Show for LanguageTag

    LanguageTag::extended_language

    fn LanguageTag::extended_language(self : LanguageTag) -> String?

    LanguageTag::extended_language_subtags

    fn LanguageTag::extended_language_subtags(self : LanguageTag) -> Array[String]

    LanguageTag::extension

    fn LanguageTag::extension(self : LanguageTag) -> String?

    LanguageTag::extension_subtags

    fn LanguageTag::extension_subtags(self : LanguageTag) -> ExtensionsIterator

    LanguageTag::full_language

    fn LanguageTag::full_language(self : LanguageTag) -> String

    LanguageTag::into_str

    fn LanguageTag::into_str(self : LanguageTag) -> String

    LanguageTag::parse

    fn LanguageTag::parse(tag : StringView) -> Result[LanguageTag, TagParseErr]

    LanguageTag::parse_and_normalize

    fn LanguageTag::parse_and_normalize(tag : String) -> Result[LanguageTag, TagParseErr]

    LanguageTag::primary_language

    fn LanguageTag::primary_language(self : LanguageTag) -> String

    LanguageTag::private_use

    fn LanguageTag::private_use(self : LanguageTag) -> String?

    LanguageTag::private_use_subtags

    fn LanguageTag::private_use_subtags(self : LanguageTag) -> Array[String]

    LanguageTag::region

    fn LanguageTag::region(self : LanguageTag) -> String?

    LanguageTag::script

    fn LanguageTag::script(self : LanguageTag) -> String?

    LanguageTag::variant

    fn LanguageTag::variant(self : LanguageTag) -> String?

    LanguageTag::variant_subtags

    fn LanguageTag::variant_subtags(self : LanguageTag) -> Array[String]

    Lexer

    pub(all) struct Lexer[RL] {
    parser : RL
    data : Array[Byte]
    position : Position
    previous_position : Position
    is_ending : Bool
    min_buffer_size : Int
    max_buffer_size : Int
    line_comment_start : Bytes?
    current_token_start : Int
    current_token_end : Int
    }

    Lexer::Lexer

    fn[RL] Lexer::Lexer(parser : RL, data : Array[Byte], is_ending : Bool, min_buffer_size : Int, max_buffer_size : Int, line_comment_start : Bytes?, current_token_start : Int, current_token_end : Int) -> Lexer[RL]

    Lexer::current_line

    fn[T] Lexer::current_line(self : Lexer[T]) -> Int

    获取当前行号

    Lexer::current_position

    fn[T] Lexer::current_position(self : Lexer[T]) -> SourcePos

    获取当前位置(完整信息)

    Lexer::current_token_end_location

    fn[RL] Lexer::current_token_end_location(self : Lexer[RL]) -> SourcePos

    获取当前 Token 的结束位置 (即 Lexer 指针当前位置)

    Lexer::current_token_range

    fn[T] Lexer::current_token_range(self : Lexer[T]) -> Range

    获取 token 范围

    Lexer::current_token_source_range

    fn[RL] Lexer::current_token_source_range(self : Lexer[RL]) -> SourceRange

    获取当前 Token 的完整范围

    Lexer::current_token_start_location

    fn[RL] Lexer::current_token_start_location(self : Lexer[RL]) -> SourcePos

    Lexer::end

    fn[RL] Lexer::end(self : Lexer[RL]) -> Unit

    Lexer::extend_from_async_read

    async fn[RL] Lexer::extend_from_async_read(self : Lexer[RL], reader : &
    Reader
    ) -> Result[Int, LexerError]

    Lexer::extend_from_reader

    async fn[RL] Lexer::extend_from_reader(self : Lexer[RL], reader : &
    Reader
    ) -> Result[Int, LexerError]

    Lexer::extend_from_slice

    fn[RL] Lexer::extend_from_slice(self : Lexer[RL], other : Bytes) -> Unit

    Lexer::is_end

    fn[RL] Lexer::is_end(self : Lexer[RL]) -> Bool

    Lexer::last_token_end

    fn[RL] Lexer::last_token_end(self : Lexer[RL]) -> SourcePos

    获取上一个 token 的结束位置

    Lexer::last_token_range

    fn[RL] Lexer::last_token_range(self : Lexer[RL]) -> SourceRange

    Lexer::last_token_source

    fn[RL] Lexer::last_token_source(self : Lexer[RL]) -> String

    Lexer::last_token_start

    fn[RL] Lexer::last_token_start(self : Lexer[RL]) -> SourcePos

    获取上一个 token 的起始位置(解析完成后)

    Lexer::location_from_buffer_offset_range

    fn[RL] Lexer::location_from_buffer_offset_range(self : Lexer[RL], offset_range : Range) -> SourceRange

    Lexer::parse_next

    fn[RL : TokenRecognizer] Lexer::parse_next(self : Lexer[RL], options : LexerOptions?) -> Result[LocatedTokenOrLineJump, TokenRecognizerError]?

    Lexer::record_token_end

    fn[T] Lexer::record_token_end(self : Lexer[T]) -> Unit

    记录 token 结束

    Lexer::record_token_start

    fn[T] Lexer::record_token_start(self : Lexer[T]) -> Unit

    记录 token 起始

    Lexer::shrink_data

    fn[RL] Lexer::shrink_data(self : Lexer[RL]) -> Unit

    LexerOptions

    pub(all) struct LexerOptions {
    base_iri : Iri?
    } derive(
    Debug
    )

    Literal

    pub(all) struct Literal(LiteralContent) derive(Eq, Hash, ToJson,
    Debug
    )

    impl Show for Literal

    Literal::as_n3term

    fn Literal::as_n3term(self : Literal) -> N3Term

    Literal::as_ref

    fn Literal::as_ref(self : Literal) -> LiteralRef

    Literal::datatype

    fn Literal::datatype(self : Literal) -> NamedNodeRef

    Literal::destruct

    fn Literal::destruct(self : Literal) -> (StringView, NamedNode?, String?, BaseDirection?)

    Literal::direction

    fn Literal::direction(self : Literal) -> BaseDirection?

    Literal::language

    fn Literal::language(self : Literal) -> String?

    Literal::new_directional_language_tagged_literal

    fn Literal::new_directional_language_tagged_literal(value : String, language : String, direction : BaseDirection) -> Result[Literal, LanguageTagParseError]

    Literal::new_directional_language_tagged_literal_unchecked

    fn Literal::new_directional_language_tagged_literal_unchecked(value : StringView, language : LanguageTag, direction : BaseDirection) -> Literal

    Literal::new_language_tagged_literal

    fn Literal::new_language_tagged_literal(value : String, language : String) -> Result[Literal, LanguageTagParseError]

    Literal::new_language_tagged_literal_unchecked

    fn Literal::new_language_tagged_literal_unchecked(value : String, language : String) -> Literal

    Literal::new_simple_literal

    fn Literal::new_simple_literal(value : String) -> Literal

    Literal::value

    fn Literal::value(self : Literal) -> String

    LiteralContent

    pub(all) enum LiteralContent {
    String(String)
    LanguageTaggedString(value~ : String, language~ : String)
    DirectionalLanguageTaggedString(value~ : StringView, language~ : String, direction~ : BaseDirection)
    TypedLiteral(value~ : VarDataType, datatype~ : NamedNode)
    } derive(Eq, Hash, ToJson,
    Debug
    )

    LiteralRef

    pub(all) struct LiteralRef(LiteralRefContent) derive(Eq, Hash,
    Debug
    )

    impl Show for LiteralRef

    LiteralRef::as_n3term

    fn LiteralRef::as_n3term(self : LiteralRef) -> N3Term

    LiteralRef::as_term

    fn LiteralRef::as_term(self : LiteralRef) -> TermRef

    LiteralRef::datatype

    fn LiteralRef::datatype(self : LiteralRef) -> NamedNodeRef

    LiteralRef::direction

    fn LiteralRef::direction(self : LiteralRef) -> BaseDirection?

    LiteralRef::into_owned

    fn LiteralRef::into_owned(self : LiteralRef) -> Literal

    LiteralRef::into_value

    fn LiteralRef::into_value(self : LiteralRef) -> StringView

    LiteralRef::language

    fn LiteralRef::language(self : LiteralRef) -> String?

    LiteralRef::new_directional_language_tagged_literal_unchecked

    fn LiteralRef::new_directional_language_tagged_literal_unchecked(value : String, language : LanguageTag, direction : BaseDirection) -> LiteralRef

    LiteralRef::new_language_tagged_literal_unchecked

    fn LiteralRef::new_language_tagged_literal_unchecked(value : String, language : StringView) -> LiteralRef

    LiteralRef::new_simple_literal

    fn LiteralRef::new_simple_literal(value : StringView) -> LiteralRef

    LiteralRef::new_typed_literal

    fn LiteralRef::new_typed_literal(value : VarDataType, datatype : NamedNodeRef) -> LiteralRef

    LiteralRefContent

    pub(all) enum LiteralRefContent {
    String(StringView)
    LanguageTaggedString(value~ : String, language~ : StringView)
    DirectionalLanguageTaggedString(value~ : StringView, language~ : StringView, direction~ : BaseDirection)
    TypedLiteral(value~ : VarDataType, datatype~ : NamedNodeRef)
    } derive(Eq, Hash,
    Debug
    )

    LocatedN3Token

    pub struct LocatedN3Token(N3Token, Range) derive(
    Debug
    )

    带位置的 N3Token

    LocatedN3Token::into_token

    fn LocatedN3Token::into_token(self : LocatedN3Token) -> N3Token

    LocatedTokenOrLineJump

    #alias(Event)
    pub enum LocatedTokenOrLineJump {
    LocatedN3Token(LocatedN3Token)
    LineJump(Int)
    End
    } derive(
    Debug
    )

    LocatedTokenOrLineJump::into_token

    LocatedTokenOrLineJump::range

    LowLevelN3Parser

    pub struct LowLevelN3Parser[RL] {
    parser : Parser[RL, N3Recognizer]
    }

    LowLevelN3Parser::base_iri

    fn[RL] LowLevelN3Parser::base_iri(self : LowLevelN3Parser[RL]) -> String?

    LowLevelN3Parser::end

    fn[RL] LowLevelN3Parser::end(self : LowLevelN3Parser[RL]) -> Unit

    LowLevelN3Parser::extend_from_slice

    fn[RL] LowLevelN3Parser::extend_from_slice(self : LowLevelN3Parser[RL], other : Bytes) -> Unit

    LowLevelN3Parser::is_end

    fn[RL] LowLevelN3Parser::is_end(self : LowLevelN3Parser[RL]) -> Bool

    LowLevelN3Parser::parse_next

    fn[RL : TokenRecognizer] LowLevelN3Parser::parse_next(self : LowLevelN3Parser[RL]) -> Result[RdfOut, TurtleError]?

    LowLevelN3Parser::prefixes

    fn[RL] LowLevelN3Parser::prefixes(self : LowLevelN3Parser[RL]) -> N3PrefixesIter

    LowLevelNQuadsParser

    pub struct LowLevelNQuadsParser[RL] {
    parser : Parser[RL, NQuadsRecognizer]
    }

    LowLevelNQuadsParser::end

    fn[RL] LowLevelNQuadsParser::end(self : LowLevelNQuadsParser[RL]) -> Unit

    LowLevelNQuadsParser::extend_from_slice

    fn[RL] LowLevelNQuadsParser::extend_from_slice(self : LowLevelNQuadsParser[RL], other : Bytes) -> Unit

    LowLevelNQuadsParser::is_end

    fn[RL] LowLevelNQuadsParser::is_end(self : LowLevelNQuadsParser[RL]) -> Bool

    LowLevelNQuadsParser::parse_next

    fn[RL : TokenRecognizer] LowLevelNQuadsParser::parse_next(self : LowLevelNQuadsParser[RL]) -> Result[Quad, TurtleError]?

    LowLevelNQuadsSerializer

    pub struct LowLevelNQuadsSerializer {
    } derive(Default)

    LowLevelNQuadsSerializer::serialize_quad

    fn LowLevelNQuadsSerializer::serialize_quad(_self : LowLevelNQuadsSerializer, q : Quad) -> Result[String, Unit]

    LowLevelNTriplesParser

    pub struct LowLevelNTriplesParser[RL] {
    parser : Parser[RL, NQuadsRecognizer]
    }

    LowLevelNTriplesParser::end

    LowLevelNTriplesParser::extend_from_slice

    fn LowLevelNTriplesParser::extend_from_slice(self : LowLevelNTriplesParser[RdfLexer], other : Bytes) -> Unit

    LowLevelNTriplesParser::is_end

    LowLevelNTriplesParser::parse_next

    LowLevelNTriplesSerializer

    pub struct LowLevelNTriplesSerializer {
    } derive(Default)

    LowLevelNTriplesSerializer::serialize_triple

    fn LowLevelNTriplesSerializer::serialize_triple(_self : LowLevelNTriplesSerializer, t : Triple) -> Result[String, Unit]

    LowLevelTriGParser

    pub struct LowLevelTriGParser[RL] {
    parser : Parser[RL, TriGRecognizer]
    }

    LowLevelTriGParser::base_iri

    fn[RL] LowLevelTriGParser::base_iri(self : LowLevelTriGParser[RL]) -> String?

    LowLevelTriGParser::end

    fn[RL] LowLevelTriGParser::end(self : LowLevelTriGParser[RL]) -> Unit

    LowLevelTriGParser::extend_from_slice

    fn[RL] LowLevelTriGParser::extend_from_slice(self : LowLevelTriGParser[RL], other : Bytes) -> Unit

    LowLevelTriGParser::is_end

    fn[RL] LowLevelTriGParser::is_end(self : LowLevelTriGParser[RL]) -> Bool

    LowLevelTriGParser::parse_next

    fn[RL : TokenRecognizer] LowLevelTriGParser::parse_next(self : LowLevelTriGParser[RL]) -> Result[Quad, TurtleError]?

    LowLevelTriGParser::prefixes

    LowLevelTriGSerializer

    pub struct LowLevelTriGSerializer {
    prefixes : Array[(String, String)]
    base_iri : Iri?
    prelude_written : Bool
    current_graph_name : GraphName
    current_subject_predicate : (NamedOrBlankNode, NamedNode)?
    }

    LowLevelTriGSerializer::finish

    LowLevelTriGSerializer::serialize_quad

    fn LowLevelTriGSerializer::serialize_quad(self : LowLevelTriGSerializer, q : Quad) -> Result[String, Unit]

    LowLevelTurtleParser

    pub struct LowLevelTurtleParser[RL] {
    parser : Parser[RL, TriGRecognizer]
    }

    LowLevelTurtleParser::base_iri

    fn[RL] LowLevelTurtleParser::base_iri(self : LowLevelTurtleParser[RL]) -> String?

    LowLevelTurtleParser::end

    fn[RL] LowLevelTurtleParser::end(self : LowLevelTurtleParser[RL]) -> Unit

    LowLevelTurtleParser::extend_from_slice

    fn[RL] LowLevelTurtleParser::extend_from_slice(self : LowLevelTurtleParser[RL], other : Bytes) -> Unit

    LowLevelTurtleParser::is_end

    fn[RL] LowLevelTurtleParser::is_end(self : LowLevelTurtleParser[RL]) -> Bool

    LowLevelTurtleParser::parse_next

    fn[RL : TokenRecognizer] LowLevelTurtleParser::parse_next(self : LowLevelTurtleParser[RL]) -> Result[RdfOut, TurtleError]?

    LowLevelTurtleParser::prefixes

    LowLevelTurtleSerializer

    pub struct LowLevelTurtleSerializer {
    inner : LowLevelTriGSerializer
    }

    LowLevelTurtleSerializer::finish

    LowLevelTurtleSerializer::serialize_triple

    fn LowLevelTurtleSerializer::serialize_triple(self : LowLevelTurtleSerializer, t : Triple) -> Result[String, Unit]

    Model

    pub(all) struct Model {
    quads : Array[Quad]
    } derive(
    Debug
    )

    纯模型:N-Quads 文档"应该"包含的内容

    MuteLogger

    type MuteLogger

    N3Parser

    pub struct N3Parser {
    lenient : Bool
    base_iri : Iri?
    prefixes : Map[String, Iri]
    } derive(Default)

    N3Parser::for_async_reader

    N3Parser::for_reader

    N3Parser::for_slice

    fn N3Parser::for_slice(self : N3Parser, slice : Bytes) -> SliceN3Parser[N3Recognizer]

    N3Parser::lenient

    fn N3Parser::lenient(self : N3Parser) -> N3Parser

    N3Parser::low_level

    fn N3Parser::low_level(self : N3Parser) -> LowLevelN3Parser[RdfLexer]

    N3Parser::new

    fn N3Parser::new() -> N3Parser

    N3Parser::with_base_iri

    fn N3Parser::with_base_iri(self : N3Parser, base_iri : IriRef) -> Result[N3Parser, IriError]

    N3Parser::with_prefix

    fn N3Parser::with_prefix(self : N3Parser, prefix_name : String, prefix_iri : IriRef) -> Result[N3Parser, IriError]

    N3PrefixesIter

    pub struct N3PrefixesIter {
    inner : Iter2[String, Iri]
    }

    N3Quad

    pub struct N3Quad {
    subject : N3Term
    predicate : N3Term
    object : N3Term
    graph_name : GraphName
    } derive(Eq, Hash,
    Debug
    )

    N3Recognizer

    type N3Recognizer

    N3Recognizer::add_error

    N3Recognizer::new_parser

    fn N3Recognizer::new_parser(data : Array[Byte], is_ending : Bool, unchecked : Bool, base_iri : Iri?, prefixes : Map[String, Iri], debug_logger? : &DebugLogger) -> Parser[RdfLexer, N3Recognizer]

    N3RecognizerContext

    type N3RecognizerContext

    N3RecognizerContext::as_ctx

    N3State

    N3State::to_str

    fn N3State::to_str(self : N3State) -> String

    N3Term

    pub enum N3Term {
    NamedNode(NamedNode)
    BlankNode(BlankNode)
    Literal(Literal)
    Triple(Triple)
    Variable(String)
    } derive(Eq, Hash,
    Debug
    )

    N3Token

    pub(all) enum N3Token {
    Iri(String)
    PrefixedName(prefix~ : String, localx~ : String, might_be_invalid_iri~ : Bool)
    Variable(String)
    BlankNodeLabel(String)
    String(String)
    LongString(String)
    Integer(String)
    Decimal(String)
    Double(String)
    LangTag(language~ : String, direction~ : BaseDirection?)
    Punctuation(String)
    PlainKeyword(String)
    } derive(Eq,
    Debug
    )

    impl Show for N3Token

    NQuadsParser

    pub struct NQuadsParser {
    lenient : Bool
    } derive(Default)

    NQuadsParser::for_async_reader

    NQuadsParser::for_reader

    NQuadsParser::for_slice

    fn NQuadsParser::for_slice(self : NQuadsParser, slice : BytesView) -> SliceNQuadsParser[NQuadsRecognizer]

    NQuadsParser::lenient

    fn NQuadsParser::lenient(self : NQuadsParser) -> NQuadsParser

    NQuadsParser::low_level

    NQuadsParser::new

    NQuadsParser::split_file_for_parallel_parsing

    async fn NQuadsParser::split_file_for_parallel_parsing(self : NQuadsParser, path : String, target_parallelism : Int64) -> Result[Array[SliceNQuadsParser[NQuadsRecognizer]], String]

    NQuadsParser::split_slice_for_parallel_parsing

    fn NQuadsParser::split_slice_for_parallel_parsing(self : NQuadsParser, slice : BytesView, target_parallelism : Int) -> Array[SliceNQuadsParser[NQuadsRecognizer]]

    NQuadsRecognizer

    pub(all) struct NQuadsRecognizer {
    stack : Array[NQuadsState]
    subjects : Array[NamedOrBlankNodeRef]
    predicates : Array[NamedNodeRef]
    objects : Array[TermRef]
    lenient : Bool
    debug_logger : &DebugLogger
    last_range : Range
    errors : Array[RuleRecognizerError]
    }

    NQuadsRecognizer::handle_after_quoted_triple_m

    NQuadsRecognizer::handle_expect_line_jump_m

    NQuadsRecognizer::handle_expect_literal_datatype_m

    fn NQuadsRecognizer::handle_expect_literal_datatype_m(self : NQuadsRecognizer, token : LocatedTokenOrLineJump, _ctx : NQuadsRecognizerContext, value : String) -> Result[(NQuadsRecognizer, NQuadsState, RdfOut?), RuleRecognizerError]

    NQuadsRecognizer::handle_expect_possible_graph_or_end_of_quoted_triple_m

    fn NQuadsRecognizer::handle_expect_possible_graph_or_end_of_quoted_triple_m(self : NQuadsRecognizer, token : LocatedTokenOrLineJump, ctx : NQuadsRecognizerContext) -> Result[(NQuadsRecognizer, NQuadsState, RdfOut?), RuleRecognizerError]

    NQuadsRecognizer::handle_recover_to_line_jump_m

    NQuadsRecognizer::new_parser

    fn NQuadsRecognizer::new_parser(data : Array[Byte], with_graph_name : Bool, lenient : Bool, debug_logger? : &DebugLogger) -> Parser[RdfLexer, NQuadsRecognizer]

    NQuadsRecognizer::process_transition_result

    fn NQuadsRecognizer::process_transition_result(self : NQuadsRecognizer, current_state : NQuadsState, result : Result[(NQuadsRecognizer, NQuadsState, RdfOut?), RuleRecognizerError]) -> (NQuadsRecognizer, RdfState, RdfOut?)

    NQuadsRecognizerContext

    pub(all) struct NQuadsRecognizerContext {
    with_graph_name : Bool
    lexer_options : LexerOptions
    }

    NQuadsSerializer

    pub struct NQuadsSerializer {
    } derive(Default)

    NQuadsSerializer::for_async_writer

    NQuadsSerializer::for_writer

    fn[W] NQuadsSerializer::for_writer(self : NQuadsSerializer, writer : W) -> WriterNQuadsSerializer[W]

    NQuadsSerializer::low_level

    NQuadsSerializer::new

    NQuadsSerializer::to_string

    fn NQuadsSerializer::to_string(self : NQuadsSerializer, q : Quad) -> String

    NQuadsState

    pub(all) enum NQuadsState {
    ExpectSubject
    ExpectPredicate
    ExpectedObject
    ExpectPossibleGraphOrEndOfQuotedTriple
    ExpectDot
    ExpectLiteralAnnotationOrGraphNameOrDot(value~ : String)
    ExpectLiteralDatatype(value~ : String)
    ExpectLineJump
    RecoverToLineJump
    AfterQuotedTriple
    } derive(Eq, Hash,
    Debug
    )

    NQuadsState::to_str

    fn NQuadsState::to_str(self : NQuadsState) -> String

    NQuadsSystem

    pub(all) struct NQuadsSystem {
    quads : Array[Quad]
    line_number : Int
    }

    包装真实 N-Quads 解析器 这里用简单状态模拟,实际替换为你的解析器

    NTriplesParser

    pub struct NTriplesParser {
    lenient : Bool
    } derive(Default)

    NTriplesParser::for_async_reader

    NTriplesParser::for_reader

    NTriplesParser::for_slice

    fn NTriplesParser::for_slice(self : NTriplesParser, slice : BytesView) -> SliceNTriplesParser[NQuadsRecognizer]

    NTriplesParser::lenient

    NTriplesParser::low_level

    NTriplesParser::new

    NTriplesParser::split_file_for_parallel_parsing

    async fn NTriplesParser::split_file_for_parallel_parsing(self : NTriplesParser, path : String, target_parallelism : Int64) -> Result[Array[SliceNTriplesParser[NQuadsRecognizer]], String]

    NTriplesParser::split_slice_for_parallel_parsing

    fn NTriplesParser::split_slice_for_parallel_parsing(self : NTriplesParser, slice : BytesView, target_parallelism : Int) -> Array[SliceNTriplesParser[NQuadsRecognizer]]

    NTriplesSerializer

    pub struct NTriplesSerializer {
    } derive(Default)

    NTriplesSerializer::for_async_writer

    NTriplesSerializer::for_writer

    fn[W] NTriplesSerializer::for_writer(self : NTriplesSerializer, writer : W) -> WriterNTriplesSerializer[W]

    NTriplesSerializer::low_level

    NTriplesSerializer::new

    NTriplesSerializer::to_string

    fn NTriplesSerializer::to_string(self : NTriplesSerializer, t : Triple) -> String

    NamedNode

    pub(all) struct NamedNode {
    iri : String
    } derive(Default, Eq, Hash, ToJson,
    Debug
    )

    NamedNode::as_enum

    fn NamedNode::as_enum(self : NamedNode) -> NamedOrBlankNode

    NamedNode::as_n3term

    fn NamedNode::as_n3term(self : NamedNode) -> N3Term

    NamedNode::as_ref

    fn NamedNode::as_ref(self : NamedNode) -> NamedNodeRef

    NamedNode::as_term

    fn NamedNode::as_term(self : NamedNode) -> Term

    NamedNodeRef

    pub(all) struct NamedNodeRef {
    iri : StringView
    } derive(Eq, Hash,
    Debug
    )

    NamedNodeRef::NamedNodeRef

    fn NamedNodeRef::NamedNodeRef(iri : StringView) -> NamedNodeRef

    NamedNodeRef::as_enum

    NamedNodeRef::as_n3term

    fn NamedNodeRef::as_n3term(self : NamedNodeRef) -> N3Term

    NamedNodeRef::as_term

    fn NamedNodeRef::as_term(self : NamedNodeRef) -> TermRef

    NamedNodeRef::into_datatype

    fn NamedNodeRef::into_datatype(self : NamedNodeRef, value : String) -> VarDataType

    NamedNodeRef::into_owned

    fn NamedNodeRef::into_owned(self : NamedNodeRef) -> NamedNode

    NamedNodeRef::new_unchecked

    fn NamedNodeRef::new_unchecked(iri : StringView) -> NamedNodeRef

    NamedOrBlankNode

    pub(all) enum NamedOrBlankNode {
    NamedNode(NamedNode)
    BlankNode(BlankNode)
    } derive(Eq, Hash, ToJson,
    Debug
    )

    NamedOrBlankNode::as_n3term

    fn NamedOrBlankNode::as_n3term(self : NamedOrBlankNode) -> N3Term

    NamedOrBlankNode::as_ref

    NamedOrBlankNode::is_blank_node

    fn NamedOrBlankNode::is_blank_node(self : NamedOrBlankNode) -> Bool

    NamedOrBlankNode::is_named_node

    fn NamedOrBlankNode::is_named_node(self : NamedOrBlankNode) -> Bool

    NamedOrBlankNodeRef

    pub enum NamedOrBlankNodeRef {
    NamedNodeRef(NamedNodeRef)
    BlankNodeRef(BlankNodeRef)
    } derive(Eq, Hash,
    Debug
    )

    NamedOrBlankNodeRef::as_term

    NamedOrBlankNodeRef::into_graph

    NamedOrBlankNodeRef::into_owned

    NamedOrBlankNodeRef::is_blank_node

    fn NamedOrBlankNodeRef::is_blank_node(self : NamedOrBlankNodeRef) -> Bool

    NamedOrBlankNodeRef::is_named_node

    fn NamedOrBlankNodeRef::is_named_node(self : NamedOrBlankNodeRef) -> Bool

    Parser

    pub(all) struct Parser[TR, RR] {
    lexer : Lexer[TR]
    state : RR?
    context : RdfContext
    results : Array[RdfOut]
    errors : Array[RuleRecognizerError]
    }

    Parser::Parser

    fn[TR, RR] Parser::Parser(lexer : Lexer[TR], recognizer : RR, context : RdfContext) -> Parser[TR, RR]

    Parser::end

    fn[TR, RR] Parser::end(self : Parser[TR, RR]) -> Unit

    Parser::extend_from_slice

    fn[TR, RR] Parser::extend_from_slice(self : Parser[TR, RR], other : Bytes) -> Unit

    Parser::for_async_reader

    fn[TR, RR] Parser::for_async_reader(self : Parser[TR, RR], reader : &
    Reader
    ) -> AsyncReaderIterator[TR, RR]

    Parser::for_reader

    fn[TR, RR] Parser::for_reader(self : Parser[TR, RR], reader : &
    Reader
    ) -> ReaderIterator[TR, RR]

    Parser::is_end

    fn[TR, RR] Parser::is_end(self : Parser[TR, RR]) -> Bool

    Parser::parse_next

    fn[TR : TokenRecognizer, RR : RuleRecognizer] Parser::parse_next(self : Parser[TR, RR]) -> Result[RdfOut, TurtleError]?

    ParserM

    pub(all) struct ParserM[TR, M] {
    lexer : Lexer[TR]
    engine : GenericStateMachine[M]
    context : RdfContext
    errors : Array[RuleRecognizerError]
    }

    ParserM::ParserM

    fn[TR, M] ParserM::ParserM(lexer : Lexer[TR], engine : GenericStateMachine[M], context : RdfContext) -> ParserM[TR, M]

    ParserM::end

    fn[TR, M] ParserM::end(self : ParserM[TR, M]) -> Bool

    ParserM::is_end

    fn[TR, M : StateMachine] ParserM::is_end(self : ParserM[TR, M]) -> Bool

    ParserM::parse_next

    fn[TR : TokenRecognizer, M : StateMachine + RuleRecognizer] ParserM::parse_next(self : ParserM[TR, M]) -> Result[RdfOut, TurtleError]?

    ParserM::try_finish

    fn[TR, M : StateMachine] ParserM::try_finish(self : ParserM[TR, M]) -> Result[RdfOut, TurtleError]?

    检查并处理完成状态

    ParserM::try_output

    fn[TR, M] ParserM::try_output(self : ParserM[TR, M]) -> Result[RdfOut, TurtleError]?

    尝试返回一个输出

    Position

    pub(all) struct Position {
    line_start_buffer_offset : Int
    buffer_offset : Int
    global_offset : Int
    global_line : Int
    } derive(Default,
    Debug
    )

    Predicate

    pub enum Predicate {
    Regular(N3Term)
    Inverted(N3Term)
    }

    Quad

    pub struct Quad {
    subject : NamedOrBlankNode
    predicate : NamedNode
    object : Term
    graph_name : GraphName
    } derive(Eq, Hash, ToJson,
    Debug
    )

    Quad::Quad

    fn Quad::Quad(subject : NamedOrBlankNode, predicate : NamedNode, object : Term, graph_name : GraphName) -> Quad

    Quad::as_n3quad

    fn Quad::as_n3quad(self : Quad) -> N3Quad

    Quad::as_ref

    fn Quad::as_ref(self : Quad) -> QuadRef

    QuadRef

    pub struct QuadRef {
    subject : NamedOrBlankNodeRef
    predicate : NamedNodeRef
    object : TermRef
    graph_name : GraphNameRef
    }

    QuadRef::into_owned

    fn QuadRef::into_owned(self : QuadRef) -> Quad

    Range

    pub(all) struct Range {
    start : Int
    end : Int
    } derive(Default, Eq,
    Debug
    )

    impl Show for Range

    Range::Range

    fn Range::Range(start : Int, end : Int) -> Range

    Range::contains

    fn Range::contains(self : Range, pos : Int) -> Bool

    Range::length

    fn Range::length(self : Range) -> Int

    Range::single

    fn Range::single(pos : Int) -> Range

    Range::utf8_range

    fn Range::utf8_range(self : Range, data : ArrayView[Byte]) -> String

    RdfContext

    #alias(Ctx)
    pub(all) enum RdfContext {
    TriGRecognizerContext(TriGRecognizerContext)
    NQuadsRecognizerContext(NQuadsRecognizerContext)
    N3RecognizerContext(N3RecognizerContext)
    }

    RdfLexer

    pub(all) struct RdfLexer {
    mode : RdfLexerMode
    lenient : Bool
    }

    RdfLexer::RdfLexer

    fn RdfLexer::RdfLexer(mode : RdfLexerMode, lenient : Bool) -> RdfLexer

    RdfLexer::is_possible_pn_chars

    fn RdfLexer::is_possible_pn_chars(c : Char) -> Bool

    RdfLexer::is_possible_pn_chars_u

    fn RdfLexer::is_possible_pn_chars_u(c : Char) -> Bool

    RdfLexerMode

    pub(all) enum RdfLexerMode {
    NTriples
    N3
    } derive(Eq)

    RdfOut

    #alias(O)
    pub(all) enum RdfOut {
    Quad(Quad)
    Triple(Triple)
    N3Quad(N3Quad)
    } derive(
    Debug
    )

    impl Show for RdfOut

    RdfOut::new

    fn RdfOut::new(quad : Quad) -> RdfOut

    RdfState

    pub(all) enum RdfState {
    TriGState(TriGState)
    NQuadsState(NQuadsState)
    N3State(N3State)
    } derive(Eq, Hash)

    impl Show for RdfState

    ReaderIterator

    pub struct ReaderIterator[TR, RR] {
    reader : &
    Reader

    parser : Parser[TR, RR]
    }

    ReaderIterator::next

    async fn[RR : RuleRecognizer] ReaderIterator::next(self : ReaderIterator[RdfLexer, RR]) -> Result[RdfOut, LexerError]?

    ReaderN3Parser

    pub struct ReaderN3Parser[RL] {
    inner : ReaderIterator[RL, N3Recognizer]
    }

    ReaderN3Parser::base_iri

    fn[RL] ReaderN3Parser::base_iri(self : ReaderN3Parser[RL]) -> String?

    ReaderN3Parser::prefixes

    fn[RL] ReaderN3Parser::prefixes(self : ReaderN3Parser[RL]) -> N3PrefixesIter

    ReaderNQuadsParser

    pub struct ReaderNQuadsParser[RL] {
    inner : ReaderIterator[RL, NQuadsRecognizer]
    }

    ReaderNTriplesParser

    pub struct ReaderNTriplesParser[RL] {
    inner : ReaderIterator[RL, NQuadsRecognizer]
    }

    ReaderTriGParser

    pub struct ReaderTriGParser[RL] {
    inner : ReaderIterator[RL, TriGRecognizer]
    }

    ReaderTriGParser::base_iri

    fn[RL] ReaderTriGParser::base_iri(self : ReaderTriGParser[RL]) -> String?

    ReaderTriGParser::prefixes

    fn[RL] ReaderTriGParser::prefixes(self : ReaderTriGParser[RL]) -> TriGPrefixesIter

    ReaderTurtleParser

    pub struct ReaderTurtleParser[RL] {
    inner : ReaderIterator[RL, TriGRecognizer]
    }

    ReaderTurtleParser::base_iri

    fn[RL] ReaderTurtleParser::base_iri(self : ReaderTurtleParser[RL]) -> String?

    ReaderTurtleParser::prefixes

    Response

    pub(all) enum Response {
    QuadParsed
    TripleParsed
    LiteralParsed
    TypedLiteralParsed
    BlankSubjectParsed
    BlankObjectParsed
    } derive(Eq,
    Debug
    )

    解析响应

    SerializationError

    pub(all) enum SerializationError {
    FormatError(String)
    IoError(String)
    }

    SliceIterator

    pub(all) struct SliceIterator[TR, RR] {
    parser : Parser[TR, RR]
    }

    SliceIterator::next

    fn[TR : TokenRecognizer, RR : RuleRecognizer] SliceIterator::next(self : SliceIterator[TR, RR]) -> Result[RdfOut, LexerError]?

    SliceN3Parser

    pub struct SliceN3Parser[RL] {
    inner : SliceIterator[RdfLexer, RL]
    }

    SliceN3Parser::base_iri

    fn SliceN3Parser::base_iri(self : SliceN3Parser[RdfLexer]) -> String?

    SliceN3Parser::prefixes

    SliceNQuadsParser

    pub struct SliceNQuadsParser[RL] {
    inner : SliceIterator[RdfLexer, RL]
    }

    SliceNTriplesParser

    pub struct SliceNTriplesParser[RL] {
    inner : SliceIterator[RdfLexer, RL]
    }

    SliceTriGParser

    pub struct SliceTriGParser[RL] {
    inner : SliceIterator[RdfLexer, RL]
    }

    SliceTriGParser::base_iri

    fn SliceTriGParser::base_iri(self : SliceTriGParser[RdfLexer]) -> String?

    SliceTriGParser::prefixes

    SliceTurtleParser

    pub struct SliceTurtleParser[RL] {
    inner : SliceIterator[RdfLexer, RL]
    }

    SliceTurtleParser::base_iri

    fn[RL] SliceTurtleParser::base_iri(self : SliceTurtleParser[RL]) -> String?

    SliceTurtleParser::prefixes

    SourcePos

    pub struct SourcePos {
    line : Int
    column : Int
    offset : Int
    } derive(
    Debug
    )

    SourcePos::end_position

    fn SourcePos::end_position(self : SourcePos, consumed_bytes : Int) -> SourcePos

    SourcePos::start_position

    fn SourcePos::start_position(self : SourcePos) -> SourcePos

    SourceRange

    pub(all) struct SourceRange {
    start : SourcePos
    end : SourcePos
    } derive(
    Debug
    )

    impl Show for SourceRange

    SourceRange::to_range

    fn SourceRange::to_range(self : SourceRange) -> Range

    State

    type State derive(Eq, Hash)

    SubtagType

    pub(all) enum SubtagType {
    PrivateUseIntro
    ExtensionIntro(Char)
    Alphabetic(Int)
    Numeric(Int)
    Alphanumeric(Int)
    Invalid
    }

    TagElementsPositions

    type TagElementsPositions derive(Default, Eq, Hash,
    Debug
    )

    Term

    pub(all) enum Term {
    NamedNode(NamedNode)
    BlankNode(BlankNode)
    Literal(Literal)
    Triple(Triple)
    } derive(Eq, Hash, ToJson,
    Debug
    )

    Term::as_n3term

    fn Term::as_n3term(self : Term) -> N3Term

    Term::as_ref

    fn Term::as_ref(self : Term) -> TermRef

    Term::is_blank_node

    fn Term::is_blank_node(self : Term) -> Bool

    Term::is_literal

    fn Term::is_literal(self : Term) -> Bool

    Term::is_named_node

    fn Term::is_named_node(self : Term) -> Bool

    Term::is_triple

    fn Term::is_triple(self : Term) -> Bool

    TermRef

    pub(all) enum TermRef {
    NamedNodeRef(NamedNodeRef)
    BlankNodeRef(BlankNodeRef)
    LiteralRef(LiteralRef)
    TripleRef(TripleRef)
    } derive(Eq, Hash,
    Debug
    )

    TermRef::into_owned

    fn TermRef::into_owned(self : TermRef) -> Term

    Token

    pub(all) enum Token {
    Iri(String)
    PnameLn(String)
    PnameNs(String)
    BlankNodeLabel(String)
    StringLiteral1(String)
    StringLiteral2(String)
    StringLiteralLong1(String)
    StringLiteralLong2(String)
    LangDir(String)
    Integer(String)
    Decimal(String)
    Double(String)
    IntegerPositive(String)
    DecimalPositive(String)
    DoublePositive(String)
    IntegerNegative(String)
    DecimalNegative(String)
    DoubleNegative(String)
    Var1(String)
    Var2(String)
    Keyword(String)
    Operator(String)
    Error(String)
    } derive(Eq,
    Debug
    )

    impl Show for Token

    TriGParser

    pub struct TriGParser {
    lenient : Bool
    base_iri : Iri?
    prefixes : Map[String, Iri]
    } derive(Default)

    TriGParser::for_async_reader

    TriGParser::for_reader

    TriGParser::for_slice

    fn TriGParser::for_slice(self : TriGParser, slice : Bytes) -> SliceTriGParser[TriGRecognizer]

    TriGParser::lenient

    fn TriGParser::lenient(self : TriGParser) -> TriGParser

    TriGParser::low_level

    TriGParser::new

    fn TriGParser::new() -> TriGParser

    TriGParser::with_base_iri

    fn TriGParser::with_base_iri(self : TriGParser, base_iri : IriRef) -> Result[TriGParser, IriError]

    TriGParser::with_prefix

    fn TriGParser::with_prefix(self : TriGParser, prefix_name : String, prefix_iri : IriRef) -> Result[TriGParser, IriError]

    TriGPrefixesIter

    pub struct TriGPrefixesIter {
    inner : Iter2[String, Iri]
    }

    TriGRecognizer

    pub(all) struct TriGRecognizer {
    stack : Array[TriGState]
    cur_subject : Array[NamedOrBlankNodeRef]
    cur_predicate : Array[NamedNodeRef]
    cur_object : Array[TermRef]
    cur_graph : GraphNameRef
    cur_reifier : Array[NamedOrBlankNodeRef]
    lenient : Bool
    debug_logger : &DebugLogger
    last_range : Range
    errors : Array[RuleRecognizerError]
    }

    TriGRecognizer::new_parser

    fn TriGRecognizer::new_parser(data : Array[Byte], is_ending : Bool, with_graph_name : Bool, lenient : Bool, base_iri : Iri?, prefixes : Map[String, Iri], debug_logger? : &DebugLogger) -> Parser[RdfLexer, TriGRecognizer]

    TriGRecognizer::process_transition_result

    fn TriGRecognizer::process_transition_result(self : TriGRecognizer, current_state : TriGState, result : Result[(TriGRecognizer, TriGState, RdfOut?), RuleRecognizerError]) -> (TriGRecognizer, RdfState, RdfOut?)

    TriGRecognizer::replace_top

    fn TriGRecognizer::replace_top(stack : Array[TriGState], new_state : TriGState) -> Array[TriGState]

    TriGRecognizer::set_state

    fn TriGRecognizer::set_state(self : TriGRecognizer, new_state : TriGState) -> TriGRecognizer

    TriGRecognizerContext

    pub(all) struct TriGRecognizerContext {
    lexer_options : LexerOptions
    with_graph_name : Bool
    prefixes : Map[String, Iri]
    }

    TriGRecognizerContext::TriGRecognizerContext

    fn TriGRecognizerContext::TriGRecognizerContext(lexer_options : LexerOptions, with_graph_name : Bool, prefixes : Map[String, Iri]) -> TriGRecognizerContext

    TriGRecognizerContext::prefixes

    fn TriGRecognizerContext::prefixes(self : TriGRecognizerContext) -> Map[String, Iri]

    TriGSerializer

    pub struct TriGSerializer {
    base_iri : Iri?
    prefixes : Map[String, Iri]
    } derive(Default)

    TriGSerializer::for_async_writer

    TriGSerializer::for_writer

    fn[W] TriGSerializer::for_writer(self : TriGSerializer, writer : W) -> WriterTriGSerializer[W]

    TriGSerializer::low_level

    TriGSerializer::new

    TriGSerializer::with_base_iri

    fn TriGSerializer::with_base_iri(self : TriGSerializer, base_iri : IriRef) -> Result[TriGSerializer, IriError]

    TriGSerializer::with_prefix

    fn TriGSerializer::with_prefix(self : TriGSerializer, prefix_name : String, prefix_iri : IriRef) -> Result[TriGSerializer, IriError]

    TriGState

    pub(all) enum TriGState {
    ExpectAtKeyword
    TriGDoc
    ExpectDot
    BaseExpectIri
    PrefixExpectPrefix
    PrefixExpectIri(name~ : String)
    VersionExpectVersion
    TriplesOrGraph
    WrappedGraphBlankNodePropertyListCurrent
    SubjectBlankNodePropertyListEnd
    SubjectBlankNodePropertyListAfter
    SubjectCollectionBeginning
    SubjectCollectionPossibleEnd
    WrappedGraphOrPredicateObjectList(term~ : NamedOrBlankNodeRef)
    WrappedGraph
    WrappedGraphPossibleEnd
    GraphName
    GraphNameAnonEnd
    Triples
    TriplesBlankNodePropertyListCurrent
    MaybePredicateObjectList
    PredicateObjectList
    PredicateObjectListEnd
    PredicateObjectListPossibleContinuation
    ObjectsList
    AnnotationBlock(with_reifier~ : Bool)
    AnnotationEnd(with_reifier~ : Bool)
    Verb
    Object
    ObjectBlankNodePropertyListCurrent
    ObjectBlankNodePropertyListEnd
    ObjectCollectionBeginning
    ObjectCollectionPossibleEnd
    LiteralPossibleSuffix(value~ : String, emit~ : Bool)
    LiteralExpectDatatype(value~ : String, emit~ : Bool)
    SubjectReifiedTripleEnd
    ObjectReifiedTripleEnd(emit~ : Bool)
    TripleTermEnd(emit~ : Bool)
    EndOfReifiedTripleBeforeReifier
    Reifier(triple~ : Triple)
    ReifiedTripleSubject(is_reified~ : Bool)
    ReifiedTripleObject(is_reified~ : Bool)
    QuotedAnonEnd
    InCollection
    CollectionElement
    CollectionEnd
    } derive(Eq, Hash,
    Debug
    )

    impl Show for TriGState

    TriGState::to_str

    fn TriGState::to_str(self : TriGState) -> String

    Triple

    pub struct Triple {
    subject : NamedOrBlankNode
    predicate : NamedNode
    object : Term
    } derive(Eq, Hash, ToJson,
    Debug
    )

    impl Show for Triple

    Triple::Triple

    fn Triple::Triple(subject : NamedOrBlankNode, predicate : NamedNode, object : Term) -> Triple

    Triple::as_enum

    fn Triple::as_enum(self : Triple) -> Term

    Triple::as_n3term

    fn Triple::as_n3term(self : Triple) -> N3Term

    Triple::as_ref

    fn Triple::as_ref(self : Triple) -> TripleRef

    Triple::as_term

    fn Triple::as_term(self : Triple) -> Term

    Triple::from_terms

    fn Triple::from_terms(subject : NamedOrBlankNode, predicate : NamedNode, object : Term) -> Result[Triple, TryFromTermError]

    Triple::in_graph

    fn Triple::in_graph(self : Triple, graph_name : GraphNameRef) -> Quad

    TripleRef

    pub struct TripleRef {
    subject : NamedOrBlankNodeRef
    predicate : NamedNodeRef
    object : TermRef
    } derive(Eq, Hash,
    Debug
    )

    TripleRef::TripleRef

    fn TripleRef::TripleRef(subject : NamedOrBlankNodeRef, predicate : NamedNodeRef, object : TermRef) -> TripleRef

    TripleRef::in_graph

    fn TripleRef::in_graph(self : TripleRef, graph_name : GraphNameRef) -> QuadRef

    TripleRef::into_owned

    fn TripleRef::into_owned(self : TripleRef) -> Triple

    TryFromTermError

    pub struct TryFromTermError {
    term : Term
    target : String
    } derive(
    Debug
    )

    TryFromTermError::TryFromTermError

    fn TryFromTermError::TryFromTermError(term : Term, target : String) -> TryFromTermError

    TryFromTermError::as_term

    fn TryFromTermError::as_term(self : TryFromTermError) -> Term

    TurtleParser

    pub struct TurtleParser {
    lenient : Bool
    base_iri : Iri?
    prefixes : Map[String, Iri]
    } derive(Default)

    TurtleParser::for_async_reader

    TurtleParser::for_reader

    TurtleParser::for_slice

    fn TurtleParser::for_slice(self : TurtleParser, slice : BytesView) -> SliceTurtleParser[TriGRecognizer]

    TurtleParser::lenient

    fn TurtleParser::lenient(self : TurtleParser) -> TurtleParser

    TurtleParser::low_level

    TurtleParser::new

    TurtleParser::split_slice_for_parallel_parsing

    fn TurtleParser::split_slice_for_parallel_parsing(self : TurtleParser, slice : BytesView, target_parallelism : Int) -> Array[SliceTurtleParser[TriGRecognizer]]

    TurtleParser::with_base_iri

    fn TurtleParser::with_base_iri(self : TurtleParser, base_iri : IriRef) -> Result[TurtleParser, IriError]

    TurtleParser::with_prefix

    fn TurtleParser::with_prefix(self : TurtleParser, prefix_name : String, prefix_iri : IriRef) -> Result[TurtleParser, IriError]

    TurtlePrefixesIter

    pub struct TurtlePrefixesIter {
    inner : Iter2[String, Iri]
    }

    TurtleSerializer

    pub struct TurtleSerializer {
    inner : TriGSerializer
    } derive(Default)

    TurtleSerializer::for_async_writer

    TurtleSerializer::for_writer

    fn[W] TurtleSerializer::for_writer(self : TurtleSerializer, writer : W) -> WriterTurtleSerializer[W]

    TurtleSerializer::low_level

    TurtleSerializer::new

    TurtleSerializer::with_base_iri

    fn TurtleSerializer::with_base_iri(self : TurtleSerializer, base_iri : IriRef) -> Result[TurtleSerializer, IriError]

    TurtleSerializer::with_prefix

    fn TurtleSerializer::with_prefix(self : TurtleSerializer, prefix_name : String, prefix_iri : IriRef) -> Result[TurtleSerializer, IriError]

    VarDataType

    pub(all) enum VarDataType {
    IntVar(String)
    IntegerVar(String)
    DoubleVar(String)
    StringVar(String)
    FalseVar
    TrueVar
    DecimalVar(StringView)
    DateVar(String)
    TimeVar(String)
    DateTimeVar(String)
    DurationVar(String)
    } derive(Eq, Hash, ToJson,
    Debug
    )

    impl Show for VarDataType

    WriterNQuadsSerializer

    pub struct WriterNQuadsSerializer[W] {
    writer : W
    low_level_writer : LowLevelNQuadsSerializer
    }

    WriterNQuadsSerializer::finish

    fn[W] WriterNQuadsSerializer::finish(self : WriterNQuadsSerializer[W]) -> W

    WriterNQuadsSerializer::serialize_quad

    fn[W] WriterNQuadsSerializer::serialize_quad(self : WriterNQuadsSerializer[W], q : Quad) -> Result[String, Unit]

    WriterNTriplesSerializer

    pub struct WriterNTriplesSerializer[W] {
    writer : W
    low_level_writer : LowLevelNTriplesSerializer
    }

    WriterNTriplesSerializer::finish

    WriterNTriplesSerializer::serialize_triple

    fn[W] WriterNTriplesSerializer::serialize_triple(self : WriterNTriplesSerializer[W], t : Triple) -> Result[String, Unit]

    WriterTriGSerializer

    pub struct WriterTriGSerializer[W] {
    writer : W
    low_level_writer : LowLevelTriGSerializer
    }

    WriterTriGSerializer::finish

    fn[W] WriterTriGSerializer::finish(self : WriterTriGSerializer[W]) -> W

    WriterTriGSerializer::serialize_quad

    fn[W] WriterTriGSerializer::serialize_quad(self : WriterTriGSerializer[W], q : Quad) -> Result[String, Unit]

    WriterTurtleSerializer

    pub struct WriterTurtleSerializer[W] {
    inner : WriterTriGSerializer[W]
    }

    WriterTurtleSerializer::finish

    fn[W] WriterTurtleSerializer::finish(self : WriterTurtleSerializer[W]) -> W

    WriterTurtleSerializer::serialize_triple

    fn[W] WriterTurtleSerializer::serialize_triple(self : WriterTurtleSerializer[W], t : Triple) -> Result[String, Unit]

    MAX_BUFFER_SIZE

    let MAX_BUFFER_SIZE : Int

    MIN_BUFFER_SIZE

    let MIN_BUFFER_SIZE : Int

    MIN_PARALLEL_CHUNK_SIZE

    let MIN_PARALLEL_CHUNK_SIZE : Int

    array_view_has_prefix

    fn array_view_has_prefix(data : ArrayView[Byte], prefix : Bytes) -> Bool

    array_view_memchr

    fn array_view_memchr(target : Byte, data : ArrayView[Byte]) -> Int?

    array_view_memchr2

    fn array_view_memchr2(c1 : Byte, c2 : Byte, data : ArrayView[Byte]) -> Int?

    classify_subtag

    fn classify_subtag(s : StringView) -> SubtagType

    find_newline_in_range

    fn find_newline_in_range(bytes : BytesView, start : Int, end : Int) -> Int?

    在指定范围内搜索换行符,返回换行符的绝对位置

    from_str_radix

    fn from_str_radix(s : String, radix : Int) -> Result[UInt, String]

    get_ntriples_file_chunks

    async fn get_ntriples_file_chunks(file :
    File
    , file_size : Int64, n_chunks : Int) -> Result[Array[(Int64, Int64)], String]

    get_ntriples_slice_chunks

    fn get_ntriples_slice_chunks(bytes : BytesView, n_chunks : Int) -> Array[(Int, Int)]

    get_turtle_slice_chunks

    fn get_turtle_slice_chunks(bytes : BytesView, n_chunks : Int) -> Array[(Int, Int)]

    is_pchar

    fn is_pchar(c : Char) -> Bool

    is_unreserved

    fn is_unreserved(c : Char) -> Bool

    is_valid_hex_string

    fn is_valid_hex_string(hex : String) -> Bool

    lwALT

    let lwALT : NamedNodeRef

    lwANY_URI

    let lwANY_URI : NamedNodeRef

    lwBAG

    let lwBAG : NamedNodeRef

    lwBASE_64_BINARY

    let lwBASE_64_BINARY : NamedNodeRef

    lwBOOLEAN

    let lwBOOLEAN : NamedNodeRef

    lwBYTE

    let lwBYTE : NamedNodeRef

    lwCLASS

    let lwCLASS : NamedNodeRef

    lwCOMMENT

    let lwCOMMENT : NamedNodeRef

    lwCONTAINER

    let lwCONTAINER : NamedNodeRef

    lwCONTAINER_MEMBERSHIP_PROPERTY

    let lwCONTAINER_MEMBERSHIP_PROPERTY : NamedNodeRef

    lwDATATYPE

    let lwDATATYPE : NamedNodeRef

    lwDATE

    let lwDATE : NamedNodeRef

    lwDATE_TIME

    let lwDATE_TIME : NamedNodeRef

    lwDATE_TIME_STAMP

    let lwDATE_TIME_STAMP : NamedNodeRef

    lwDAY_TIME_DURATION

    let lwDAY_TIME_DURATION : NamedNodeRef

    lwDECIMAL

    let lwDECIMAL : NamedNodeRef

    lwDIR_LANG_STRING

    let lwDIR_LANG_STRING : NamedNodeRef

    lwDOMAIN

    let lwDOMAIN : NamedNodeRef

    lwDOUBLE

    let lwDOUBLE : NamedNodeRef

    lwDURATION

    let lwDURATION : NamedNodeRef

    lwFIRST

    let lwFIRST : NamedNodeRef

    lwFLOAT

    let lwFLOAT : NamedNodeRef

    lwG_DAY

    let lwG_DAY : NamedNodeRef

    lwG_MONTH

    let lwG_MONTH : NamedNodeRef

    lwG_MONTH_DAY

    let lwG_MONTH_DAY : NamedNodeRef

    lwG_YEAR

    let lwG_YEAR : NamedNodeRef

    lwG_YEAR_MONTH

    let lwG_YEAR_MONTH : NamedNodeRef

    lwHEX_BINARY

    let lwHEX_BINARY : NamedNodeRef

    lwHTML

    let lwHTML : NamedNodeRef

    lwINT

    let lwINT : NamedNodeRef

    lwINTEGER

    let lwINTEGER : NamedNodeRef

    lwIS_DEFINED_BY

    let lwIS_DEFINED_BY : NamedNodeRef

    lwJSON

    let lwJSON : NamedNodeRef

    lwLABEL

    let lwLABEL : NamedNodeRef

    lwLANGUAGE

    let lwLANGUAGE : NamedNodeRef

    lwLANG_STRING

    let lwLANG_STRING : NamedNodeRef

    lwLIST

    let lwLIST : NamedNodeRef

    lwLITERAL

    let lwLITERAL : NamedNodeRef

    lwLONG

    let lwLONG : NamedNodeRef

    lwMEMBER

    let lwMEMBER : NamedNodeRef

    lwNAME

    let lwNAME : NamedNodeRef

    lwNC_NAME

    let lwNC_NAME : NamedNodeRef

    lwNEGATIVE_INTEGER

    let lwNEGATIVE_INTEGER : NamedNodeRef

    lwNIL

    let lwNIL : NamedNodeRef

    lwNMTOKEN

    let lwNMTOKEN : NamedNodeRef

    lwNON_NEGATIVE_INTEGER

    let lwNON_NEGATIVE_INTEGER : NamedNodeRef

    lwNON_POSITIVE_INTEGER

    let lwNON_POSITIVE_INTEGER : NamedNodeRef

    lwNORMALIZED_STRING

    let lwNORMALIZED_STRING : NamedNodeRef

    lwOBJECT

    let lwOBJECT : NamedNodeRef

    lwPOSITIVE_INTEGER

    let lwPOSITIVE_INTEGER : NamedNodeRef

    lwPREDICATE

    let lwPREDICATE : NamedNodeRef

    lwPROPERTY

    let lwPROPERTY : NamedNodeRef

    lwRANGE

    let lwRANGE : NamedNodeRef

    lwREIFIES

    let lwREIFIES : NamedNodeRef

    lwRESOURCE

    let lwRESOURCE : NamedNodeRef

    lwREST

    let lwREST : NamedNodeRef

    lwSEE_ALSO

    let lwSEE_ALSO : NamedNodeRef

    lwSEQ

    let lwSEQ : NamedNodeRef

    lwSHORT

    let lwSHORT : NamedNodeRef

    lwSTATEMENT

    let lwSTATEMENT : NamedNodeRef

    lwSTRING

    let lwSTRING : NamedNodeRef

    lwSUBJECT

    let lwSUBJECT : NamedNodeRef

    lwSUB_CLASS_OF

    let lwSUB_CLASS_OF : NamedNodeRef

    lwSUB_PROPERTY_OF

    let lwSUB_PROPERTY_OF : NamedNodeRef

    lwTIME

    let lwTIME : NamedNodeRef

    lwTOKEN

    let lwTOKEN : NamedNodeRef

    lwTYPE

    let lwTYPE : NamedNodeRef

    lwUNSIGNED_BYTE

    let lwUNSIGNED_BYTE : NamedNodeRef

    lwUNSIGNED_INT

    let lwUNSIGNED_INT : NamedNodeRef

    lwUNSIGNED_LONG

    let lwUNSIGNED_LONG : NamedNodeRef

    lwUNSIGNED_SHORT

    let lwUNSIGNED_SHORT : NamedNodeRef

    lwVALUE

    let lwVALUE : NamedNodeRef

    lwWKT_LITERAL

    let lwWKT_LITERAL : NamedNodeRef

    lwXML_LITERAL

    let lwXML_LITERAL : NamedNodeRef

    lwYEAR_MONTH_DURATION

    let lwYEAR_MONTH_DURATION : NamedNodeRef

    make_console_logger

    fn make_console_logger() -> ConsoleLogger

    make_mute_logger

    fn make_mute_logger() -> MuteLogger

    next_terminating_char

    fn next_terminating_char(parser : TurtleParser, input : BytesView) -> Int?

    parse_duration

    fn parse_duration(s : String) -> Result[String, String]

    fn print_quoted_str(f : StringBuilder, string : StringView) -> String

    remove_dot_segments_from_array

    fn remove_dot_segments_from_array(segments : Array[String]) -> Array[String]

    resolve_local_name

    fn resolve_local_name(prefix : String, localx : String, might_be_invalid_iri : Bool, prefixes : Map[String, Iri]) -> Result[NamedNodeRef, String]