ZekiLiu opened a new pull request, #938:
URL: https://github.com/apache/incubator-graphar/pull/938
### Reason for this PR
This draft PR shows the complete Go SDK metadata implementation direction for
#828.
The Go SDK should be able to represent GraphAr info metadata in Go, load and
save the same YAML schema used by the existing implementations, and validate
that the metadata layer interoperates with the repository fixtures.
This PR is stacked on top of the Go SDK bootstrap PR so reviewers can first
review the small module/CI foundation and then inspect the metadata API
design
separately.
Refs #828.
### What changes are included in this PR?
This PR adds the Go SDK metadata layer:
- add primitive metadata types, including `FileType`, `Cardinality`,
`AdjListType`, `InfoVersion`, and `DataType`
- add GraphAr info model types, including `Property`, `PropertyGroup`,
`AdjacentList`, `VertexInfo`, `EdgeInfo`, and `GraphInfo`
- add YAML load/save support for GraphAr info files
- add validation paths aligned with the existing GraphAr metadata rules
- add cross-language interoperability and end-to-end tests over GraphAr
fixtures
Stacking setup:
- base branch: `828-go-sdk-module-bootstrap`
- head branch: `828-go-sdk-info`
After the bootstrap PR is merged, this branch should be rebased onto the
updated
`main` branch. Because GraphAr squash-merges PRs, the duplicate bootstrap
commit
should be removed during that rebase.
### Are these changes tested?
The intended local and CI checks are:
- `cd go/graphar && go mod tidy`
- `cd go/graphar && go test ./...`
- `cd go/graphar && go test -race ./...`
- `cd go/graphar && make ci`
- `pre-commit run --files <changed files>`
The interop test is expected to use the repository `testing/` fixtures when
the
submodule is available.
### Are there any user-facing changes?
Yes. This adds new Go SDK metadata APIs for GraphAr info files. It does not
change the existing C++, Java, Rust, Spark, or PySpark APIs.
## Checklist
- [x] I have performed a self-review of my own code.
- [x] I have formatted my own code using `make cpplint` before submitting
when changed files are in the `cpp` directory. (Not applicable: this PR does
not change files in the `cpp` directory.)
- [x] I have performed `pre-commit run` before commit the changed files.
- [x] I have added tests to prove my changes are effective.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]