[{"name":"Rdf.Core.CURIEs","comment":" Compact URI (CURIE) handling. A CURIE is the shortened\n`prefix:localName` form of an IRI when the prefix is bound to a\nnamespace in the surrounding context.\n\n\n# Shortening\n\n@docs convertToCURIE\n\n\n# Parsing components out of an IRI\n\n@docs extractBaseUri\n@docs extractLocalName\n\n","unions":[],"aliases":[],"values":[{"name":"convertToCURIE","comment":" Shorten an IRI to its CURIE form using the given prefix dictionary.\nReturns the original IRI unchanged if no matching prefix is bound.\n\n    convertToCURIE\n        (Dict.fromList [ ( \"rdf\", \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" ) ])\n        \"http://www.w3.org/1999/02/22-rdf-syntax-ns#type\"\n        == \"rdf:type\"\n\n","type":"Rdf.Core.Types.PrefixDictionary -> String.String -> String.String"},{"name":"extractBaseUri","comment":" Extract the base IRI (everything up to and including the final\n`/` or `#`) from an IRI.\n\n    extractBaseUri \"http://example.org/foo/bar\"\n        == Just \"http://example.org/foo/\"\n\n","type":"String.String -> Maybe.Maybe String.String"},{"name":"extractLocalName","comment":" Extract the local name (the part after the final `/` or `#`) from\nan IRI.\n\n    extractLocalName \"http://example.org/foo/bar\"\n        == Just \"bar\"\n\n","type":"String.String -> Maybe.Maybe String.String"}],"binops":[]},{"name":"Rdf.Core.Exporter","comment":" Convert an Elm [`Quad`](Rdf-Core-Types#Quad) into the JSON wire\nshape produced and consumed by the TypeScript companion package\n[`@ralphtq/elm-rdf-n3-quads`](https://www.npmjs.com/package/@ralphtq/elm-rdf-n3-quads).\nUse this when your Elm code constructs quads that need to be sent\nthrough a port to the TS side (e.g. for `writeQuads`,\n`shaclValidateWithQuads`).\n\n\n# About the wire types\n\nThe three type aliases here (`JSONrdfQuad`, `JSONrdfObject`,\n`JSONrdfTermTypeAndValue`) are **structurally identical** to the\nrecord type aliases of the same name in\n[`ralphtq/elm-rdf-n3-quads`](https://github.com/ralphtq/elm-rdf-n3-quads)\n(modules `Rdf.Wire.Types` / `Rdf.Wire.Decode` / `Rdf.Wire.Encode`).\nBecause Elm uses structural typing for record aliases, values\nproduced here can be passed wherever a `Rdf.Wire.Types.JSONrdfQuad`\nis expected, without any conversion. They're defined here so this\npackage has no hard dependency on the wire package — useful while\nboth packages are pre-publish.\n\n@docs JSONrdfQuad, JSONrdfObject, JSONrdfTermTypeAndValue\n\n\n# Bulk conversion\n\n@docs transformJSONquadsToN3Quads\n\n\n# Single-term converters\n\nExposed so consumers can mix and match — e.g. send a single triple\nrather than a list.\n\n@docs quadGraphToWire, predicateToWire, nonLiteralToWire, rdfTermToWireObject\n\n","unions":[],"aliases":[{"name":"JSONrdfObject","comment":" Wire shape for an RDF object term. Adds optional `language` and\n`datatype` fields for literals.\n","args":[],"type":"{ termType : String.String, value : String.String, language : Maybe.Maybe String.String, datatype : Maybe.Maybe Rdf.Core.Exporter.JSONrdfTermTypeAndValue, id : String.String }"},{"name":"JSONrdfQuad","comment":" Wire shape for a complete RDF quad.\n","args":[],"type":"{ subject : Rdf.Core.Exporter.JSONrdfTermTypeAndValue, predicate : Rdf.Core.Exporter.JSONrdfTermTypeAndValue, object : Rdf.Core.Exporter.JSONrdfObject, graph : Rdf.Core.Exporter.JSONrdfTermTypeAndValue }"},{"name":"JSONrdfTermTypeAndValue","comment":" Wire shape for a named-node, blank-node, or default-graph marker.\nFor the default graph the TS side sends `{ termType = \"NamedNode\", value = \"\", id = \"\" }`.\n","args":[],"type":"{ termType : String.String, value : String.String, id : String.String }"}],"values":[{"name":"nonLiteralToWire","comment":" Convert a non-literal RDF term (named node or blank node) to its\nwire shape. Used for the `subject` position.\n","type":"Rdf.Core.Types.RDFnonLiteralTerm -> Rdf.Core.Exporter.JSONrdfTermTypeAndValue"},{"name":"predicateToWire","comment":" Convert a [`PredicateTerm`](Rdf-Core-Types#PredicateTerm) to its\nwire shape (always `termType = \"NamedNode\"`).\n","type":"Rdf.Core.Types.PredicateTerm -> Rdf.Core.Exporter.JSONrdfTermTypeAndValue"},{"name":"quadGraphToWire","comment":" Convert a [`QuadGraph`](Rdf-Core-Types#QuadGraph) to its wire shape.\nThe default graph becomes `{ termType = \"NamedNode\", value = \"\", id = \"\" }`.\n","type":"Rdf.Core.Types.QuadGraph -> Rdf.Core.Exporter.JSONrdfTermTypeAndValue"},{"name":"rdfTermToWireObject","comment":" Convert an [`RDFterm`](Rdf-Core-Types#RDFterm) to a wire\n[`JSONrdfObject`](#JSONrdfObject).\n\n  - `NonLiteral (NamedNode iri)` → `NamedNode` object\n  - `NonLiteral (BlankNode bn)` → `BlankNode` object\n  - `Literal (LiteralString s (Just lang))` → `Literal` with `language`\n    and `rdf:langString` datatype\n  - `Literal (LiteralString s Nothing)` → `Literal` with `rdf:langString` datatype\n  - `Literal (LiteralDataType s (Just (DataType iri)))` → typed literal\n  - `Literal (LiteralDataType s Nothing)` → `\"Unhandled\"` fallback\n  - `Predicate (PredicateNamedNode iri)` → `NamedNode` (predicate-as-object)\n  - other → `\"Unexpected\"` fallback\n\nThe `\"Unhandled\"` and `\"Unexpected\"` fallbacks are intentional escape\nhatches to avoid silent data loss; the TS side ignores them in writers\nand validators.\n\n","type":"Rdf.Core.Types.RDFterm -> Rdf.Core.Exporter.JSONrdfObject"},{"name":"transformJSONquadsToN3Quads","comment":" Convert a list of Elm [`Quad`](Rdf-Core-Types#Quad)s to wire\n[`JSONrdfQuad`](#JSONrdfQuad)s.\n\n    -- e.g. before sending to a port:\n    quads\n        |> Rdf.Core.Exporter.transformJSONquadsToN3Quads\n        |> sendQuadsToPort\n\n","type":"List.List Rdf.Core.Types.Quad -> List.List Rdf.Core.Exporter.JSONrdfQuad"}],"binops":[]},{"name":"Rdf.Core.Prefixes","comment":" Default prefix bindings used by elm-qudt, plus helpers for working\nwith prefix dictionaries.\n\n@docs qudtPrefixes\n@docs corePrefixDict\n@docs coreInversePrefixDict\n@docs makeSPARQLprefixes\n@docs findDuplicates\n@docs encodedPrefixes\n\n","unions":[],"aliases":[],"values":[{"name":"coreInversePrefixDict","comment":" The inverse of [`corePrefixDict`](#corePrefixDict) — IRI namespace\nto prefix label. Useful for CURIE shortening lookups.\n","type":"Rdf.Core.Types.InversePrefixDict"},{"name":"corePrefixDict","comment":" [`qudtPrefixes`](#qudtPrefixes) as a `PrefixDictionary`.\n","type":"Rdf.Core.Types.PrefixDictionary"},{"name":"encodedPrefixes","comment":" `qudtPrefixes` percent-encoded as a single string of `prefix … : <…>`\ndeclarations, suitable for inclusion in a URL query parameter.\n","type":"String.String"},{"name":"findDuplicates","comment":" Find prefixes that map to multiple distinct IRIs (or vice-versa).\nReturns a dictionary keyed by the duplicated key, with the\nconflicting values as the list.\n","type":"List.List ( String.String, String.String ) -> Dict.Dict String.String (List.List String.String)"},{"name":"makeSPARQLprefixes","comment":" Render a prefix dictionary as the leading `PREFIX … : <…>` lines\nof a SPARQL query.\n","type":"Rdf.Core.Types.PrefixDictionary -> String.String"},{"name":"qudtPrefixes","comment":" The canonical prefix bindings used across elm-qudt. Covers\nRDF, RDFS, OWL, XSD, SHACL, SKOS, Dublin Core, PROV, plus the\nQUDT family (qudt, qkdv, unit, quantitykind, sou, prefix, etc.)\nand a couple of related auxiliaries (vaem, dtype, si-quantity, qfn).\n","type":"List.List ( Rdf.Core.Types.Prefix, Rdf.Core.Types.IRI )"}],"binops":[]},{"name":"Rdf.Core.QuadId","comment":" Quad-id manipulation. The wire format encodes a quad's coordinates\nas a colon-separated string `subjectId:predicateId:objectId:graphId`.\nThese helpers construct and parse that form.\n\n@docs makeQuadId\n@docs deconstructQuadId\n@docs escapeQuotes\n@docs termToId\n\n","unions":[],"aliases":[],"values":[{"name":"deconstructQuadId","comment":" Recover the `(subjectId, predicateId, objectId)` triple from a\nquad-id. Returns `(0, 0, 0)` for malformed input.\n\nSplits on the first three colons only, so the graph component (which\ntypically contains its own colons in IRIs/CURIEs) is correctly\ndiscarded rather than overflowing the parse.\n\n","type":"Rdf.Core.Types.QuadId -> ( Basics.Int, Basics.Int, Basics.Int )"},{"name":"escapeQuotes","comment":" Stub for SPARQL-result literal escaping. Currently a no-op;\npresent to mirror the JavaScript-side `escapeQuotes` slot.\n","type":"String.String -> String.String"},{"name":"makeQuadId","comment":" Construct a quad-id from three integer ids and a `QuadGraph`.\nFormat: `subjectId:predicateId:objectId:graphId`. The graphId is\n`\"\"` for `DefaultGraph` and the IRI for `QuadGraphNamedNode`.\n","type":"Basics.Int -> Basics.Int -> Basics.Int -> Rdf.Core.Types.QuadGraph -> Rdf.Core.Types.QuadId"},{"name":"termToId","comment":" Render any `RDFterm` as its canonical string id.\n\n  - `NamedNode iri` → `iri`\n  - `BlankNode bnId` → `\"_:\" ++ bnId`\n  - `LiteralString s (Just lang)` → `\"<s>@<lang>\"`\n  - `LiteralString s Nothing` → `\"<s>\"`\n  - `LiteralDataType s (Just (DataType iri))` → `\"<s>^^<iri>\"`\n  - `LiteralDataType s Nothing` → `\"<s>\"`\n  - `Predicate (PredicateNamedNode iri)` → `iri`\n  - `Graph DefaultGraph` → `\"\"`\n  - `Graph (QuadGraphNamedNode (IRIid iri))` → `iri`\n\n","type":"Rdf.Core.Types.RDFterm -> Rdf.Core.Types.TermId"}],"binops":[]},{"name":"Rdf.Core.Types","comment":" Resource Description Framework (RDF) primitives for Elm.\nSee <https://www.w3.org/TR/rdf11-concepts/>.\n\n\n# String aliases\n\nThese are convenient names for string values that carry RDF semantics\nin context.\n\n@docs IRI, Prefix, BaseURI, GraphId, TermId, LangString\n\n\n# Prefix dictionaries\n\n@docs PrefixDictionary, InversePrefixDict\n\n\n# Quads and statements\n\n@docs Quad, QuadStatement\n\n\n# Terms\n\nThe RDF data model: a [`Quad`](#Quad) is a `{subject, predicate, object,\ngraph}` record. The subject is an [`RDFnonLiteralTerm`](#RDFnonLiteralTerm)\n(named node or blank node). The object can be any [`RDFterm`](#RDFterm).\n\n@docs RDFterm, RDFnonLiteralTerm, RDFliteralTerm\n@docs PredicateTerm\n@docs QuadGraph, NamedNodeId\n\n\n# Blank nodes\n\n@docs BlankNode, BlankNodeId, blankNode, blankNodeId\n\n\n# Aliases for clarity at call sites\n\n@docs RDFsubject, RDFproperty, RDFobject\n@docs SubjectId, ClassId, ClassList, QNameId, QuadId\n\n\n# Auxiliary types\n\n@docs DataType, KnownTriple, StatementKind\n\n\n# Smart constructors\n\n@docs iri\n\n","unions":[{"name":"BlankNode","comment":" A blank node, identified by an opaque string id.\n","args":[],"cases":[]},{"name":"DataType","comment":" A literal datatype IRI (e.g. `xsd:integer`).\n","args":[],"cases":[["DataType",["Rdf.Core.Types.IRI"]]]},{"name":"KnownTriple","comment":" Marker for an asserted triple.\n","args":[],"cases":[["Known",[]]]},{"name":"NamedNodeId","comment":" Wrapper around an IRI used for named-node graphs and as a future\nextension point for blank-node graphs.\n","args":[],"cases":[["IRIid",["Rdf.Core.Types.IRI"]]]},{"name":"PredicateTerm","comment":" An RDF predicate. The wire model uses only named-node predicates.\n","args":[],"cases":[["PredicateNamedNode",["Rdf.Core.Types.IRI"]]]},{"name":"QuadGraph","comment":" The graph component of a [`Quad`](#Quad).\n","args":[],"cases":[["DefaultGraph",[]],["QuadGraphNamedNode",["Rdf.Core.Types.NamedNodeId"]]]},{"name":"RDFliteralTerm","comment":" An RDF literal — either a plain or language-tagged string, or a\ntyped literal with an optional [`DataType`](#DataType).\n","args":[],"cases":[["LiteralString",["String.String","Maybe.Maybe Rdf.Core.Types.LangString"]],["LiteralDataType",["String.String","Maybe.Maybe Rdf.Core.Types.DataType"]]]},{"name":"RDFnonLiteralTerm","comment":" A non-literal RDF term: a named node (IRI) or a blank node.\n","args":[],"cases":[["NamedNode",["Rdf.Core.Types.IRI"]],["BlankNode",["Rdf.Core.Types.BlankNodeId"]]]},{"name":"RDFterm","comment":" Any RDF term that can appear in object position.\n","args":[],"cases":[["NonLiteral",["Rdf.Core.Types.RDFnonLiteralTerm"]],["Literal",["Rdf.Core.Types.RDFliteralTerm"]],["Predicate",["Rdf.Core.Types.PredicateTerm"]],["Graph",["Rdf.Core.Types.QuadGraph"]]]},{"name":"StatementKind","comment":" Discriminator for kinds of statements. Currently only\n`TypeKind` (`rdf:type` triples).\n","args":[],"cases":[["TypeKind",[]]]}],"aliases":[{"name":"BaseURI","comment":" The base IRI of a named graph.\n","args":[],"type":"String.String"},{"name":"BlankNodeId","comment":" An opaque blank-node identifier.\n","args":[],"type":"String.String"},{"name":"ClassId","comment":" Identifier for an `rdfs:Class`.\n","args":[],"type":"Rdf.Core.Types.TermId"},{"name":"ClassList","comment":" A list of class identifiers.\n","args":[],"type":"List.List Rdf.Core.Types.ClassId"},{"name":"GraphId","comment":" Identifier for a named graph (typically its IRI).\n","args":[],"type":"String.String"},{"name":"IRI","comment":" An Internationalized Resource Identifier. See\n<https://www.ietf.org/rfc/rfc3987.txt>. Stringly typed for now.\n","args":[],"type":"String.String"},{"name":"InversePrefixDict","comment":" The inverse of [`PrefixDictionary`](#PrefixDictionary): full IRI\nnamespace to prefix label. Useful for CURIE shortening.\n","args":[],"type":"Dict.Dict Rdf.Core.Types.IRI Rdf.Core.Types.Prefix"},{"name":"LangString","comment":" A BCP 47 language tag (e.g. `\"en\"`, `\"en-GB\"`).\nSee <http://tools.ietf.org/html/bcp47>.\n","args":[],"type":"String.String"},{"name":"Prefix","comment":" A CURIE prefix label (e.g. `\"qudt\"`).\n","args":[],"type":"String.String"},{"name":"PrefixDictionary","comment":" Maps prefix labels to their full IRI namespaces.\n","args":[],"type":"Dict.Dict Rdf.Core.Types.Prefix Rdf.Core.Types.IRI"},{"name":"QNameId","comment":" A qualified name identifier (`prefix:localName`).\n","args":[],"type":"String.String"},{"name":"Quad","comment":" An RDF quad — a triple plus its containing graph.\n","args":[],"type":"{ subject : Rdf.Core.Types.RDFnonLiteralTerm, predicate : Rdf.Core.Types.PredicateTerm, object : Rdf.Core.Types.RDFterm, graph : Rdf.Core.Types.QuadGraph }"},{"name":"QuadId","comment":" Opaque identifier for a quad in a store.\n","args":[],"type":"String.String"},{"name":"QuadStatement","comment":" Like [`Quad`](#Quad), but with a list of objects sharing the same\nsubject and predicate. Convenient for display.\n","args":[],"type":"{ subject : Rdf.Core.Types.RDFnonLiteralTerm, predicate : Rdf.Core.Types.PredicateTerm, objects : List.List Rdf.Core.Types.RDFterm, graph : Rdf.Core.Types.QuadGraph }"},{"name":"RDFobject","comment":" Alias for the object side of a triple.\n","args":[],"type":"Rdf.Core.Types.RDFterm"},{"name":"RDFproperty","comment":" Alias for the predicate side of a triple.\n","args":[],"type":"Rdf.Core.Types.PredicateTerm"},{"name":"RDFsubject","comment":" Alias for the subject side of a triple.\n","args":[],"type":"Rdf.Core.Types.RDFnonLiteralTerm"},{"name":"SubjectId","comment":" Resource id used in the subject position.\n","args":[],"type":"Rdf.Core.Types.TermId"},{"name":"TermId","comment":" An RDF resource identifier — IRI or blank-node id, depending on\ncontext.\n","args":[],"type":"String.String"}],"values":[{"name":"blankNode","comment":" Construct a blank node.\n","type":"String.String -> Rdf.Core.Types.BlankNode"},{"name":"blankNodeId","comment":" Extract the id of a blank node.\n","type":"Rdf.Core.Types.BlankNode -> String.String"},{"name":"iri","comment":" Construct an [`IRI`](#IRI) from a `String`. Identity at the value\nlevel; provided so callers can express intent at the type level.\n","type":"String.String -> Rdf.Core.Types.IRI"}],"binops":[]},{"name":"Rdf.Core.Vocabulary.Owl","comment":" Canonical IRIs from the OWL 2 vocabulary.\nSee <https://www.w3.org/TR/owl2-overview/>.\n\n@docs namespace\n\n\n# Class IRIs\n\n@docs ontology\n@docs class\n@docs objectProperty\n@docs datatypeProperty\n@docs thing\n@docs nothing\n\n\n# Property IRIs\n\n@docs imports\n@docs sameAs\n@docs equivalentClass\n@docs equivalentProperty\n@docs inverseOf\n\n","unions":[],"aliases":[],"values":[{"name":"class","comment":" `owl:Class`.\n","type":"Rdf.Core.Types.IRI"},{"name":"datatypeProperty","comment":" `owl:DatatypeProperty`.\n","type":"Rdf.Core.Types.IRI"},{"name":"equivalentClass","comment":" `owl:equivalentClass`.\n","type":"Rdf.Core.Types.IRI"},{"name":"equivalentProperty","comment":" `owl:equivalentProperty`.\n","type":"Rdf.Core.Types.IRI"},{"name":"imports","comment":" `owl:imports`.\n","type":"Rdf.Core.Types.IRI"},{"name":"inverseOf","comment":" `owl:inverseOf`.\n","type":"Rdf.Core.Types.IRI"},{"name":"namespace","comment":" The OWL namespace IRI: `http://www.w3.org/2002/07/owl#`.\n","type":"Rdf.Core.Types.IRI"},{"name":"nothing","comment":" `owl:Nothing` (the bottom class — always empty).\n","type":"Rdf.Core.Types.IRI"},{"name":"objectProperty","comment":" `owl:ObjectProperty`.\n","type":"Rdf.Core.Types.IRI"},{"name":"ontology","comment":" `owl:Ontology`.\n","type":"Rdf.Core.Types.IRI"},{"name":"sameAs","comment":" `owl:sameAs`.\n","type":"Rdf.Core.Types.IRI"},{"name":"thing","comment":" `owl:Thing` (the top class in OWL).\n","type":"Rdf.Core.Types.IRI"}],"binops":[]},{"name":"Rdf.Core.Vocabulary.Qudt","comment":" Canonical IRIs from the QUDT vocabulary (Quantities, Units, Dimensions\nand Types). See <https://qudt.org/>.\n\n@docs namespace\n\n\n# Class IRIs\n\n@docs unit\n@docs quantityKind\n@docs dimensionVector\n@docs quantity\n@docs quantityValue\n\n\n# Property IRIs\n\n@docs numericValue\n@docs hasUnit\n@docs hasQuantityKind\n@docs hasDimensionVector\n@docs symbol\n\n\n# Companion namespace IRIs\n\n@docs unitPrefix, quantityKindPrefix, dimensionVectorPrefix, constantPrefix\n\n","unions":[],"aliases":[],"values":[{"name":"constantPrefix","comment":" Namespace for QUDT constants (`http://qudt.org/vocab/constant/`).\n","type":"Rdf.Core.Types.IRI"},{"name":"dimensionVector","comment":" `qudt:DimensionVector`.\n","type":"Rdf.Core.Types.IRI"},{"name":"dimensionVectorPrefix","comment":" Namespace for dimension vectors (`http://qudt.org/vocab/dimensionvector/`).\n","type":"Rdf.Core.Types.IRI"},{"name":"hasDimensionVector","comment":" `qudt:hasDimensionVector`.\n","type":"Rdf.Core.Types.IRI"},{"name":"hasQuantityKind","comment":" `qudt:hasQuantityKind`.\n","type":"Rdf.Core.Types.IRI"},{"name":"hasUnit","comment":" `qudt:hasUnit`.\n","type":"Rdf.Core.Types.IRI"},{"name":"namespace","comment":" The QUDT schema namespace IRI: `http://qudt.org/schema/qudt/`.\n","type":"Rdf.Core.Types.IRI"},{"name":"numericValue","comment":" `qudt:numericValue`.\n","type":"Rdf.Core.Types.IRI"},{"name":"quantity","comment":" `qudt:Quantity`.\n","type":"Rdf.Core.Types.IRI"},{"name":"quantityKind","comment":" `qudt:QuantityKind`.\n","type":"Rdf.Core.Types.IRI"},{"name":"quantityKindPrefix","comment":" Namespace for individual quantity kinds (`http://qudt.org/vocab/quantitykind/`).\n","type":"Rdf.Core.Types.IRI"},{"name":"quantityValue","comment":" `qudt:QuantityValue`.\n","type":"Rdf.Core.Types.IRI"},{"name":"symbol","comment":" `qudt:symbol`.\n","type":"Rdf.Core.Types.IRI"},{"name":"unit","comment":" `qudt:Unit`.\n","type":"Rdf.Core.Types.IRI"},{"name":"unitPrefix","comment":" Namespace for individual units (`http://qudt.org/vocab/unit/`).\n","type":"Rdf.Core.Types.IRI"}],"binops":[]},{"name":"Rdf.Core.Vocabulary.Rdf","comment":" Canonical IRIs from the RDF 1.1 vocabulary.\nSee <https://www.w3.org/TR/rdf11-concepts/>.\n\n@docs namespace\n\n\n# Term IRIs\n\n@docs type_\n@docs first\n@docs rest\n@docs nil\n@docs langString\n@docs property\n\n","unions":[],"aliases":[],"values":[{"name":"first","comment":" `rdf:first` (first element of an RDF list).\n","type":"Rdf.Core.Types.IRI"},{"name":"langString","comment":" `rdf:langString` (datatype for language-tagged literals).\n","type":"Rdf.Core.Types.IRI"},{"name":"namespace","comment":" The RDF namespace IRI: `http://www.w3.org/1999/02/22-rdf-syntax-ns#`.\n","type":"Rdf.Core.Types.IRI"},{"name":"nil","comment":" `rdf:nil` (the empty RDF list).\n","type":"Rdf.Core.Types.IRI"},{"name":"property","comment":" `rdf:Property` (class of all RDF properties).\n","type":"Rdf.Core.Types.IRI"},{"name":"rest","comment":" `rdf:rest` (tail of an RDF list).\n","type":"Rdf.Core.Types.IRI"},{"name":"type_","comment":" `rdf:type`.\n","type":"Rdf.Core.Types.IRI"}],"binops":[]},{"name":"Rdf.Core.Vocabulary.Rdfs","comment":" Canonical IRIs from the RDF Schema (RDFS) vocabulary.\nSee <https://www.w3.org/TR/rdf-schema/>.\n\n@docs namespace\n\n\n# Term IRIs\n\n@docs class\n@docs label\n@docs comment\n@docs domain\n@docs range\n@docs subClassOf\n@docs subPropertyOf\n@docs isDefinedBy\n@docs seeAlso\n@docs resource\n@docs literal\n\n","unions":[],"aliases":[],"values":[{"name":"class","comment":" `rdfs:Class`.\n","type":"Rdf.Core.Types.IRI"},{"name":"comment","comment":" `rdfs:comment`.\n","type":"Rdf.Core.Types.IRI"},{"name":"domain","comment":" `rdfs:domain`.\n","type":"Rdf.Core.Types.IRI"},{"name":"isDefinedBy","comment":" `rdfs:isDefinedBy`.\n","type":"Rdf.Core.Types.IRI"},{"name":"label","comment":" `rdfs:label`.\n","type":"Rdf.Core.Types.IRI"},{"name":"literal","comment":" `rdfs:Literal`.\n","type":"Rdf.Core.Types.IRI"},{"name":"namespace","comment":" The RDFS namespace IRI: `http://www.w3.org/2000/01/rdf-schema#`.\n","type":"Rdf.Core.Types.IRI"},{"name":"range","comment":" `rdfs:range`.\n","type":"Rdf.Core.Types.IRI"},{"name":"resource","comment":" `rdfs:Resource` (top class).\n","type":"Rdf.Core.Types.IRI"},{"name":"seeAlso","comment":" `rdfs:seeAlso`.\n","type":"Rdf.Core.Types.IRI"},{"name":"subClassOf","comment":" `rdfs:subClassOf`.\n","type":"Rdf.Core.Types.IRI"},{"name":"subPropertyOf","comment":" `rdfs:subPropertyOf`.\n","type":"Rdf.Core.Types.IRI"}],"binops":[]},{"name":"Rdf.Core.Vocabulary.Shacl","comment":" Canonical IRIs from the SHACL vocabulary.\nSee <https://www.w3.org/TR/shacl/>.\n\n@docs namespace\n\n\n# Shape kinds\n\n@docs nodeShape, propertyShape\n\n\n# Targeting\n\n@docs targetClass, targetNode, target\n\n\n# Path / property / group\n\n@docs path, property, group\n\n\n# Common constraints\n\n@docs minCount, maxCount, datatype, class, nodeKind, pattern\n\n\n# Logical constraints\n\n@docs or_, and_, not_, xone, node, qualifiedValueShape\n\n\n# Messaging\n\n@docs severity, message\n\n\n# SPARQL-based constraints\n\n@docs select, prefixes, sparql, sparqlFunction, ask, declare\n\n\n# Severity values\n\n@docs violation, warning, info\n\n","unions":[],"aliases":[],"values":[{"name":"and_","comment":" `sh:and` (avoiding Elm keyword).\n","type":"Rdf.Core.Types.IRI"},{"name":"ask","comment":" `sh:ask`.\n","type":"Rdf.Core.Types.IRI"},{"name":"class","comment":" `sh:class`.\n","type":"Rdf.Core.Types.IRI"},{"name":"datatype","comment":" `sh:datatype`.\n","type":"Rdf.Core.Types.IRI"},{"name":"declare","comment":" `sh:declare`.\n","type":"Rdf.Core.Types.IRI"},{"name":"group","comment":" `sh:group`.\n","type":"Rdf.Core.Types.IRI"},{"name":"info","comment":" `sh:Info`.\n","type":"Rdf.Core.Types.IRI"},{"name":"maxCount","comment":" `sh:maxCount`.\n","type":"Rdf.Core.Types.IRI"},{"name":"message","comment":" `sh:message`.\n","type":"Rdf.Core.Types.IRI"},{"name":"minCount","comment":" `sh:minCount`.\n","type":"Rdf.Core.Types.IRI"},{"name":"namespace","comment":" The SHACL namespace IRI: `http://www.w3.org/ns/shacl#`.\n","type":"Rdf.Core.Types.IRI"},{"name":"node","comment":" `sh:node`.\n","type":"Rdf.Core.Types.IRI"},{"name":"nodeKind","comment":" `sh:nodeKind`.\n","type":"Rdf.Core.Types.IRI"},{"name":"nodeShape","comment":" `sh:NodeShape`.\n","type":"Rdf.Core.Types.IRI"},{"name":"not_","comment":" `sh:not` (avoiding Elm keyword).\n","type":"Rdf.Core.Types.IRI"},{"name":"or_","comment":" `sh:or` (avoiding Elm keyword).\n","type":"Rdf.Core.Types.IRI"},{"name":"path","comment":" `sh:path`.\n","type":"Rdf.Core.Types.IRI"},{"name":"pattern","comment":" `sh:pattern`.\n","type":"Rdf.Core.Types.IRI"},{"name":"prefixes","comment":" `sh:prefixes`.\n","type":"Rdf.Core.Types.IRI"},{"name":"property","comment":" `sh:property`.\n","type":"Rdf.Core.Types.IRI"},{"name":"propertyShape","comment":" `sh:PropertyShape`.\n","type":"Rdf.Core.Types.IRI"},{"name":"qualifiedValueShape","comment":" `sh:qualifiedValueShape`.\n","type":"Rdf.Core.Types.IRI"},{"name":"select","comment":" `sh:select`.\n","type":"Rdf.Core.Types.IRI"},{"name":"severity","comment":" `sh:severity`.\n","type":"Rdf.Core.Types.IRI"},{"name":"sparql","comment":" `sh:sparql`.\n","type":"Rdf.Core.Types.IRI"},{"name":"sparqlFunction","comment":" `sh:SPARQLFunction`.\n","type":"Rdf.Core.Types.IRI"},{"name":"target","comment":" `sh:target`.\n","type":"Rdf.Core.Types.IRI"},{"name":"targetClass","comment":" `sh:targetClass`.\n","type":"Rdf.Core.Types.IRI"},{"name":"targetNode","comment":" `sh:targetNode`.\n","type":"Rdf.Core.Types.IRI"},{"name":"violation","comment":" `sh:Violation`.\n","type":"Rdf.Core.Types.IRI"},{"name":"warning","comment":" `sh:Warning`.\n","type":"Rdf.Core.Types.IRI"},{"name":"xone","comment":" `sh:xone`.\n","type":"Rdf.Core.Types.IRI"}],"binops":[]},{"name":"Rdf.Core.Vocabulary.Xsd","comment":" Canonical IRIs from the XML Schema Datatypes (XSD) vocabulary.\nSee <https://www.w3.org/TR/xmlschema11-2/>.\n\n@docs namespace\n\n\n# Common datatype IRIs\n\n@docs string\n@docs boolean\n@docs integer\n@docs decimal\n@docs double\n@docs float\n@docs date\n@docs dateTime\n@docs anyURI\n\n","unions":[],"aliases":[],"values":[{"name":"anyURI","comment":" `xsd:anyURI`.\n","type":"Rdf.Core.Types.IRI"},{"name":"boolean","comment":" `xsd:boolean`.\n","type":"Rdf.Core.Types.IRI"},{"name":"date","comment":" `xsd:date`.\n","type":"Rdf.Core.Types.IRI"},{"name":"dateTime","comment":" `xsd:dateTime`.\n","type":"Rdf.Core.Types.IRI"},{"name":"decimal","comment":" `xsd:decimal`.\n","type":"Rdf.Core.Types.IRI"},{"name":"double","comment":" `xsd:double`.\n","type":"Rdf.Core.Types.IRI"},{"name":"float","comment":" `xsd:float`.\n","type":"Rdf.Core.Types.IRI"},{"name":"integer","comment":" `xsd:integer`.\n","type":"Rdf.Core.Types.IRI"},{"name":"namespace","comment":" The XSD namespace IRI: `http://www.w3.org/2001/XMLSchema#`.\n","type":"Rdf.Core.Types.IRI"},{"name":"string","comment":" `xsd:string`.\n","type":"Rdf.Core.Types.IRI"}],"binops":[]},{"name":"Rdf.SPARQL.Builders","comment":" Factories that bundle the predefined queries from\n[`Rdf.SPARQL.QuadStoreQueries.*`](Rdf-SPARQL-QuadStoreQueries-GraphMetadata)\ninto ready-to-use `Dict GraphQueryKindKey GraphQueryBuilderSpec`\nregistries.\n\nTwo registries are exposed:\n\n  - [`schemaQueryFactories`](#schemaQueryFactories) — the full set,\n    intended for schema-style graphs (includes SchemaResources).\n  - [`vocabQueryFactories`](#vocabQueryFactories) — same minus\n    SchemaResources, intended for vocabulary-style graphs.\n\nPlus a small helper for rendering a `GraphQueryKind` as a human-readable\ndisplay label.\n\n@docs queryKindToString\n@docs schemaQueryFactories\n@docs vocabQueryFactories\n\n","unions":[],"aliases":[],"values":[{"name":"queryKindToString","comment":" Human-readable display string for a `GraphQueryKind`.\n","type":"Rdf.SPARQL.Types.GraphQueryKind -> String.String"},{"name":"schemaQueryFactories","comment":" The full query registry, intended for schema-style focus graphs.\nMaps each `GraphQueryKindKey` to its `GraphQueryBuilderSpec`.\n\nIncludes:\n\n  - `MetadataQueryKind` → `graphMetadataQueryBuilderSpec`\n  - `ResourcesOverviewQueryKind` → `schemaOverviewQueryBuilderSpec`\n  - `SchemaResourcesQueryKind` → `resourcesOverviewQueryBuilderSpec`\n  - `InScopeTypesQueryKind` → `inScopeTypesBuilderSpec`\n  - `InScopeSchemaResourcesQueryKind` → `inScopeSchemaResourcesQueryBuilderSpec`\n  - `ResourceDetailsQueryKind` → `resourceDetailsQueryBuilderSpec`\n\n","type":"Dict.Dict Rdf.SPARQL.Types.GraphQueryKindKey Rdf.SPARQL.Types.GraphQueryBuilderSpec"},{"name":"vocabQueryFactories","comment":" The vocab-style query registry. Same as\n[`schemaQueryFactories`](#schemaQueryFactories) but uses\n`resourcesOverviewQueryBuilderSpec` for `ResourcesOverviewQueryKind`\n(rather than `schemaOverviewQueryBuilderSpec`) and omits\n`SchemaResourcesQueryKind`.\n","type":"Dict.Dict Rdf.SPARQL.Types.GraphQueryKindKey Rdf.SPARQL.Types.GraphQueryBuilderSpec"}],"binops":[]},{"name":"Rdf.SPARQL.QuadStoreQueries.GraphMetadata","comment":" Predefined query: the metadata for the graph closure of a focus\ngraph. Selects every triple whose subject is typed as `owl:Ontology`\nor `vaem:GraphMetaData`.\n\n@docs graphMetadataQueryBuilderSpec\n\n","unions":[],"aliases":[],"values":[{"name":"graphMetadataQueryBuilderSpec","comment":" Spec for the graph-metadata query.\n","type":"Rdf.SPARQL.Types.GraphQueryBuilderSpec"}],"binops":[]},{"name":"Rdf.SPARQL.QuadStoreQueries.InScopeSchemaResources","comment":" Predefined query: for every in-scope type in the focus graph,\nreturn the type's properties, its property shapes, and any property\ngroups they reference.\n\nThe query is parameterised on a `TypeScope`; today only `AllTypes`\nis meaningful (no additional `VALUES ?c { … }` clause is added).\n\n@docs inScopeSchemaResourcesQueryBuilderSpec\n\n","unions":[],"aliases":[],"values":[{"name":"inScopeSchemaResourcesQueryBuilderSpec","comment":" Spec for the in-scope-schema-resources query.\n","type":"Rdf.SPARQL.Types.GraphQueryBuilderSpec"}],"binops":[]},{"name":"Rdf.SPARQL.QuadStoreQueries.InScopeTypes","comment":" Predefined query: the in-scope types and instance counts for a\nfocus graph.\n\n@docs inScopeTypesBuilderSpec\n\n","unions":[],"aliases":[],"values":[{"name":"inScopeTypesBuilderSpec","comment":" Spec for the in-scope-types-with-counts query.\n","type":"Rdf.SPARQL.Types.GraphQueryBuilderSpec"}],"binops":[]},{"name":"Rdf.SPARQL.QuadStoreQueries.ResourceDetails","comment":" Predefined query: properties of a focused resource, including\nnested blank-node descriptions one level deep. When no focus\nresource is supplied, defaults to `rdf:Nil`.\n\n@docs resourceDetailsQueryBuilderSpec\n\n","unions":[],"aliases":[],"values":[{"name":"resourceDetailsQueryBuilderSpec","comment":" Spec for the resource-details query.\n","type":"Rdf.SPARQL.Types.GraphQueryBuilderSpec"}],"binops":[]},{"name":"Rdf.SPARQL.QuadStoreQueries.ResourcesOverview","comment":" Predefined query: every typed resource in the focus graph with\nits type and (plain) `rdfs:label`. Excludes a handful of meta-types\n(`owl:Thing`, `owl:Ontology`, `rdfs:Class`, `rdfs:Resource`,\n`vaem:GraphMetaData`) that would otherwise dominate the result set.\n\n@docs resourcesOverviewQueryBuilderSpec\n\n","unions":[],"aliases":[],"values":[{"name":"resourcesOverviewQueryBuilderSpec","comment":" Spec for the resources-overview query.\n","type":"Rdf.SPARQL.Types.GraphQueryBuilderSpec"}],"binops":[]},{"name":"Rdf.SPARQL.QuadStoreQueries.SchemaOverview","comment":" Predefined query: for every type used by the focus graph, return\nthe type's properties.\n\n@docs schemaOverviewQueryBuilderSpec\n\n","unions":[],"aliases":[],"values":[{"name":"schemaOverviewQueryBuilderSpec","comment":" Spec for the schema-overview query.\n","type":"Rdf.SPARQL.Types.GraphQueryBuilderSpec"}],"binops":[]},{"name":"Rdf.SPARQL.Types","comment":" Types for building parameterised SPARQL queries against a quad\nstore. The flagship type is [`GraphQueryBuilderSpec`](#GraphQueryBuilderSpec) —\na record describing what a query does, what kind of result it yields,\nand the [`GraphQueryFunction`](#GraphQueryFunction) that constructs the\nactual SPARQL string given a graph + scope.\n\n\n# Query strings\n\n@docs SPARQLquery, SPARQLstring\n\n\n# Query kinds\n\n@docs GraphQueryKind, GraphQueryKindKey\n@docs graphQueryKindToKey\n\n\n# Result constraints\n\n@docs SPARQLresultConstraint\n\n\n# Scope filters\n\n@docs TypeScope\n@docs ScopeFilter\n\n\n# Builder spec + envelope\n\n@docs GraphQueryFunction\n@docs GraphQueryBuilderSpec\n@docs GraphQueryEnvelope\n@docs GraphQueryKindsFactory\n\n","unions":[{"name":"GraphQueryKind","comment":" Discriminator for the predefined query kinds in\n[`Rdf.SPARQL.QuadStoreQueries.*`](Rdf-SPARQL-QuadStoreQueries-GraphMetadata).\n","args":[],"cases":[["MetadataQueryKind",[]],["ResourcesOverviewQueryKind",[]],["ResourceDetailsQueryKind",[]],["SchemaOverviewQueryKind",[]],["SchemaResourcesQueryKind",[]],["InScopeTypesQueryKind",[]],["InScopeSchemaResourcesQueryKind",[]]]},{"name":"ScopeFilter","comment":" Filter for scope-based query construction.\n`OutOfScopeFilter` excludes types known to be out-of-scope from results.\n","args":[],"cases":[["OutOfScopeFilter",[]]]},{"name":"TypeScope","comment":" Type-scope discriminator. Currently only `AllTypes` is meaningful;\nthe type exists so future revisions can add `OnlyTypes (List IRI)` etc.\nwithout breaking call sites.\n","args":[],"cases":[["AllTypes",[]]]}],"aliases":[{"name":"GraphQueryBuilderSpec","comment":" A bundled description of a predefined query: its name, kind,\ndescription, default constraints, and the function that builds it.\n\n`inScopeTypesFilter` and `outOfScopeTypesFilter` flag whether the\ncaller should pre-resolve scope-related parameters before building.\n\n`formattedSPARQL` is an optional cache of the pretty-printed query\nfor display in editors / health checks — typically populated by a\npass that runs the query through `sparqljs`.\n\n","args":[],"type":"{ name : String.String, queryKind : Rdf.SPARQL.Types.GraphQueryKind, description : String.String, inScopeTypesFilter : Basics.Bool, outOfScopeTypesFilter : Basics.Bool, resultConstraints : List.List Rdf.SPARQL.Types.SPARQLresultConstraint, queryFunction : Rdf.SPARQL.Types.GraphQueryFunction, formattedSPARQL : Maybe.Maybe String.String }"},{"name":"GraphQueryEnvelope","comment":" The pair of a query's kind discriminator and the rendered SPARQL\nstring. Useful as the payload of an \"execute this query\" message.\n","args":[],"type":"( Rdf.SPARQL.Types.GraphQueryKind, Rdf.SPARQL.Types.SPARQLquery )"},{"name":"GraphQueryFunction","comment":" The signature shared by every query-builder function.\n\n  - `GraphId` — the focus graph the query runs against.\n  - `Maybe TermId` — optional focus resource (for resource-scoped queries).\n  - `TypeScope` — what range of types to consider.\n  - `Maybe PrefixDictionary` — prefix bindings to emit; defaults to the\n    canonical core prefixes when `Nothing`.\n  - `List SPARQLresultConstraint` — trailing clauses (e.g. ORDER BY).\n\nReturns the rendered [`SPARQLquery`](#SPARQLquery) string.\n\n","args":[],"type":"Rdf.Core.Types.GraphId -> Maybe.Maybe Rdf.Core.Types.TermId -> Rdf.SPARQL.Types.TypeScope -> Maybe.Maybe Rdf.Core.Types.PrefixDictionary -> List.List Rdf.SPARQL.Types.SPARQLresultConstraint -> Rdf.SPARQL.Types.SPARQLquery"},{"name":"GraphQueryKindKey","comment":" String form of a `GraphQueryKind` for use as a dict key.\n","args":[],"type":"String.String"},{"name":"GraphQueryKindsFactory","comment":" A registry of available query builders, keyed by `GraphQueryKindKey`.\n","args":[],"type":"Dict.Dict Rdf.SPARQL.Types.GraphQueryKindKey Rdf.SPARQL.Types.GraphQueryBuilderSpec"},{"name":"SPARQLquery","comment":" A complete SPARQL query string (PREFIX declarations + body).\n","args":[],"type":"String.String"},{"name":"SPARQLresultConstraint","comment":" A trailing SPARQL clause appended to a query — typically `ORDER BY`,\n`LIMIT`, or `OFFSET`.\n","args":[],"type":"String.String"},{"name":"SPARQLstring","comment":" Any SPARQL fragment — e.g. a single statement or a result clause.\n","args":[],"type":"String.String"}],"values":[{"name":"graphQueryKindToKey","comment":" Project a `GraphQueryKind` to its string key.\n","type":"Rdf.SPARQL.Types.GraphQueryKind -> Rdf.SPARQL.Types.GraphQueryKindKey"}],"binops":[]}]