Crate ntriple [] [src]

ntriple, a library to parse N-Triples on a per string basis.

# Examples

Here's a typical example. It sends an input string (can be a line from a file for example) to the triple_line() method of the parser, which returns an Option<Triple> if the input is valid, or a None or ParseError if the input is a comment or an invalid triple respectively.

If you are sure that the input should be a triple and no comment, white space, or other rubbish, you can just use the triple method, which omits the Option and directly returns a ParseResult<Triple>.

use ntriple::parser::triple_line;
use ntriple::{Subject, Predicate, Object};

fn main() {

  // Here's some input in n-triples format. Unicode escape sequences are resolved
  // so \u30AA becomes オ.
  let input = "_:subject <http://example.org/predicate> \"\\u30AAオブジェクト\".";
  
  // parse the input:
  let parse_result = triple_line(&input);

  // The result contains an option, or an error when parsing the input failed.
  match parse_result {

    // Ok if the input is a triple, a comment, an empty string or whitespace(s).
    Ok(triple_option) => {
      match triple_option {
        Some(triple) => { // a valid triple is found.
          match triple.subject {
            // In this case we expect a blank node label
            Subject::BNode(subject) => println!("Subject: blank node: {}", subject),
            _ => println!("Weird, a blank node is expected here.")
          };
          match triple.predicate {
            Predicate::IriRef(iri) => println!("Predicate: {}", iri)
          };
          match triple.object {
            Object::Lit(literal) => println!("Object: literal: {} ", literal.data),
            _ => println!("Weird, a literal is expected here.")
          }
        },
        None => { println!("Skipped [{}]", input); }
      };
    },
    // a parse error: the input is no valid triple, comment, empty string or whitespace(s)
    Err(error) => println!("{}\n{}", input, error),
  };
}

Modules

parser

Generated code.

Structs

Literal

Represents an RDF literal.

Triple

Represents an RDF statement in the form of a triple.

Enums

Object

Represents the object part of a triple.

Predicate

Represents the predicate part of a triple.

Subject

Represents the subject part of a triple.

TypeLang

Represents either a type or a language.