Replies: 3 comments 3 replies
|
Flow I'm thinking about for LPG graphs:
Subsequent mutations on the graph in the LPG database will be constrained by the generated DDL. This is generally necessary, but not fully sufficient to ensure validation.
|
|
There are also efforts like https://www.youtube.com/watch?v=GG3JvPiFudQ&t=139s Personally I don't have a lot of time to engage in the LPG only validation efforts because of competing priorities. But if there are low hanging fruit that bridge the obvious gap between storage/retrieval oriented graph technologies (Cypher, GQL) and semantic graph technologies (RDF/SHACL), I'd like to invest some time. It makes sense to layer semantics on more advanced graph storage tech instead of inventing new RDF storage (6 indexes on various permutation of triples). |
|
#779 implements some of the ideas in this discussion |
Uh oh!
There was an error while loading. Please reload this page.
I would like to raise some discussion about the organization of the CLI design structure.
Design goals
Some design rationale about the CLI options:
query,validate, etc.shex,shacl, etc.General structure and scope
The main scope of rudof is to provide tools to help work with graph data technologies to improve their quality by enabling to check the conformance of data to some data models, schemas or shapes.
We are considering the following possibilities:
Verbs
query: Implement queries from Knowledge Graphs. We currently support SPARQL by default, but we could add support for other query languages in the future like OpenCyphervalidate: Validate a Knowledge graph with some schema or set of shapes. We support some specific variants likeshex-validate,shacl-validate,pgschema-validatewhich contain better defaults for those technologiesgenerate: Generate a Knowledge Graph from some input.convert: Convert some data model or schema to a different onecompare: Compare some data model or schema with another oneMore commands that we are planning to add in the future:
extract: Extract/infer data models from data. This command will be based on ShEx.Commands that are names of specific data models or schema technologies
We define commands for some specific data models or technologies which could be used for linting or validating those data models without a concrete knowledge graph:
shex: Manage ShEx schemasshacl: Manage SHACL shapes graphsdctap: Manage DCTAP modelsrdf-config: Manage rdf-config schemaspgschema: Manage property graph schemasIn the future we would like to include support to at least:
linkml: Manage LinkML definitionsCommands that are names that are exceptions
The following commands are names of technologies but those technologies are not data models or shapes.
shapemap: Manage shape maps which are used in ShExCommands that are generic names (not verbs)
data: Get information about graph data like an RDF files, or property graphs. This command can have a parameter to specify the type of technology used (by default, RDF).node: Get information about a node in a graph. This command is very useful for obtaining information about RDF nodes.Exceptions
There are some exceptions to the above:
mcp: This command exports rudof functionality as an MCP serverservice: This command gets information from a SPARQL endpoint service.materialize: This command can generate an RDF graph from a ShEx schema and semantic-action data to support ShExMap extensionIn the future, we are planning to add:
server: Export rudof functionality as a Web serviceAfter writing the overview, I realize that there are already some exceptions and redundancies that we could probably avoid:
materializeoption could probably be merged with thegeneratedataoption can be very generic if we start adding support for different implementations of property graphs.Other ideas?
All reactions