JSON Export and Import

knitr::opts_chunk$set(
    collapse = TRUE,
    comment = "#>"
)

In version 1.4.1, fcaR introduces comprehensive support for JSON (JavaScript Object Notation) export and import. This facilitates interoperability with other systems, web applications, and non-R based tools.

This vignette demonstrates how to export and import the main data structures in fcaR: FormalContext, ConceptLattice, ImplicationSet, and RuleSet.

Setup

First, ensure you have the jsonlite package installed, as it is required for these features.

library(fcaR)
# install.packages("jsonlite")

FormalContext

We can export a FormalContext to JSON, which preserves the objects, attributes, and the incidence matrix. Importantly, the incidence matrix is exported in a sparse format (indices and values) to handle large datasets efficiently.

Creating and Exporting

Let's load a sample dataset and create a FormalContext.

data("planets")
fc <- FormalContext$new(planets)
print(fc)

To export the context to a JSON string:

json_str <- fc$to_json()
cat(substr(json_str, 1, 200), "...") # Print first 200 chars

You can also save it directly to a file:

fc$to_json(file = "context.json")

Importing

To verify the export, we can import the JSON string back into a new FormalContext object using context_from_json():

fc2 <- context_from_json(json_str)
print(fc2)

We can check that the original and reconstructed contexts are identical:

all(fc$objects == fc2$objects)
all(fc$attributes == fc2$attributes)
all(as.matrix(fc$I) == as.matrix(fc2$I))

Recursive Export

The to_json() method for FormalContext is recursive. If you have computed concepts or implications, they will be nested within the exported JSON.

fc$find_concepts()
fc$find_implications()

# Export with nested concepts and implications
json_full <- fc$to_json()

# Import back
fc_full <- context_from_json(json_full)

# Check if concepts are present
fc_full$concepts$size()

ConceptLattice

You can also export a ConceptLattice independently.

cl <- fc$concepts
json_lattice <- cl$to_json()

And import it using lattice_from_json():

cl2 <- lattice_from_json(json_lattice)
print(cl2)

The exported JSON includes the lattice hierarchy (superconcept/subconcept relations), allowing for full reconstruction of the lattice structure.

ImplicationSet

Similarly, sets of implications can be exported and imported.

imps <- fc$implications
json_imps <- imps$to_json()

Import using implications_from_json():

imps2 <- implications_from_json(json_imps)
print(imps2)

RuleSet

Association rules (including causal rules) are also supported.

# Assuming we have a RuleSet, e.g. from arules or created manually
# Here we'll just demonstrate the syntax
rs <- RuleSet$new(attributes = fc$attributes)
# ... populate rules ...
# json_rules <- rs$to_json()
# rs2 <- rules_from_json(json_rules)

Summary

The new JSON functionality ensures that you can easily move your FCA models out of R for visualization, storage, or integration with web services.

| Class | Export Method | Import Function | |-------|---------------|-----------------| | FormalContext | $to_json() | context_from_json() | | ConceptLattice | $to_json() | lattice_from_json() | | ImplicationSet | $to_json() | implications_from_json() | | RuleSet | $to_json() | rules_from_json() |



Try the fcaR package in your browser

Any scripts or data that you put into this service are public.

fcaR documentation built on July 27, 2026, 5:06 p.m.