# Tree-sitter SPARQL
Python bindings for the tree-sitter SPARQL grammar.
This is based on the original repo here: https://github.com/GordianDziwis/tree-sitter-sparql - but updated to work with more recent versions of tree-sitter.
## Installation
Install from source:
```bash
git clone https://github.com/yourusername/tree_sitter_sparql
cd tree_sitter_sparql
pip install .
```
## Usage (tree-sitter 0.21.0+)
If you're using tree-sitter version 0.21.0 or later:
```python
import tree_sitter_sparql
from tree_sitter import Language, Parser
# Initialize the language
SPARQL_LANGUAGE = Language(tree_sitter_sparql.language())
# Create parser
parser = Parser(SPARQL_LANGUAGE)
# Parse SPARQL query
query = b"""
SELECT ?subject ?predicate ?object
WHERE {
?subject ?predicate ?object .
}
LIMIT 10
"""
tree = parser.parse(query)
# Walk the syntax tree
cursor = tree.walk()
def walk_tree(cursor, depth=0):
node = cursor.node
print(" " * depth + f"{node.type}: {node.text.decode('utf8')[:50]}")
if cursor.goto_first_child():
walk_tree(cursor, depth + 1)
cursor.goto_parent()
if cursor.goto_next_sibling():
walk_tree(cursor, depth)
walk_tree(cursor)
```
## Requirements
- Python 3.8+
- tree-sitter
## Development
To build from source:
```bash
# Install in development mode
pip install -e .
# Run tests (if available)
pytest
```
## License
MIT
Raw data
{
"_id": null,
"home_page": null,
"name": "tree-sitter-sparql",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "tree-sitter, sparql, parser, incremental",
"author": null,
"author_email": "Etienne Posthumus <ep@epoz.org>",
"download_url": "https://files.pythonhosted.org/packages/6f/9e/9122d41adb037ea0d08c580264d608b16e26abd01bf94536c673b342d67c/tree_sitter_sparql-0.1.0.tar.gz",
"platform": null,
"description": "# Tree-sitter SPARQL\n\nPython bindings for the tree-sitter SPARQL grammar.\n\nThis is based on the original repo here: https://github.com/GordianDziwis/tree-sitter-sparql - but updated to work with more recent versions of tree-sitter.\n\n## Installation\n\nInstall from source:\n\n```bash\ngit clone https://github.com/yourusername/tree_sitter_sparql\ncd tree_sitter_sparql\npip install .\n```\n\n## Usage (tree-sitter 0.21.0+)\n\nIf you're using tree-sitter version 0.21.0 or later:\n\n```python\nimport tree_sitter_sparql\nfrom tree_sitter import Language, Parser\n\n# Initialize the language\nSPARQL_LANGUAGE = Language(tree_sitter_sparql.language())\n\n# Create parser\nparser = Parser(SPARQL_LANGUAGE)\n\n# Parse SPARQL query\nquery = b\"\"\"\nSELECT ?subject ?predicate ?object\nWHERE {\n ?subject ?predicate ?object .\n}\nLIMIT 10\n\"\"\"\n\ntree = parser.parse(query)\n\n# Walk the syntax tree\ncursor = tree.walk()\n\ndef walk_tree(cursor, depth=0):\n node = cursor.node\n print(\" \" * depth + f\"{node.type}: {node.text.decode('utf8')[:50]}\")\n\n if cursor.goto_first_child():\n walk_tree(cursor, depth + 1)\n cursor.goto_parent()\n\n if cursor.goto_next_sibling():\n walk_tree(cursor, depth)\n\nwalk_tree(cursor)\n```\n\n## Requirements\n\n- Python 3.8+\n- tree-sitter\n\n## Development\n\nTo build from source:\n\n```bash\n# Install in development mode\npip install -e .\n\n# Run tests (if available)\npytest\n```\n\n## License\n\nMIT\n",
"bugtrack_url": null,
"license": null,
"summary": "SPARQL grammar for tree-sitter",
"version": "0.1.0",
"project_urls": {
"Homepage": "https://github.com/epoz/tree_sitter_sparql"
},
"split_keywords": [
"tree-sitter",
" sparql",
" parser",
" incremental"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b6c1df3c8c06a669ad028e8a4f5caaf51997ca550eeba691a1e86ef4fcf65df2",
"md5": "397f7b7ea44fab8d6ee28358dca36d18",
"sha256": "ae07fb07ec653e2b7412fef8ccc65b99543fd7396ddc9c8182d8cfab3e82f7e0"
},
"downloads": -1,
"filename": "tree_sitter_sparql-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "397f7b7ea44fab8d6ee28358dca36d18",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 48543,
"upload_time": "2025-10-06T15:44:36",
"upload_time_iso_8601": "2025-10-06T15:44:36.454883Z",
"url": "https://files.pythonhosted.org/packages/b6/c1/df3c8c06a669ad028e8a4f5caaf51997ca550eeba691a1e86ef4fcf65df2/tree_sitter_sparql-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "03e8bb14752a7788d2bc37a7d5ac1d42d0432bc28eecec6a516bf943b7995d25",
"md5": "bbb801c45f83cc465bdc389a00ccabc6",
"sha256": "237fec9e171ba0b690518df33e643a4da2c0c58a316b4007e98e251999bfb038"
},
"downloads": -1,
"filename": "tree_sitter_sparql-0.1.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "bbb801c45f83cc465bdc389a00ccabc6",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 49482,
"upload_time": "2025-10-06T15:44:37",
"upload_time_iso_8601": "2025-10-06T15:44:37.381626Z",
"url": "https://files.pythonhosted.org/packages/03/e8/bb14752a7788d2bc37a7d5ac1d42d0432bc28eecec6a516bf943b7995d25/tree_sitter_sparql-0.1.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a5134c195bad25e6f79739b6586c215e8f694cbdae85faa3128259276ca212a1",
"md5": "94f983a39b078e7b2302ac669af4d704",
"sha256": "3da9b0a474908f3b226354cfe8f5e7aa385e65f55b0d8351f368bb0edaeced22"
},
"downloads": -1,
"filename": "tree_sitter_sparql-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "94f983a39b078e7b2302ac669af4d704",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 48547,
"upload_time": "2025-10-06T15:44:38",
"upload_time_iso_8601": "2025-10-06T15:44:38.224411Z",
"url": "https://files.pythonhosted.org/packages/a5/13/4c195bad25e6f79739b6586c215e8f694cbdae85faa3128259276ca212a1/tree_sitter_sparql-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dc85a3fb09ec3fe7dbb83eac73cf3b5e9e7219d6403ba12cc8abaa69c135504c",
"md5": "c60cda1bed039c4ae3e8cc53d2d50376",
"sha256": "0383eb5e0f8c1cf880d15ecefe4a63cf6676560af70bfb626891f26acb222888"
},
"downloads": -1,
"filename": "tree_sitter_sparql-0.1.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "c60cda1bed039c4ae3e8cc53d2d50376",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 49477,
"upload_time": "2025-10-06T15:44:39",
"upload_time_iso_8601": "2025-10-06T15:44:39.068167Z",
"url": "https://files.pythonhosted.org/packages/dc/85/a3fb09ec3fe7dbb83eac73cf3b5e9e7219d6403ba12cc8abaa69c135504c/tree_sitter_sparql-0.1.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6219b28f45eb1a10d5bbe093716e02bf341618ffa36dc3d3f19f0e4eddd7460c",
"md5": "6dc5b205a92de727b22c676d69a278e1",
"sha256": "9566a809d9073aec1cf734fd7b3481b7d18524cde21f64c1c491c8419c5d78d1"
},
"downloads": -1,
"filename": "tree_sitter_sparql-0.1.0-cp312-cp312-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "6dc5b205a92de727b22c676d69a278e1",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 48546,
"upload_time": "2025-10-06T15:44:39",
"upload_time_iso_8601": "2025-10-06T15:44:39.870391Z",
"url": "https://files.pythonhosted.org/packages/62/19/b28f45eb1a10d5bbe093716e02bf341618ffa36dc3d3f19f0e4eddd7460c/tree_sitter_sparql-0.1.0-cp312-cp312-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5fac2e8caa3b716433eed7d65dbe833af53da0527fae2b39be00f4ff3c0178a3",
"md5": "42b202f768b1efbfb7dd98280ef97919",
"sha256": "9e2fc6530ca28330587e224ca3c535b09611be600257ab0426a10e8c28ec7d4a"
},
"downloads": -1,
"filename": "tree_sitter_sparql-0.1.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "42b202f768b1efbfb7dd98280ef97919",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 49483,
"upload_time": "2025-10-06T15:44:40",
"upload_time_iso_8601": "2025-10-06T15:44:40.743992Z",
"url": "https://files.pythonhosted.org/packages/5f/ac/2e8caa3b716433eed7d65dbe833af53da0527fae2b39be00f4ff3c0178a3/tree_sitter_sparql-0.1.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "55095e38581adb01d1a7b6c47f7b9bfc25f1aab1e95f725f439cb0997be99291",
"md5": "ccc0f5af136c0b46a8dc98f941f8118c",
"sha256": "d6ff4b9ea246f1947a97497c6c00cc33e014f02fde68128e310cb29c368e4e12"
},
"downloads": -1,
"filename": "tree_sitter_sparql-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "ccc0f5af136c0b46a8dc98f941f8118c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 48539,
"upload_time": "2025-10-06T15:44:41",
"upload_time_iso_8601": "2025-10-06T15:44:41.539824Z",
"url": "https://files.pythonhosted.org/packages/55/09/5e38581adb01d1a7b6c47f7b9bfc25f1aab1e95f725f439cb0997be99291/tree_sitter_sparql-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7ae1490fac5f7d8d8fad2411742a7de9d8f56fa74c0488aee8fc85c00412273b",
"md5": "83387ed48f9238828eac86ffcff8b93d",
"sha256": "1173e0984291dbf5bae7842b7d316d18fa8dbe94f5be2d2bc390838e4c053fdd"
},
"downloads": -1,
"filename": "tree_sitter_sparql-0.1.0-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "83387ed48f9238828eac86ffcff8b93d",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 49474,
"upload_time": "2025-10-06T15:44:42",
"upload_time_iso_8601": "2025-10-06T15:44:42.835273Z",
"url": "https://files.pythonhosted.org/packages/7a/e1/490fac5f7d8d8fad2411742a7de9d8f56fa74c0488aee8fc85c00412273b/tree_sitter_sparql-0.1.0-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6f9e9122d41adb037ea0d08c580264d608b16e26abd01bf94536c673b342d67c",
"md5": "d127836ee1c6ac177e72e712cdf3c5ec",
"sha256": "ab96caa8b123661d81f53fe6491a1ba631b4a9b8e2171cb07d58bc3c72d44e91"
},
"downloads": -1,
"filename": "tree_sitter_sparql-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "d127836ee1c6ac177e72e712cdf3c5ec",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 103914,
"upload_time": "2025-10-06T15:33:28",
"upload_time_iso_8601": "2025-10-06T15:33:28.879241Z",
"url": "https://files.pythonhosted.org/packages/6f/9e/9122d41adb037ea0d08c580264d608b16e26abd01bf94536c673b342d67c/tree_sitter_sparql-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-06 15:33:28",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "epoz",
"github_project": "tree_sitter_sparql",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "tree-sitter-sparql"
}