cayleygraph / cayleygraph/cayley

LinkedQL Followup Tasks

Open
#899 0 comments 0 reactions 2 assignees Claimed by @iddan View on GitHub
query languages
Dominant language
Go
Stars
15.1k
Forks
1.2k
PR merge metrics
No merged PRs in 30d

Description

Followup tasks to https://github.com/cayleygraph/cayley/issues/877
- [ ] Prefixes methods @iddan
- [x] POC Implementation
- [ ] Move implementation to clients
- [ ] `.rename({ [property: string]: IRI })` should replace `.save(IRI, tag)` for aliasing property name to something else. (+ `.renameReverse()`). There is no such operator in Gremlin but there is one in MongoDB's aggregation @iddan
- [ ] `.properties()` called empty should save all properties (requires `Path.save(Path)` @dennwc)
- [x] Generic `.documents()`
- [x] Nicer API for automatic type conversion @iddan:
- [x] Valid ID string to IRI or BNode
- [x] IRI to properties path
- [x] Refactor Filter and Operator @iddan (https://github.com/cayleygraph/cayley/pull/909)
- [x] Numeric operators
- [x] Pattern operators
- [ ] `.match(pattern)` should be used for flat and deep matching of objects using structure pattern @iddan (https://github.com/cayleygraph/cayley/pull/916). For example:
```javascript
.match({
"address": {
"street": { "@id": "yehuda-halevi" }
"number": 33,
},
})
```
- [x] Flat match
- [x] Deep match
- [ ] Empty match to match entities only
- [ ] Improve path structure. Currently using `path.Out().Back()`. Need help @dennwc
- [ ] Use a stable comparison between paths in test as shape is unstable. Need help @dennwc
- [x] Rename view to visit @iddan
- [ ] Make the schema the source of truth @iddan
- [ ] Missing Information about min cardinality of fields (can be used in some type systems and in all runtimes)
- [ ] Step to collect lists (https://github.com/cayleygraph/cayley/pull/920)
In Gizmo lists can be saved like:
```javascript
g.V().followRecursive(g.M().save(g.IRI("rdf:first"), "item").out(g.IRI("rdf:last")))
```
But it has limitations, hard to optimize and to understand.
Instead, we should have a method to do this:
```javascript
.collect("item")
```
- [x] Basic implementation
- [ ] Should figure out desired behavior when not using `Documents`
- [ ] Should validate the performance
- [ ] Get rid of `properties` terminology from the API. Properties should always be named `names`
- [ ] Project step
- [ ] Fix back for all morphisms (labels and predicates are currently not implemented)
- [ ] Basic implementation
- [ ] Validate it can replicate *as steps and remove them.
- [ ] Return documents by default
- [ ] Change return type of steps to quads and move conversion to JSON-LD outside the steps.
- [ ] Refactor Select to use quads return type
- [ ] Refactor Documents to use quads return type
- [ ] Remove Documents step and use it's logic as default return

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.