Skip to content

Java client library for the Synthetic Biology Open Language (SBOL) Stack

License

Notifications You must be signed in to change notification settings

ICO2S/sbolstack-client-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SBOL Stack Java Client

This project provides a programatic client to the SBOL Stack. It allows you to populate the libSBOLj data model directly from a stack instance.

Installation

JAR files are available on the Releases page.

Building from Source

This project is built using maven. First, check out the source:

git clone https://github.com/ICO2S/sbolstack-client-java.git

Then install locally using maven:

cd sbolstack-client-java
mvn install

Adding the client as a dependency

The maven dependency can be used in another maven project as follows:

<dependency>
    <groupId>org.sbolstack.frontend</groupId>
    <artifactId>sbolstack-frontend</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

Documentation

Javadoc can be found here.

Client examples

Several examples can be found in the org.sbolstack.example package.

All interaction with the stack is through the StackFrontend facade. Instances are created with the URL of their stack instance.

StackFrontend frontend = new StackFrontend("http://localhost:9090");

This instance can then be used to fetch, count, search and upload SBOL data to the remote stack instance.

If you know the URI of an SBOL entity, you can fetch it directly. For example:

ComponentDefinition cdef = frontend.fetchComponent(new URI("http://www.bacillondex.org/BO_10050"));

Often, you may not know the exact URI of the object to fetch. The stack client supports template-directed querying. First create an SBOLDocument instance to act as a template for interacting with the stack.

SBOLDocument template = new SBOLDocument();
template.setDefaultURIprefix("http://www.bacillondex.org/");

This can then be used to make an SBOL entity to be used for counting, searching or uploading. For example:

template.createComponentDefinition("BO_10050", ComponentDefinition.PROTEIN);
int count = frontend.countMatchingComponents(template);

This will query the stack for all component definition instances with the displayId "BO_10050" and of type Protein, returning the number of hits. Rather than counting the result, we can search for them:

SBOLDocument results = frontend.searchComponents(template, 0, 1000);

This returns a document with the matching components, paged from result 0 to 1000. Finally, documents can be uploaded wholesale to a stack:

ComponentDefinition componentDefinition = document.createComponentDefinition(name, ComponentDefinition.DNA);
componentDefinition.addRole(new URI("http://sbolstack.org/testcomponent"));
frontend.upload(document);

Variants of these operations exist for different SBOL top-level data types. If you think something is missing, please get in touch and we will add it.

About

Java client library for the Synthetic Biology Open Language (SBOL) Stack

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages