Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Uplot | 8,179 | 36 | 4 days ago | 58 | October 27, 2023 | 99 | mit | JavaScript | ||
📈 A small, fast chart for time series, lines, areas, ohlc & bars | ||||||||||
Webglstudio.js | 4,064 | 3 years ago | 31 | mit | JavaScript | |||||
A full open source 3D graphics editor in the browser, with scene editor, coding pad, graph editor, virtual file system, and many features more. | ||||||||||
Vizceral | 4,026 | 18 | 11 | 3 days ago | 68 | July 20, 2019 | 53 | apache-2.0 | JavaScript | |
WebGL visualization for displaying animated traffic graphs | ||||||||||
3d Force Graph | 3,901 | 31 | 36 | a month ago | 314 | October 19, 2023 | 209 | mit | HTML | |
3D force-directed graph component using ThreeJS/WebGL | ||||||||||
Vivagraphjs | 3,615 | 31 | 9 | 5 months ago | 29 | October 27, 2019 | 102 | other | JavaScript | |
Graph drawing library for JavaScript | ||||||||||
Pygraphistry | 1,939 | 4 | 2 | 7 days ago | 162 | November 02, 2023 | 150 | bsd-3-clause | Python | |
PyGraphistry is a Python library to quickly load, shape, embed, and explore big graphs with the GPU-accelerated Graphistry visual graph analyzer | ||||||||||
React Force Graph | 1,687 | 12 | 24 | a month ago | 184 | October 19, 2023 | 158 | mit | HTML | |
React component for 2D, 3D, VR and AR force directed graphs | ||||||||||
Cosmos | 668 | 5 | a month ago | 37 | October 31, 2023 | 9 | other | TypeScript | ||
GPU-accelerated force graph layout and rendering | ||||||||||
Reagraph | 486 | 4 | 4 days ago | 72 | November 27, 2023 | 18 | apache-2.0 | TypeScript | ||
🕸 WebGL Graph Visualizations for React. Maintained by @goodcodeus. | ||||||||||
Graph Visualization | 453 | 5 years ago | 3 | other | JavaScript | |||||
3D graph visualization with WebGL / Three.js |
TranQL is a query language for interactive exploration of federated knowledge graphs.
Previous work focused on a workflow language for automating biomedical queries. We've also prototyped similar workflows using the Common Workflow Language (CWL).
Workflow languages generally provide capabilities to support large scale, fault tolerant, reproducible, automated computing. These are critical features where processes that have been refined by teams over time must be automated and shared. Common characteristics of these systems include:
While these features are essential for some applications, they are neither targeted at nor well suited to
The ability to explore large data sets with queries is extremely familiar to clinical data experts and many medical informatics specialists. To make semantic databases more accessible to these communities, we designed TranQL to share structural and syntactic similarities with the most familiar and widely used languages for interactive distributed data analytics, while providing an interface to heterogeneous semantic graph services existing environments don't address.
In particular, the Structured Query Language (SQL) is among the most pervasive query languages in use. It is vital to the work of clinical data specialists. TranQL borrows concepts from SQL while borrowing elements of graph semantics from query languages like Cypher.
It must be noted here that the W3C Semantic Web stack has the most robust and mature toolkit in this space surrounding technologies including RDF and SPARQL. However, wide spread adoption of this stack has not approached the levels of technologies like SQL, REST and OpenAPI. Also, the W3C stack envisions a homogeneous RDF/SPARQL environment. We sought something able to embrace more heterogeneous data sources.
On a final contextual note, we've also evaluated a GraphQL interface to these federated data services. GraphQL, it's name not withstading, does not provide much in the way of constructs allowing the user to think explicitly in terms of a knowledge graph compared to Cypher or SPARQL. And, again, it's query syntax and approach is highly unfamiliar to clinical data and medical communities.
TranQL is a classic interpreter with a lexical analyzer & parser which produces a token stream. The tokens are interpreted to build an abstract syntax tree modeling the program's constructs which are then executed sequentially. The grammar supports three types of statements:
SET <variable> = <value>
SELECT <graph>
FROM <service>
[WHERE <constraint> [AND <constraint]*]
[[SET <jsonpath> AS <var> | [SET <var>]]*```
CREATE GRAPH <var> AT <service> AS <name>
The Translator standard graph API is a protocol for exchanging graphs with federated data sources. TranQL works with endpoints supporting this standard.
The TranQL Backplane is a collection of endpoints supporting the standard API which implement reusable question answering services, or modules.
Backplane modules support a simplified syntax in the language for greater readability.
The example program begins with a multi-line comment describing its intent:
The first statement selects a graph pattern connecting disease nodes to chemical substances, both biolink-model
concepts.
The from clause specifies the path to a Backplane endpoint. Because it begins with a "/", TranQL prepends the protocol, host, and port of a configured TranQL Backplane service. The service can be any endpoint implementing the standard graph endpoint interface.
The first where
constraint parameterizes the disease question node sent to the service. In this case, it resolves an English word into ontology identifiers using the bionames API. If curies are supplied, those are used directly. The latter approach is definitely more robust and specific. The former may be more helpful for quick interactive exploration, and may serve as a bridge to an NLP interface.
The rest of the constraints, because they do not map to graph query elements, are transmitted to the service as options
in the standard protocol. The service being invoked validates and interprets the options. In the case above, the endpoint passes the options along to define a cohort in the ICEES clinical reasoner.
The final part of the select statement is a set
statement which uses a JSONPath query to extract chemical identifiers from the result and store them as a variable.
The second select
statement sends a different graph query to the Gamma reasoner and parameterizes the chemical_substance concept with identifiers from the first clinical step.
The resulting graph is saved as a variable.
There's not yet a standard solution to explaining what graph patterns are supported by each endpoint. SQL lets users list the schema of a data source. Towards addressing this, Robokop(Gamma) provides a metadata endpoint describing its meta-knowledge-graph. The shallow hierarchy describes the kinds of transitions it supports and the data sources implementing the transitions. See the "Viewer" tab here.
The TranQL Backplane implements two standard API endpoints for visualizing a knowledge graph. One supports the UCSD NDEx network sharing platform and the other supports Gamma's answer visualization facility.
The program ends by publishing the answer set to both services.
Here's a link to the Gamma visualization for the answer.
TranQL is brand new and strictly alpha.
Requires Python 3.7.x.
git clone <repository>
cd tranql
pip install -r tranql/requirements.txt
bin/test
To run a program, first start the backplane:
cd backplane
PYTHONPATH=$PWD/../.. python server.py
Then run the query:
bin/tranql --source tranql/queries/workflow-5.tranql
To run the web app, first start the TranQL API:
cd tranql
PYTHONPATH=$PWD/../ python api.py
Then follow the instructions in web/ to start the website.
Run the interactive interpreter.
bin/tranql --shell
$ bin/tranql --help
usage: main.py [-h] [-d] [-c] [-b BACKPLANE] [-i] [-s SOURCE] [-o OUTPUT]
TranQL
optional arguments:
-h, --help show this help message and exit
-d, --verbose Verbose mode. (default: False)
-c, --cache Cache responses from backplane
services? (default: False)
-b BACKPLANE, --backplane BACKPLANE Backplane URL prefix (default:
http://localhost:8099)
-i, --shell The interpreter read-eval-print-loop
(REPL). (default: False)
-s SOURCE, --source SOURCE The program's source file (default:
None)
-o OUTPUT, --output OUTPUT Output destination (default: None)