DerwenAI / kglab

Graph Data Science: an abstraction layer in Python for building knowledge graphs, integrated with popular graph libraries – atop Pandas, NetworkX, RAPIDS, RDFlib, pySHACL, PyVis, morph-kgc, pslpython, pyarrow, etc.
https://derwen.ai/docs/kgl/
MIT License
565 stars 64 forks source link
graph-algorithms graph-libraries graph-thinking inference json-ld knowledge-graph networkx owl pandas parquet probabilistic-soft-logic python-igraph pyvis r2rml-mapping rapids rdflib roamresearch shacl skos sparql

kglab

DOI Licence Repo size GitHub commit activity Checked with mypy security: bandit CI downloads sponsor

Welcome to Graph Data Science: https://derwen.ai/docs/kgl/

The kglab library provides a simple abstraction layer in Python 3.7+ for building knowledge graphs, leveraging Pandas, NetworkX, RAPIDS, RDFLib, Morph-KGC, pythonPSL, and many more.

SPECIAL REQUEST:
Which features would you like in an open source Python library for building knowledge graphs?
Please add your suggestions through this survey:
https://forms.gle/FMHgtmxHYWocprMn6
This will help us prioritize the kglab roadmap.

Reviews

@kaaloo:

"Feels like it's a Hugging Face for graphs! 🤯"

Getting Started

See the "Getting Started" section of the online documentation.

Using kglab as a library for your Python project

We recommend installing from PyPi or conda:

pip

python3 -m pip install kglab

pipenv

pipenv install kglab

conda

conda env create -n kglab
conda activate kglab
pip install kglab

Or, install from source:

If you work directly from this Git repo, be sure to install the dependencies:

pip

python3 -m pip install -U pip wheel
python3 -m pip install -r requirements.txt

pipenv

pipenv install --dev

Alternatively, to install dependencies using conda:

conda env create -f environment.yml --force
conda activate kglab

Sample Code

Then to run some simple uses of this library:

import kglab

# create a KnowledgeGraph object
kg = kglab.KnowledgeGraph()

# load RDF from a URL
kg.load_rdf("http://bigasterisk.com/foaf.rdf", format="xml")

# measure the graph
measure = kglab.Measure()
measure.measure_graph(kg)

print("edges: {}\n".format(measure.get_edge_count()))
print("nodes: {}\n".format(measure.get_node_count()))

# serialize as a string in "Turtle" TTL format
ttl = kg.save_rdf_text()
print(ttl)

See the tutorial notebooks in the examples subdirectory for sample code and patterns to use in integrating kglab with other graph libraries in Python: https://derwen.ai/docs/kgl/tutorial/

WARNING when installing in an existing environment:
Installing a new package in an existing environment may reveal
or create version conflicts. See the kglab requirements
in requirements.txt before you do. For example, there are
known version conflicts regarding NumPy (>= 1.19.4) and TensorFlow 2+ (~-1.19.2)

Using Docker For a simple approach to running the tutorials, see use of _docker compose_: Also, container images for each release are available on DockerHub: To build a container image and run it for the tutorials: ```bash docker build --pull --rm -f "docker/Dockerfile" -t kglab:latest . docker run -p 8888:8888 -it kglab ``` To build and run a container image for testing: ```bash docker build --pull --rm -f "docker/testsuite.Dockerfile" -t kglabtest:latest . docker run --rm -it kglabtest ```
Build Instructions Note: unless you are contributing code and updates, in most use cases won't need to build this package locally. Instead, simply install from [PyPi](https://pypi.python.org/pypi/kglab) or use [Conda](https://docs.conda.io/). To set up the build environment locally, see the ["Build Instructions"](https://derwen.ai/docs/kgl/build/) section of the online documentation.
Semantic Versioning Before kglab reaches release v1.0.0 the types and classes may undergo substantial changes and the project is not guaranteed to have a consistent API. Even so, we'll try to minimize breaking changes. We'll also be sure to provide careful notes. See: [changelog.txt](https://github.com/DerwenAI/kglab/blob/main/changelog.txt)
Contributing Code We welcome people getting involved as contributors to this open source project! For detailed instructions please see: [CONTRIBUTING.md](https://github.com/DerwenAI/kglab/blob/main/CONTRIBUTING.md)
License and Copyright Source code for **kglab** plus its logo, documentation, and examples have an [MIT license](https://spdx.org/licenses/MIT.html) which is succinct and simplifies use in commercial applications. All materials herein are Copyright © 2020-2023 Derwen, Inc.
Attribution Please use the following BibTeX entry for citing **kglab** if you use it in your research or software. Citations are helpful for the continued development and maintenance of this library. ```bibtex @software{kglab, author = {Paco Nathan}, title = {{kglab: a simple abstraction layer in Python for building knowledge graphs}}, year = 2020, publisher = {Derwen}, doi = {10.5281/zenodo.6360664}, url = {https://github.com/DerwenAI/kglab} } ```

<img alt="illustration of a knowledge graph, plus laboratory glassware" src="https://raw.githubusercontent.com/DerwenAI/kglab/main/docs/assets/logo.png" width="231" />

Kudos

Many thanks to our open source sponsors; and to our contributors: @ceteri, @dvsrepo, @Ankush-Chander, @louisguitton, @tomaarsen, @Mec-iS, @jake-aft, @Tpt, @ArenasGuerreroJulian, @fils, @cutterkom, @RishiKumarRay, @gauravjaglan, @pebbie, @CatChenal, @jorisSchaller, @dmoore247, plus general support from Derwen, Inc.; the Knowledge Graph Conference and Connected Data World; plus an even larger scope of use cases represented by their communities; Kubuntu Focus, the RAPIDS team @ NVIDIA, Gradient Flow, and Manning Publications.

<img alt="kglab contributors" src="https://contributors-img.web.app/image?repo=derwenai/kglab" />

Star History

Star History Chart