Skip to content

Commit 45c4238

Browse files
authored
Merge pull request #18 from linkml/enhancements
enhancements
2 parents 41007b5 + d712bea commit 45c4238

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+6371
-473
lines changed

Makefile

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,20 @@ all-pytest:
2121
install-all:
2222
poetry install -E analytics -E app -E tests -E llm -E mongodb
2323

24-
# not yet deployed
24+
DOCTEST_DIR = docs src/linkml_store/api src/linkml_store/index src/linkml_store/utils
2525
doctest:
26-
find src docs -type f \( -name "*.rst" -o -name "*.md" -o -name "*.py" \) -print0 | xargs -0 $(RUN) python -m doctest --option ELLIPSIS --option NORMALIZE_WHITESPACE
26+
find $(DOCTEST_DIR) -type f \( -name "*.rst" -o -name "*.md" -o -name "*.py" \) -print0 | xargs -0 $(RUN) python -m doctest --option ELLIPSIS --option NORMALIZE_WHITESPACE
27+
28+
29+
doctest-%:
30+
find $* -type f \( -name "*.py" \) -print0 | xargs -0 $(RUN) python -m doctest --option ELLIPSIS --option NORMALIZE_WHITESPACE
2731

2832
%-doctest: %
2933
$(RUN) python -m doctest --option ELLIPSIS --option NORMALIZE_WHITESPACE $<
3034

35+
api:
36+
poetry run linkml-store-api
37+
3138
app:
3239
$(RUN) streamlit run $(CODE)/app.py
3340
# $(RUN) streamlit run $(CODE)/app.py --logger.level=debug

README.md

Lines changed: 77 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,84 @@
11
# linkml-store
22

3-
An integration layer for multiple database backends
3+
An AI-ready data management and integration platform. LinkML-Store
4+
provides an abstraction layer over multiple different backends
5+
(including DuckDB, MongoDB, and local filesystems), allowing for
6+
common query, index, and storage operations.
47

5-
Currently this software is alpha, and has only been tested with DuckDB backends. See the Tutorial for more information.
8+
For full documentation, see [https://linkml.io/linkml-store/](https://linkml.io/linkml-store/)
69

7-
There is also experimental support for vector-based indexing using OpenAI test embedding via the `llm` library.
10+
__Warning__ LinkML-Store is still undergoing changes and refactoring,
11+
APIs and command line options are subject to change!
812

9-
The goals of this project are to provide high level access to data stored in heterogeneous databases,
10-
with optional schema management using LinkML.
13+
## Quick Start
14+
15+
Install, add data, query it:
16+
17+
```
18+
pip install linkml-store[all]
19+
linkml-store -d duckdb:///db/my.db -c persons insert data/*.json
20+
linkml-store -d duckdb:///db/my.db -c persons query -w "occupation: Bricklayer"
21+
```
22+
23+
Index it, search it:
24+
25+
```
26+
linkml-store -d duckdb:///db/my.db -c persons index -t llm
27+
linkml-store -d duckdb:///db/my.db -c persons search "all persons employed in construction"
28+
```
29+
30+
Validate it:
31+
32+
```
33+
linkml-store -d duckdb:///db/my.db -c persons validate
34+
```
35+
36+
## Basic usage
37+
38+
* [Command Line](https://linkml.io/linkml-store/tutorials/Command-Line-Tutorial.html)
39+
* [Python](https://linkml.io/linkml-store/tutorials/Python-Tutorial.html)
40+
* API
41+
* Streamlit applications
42+
43+
## Features
44+
45+
### Multiple Adapters
46+
47+
LinkML-Store is designed to work with multiple backends, giving a common abstraction layer
48+
49+
* [MongoDB](https://linkml.io/linkml-store/how-to/Use-MongoDB.html)
50+
* [DuckDB](https://linkml.io/linkml-store/tutorials/Python-Tutorial.html)
51+
* [Solr](https://linkml.io/linkml-store/how-to/Query-Solr-using-CLI.html)
52+
* Filesystem
53+
54+
Coming soon: any RDBMS, any triplestore, Neo4J, HDF5-based stores, ChromaDB/Vector dbs ...
55+
56+
The intent is to give a union of all features of each backend. For
57+
example, analytic faceted queries are provided for *all* backends, not
58+
just Solr.
59+
60+
### Composable indexes
61+
62+
Many backends come with their own indexing and search
63+
schemes. Classically this was Lucene-based indexes, now it is semantic
64+
search using LLM embeddings.
65+
66+
LinkML store treats indexing as an orthogonal concern - you can
67+
compose different indexing schemes with different backends. You don't
68+
need to have a vector database to run embedding search!
69+
70+
See [How to Use-Semantic-Search](https://linkml.io/linkml-store/how-to/Use-Semantic-Search.html)
71+
72+
### Validation
73+
74+
LinkML-Store is backed by [LinkML](https://linkml.io), which allows
75+
for powerful expressive structural and semantic constraints.
76+
77+
See [Indexing JSON](https://linkml.io/linkml-store/how-to/Index-Phenopackets.html)
78+
79+
and [Referential Integrity](https://linkml.io/linkml-store/how-to/Check-Referential-Integrity.html)
80+
81+
82+
## Background
1183

1284
See [these slides](https://docs.google.com/presentation/d/e/2PACX-1vSgtWUNUW0qNO_ZhMAGQ6fYhlXZJjBNMYT0OiZz8DDx8oj7iG9KofRs6SeaMXBBOICGknoyMG2zaHnm/embed?start=false&loop=false&delayms=3000) for more details

docs/about.rst

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,26 @@ The overall goals are to provide:
1717
Installation
1818
------------
1919

20+
At this stage we recommend installing all extras:
21+
22+
.. code-block:: bash
23+
24+
pip install "linkml-store[all]"
25+
26+
Minimal implementation:
27+
2028
.. code-block:: bash
2129
22-
pip install linkml-store
30+
pip install "linkml-store"
31+
32+
For developers working on the linkml-store codebase, we recommend checking out the repo, and then
33+
installing all packages via the `make` command:
34+
35+
.. code-block:: bash
2336
37+
git clone <URL>
38+
cd linkml-store
39+
make install
2440
2541
Quickstart
2642
----------

0 commit comments

Comments
 (0)