Buses and Actors


On this page

    This page gives an overview of all buses and actors that are used in the default Comunica engines, such as Comunica SPARQL and Comunica SPARQL File Other configurations such as Comunica SPARQL HDT contain additional actors and buses.

    This builds upon the core architecture of actors, mediators, and buses. An overview of how these buses and actors are connected can be found in the SPARQL architecture.

    Context Preprocess

    Package: @comunica/bus-context-preprocess

    A bus in which actors can optionally modify the query context.

    Subscribed actors need to implement ActorContextPreprocess.

    NamePackageDescription
    Convert Shortcuts@comunica/actor-context-preprocess-convert-shortcutsExpands shortcuts in the context to full context keys.
    Query Source Identify@comunica/actor-context-preprocess-query-source-identifyIdentifies all query sources in the context using the Query Source Identify bus.
    Query Source Skolemize@comunica/actor-context-preprocess-query-source-skolemizePlaces all identified query sources in a skolemization wrapper.
    Set Defaults@comunica/actor-context-preprocess-set-defaultsWill set default context values for query engines, such as the logger, timestamp, function arguments cache, ...
    Source To Destination@comunica/actor-context-preprocess-source-to-destinationDefines the write destination only if a single query source has been defined.

    Dereference

    Package: @comunica/bus-dereference

    Dereferences a path or URL into a (generic) stream.

    Subscribed actors need to implement ActorDereference.

    Actors

    NamePackageDescription
    File@comunica/actor-dereference-fileDereferences a local file.
    HTTP@comunica/actor-dereference-httpDereferences a remote file.
    Fallback@comunica/actor-dereference-fallbackA fallback actor with the lowest priority.

    Dereference RDF

    Package: @comunica/bus-dereference-rdf

    Dereferences a path or URL into a stream of quads.

    Subscribed actors need to implement ActorDereferenceRdf.

    Actors

    NamePackageDescription
    Parse@comunica/actor-dereference-rdf-parseDereferences RDF using @comunica/bus-dereference. Invokes parsing with @comunica/bus-rdf-parse.

    Hash Bindings

    Package: @comunica/bus-hash-bindings

    A bus for hashing Bindings.

    Subscribed actors need to implement ActorHashBindings.

    Actors

    NamePackageDescription
    SHA1@comunica/actor-hash-bindings-sha1Hashes bindings using SHA1.

    HTTP

    Package: @comunica/bus-http

    Performs HTTP(S) requests.

    Subscribed actors need to implement ActorHttp.

    Actors

    NamePackageDescription
    Memento@comunica/actor-http-mementoImplements the Memento protocol.
    Native@comunica/actor-http-nativePerforms requests using Node's request library.
    Fetch@comunica/actor-http-fetchPerforms requests using the fetch API.
    Proxy@comunica/actor-http-proxyRun requests through a proxy.
    Wayback@comunica/actor-http-waybackRun requests through the Wayback machine.

    HTTP Invalidate

    Package: @comunica/bus-http-invalidate

    A bus for HTTP invalidation events.

    Subscribed actors need to implement ActorHttpInvalidate.

    Init

    Package: @comunica/bus-init

    All Comunica engines start here. This is where they accept generic input parameters, such as CLI arguments.

    Subscribed actors need to implement ActorInit.

    Actors

    NamePackageDescription
    Query@comunica/actor-init-queryInitializes query execution by parsing a given query, optimizing, executing, and serializing results.

    Merge Bindings Context

    Package: @comunica/bus-merge-bindings-context

    A bus for creating merge handlers that are responsible for merging context entries in bindings with different values.

    Subscribed actors need to implement ActorMergeBingsContext.

    Actors

    NamePackageDescription
    Union@comunica/actor-actor-merge-binding-factory-context-unionMerges context entry values by taking the set-union.

    Optimize Query Operation

    Package: @comunica/bus-optimize-query-operation

    Apply optional optimizations to the SPARQL algebra before actual execution. Optionally, a modified context can be returned.

    Subscribed actors need to implement ActorOptimizeQueryOperation.

    Actors

    NamePackageDescription
    Assign Sources Exhaustive@comunica/actor-optimize-query-operation-assign-sources-exhaustiveConverts every quad pattern in the query to a union of quad patterns per source.
    BGP to Join@comunica/actor-optimize-query-operation-bgp-to-joinConverts BGPs into join operations.
    Describe To Constructs Subject@comunica/actor-optimize-query-operation-describe-to-constructs-subjectConverts SPARQL DESCRIBE operations to construct queries with all triples related to a given subject.
    Filter Pushdown@comunica/actor-optimize-query-operation-filter-pushdownPushes down filter expressions into the query plan as deep as possible.
    Join BGP@comunica/actor-optimize-query-operation-join-bgpMerges joins of multiple BGPs into a single BGP.
    Join Connected@comunica/actor-optimize-query-operation-join-connectedClusters entries within a join operation into separate sub-joins if they are connected by variables.
    Group Sources@comunica/actor-optimize-query-operation-group-sourcesGroups exclusive groups of query operations into sources only if those sources support those grouped operations.
    Prune Empty Source Operations@comunica/actor-optimize-query-operation-prune-empty-source-operationsRemoves operations from the query plan that are guaranteed to produce empty results.
    Rewrite Add@comunica/actor-optimize-query-operation-rewrite-addRewrites ADD operators as DELETEINSERT operations.
    Rewrite Copy@comunica/actor-optimize-query-operation-rewrite-copyRewrites COPY operators as DELETEINSERT operations.
    Rewrite Move@comunica/actor-optimize-query-operation-rewrite-moveRewrites MOVE operators as DELETEINSERT operations.

    Query Operation

    Package: @comunica/bus-query-operation

    Evaluates SPARQL algebra operations.

    Subscribed actors need to implement ActorQueryOperation or ActorQueryOperationTyped.

    Actors

    NamePackageDescription
    Ask@comunica/actor-query-operation-askHandles ASK operations.
    BGP join@comunica/actor-query-operation-bgp-joinHandles BGPs by delegating to @comunica/bus-rdf-join.
    Construct@comunica/actor-query-operation-constructHandles CONSTRUCT operations.
    Describe subject@comunica/actor-query-operation-describe-subjectHandles DESCRIBE operations.
    Distinct hash@comunica/actor-query-operation-distinct-hashHandles DISTINCT operations through hashing.
    Extend@comunica/actor-query-operation-extendHandles EXTEND operations.
    Filter@comunica/actor-query-operation-filterHandles FILTER operations.
    From quad@comunica/actor-query-operation-from-quadhandles FROM operations by considering FROM and FROM NAMED as target graph elements in quads.
    Group@comunica/actor-query-operation-groupHandles GROUP BY operations.
    Join@comunica/actor-query-operation-joinHandles join operations by delegating as inner join to @comunica/bus-rdf-join.
    Left join@comunica/actor-query-operation-leftjoinHandles OPTIONAL operations by delegating as optional join to @comunica/bus-rdf-join.
    Minus@comunica/actor-query-operation-minusHandles MINUS operations by delegating as minus join to @comunica/bus-rdf-join.
    Nop@comunica/actor-query-operation-nopHandles NOP operations.
    Order by@comunica/actor-query-operation-orderbyHandles ORDER BY operations.
    Path Alt@comunica/actor-query-operation-path-altHandles alt property path expressions.
    Path Inv@comunica/actor-query-operation-path-invHandles inv property path expressions.
    Path Link@comunica/actor-query-operation-path-linkHandles link property path expressions.
    Path Nps@comunica/actor-query-operation-path-npsHandles nps property path expressions.
    Path One or more@comunica/actor-query-operation-path-one-or-moreHandles one-or-more property path expressions.
    Path Seq@comunica/actor-query-operation-path-seqHandles seq property path expressions.
    Path Zero or more@comunica/actor-query-operation-path-zero-or-moreHandles zero-or-more property path expressions.
    Path Zero or one@comunica/actor-query-operation-path-zero-or-oneHandles zero-or-one property path expressions.
    Project@comunica/actor-query-operation-projectHandles SELECT operations.
    Reduced hash@comunica/actor-query-operation-reduced-hashHandles REDUCED operations through hashing.
    Service@comunica/actor-query-operation-serviceHandles SERVICE operations.
    Slice@comunica/actor-query-operation-sliceHandles LIMIT and OFFSET operations.
    Source@comunica/actor-query-operation-sourceDelegates operations annotated with a query source towards that source.
    Union@comunica/actor-query-operation-unionHandles UNION operations.
    Values@comunica/actor-query-operation-valuesHandles VALUES operations.
    Update Clear@comunica/actor-query-operation-update-clearHandles CLEAR operations.
    Update Composite Update@comunica/actor-query-operation-update-compositeupdateHandles `composition of multiple SPARQL update operations.
    Update Create@comunica/actor-query-operation-update-createHandles CREATE operations.
    Update Delete Insert@comunica/actor-query-operation-update-deleteinsertHandles INSERT DATA, DELETE DATA, and INSERT/DELETE operations.
    Update Drop@comunica/actor-query-operation-update-dropHandles DROP operations.
    Update Load@comunica/actor-query-operation-update-loadHandles LOAD operations.

    Query Parse

    Package: @comunica/bus-query-parse

    Parsing an input query into (SPARQL) algebra.

    Subscribed actors need to implement ActorQueryParse.

    Actors

    NamePackageDescription
    SPARQL@comunica/actor-query-parse-sparqlUses SPARQLAlgebra.js for parsing SPARQL query strings into SPARQL algebra.
    GraphQL@comunica/actor-query-parse-graphqlParses GraphQL strings into SPARQL algebra following the GraphQL-LD approach.

    Query Process

    Package: @comunica/bus-query-process

    A bus for fully processing a query. This usually involves parsing, optimizing, and evaluating, which can be delegated to other buses.

    Subscribed actors need to implement ActorQueryProcess.

    Actors

    NamePackageDescription
    Explain Logical@comunica/actor-query-process-explain-logicalExplains the logical query plan after parsing and optimizing.
    Explain Parsed@comunica/actor-query-process-explain-parsedExplains the parsed query.
    Explain Physical@comunica/actor-query-process-explain-physicalExplains the physical query plan after parsing, optimizing, and evaluating.
    Sequential@comunica/actor-query-process-sequentialProcesses a query in a sequential manner. It first parses the query, optimizes it, and then evaluates it.

    Query Result Serialize

    Package: @comunica/bus-query-result-serialize

    Serializes the query result into a text-based serialization.

    Subscribed actors need to implement ActorQueryResultSerialize.

    Actors

    NamePackageDescription
    JSON@comunica/actor-query-result-serialize-jsonSerializes to a simple JSON format.
    RDF@comunica/actor-query-result-serialize-rdfSerializes to an RDF format by delegating to @comunica/bus-rdf-serialize.
    Simple@comunica/actor-query-result-serialize-simpleSerializes to a simple format.
    SPARQL CSV@comunica/actor-query-result-serialize-sparql-csvSerializes to SPARQL/CSV.
    SPARQL JSON@comunica/actor-query-result-serialize-sparql-jsonSerializes to SPARQL/JSON.
    SPARQL TSV@comunica/actor-query-result-serialize-sparql-tsvSerializes to SPARQL/TSV.
    SPARQL XML@comunica/actor-query-result-serialize-sparql-xmlSerializes to SPARQL/XML.
    Stats@comunica/actor-query-result-serialize-statsSerializes basic statistics.
    Table@comunica/actor-query-result-serialize-tableSerializes in a simple table format.
    Tree@comunica/actor-query-result-serialize-treeSerializes to a JSON tree.

    Query Source Identify

    Package: @comunica/bus-query-source-identify

    Identifying the types of query sources.

    Subscribed actors need to implement ActorQuerySourceIdentify.

    Actors

    NamePackageDescription
    Serialized@comunica/actor-query-source-identify-serializedHandles serialized sources..
    Hypermedia@comunica/actor-query-source-identify-hypermediaHandles hypermedia-based sources.
    RDF/JS Source@comunica/actor-query-source-identify-rdfjsHandles RDF/JS Sources.

    Query Source Identify Hypermedia

    Package: @comunica/bus-query-source-identify-hypermedia

    Identifying a query source based on the extracted metadata.

    Subscribed actors need to implement ActorQuerySourceIdentifyHypermedia.

    Actors

    NamePackageDescription
    None@comunica/actor-query-source-identify-hypermedia-noneThe source is considered a raw RDF file, for which all data quads matching the quad pattern are returned.
    QPF@comunica/actor-query-source-identify-hypermedia-qpfThe source is considered a Triple/Quad Pattern Fragments interface.
    SPARQL@comunica/actor-query-source-identify-hypermedia-sparqlThe source is considered a SPARQL endpoint if it has a service description, for which we use the SPARQL protocol.

    RDF Join

    Package: @comunica/bus-rdf-join

    Handles joining of bindings streams.

    It supports different logical join types, such as inner, optional, and minus joins.

    Subscribed actors need to implement ActorRdfJoin.

    Actors

    NamePackageDescription
    Inner Hash@comunica/actor-rdf-join-inner-hashInner hash join of two entries.
    Inner Nested loop@comunica/actor-rdf-join-inner-nestedloopInner nested loop join of two entries.
    Inner None@comunica/actor-rdf-join-inner-noneInner join between zero entries, and returns a single binding.
    Inner Single@comunica/actor-rdf-join-inner-singleInner join of a single entry, and returns the entry itself.
    Inner Symmetric hash@comunica/actor-rdf-join-inner-symmetrichashInner symmetric hash join of two entries.
    Inner Multi empty@comunica/actor-rdf-join-inner-multi-emptyInner multi-join that accepts any number of inner-join entries of which at least one is empty and returns an empty stream.
    Inner Multi Bind@comunica/actor-rdf-join-inner-multi-bindInner multi-join that inner-joins 2 or more streams by picking the one with the lowest cardinality, binding each item with the remaining operations, and recursively resolving those operations by delegating to @comunica/bus-query-operation.
    Inner Multi Bind Source@comunica/actor-rdf-join-inner-multi-bind-sourceInner multi-join that inner-joins 2 or more streams by picking the one with the lowest cardinality, chunking it according to a certain block size, and joining each chunk with the remaining query by pushing it into the source.
    Inner Multi sequential@comunica/actor-rdf-join-inner-multi-sequentialInner multi-join by just picking the two of them hierarchically.
    Inner Multi smallest@comunica/actor-rdf-join-inner-multi-smallestInner multi-join by always picking the first two streams with smallest estimate cardinality.
    Inner Multi smallest filter bindings@comunica/actor-rdf-join-inner-multi-smallest-filter-bindingsInner multi-join that inner-joins 2 or more streams by joining the smallest two, and joining the result with the remaining streams by delegating back to the RDF Join bus. While joining the smallest two, the first stream is pushed down as filter into the second stream..
    Minus Hash@comunica/actor-rdf-join-minus-hashAnti-join (minus) of 2 streams using the hash join algorithm. This actor does not support streams that can have undefined values.
    Minus Hash undef@comunica/actor-rdf-join-minus-hash-undefAnti-join (minus) of 2 streams using the hash join algorithm. This actor supports streams that can have undefined values.
    Optional Bind@comunica/actor-rdf-join-optional-bindLeft-join (optional) 2 streams using the bind join algorithm. It binds each item of the first stream with the second operation, and recursively resolving that operation by delegating to @comunica/bus-query-operation.
    Optional Nested loop@comunica/actor-rdf-join-optional-nestedloopLeft-join (optional) 2 streams using the nested loop join algorithm.

    RDF Join Entries Sort

    Package: @comunica/bus-rdf-join-entries-sort

    Determines the order in which join entries should be ordered.

    Subscribed actors need to implement ActorRdfJoinEntriesSort.

    Actors

    NamePackageDescription
    Cardinality@comunica/actor-rdf-join-entries-sort-cardinalityOrders join entries by increasing cardinality.

    RDF Join Selectivity

    Package: @comunica/bus-rdf-join-selectivity

    Calculates or estimates the selectivity of joins.

    Subscribed actors need to implement ActorRdfJoinSelectivity.

    Actors

    NamePackageDescription
    Variable Counting@comunica/actor-rdf-join-selectivity-variable-countingEstimates the selectivity by counting the overlap of variables and non-variables in patterns.

    RDF Metadata

    Package: @comunica/bus-rdf-metadata

    Extracts the quads relevant for metadata from the stream of data quads.

    Subscribed actors need to implement ActorRdfMetadata.

    Actors

    NamePackageDescription
    All@comunica/actor-rdf-metadata-allConsiders all incoming quads as both data and metadata quads.
    Primary topic@comunica/actor-rdf-metadata-primary-topicSplits off the metadata based on the existence of a foaf:primaryTopic link.

    RDF Metadata Accumulate

    Package: @comunica/bus-rdf-metadata-accumulate

    A bus for aggregating metadata objects together.

    Subscribed actors need to implement ActorRdfMetadataAccumulate.

    Actors

    NamePackageDescription
    Can Contain Undefs@comunica/actor-rdf-metadata-accumulate-cancontainundefsAccumulate the canContainUndefs field.
    Cardinality@comunica/actor-rdf-metadata-accumulate-cardinalityAccumulate the cardinality field.
    Page Size@comunica/actor-rdf-metadata-accumulate-pagesizeAccumulate the pageSize field.
    Request Time@comunica/actor-rdf-metadata-accumulate-requesttimeAccumulate the requestTime field.

    RDF Metadata Extract

    Package: @comunica/bus-rdf-metadata-extract

    Create an object with metadata for a given metadata quad stream.

    Subscribed actors need to implement ActorRdfMetadataExtract.

    Actors

    NamePackageDescription
    Allow HTTP Methods@comunica/actor-rdf-metadata-extract-allow-http-methodsExtract the Allow HTTP response header.
    Hydra Controls@comunica/actor-rdf-metadata-extract-hydra-controlsExtract controls using the Hydra vocabulary.
    Hydra Count@comunica/actor-rdf-metadata-extract-hydra-countExtract count estimates using the Hydra vocabulary.
    Hydra Page size@comunica/actor-rdf-metadata-extract-hydra-pagesizeExtract page sizes using the Hydra vocabulary.
    Patch SPARQL Update@comunica/actor-rdf-metadata-extract-patch-sparql-updateChecks for the presence of application/sparql-update in the Accept-Patch header.
    Put Accepted@comunica/actor-rdf-metadata-extract-put-acceptedExtracts the Accept-Put HTTP response header.
    Request Time@comunica/actor-rdf-metadata-extract-request-timeExtracts the time it took to request the page in milliseconds.
    SPARQL Service@comunica/actor-rdf-metadata-extract-sparql-serviceExtract SPARQL service description metadata.

    RDF Parse

    Package: @comunica/bus-rdf-parse

    Parses quads from a serialization format.

    Subscribed actors need to implement ActorRdfParse.

    Actors

    NamePackageDescription
    HTML@comunica/actor-rdf-parse-htmlParses HTML documents by delegating to @comunica/bus-rdf-parse-html.
    JSON-LD@comunica/actor-rdf-parse-jsonldParses JSON-LD.
    N3@comunica/actor-rdf-parse-n3Parses Turtle, Trig, N-triples, or N-Quads.
    RDF/XML@comunica/actor-rdf-parse-rdfxmlParses RDF/XML.
    XML RDFa@comunica/actor-rdf-parse-xml-rdfaParses RDFa in XML.
    SHACLC@comunica/actor-rdf-parse-shaclcParses SHACLC.

    RDF Parse HTML

    Package: @comunica/bus-rdf-parse-html

    Parses quads from an HTML document.

    Subscribed actors need to implement ActorRdfParseHtml.

    Actors

    NamePackageDescription
    RDFa@comunica/actor-rdf-parse-html-rdfaParses RDFa.
    Microdata@comunica/actor-rdf-parse-html-microdataParses Microdata to RDF.
    Script@comunica/actor-rdf-parse-html-scriptParses script tags and attempts to parse them by delegating to @comunica/bus-rdf-parse.

    Package: @comunica/bus-rdf-resolve-hypermedia-links

    Determines which links should be followed from the metadata of the current source.

    Subscribed actors need to implement ActorRdfResolveHypermediaLinks.

    Actors

    NamePackageDescription
    Next@comunica/actor-rdf-resolve-hypermedia-links-nextFollow next page links.

    Package: @comunica/bus-rdf-resolve-hypermedia-links-queue

    Creates ILinkQueue instances, which enables different strategies for queueing links.

    Subscribed actors need to implement ActorRdfResolveHypermediaLinksQueue.

    Actors

    NamePackageDescription
    FIFO@comunica/actor-rdf-resolve-hypermedia-links-queue-fifoProvides a link queue following the first in, first out strategy

    RDF Serialize

    Package: @comunica/bus-rdf-serialize

    Serializes quads to an RDF serialization format.

    Subscribed actors need to implement ActorRdfSerialize.

    Actors

    NamePackageDescription
    JSON-LD@comunica/actor-rdf-serialize-jsonldSerializes to JSON-LD.
    N3@comunica/actor-rdf-serialize-n3Serializes to Turtle, Trig, N-triples, or N-Quads.
    SHACLC@comunica/actor-rdf-serialize-shaclcSerializes to SHACLC.

    RDF Update Hypermedia

    Package: @comunica/bus-rdf-update-hypermedia

    Handle a destination based on the extracted metadata.

    Subscribed actors need to implement ActorRdfUpdateHypermedia.

    Actors

    NamePackageDescription
    SPARQL@comunica/actor-rdf-update-hypermedia-patch-sparql-updateThe destination is considered an HTTP APIs accepting PATCH requests containing SPARQL Update queries (application/sparql-update), such as Solid servers.

    RDF Update Quads

    Package: @comunica/bus-rdf-update-quads

    Handle the insertion and deletion of streams of quads for a given destination type.

    Subscribed actors need to implement ActorRdfUpdateQuads or ActorRdfUpdateQuadsDestination

    Actors

    NamePackageDescription
    RDF/JS Store@comunica/actor-rdf-update-quads-rdfjs-storeThe destination is considered an RDF/JS Store.
    Hypermedia@comunica/actor-rdf-update-quads-hypermediaThe destination that handles updates by interpreting hypermedia links and controls.