ntriple 0.1.0

A simple RDF N-Triples parser
Documentation
# ntriple
[![Build Status](https://travis-ci.org/ghsnd/ntriple.svg?branch=master)](https://travis-ci.org/ghsnd/ntriple)

A parser that parses a single RDF statement, in RDF [N-Triples](https://www.w3.org/TR/n-triples/) format.

It is written in [Rust](https://www.rust-lang.org/en-US/) and uses [rust-peg](https://github.com/kevinmehall/rust-peg)
for parsing the triple to an object structure. Literals are decomposed into
their [RDF lexical form](https://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form) and language or data type.

The purpose of this library is to process triples in a streaming way, so it doesn't build
an [RDF Graph](https://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-rdf-graph).
If you are looking for libraries that do, take a look at
[rust-ntriples](https://github.com/enex/rust-ntriples/) or [rome](https://github.com/vandenoever/rome).

## Example:

```rust

extern crate ntriple;

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),
  };
}
```