Semantic network implementation
Project description
semantic_network Package
SemanticNetwork
The class is designed for encoding graph structures using universal triplets:
entity_1 relation entity_2
entity_2 relation entity_3
- Triplet parts are separated by spaces
- First and third parts are objects
- Second part is a directed relationship between objects
1. Creating and Extending the Graph:
from semantic_network import SemanticNetwork
script = """
Circle hasPart Circle.radius
Circle hasPart Circle.center
"""
sn = SemanticNetwork.from_script(script)
script_2 = """
c1 fromProto Circle
c1 hasPart c1.radius
c2 fromProto Circle
c2 hasPart c2.radius
c2 hasPart c2.center
c2.radius fromProto Circle.radius
"""
sn.append_script(script_2)
This creates a graph with objects and relationships:
print(sn)
----------------------------------------
|- c1
|- Circle
|- c1 fromProto Circle
|- c1.radius
|- c1 hasPart c1.radius
|- c2
|- c2 fromProto Circle
|- c2.radius
|- c2 hasPart c2.radius
|- c2.center
|- c2 hasPart c2.center
|- Circle.radius
|- c2.radius fromProto Circle.radius
----------------------------------------
2. Graph Search
Search queries are specified using a special query format. Elements starting with * are treated as variables, while other elements are treated as constants.
q = """
*o1 hasPart *o2
*o1 fromProto Circle
"""
for objs, rels in sn.query(q):
print(objs, rels)
Returns dictionaries with found graph fragments:
{'o1': 'c2', 'Circle': 'Circle', 'o2': 'c2.radius'} {'fromProto': 'fromProto', 'hasPart': 'hasPart'}
{'o1': 'c2', 'Circle': 'Circle', 'o2': 'c2.center'} {'fromProto': 'fromProto', 'hasPart': 'hasPart'}
{'o1': 'c1', 'Circle': 'Circle', 'o2': 'c1.radius'} {'fromProto': 'fromProto', 'hasPart': 'hasPart'}
During search, the system also verifies that the query graph is connected and acyclic.
3. Utility Methods
# Extend the graph
sn.append_script(new_script)
# Print graph description (number of unique objects and relationships)
sn.describe()
# Create a copy
sn.copy()
# Serialization to dictionary and creation from dictionary
sn.to_dict()
sn = SemanticNetwork.from_dict(dict_data)
# Write to file with additional custom variables dictionary, and read from file
sm.dump(path, variables)
sn = SemanticNetwork.load(path)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file semantic_network-0.1.0.tar.gz.
File metadata
- Download URL: semantic_network-0.1.0.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
728c29881a8a9460724c27b88fb89d49e928d56170d5df85d0a904b50faafddc
|
|
| MD5 |
6f23e45499b964fe90e85c79f2fb7a64
|
|
| BLAKE2b-256 |
3315dc85c5fa1889c491f872b5fe6f3bbb52bde2dc8f4121a8bd0d6bb24a4686
|
File details
Details for the file semantic_network-0.1.0-py3-none-any.whl.
File metadata
- Download URL: semantic_network-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0467c9a27a94d21dccbfa1e95c25035d2826409ab33cbd08bb7badc0a0fad305
|
|
| MD5 |
3b0c5e9c97c33bac0301eee94f455328
|
|
| BLAKE2b-256 |
35be2b43839787f929ec90de47039233b3da528430e4a9accee862f341b5561a
|