General-purpose RDF primitives for Elm. Provides the data model
(Quad, RDFterm, PredicateTerm, etc.), CURIE handling, common
vocabulary IRIs (RDF, RDFS, OWL, XSD, SHACL, QUDT), prefix
dictionaries, and quad-id helpers.
Pure-functional, no UI dependencies. Companion to
ralphtq/elm-rdf-n3-quads
(wire-format types + decoders for the TS bridge) and the
@ralphtq/elm-rdf-n3-quads TypeScript package (in-browser N3.js +
Comunica + SHACL validation behind a QuadStoreSession façade).
Pre-release. 0.1.0 is the first cut — types + CURIEs + vocabulary +
prefix utilities + quad-id helpers. Later releases will add a JSON
exporter (v0.2.0) and SPARQL query builders (v0.3.0).
elm install ralphtq/elm-rdfimport Rdf.Core.Types exposing (Quad, RDFterm(..), RDFnonLiteralTerm(..), PredicateTerm(..))
import Rdf.Core.Vocabulary.Rdf as Rdf
import Rdf.Core.Vocabulary.Rdfs as Rdfs
import Rdf.Core.CURIEs as CURIEs
-- Build a quad
exampleQuad : Quad
exampleQuad =
{ subject = NamedNode "http://example.org/Alice"
, predicate = PredicateNamedNode Rdf.type_
, object = NonLiteral (NamedNode "http://example.org/Person")
, graph = QuadGraphNamedNode (IRIid "http://example.org/g")
}
-- Shorten an IRI to a CURIE
exampleCurie : String
exampleCurie =
CURIEs.convertToCURIE
(Dict.fromList [ ( "rdfs", Rdfs.namespace ) ])
Rdfs.label
-- "rdfs:label"Rdf.Core.Types — IRI, Prefix, Quad, RDFterm, RDFnonLiteralTerm, RDFliteralTerm, PredicateTerm, QuadGraph, NamedNodeId, BlankNodeId, KnownTriple, DataType, QuadId, …Rdf.Core.CURIEs — convertToCURIE, extractBaseUri, extractLocalNameRdf.Core.QuadId — makeQuadId, deconstructQuadId, escapeQuotes, termToIdRdf.Core.Prefixes — corePrefixDict, coreInversePrefixDict, makeSPARQLprefixes, findDuplicates, plus the QUDT prefix listRdf.Core.Vocabulary.{Rdf,Rdfs,Owl,Xsd,Shacl,Qudt} — canonical IRIs for each namespace, plus a namespace : IRI constant per module| Package | What |
|---|---|
ralphtq/elm-rdf-n3-quads | JSON wire types + decoders mirroring the TS bridge. Adds Rdf.Wire.* modules. |
@ralphtq/elm-rdf-n3-quads (npm) | TS in-browser quad store via N3.js + Comunica. |
@ralphtq/rdf-n3-quads-elm-ports (npm) | Thin Elm-ports adapter. |
MIT. See LICENSE.