libSBOL
Convert from any graph formatto libSBOL Convert from libSBOLto any other format
libSBOL is an open-source C++ library for reading, writing, and programmatically constructing genetic designs that conform to the Synthetic Biology Open Language (SBOL), a community data standard for exchanging in silico biological designs. It is developed under the SynBioDex (Synthetic Biology Data Exchange) organization, with Bryan Bartley, Kiri Choi, and the wider SBOL developer community as principal authors, and its work has been supported by NSF awards for the SBOL Resource. The last tagged release (v2.3.x, 2019) implements the SBOL 2.3.2 specification, and the library builds on Windows, macOS, and Linux. Alongside the native C++ API, SWIG-generated bindings are distributed as pySBOL, giving Python programmers the same object model over the compiled core (see pySBOL2 for the pure-Python successor).
Under the hood SBOL is a Semantic Web standard: designs are RDF graphs backed by a formally defined ontology, and libSBOL serializes documents as RDF/XML (later SBOL3 tooling adds Turtle, JSON-LD, and N-Quads). A Document object acts as the container and graph store, holding typed top-level entities such as ComponentDefinition (a DNA, RNA, protein, or small-molecule part), Sequence, ModuleDefinition (functional assemblies with Interactions and FunctionalComponents), and Model references to mathematical descriptions like SBML. Parts nest hierarchically through SequenceAnnotations and Components, so an SBOL document is effectively a knowledge graph of biological entities and their relationships.
Its niche in the graph-data and format-conversion world is standardized, machine-navigable representation of engineered biological systems, rather than general-purpose graph plumbing. libSBOL includes a PartShop client for pushing and pulling designs from SynBioHub repositories, sequence-editing helpers, and validation against the SBOL schema. Typical uses are genetic design automation pipelines, storing and exchanging part libraries, and driving design tools that need round-trippable, ontology-typed data.
The main limitations are practical: it targets SBOL2 only, its C++/SWIG toolchain is heavier to install and package than native Python, and active development has shifted to the SBOL3 generation. For new work the community now favors graph-first successors—libSBOLj in Java and the pySBOL3 generation in Python—which streamline the data model and expose the underlying RDF graph more directly. libSBOL remains relevant chiefly for maintaining existing SBOL2 codebases and datasets.
Graph Formats(Input & Output)
Frequently Asked Questions
What graph file formats does libSBOL support?
See the list on this page — it shows every format libSBOL can read, write and display.
How do I import a graph into libSBOL?
Convert your file to a format libSBOL can read, then open it in libSBOL. Use GraphInOut to get a libSBOL-compatible file in seconds.
How do I convert a file so libSBOL can open it?
Use the convert links above — upload or paste your graph, pick a format libSBOL accepts and download the result, right in your browser.