rdf4j-python 0.1.6__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rdf4j_python-0.1.6/rdf4j_python.egg-info → rdf4j_python-0.2.0}/PKG-INFO +82 -28
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/README.md +80 -26
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/pyproject.toml +15 -2
- rdf4j_python-0.2.0/rdf4j_python/__init__.py +81 -0
- rdf4j_python-0.2.0/rdf4j_python/_client/_client.py +342 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python/_driver/__init__.py +4 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python/_driver/_async_rdf4j_db.py +40 -6
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python/_driver/_async_repository.py +249 -18
- rdf4j_python-0.2.0/rdf4j_python/_driver/_async_transaction.py +310 -0
- rdf4j_python-0.2.0/rdf4j_python/exception/__init__.py +33 -0
- rdf4j_python-0.2.0/rdf4j_python/exception/repo_exception.py +61 -0
- rdf4j_python-0.2.0/rdf4j_python/model/__init__.py +37 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python/model/term.py +15 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0/rdf4j_python.egg-info}/PKG-INFO +82 -28
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python.egg-info/SOURCES.txt +6 -1
- rdf4j_python-0.2.0/tests/test_query_type_detection.py +135 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/tests/test_rdf4j_repository.py +1 -1
- rdf4j_python-0.2.0/tests/test_sparql_queries.py +605 -0
- rdf4j_python-0.2.0/tests/test_transactions.py +322 -0
- rdf4j_python-0.2.0/tests/test_upload_file.py +378 -0
- rdf4j_python-0.1.6/rdf4j_python/__init__.py +0 -14
- rdf4j_python-0.1.6/rdf4j_python/_client/_client.py +0 -281
- rdf4j_python-0.1.6/rdf4j_python/exception/__init__.py +0 -5
- rdf4j_python-0.1.6/rdf4j_python/exception/repo_exception.py +0 -34
- rdf4j_python-0.1.6/rdf4j_python/model/__init__.py +0 -11
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/LICENSE +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python/_client/__init__.py +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python/_driver/_async_named_graph.py +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python/model/_namespace.py +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python/model/_repository_info.py +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python/model/repository_config.py +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python/model/vocabulary.py +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python/utils/__init__.py +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python/utils/const.py +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python/utils/helpers.py +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python.egg-info/dependency_links.txt +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python.egg-info/requires.txt +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/rdf4j_python.egg-info/top_level.txt +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/setup.cfg +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/tests/test_async_named_graph.py +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/tests/test_client.py +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/tests/test_client_initialization.py +0 -0
- {rdf4j_python-0.1.6 → rdf4j_python-0.2.0}/tests/test_helpers.py +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rdf4j-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: The Python client for RDF4J
|
|
5
5
|
Author-email: Chengxu Bian <cbian564@gmail.com>
|
|
6
|
-
Requires-Python: >=3.
|
|
6
|
+
Requires-Python: >=3.11
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
8
|
License-File: LICENSE
|
|
9
9
|
Requires-Dist: httpx>=0.28.1
|
|
@@ -14,28 +14,34 @@ Dynamic: license-file
|
|
|
14
14
|
|
|
15
15
|
# rdf4j-python
|
|
16
16
|
|
|
17
|
+
[](https://badge.fury.io/py/rdf4j-python)
|
|
18
|
+
[](https://pypi.org/project/rdf4j-python/)
|
|
19
|
+
[](https://github.com/odysa/rdf4j-python/actions/workflows/ci.yaml)
|
|
20
|
+
[](https://opensource.org/licenses/BSD-3-Clause)
|
|
21
|
+
[](https://github.com/odysa/rdf4j-python/tree/main/docs)
|
|
22
|
+
|
|
17
23
|
**A modern Python client for the Eclipse RDF4J framework, enabling seamless RDF data management and SPARQL operations from Python applications.**
|
|
18
24
|
|
|
19
25
|
rdf4j-python bridges the gap between Python and the robust [Eclipse RDF4J](https://rdf4j.org/) ecosystem, providing a clean, async-first API for managing RDF repositories, executing SPARQL queries, and handling semantic data with ease.
|
|
20
26
|
|
|
21
|
-
> ⚠️ **Note:** This project is currently under active development and considered **experimental**. Interfaces may change. Use with caution in production environments—and feel free to help shape its future!
|
|
22
|
-
|
|
23
27
|
## Features
|
|
24
28
|
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
29
|
+
- **Async-First Design**: Native support for async/await with synchronous fallback
|
|
30
|
+
- **Repository Management**: Create, access, and manage RDF4J repositories programmatically
|
|
31
|
+
- **SPARQL Support**: Execute SELECT, ASK, CONSTRUCT, and UPDATE queries effortlessly
|
|
32
|
+
- **Transaction Support**: Atomic operations with commit/rollback and isolation levels
|
|
33
|
+
- **Flexible Data Handling**: Add, retrieve, and manipulate RDF triples and quads
|
|
34
|
+
- **File Upload**: Upload RDF files (Turtle, N-Triples, N-Quads, RDF/XML, JSON-LD, TriG, N3) directly to repositories
|
|
35
|
+
- **Multiple Formats**: Support for various RDF serialization formats
|
|
36
|
+
- **Repository Types**: Memory stores, native stores, HTTP repositories, and more
|
|
37
|
+
- **Named Graph Support**: Work with multiple graphs within repositories
|
|
38
|
+
- **Inferencing**: Built-in support for RDFS and custom inferencing rules
|
|
33
39
|
|
|
34
40
|
## Installation
|
|
35
41
|
|
|
36
42
|
### Prerequisites
|
|
37
43
|
|
|
38
|
-
- Python 3.
|
|
44
|
+
- Python 3.11 or higher
|
|
39
45
|
- RDF4J Server (for remote repositories) or embedded usage
|
|
40
46
|
|
|
41
47
|
### Install from PyPI
|
|
@@ -175,6 +181,55 @@ async def advanced_example():
|
|
|
175
181
|
results = await repo.query(query)
|
|
176
182
|
```
|
|
177
183
|
|
|
184
|
+
### Uploading RDF Files
|
|
185
|
+
|
|
186
|
+
```python
|
|
187
|
+
import pyoxigraph as og
|
|
188
|
+
|
|
189
|
+
async def upload_example():
|
|
190
|
+
async with AsyncRdf4j("http://localhost:19780/rdf4j-server") as db:
|
|
191
|
+
repo = await db.get_repository("my-repo")
|
|
192
|
+
|
|
193
|
+
# Upload a Turtle file (format auto-detected from extension)
|
|
194
|
+
await repo.upload_file("data.ttl")
|
|
195
|
+
|
|
196
|
+
# Upload to a specific named graph
|
|
197
|
+
await repo.upload_file("data.ttl", context=IRI("http://example.com/graph"))
|
|
198
|
+
|
|
199
|
+
# Upload with explicit format
|
|
200
|
+
await repo.upload_file("data.txt", rdf_format=og.RdfFormat.N_TRIPLES)
|
|
201
|
+
|
|
202
|
+
# Upload with base URI for relative URIs
|
|
203
|
+
await repo.upload_file("data.ttl", base_uri="http://example.com/")
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Using Transactions
|
|
207
|
+
|
|
208
|
+
```python
|
|
209
|
+
from rdf4j_python import IsolationLevel
|
|
210
|
+
|
|
211
|
+
async def transaction_example():
|
|
212
|
+
async with AsyncRdf4j("http://localhost:19780/rdf4j-server") as db:
|
|
213
|
+
repo = await db.get_repository("my-repo")
|
|
214
|
+
|
|
215
|
+
# Atomic operations with auto-commit/rollback
|
|
216
|
+
async with repo.transaction() as txn:
|
|
217
|
+
await txn.add_statements([
|
|
218
|
+
Quad(IRI("http://example.com/alice"), IRI("http://xmlns.com/foaf/0.1/name"), Literal("Alice")),
|
|
219
|
+
Quad(IRI("http://example.com/bob"), IRI("http://xmlns.com/foaf/0.1/name"), Literal("Bob")),
|
|
220
|
+
])
|
|
221
|
+
await txn.delete_statements([old_quad])
|
|
222
|
+
# Commits automatically on success, rolls back on exception
|
|
223
|
+
|
|
224
|
+
# With specific isolation level
|
|
225
|
+
async with repo.transaction(IsolationLevel.SERIALIZABLE) as txn:
|
|
226
|
+
await txn.update("""
|
|
227
|
+
DELETE { ?s <http://example.com/status> "draft" }
|
|
228
|
+
INSERT { ?s <http://example.com/status> "published" }
|
|
229
|
+
WHERE { ?s <http://example.com/status> "draft" }
|
|
230
|
+
""")
|
|
231
|
+
```
|
|
232
|
+
|
|
178
233
|
For more detailed examples, see the [examples](examples/) directory.
|
|
179
234
|
|
|
180
235
|
## Development
|
|
@@ -223,17 +278,17 @@ tests/ # Test suite
|
|
|
223
278
|
docs/ # Documentation
|
|
224
279
|
```
|
|
225
280
|
|
|
226
|
-
|
|
281
|
+
## Contributing
|
|
227
282
|
|
|
228
283
|
We welcome contributions! Here's how to get involved:
|
|
229
284
|
|
|
230
|
-
1.
|
|
231
|
-
2.
|
|
232
|
-
3.
|
|
233
|
-
4.
|
|
234
|
-
5.
|
|
235
|
-
6.
|
|
236
|
-
7.
|
|
285
|
+
1. Fork the repository on GitHub
|
|
286
|
+
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
287
|
+
3. Make your changes and add tests
|
|
288
|
+
4. Run the test suite to ensure everything works
|
|
289
|
+
5. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
290
|
+
6. Push to your branch (`git push origin feature/amazing-feature`)
|
|
291
|
+
7. Open a Pull Request
|
|
237
292
|
|
|
238
293
|
### Running Examples
|
|
239
294
|
|
|
@@ -245,15 +300,14 @@ python examples/query.py
|
|
|
245
300
|
|
|
246
301
|
## License
|
|
247
302
|
|
|
248
|
-
This project is licensed under the
|
|
303
|
+
This project is licensed under the BSD 3-Clause License. See the [LICENSE](LICENSE) file for details.
|
|
249
304
|
|
|
250
|
-
```
|
|
251
305
|
Copyright (c) 2025, Chengxu Bian
|
|
252
|
-
All rights reserved.
|
|
253
|
-
```
|
|
254
306
|
|
|
255
|
-
|
|
307
|
+
## Support
|
|
256
308
|
|
|
257
|
-
**
|
|
309
|
+
- **Issues & Bug Reports**: [GitHub Issues](https://github.com/odysa/rdf4j-python/issues)
|
|
310
|
+
- **Documentation**: [docs/](https://github.com/odysa/rdf4j-python/tree/main/docs)
|
|
311
|
+
- **Questions**: Feel free to open a discussion or issue
|
|
258
312
|
|
|
259
|
-
|
|
313
|
+
If you find this project useful, please consider starring the repository!
|
|
@@ -1,27 +1,33 @@
|
|
|
1
1
|
# rdf4j-python
|
|
2
2
|
|
|
3
|
+
[](https://badge.fury.io/py/rdf4j-python)
|
|
4
|
+
[](https://pypi.org/project/rdf4j-python/)
|
|
5
|
+
[](https://github.com/odysa/rdf4j-python/actions/workflows/ci.yaml)
|
|
6
|
+
[](https://opensource.org/licenses/BSD-3-Clause)
|
|
7
|
+
[](https://github.com/odysa/rdf4j-python/tree/main/docs)
|
|
8
|
+
|
|
3
9
|
**A modern Python client for the Eclipse RDF4J framework, enabling seamless RDF data management and SPARQL operations from Python applications.**
|
|
4
10
|
|
|
5
11
|
rdf4j-python bridges the gap between Python and the robust [Eclipse RDF4J](https://rdf4j.org/) ecosystem, providing a clean, async-first API for managing RDF repositories, executing SPARQL queries, and handling semantic data with ease.
|
|
6
12
|
|
|
7
|
-
> ⚠️ **Note:** This project is currently under active development and considered **experimental**. Interfaces may change. Use with caution in production environments—and feel free to help shape its future!
|
|
8
|
-
|
|
9
13
|
## Features
|
|
10
14
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
15
|
+
- **Async-First Design**: Native support for async/await with synchronous fallback
|
|
16
|
+
- **Repository Management**: Create, access, and manage RDF4J repositories programmatically
|
|
17
|
+
- **SPARQL Support**: Execute SELECT, ASK, CONSTRUCT, and UPDATE queries effortlessly
|
|
18
|
+
- **Transaction Support**: Atomic operations with commit/rollback and isolation levels
|
|
19
|
+
- **Flexible Data Handling**: Add, retrieve, and manipulate RDF triples and quads
|
|
20
|
+
- **File Upload**: Upload RDF files (Turtle, N-Triples, N-Quads, RDF/XML, JSON-LD, TriG, N3) directly to repositories
|
|
21
|
+
- **Multiple Formats**: Support for various RDF serialization formats
|
|
22
|
+
- **Repository Types**: Memory stores, native stores, HTTP repositories, and more
|
|
23
|
+
- **Named Graph Support**: Work with multiple graphs within repositories
|
|
24
|
+
- **Inferencing**: Built-in support for RDFS and custom inferencing rules
|
|
19
25
|
|
|
20
26
|
## Installation
|
|
21
27
|
|
|
22
28
|
### Prerequisites
|
|
23
29
|
|
|
24
|
-
- Python 3.
|
|
30
|
+
- Python 3.11 or higher
|
|
25
31
|
- RDF4J Server (for remote repositories) or embedded usage
|
|
26
32
|
|
|
27
33
|
### Install from PyPI
|
|
@@ -161,6 +167,55 @@ async def advanced_example():
|
|
|
161
167
|
results = await repo.query(query)
|
|
162
168
|
```
|
|
163
169
|
|
|
170
|
+
### Uploading RDF Files
|
|
171
|
+
|
|
172
|
+
```python
|
|
173
|
+
import pyoxigraph as og
|
|
174
|
+
|
|
175
|
+
async def upload_example():
|
|
176
|
+
async with AsyncRdf4j("http://localhost:19780/rdf4j-server") as db:
|
|
177
|
+
repo = await db.get_repository("my-repo")
|
|
178
|
+
|
|
179
|
+
# Upload a Turtle file (format auto-detected from extension)
|
|
180
|
+
await repo.upload_file("data.ttl")
|
|
181
|
+
|
|
182
|
+
# Upload to a specific named graph
|
|
183
|
+
await repo.upload_file("data.ttl", context=IRI("http://example.com/graph"))
|
|
184
|
+
|
|
185
|
+
# Upload with explicit format
|
|
186
|
+
await repo.upload_file("data.txt", rdf_format=og.RdfFormat.N_TRIPLES)
|
|
187
|
+
|
|
188
|
+
# Upload with base URI for relative URIs
|
|
189
|
+
await repo.upload_file("data.ttl", base_uri="http://example.com/")
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Using Transactions
|
|
193
|
+
|
|
194
|
+
```python
|
|
195
|
+
from rdf4j_python import IsolationLevel
|
|
196
|
+
|
|
197
|
+
async def transaction_example():
|
|
198
|
+
async with AsyncRdf4j("http://localhost:19780/rdf4j-server") as db:
|
|
199
|
+
repo = await db.get_repository("my-repo")
|
|
200
|
+
|
|
201
|
+
# Atomic operations with auto-commit/rollback
|
|
202
|
+
async with repo.transaction() as txn:
|
|
203
|
+
await txn.add_statements([
|
|
204
|
+
Quad(IRI("http://example.com/alice"), IRI("http://xmlns.com/foaf/0.1/name"), Literal("Alice")),
|
|
205
|
+
Quad(IRI("http://example.com/bob"), IRI("http://xmlns.com/foaf/0.1/name"), Literal("Bob")),
|
|
206
|
+
])
|
|
207
|
+
await txn.delete_statements([old_quad])
|
|
208
|
+
# Commits automatically on success, rolls back on exception
|
|
209
|
+
|
|
210
|
+
# With specific isolation level
|
|
211
|
+
async with repo.transaction(IsolationLevel.SERIALIZABLE) as txn:
|
|
212
|
+
await txn.update("""
|
|
213
|
+
DELETE { ?s <http://example.com/status> "draft" }
|
|
214
|
+
INSERT { ?s <http://example.com/status> "published" }
|
|
215
|
+
WHERE { ?s <http://example.com/status> "draft" }
|
|
216
|
+
""")
|
|
217
|
+
```
|
|
218
|
+
|
|
164
219
|
For more detailed examples, see the [examples](examples/) directory.
|
|
165
220
|
|
|
166
221
|
## Development
|
|
@@ -209,17 +264,17 @@ tests/ # Test suite
|
|
|
209
264
|
docs/ # Documentation
|
|
210
265
|
```
|
|
211
266
|
|
|
212
|
-
|
|
267
|
+
## Contributing
|
|
213
268
|
|
|
214
269
|
We welcome contributions! Here's how to get involved:
|
|
215
270
|
|
|
216
|
-
1.
|
|
217
|
-
2.
|
|
218
|
-
3.
|
|
219
|
-
4.
|
|
220
|
-
5.
|
|
221
|
-
6.
|
|
222
|
-
7.
|
|
271
|
+
1. Fork the repository on GitHub
|
|
272
|
+
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
273
|
+
3. Make your changes and add tests
|
|
274
|
+
4. Run the test suite to ensure everything works
|
|
275
|
+
5. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
276
|
+
6. Push to your branch (`git push origin feature/amazing-feature`)
|
|
277
|
+
7. Open a Pull Request
|
|
223
278
|
|
|
224
279
|
### Running Examples
|
|
225
280
|
|
|
@@ -231,15 +286,14 @@ python examples/query.py
|
|
|
231
286
|
|
|
232
287
|
## License
|
|
233
288
|
|
|
234
|
-
This project is licensed under the
|
|
289
|
+
This project is licensed under the BSD 3-Clause License. See the [LICENSE](LICENSE) file for details.
|
|
235
290
|
|
|
236
|
-
```
|
|
237
291
|
Copyright (c) 2025, Chengxu Bian
|
|
238
|
-
All rights reserved.
|
|
239
|
-
```
|
|
240
292
|
|
|
241
|
-
|
|
293
|
+
## Support
|
|
242
294
|
|
|
243
|
-
**
|
|
295
|
+
- **Issues & Bug Reports**: [GitHub Issues](https://github.com/odysa/rdf4j-python/issues)
|
|
296
|
+
- **Documentation**: [docs/](https://github.com/odysa/rdf4j-python/tree/main/docs)
|
|
297
|
+
- **Questions**: Feel free to open a discussion or issue
|
|
244
298
|
|
|
245
|
-
|
|
299
|
+
If you find this project useful, please consider starring the repository!
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "rdf4j-python"
|
|
3
3
|
authors = [{ name = "Chengxu Bian", email = "cbian564@gmail.com" }]
|
|
4
|
-
version = "0.
|
|
4
|
+
version = "0.2.0"
|
|
5
5
|
description = "The Python client for RDF4J"
|
|
6
6
|
readme = "README.md"
|
|
7
|
-
requires-python = ">=3.
|
|
7
|
+
requires-python = ">=3.11"
|
|
8
8
|
dependencies = ["httpx>=0.28.1", "pyoxigraph>=0.4.10"]
|
|
9
9
|
|
|
10
10
|
[project.optional-dependencies]
|
|
@@ -20,6 +20,19 @@ dev = [
|
|
|
20
20
|
]
|
|
21
21
|
docs = ["furo>=2024.8.6", "sphinx>=8"]
|
|
22
22
|
|
|
23
|
+
[tool.semantic_release]
|
|
24
|
+
version_toml = ["pyproject.toml:project.version"]
|
|
25
|
+
branch = "main"
|
|
26
|
+
commit_message = "chore(release): bump version to {version}"
|
|
27
|
+
tag_format = "v{version}"
|
|
28
|
+
|
|
29
|
+
[tool.semantic_release.commit_parser_options]
|
|
30
|
+
allowed_tags = ["build", "chore", "ci", "docs", "feat", "fix", "perf", "refactor", "style", "test"]
|
|
31
|
+
minor_tags = ["feat"]
|
|
32
|
+
patch_tags = ["fix", "perf"]
|
|
33
|
+
|
|
34
|
+
[tool.semantic_release.changelog]
|
|
35
|
+
changelog_file = "CHANGELOG.md"
|
|
23
36
|
|
|
24
37
|
[tool.pytest.ini_options]
|
|
25
38
|
log_cli = true
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"""
|
|
2
|
+
RDF4J Python is a Python library for interacting with RDF4J repositories.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from ._driver import (
|
|
6
|
+
AsyncNamedGraph,
|
|
7
|
+
AsyncRdf4j,
|
|
8
|
+
AsyncRdf4JRepository,
|
|
9
|
+
AsyncTransaction,
|
|
10
|
+
IsolationLevel,
|
|
11
|
+
TransactionState,
|
|
12
|
+
)
|
|
13
|
+
from .exception import (
|
|
14
|
+
NamespaceException,
|
|
15
|
+
NetworkError,
|
|
16
|
+
QueryError,
|
|
17
|
+
Rdf4jError,
|
|
18
|
+
RepositoryCreationException,
|
|
19
|
+
RepositoryDeletionException,
|
|
20
|
+
RepositoryError,
|
|
21
|
+
RepositoryInternalException,
|
|
22
|
+
RepositoryNotFoundException,
|
|
23
|
+
RepositoryUpdateException,
|
|
24
|
+
TransactionError,
|
|
25
|
+
TransactionStateError,
|
|
26
|
+
)
|
|
27
|
+
from .model import (
|
|
28
|
+
IRI,
|
|
29
|
+
BlankNode,
|
|
30
|
+
Context,
|
|
31
|
+
DefaultGraph,
|
|
32
|
+
Literal,
|
|
33
|
+
Namespace,
|
|
34
|
+
Object,
|
|
35
|
+
Predicate,
|
|
36
|
+
Quad,
|
|
37
|
+
QuadResultSet,
|
|
38
|
+
RepositoryMetadata,
|
|
39
|
+
Subject,
|
|
40
|
+
Triple,
|
|
41
|
+
Variable,
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
__all__ = [
|
|
45
|
+
# Main classes
|
|
46
|
+
"AsyncRdf4j",
|
|
47
|
+
"AsyncRdf4JRepository",
|
|
48
|
+
"AsyncNamedGraph",
|
|
49
|
+
# Transaction
|
|
50
|
+
"AsyncTransaction",
|
|
51
|
+
"IsolationLevel",
|
|
52
|
+
"TransactionState",
|
|
53
|
+
# Exceptions
|
|
54
|
+
"Rdf4jError",
|
|
55
|
+
"RepositoryError",
|
|
56
|
+
"RepositoryCreationException",
|
|
57
|
+
"RepositoryDeletionException",
|
|
58
|
+
"RepositoryNotFoundException",
|
|
59
|
+
"RepositoryInternalException",
|
|
60
|
+
"RepositoryUpdateException",
|
|
61
|
+
"NamespaceException",
|
|
62
|
+
"NetworkError",
|
|
63
|
+
"QueryError",
|
|
64
|
+
"TransactionError",
|
|
65
|
+
"TransactionStateError",
|
|
66
|
+
# Model types
|
|
67
|
+
"Namespace",
|
|
68
|
+
"RepositoryMetadata",
|
|
69
|
+
"IRI",
|
|
70
|
+
"BlankNode",
|
|
71
|
+
"Literal",
|
|
72
|
+
"DefaultGraph",
|
|
73
|
+
"Variable",
|
|
74
|
+
"Quad",
|
|
75
|
+
"Triple",
|
|
76
|
+
"Subject",
|
|
77
|
+
"Predicate",
|
|
78
|
+
"Object",
|
|
79
|
+
"Context",
|
|
80
|
+
"QuadResultSet",
|
|
81
|
+
]
|