nostralink 0.2.1

Linked data library for nostr
Documentation
//! JSON-LD parser

use crate::loaders::static_contexts_loader;
use locspan::Span;
use sophia_jsonld::{
    loader::{ChainLoader, HttpLoader, StaticLoader},
    loader_factory::ClosureLoaderFactory,
    parser::JsonLdParser,
    vocabulary::ArcIri,
    JsonLdOptions,
};

/// static (local contexts) + http JSON-LD loader
pub type HybridLoader = ChainLoader<StaticLoader<ArcIri, Span>, HttpLoader>;

/// Create a hybrid JSON-LD parser
pub fn hybrid_parser(
) -> JsonLdParser<ClosureLoaderFactory<HybridLoader, impl Fn() -> HybridLoader>>
{
    JsonLdParser::new_with_options(
        JsonLdOptions::new()
        // No generalized RDF: don't allow blank nodes
        .with_produce_generalized_rdf(false)
        .with_document_loader_closure(|| {
            ChainLoader::new(static_contexts_loader(), HttpLoader::default())
        }),
    )
}