feat(java,info): support multi-property in yaml #780
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #780 +/- ##
==========================================
Coverage 76.59% 76.60%
- Complexity 560 585 +25
==========================================
Files 83 84 +1
Lines 8679 8788 +109
Branches 1006 1018 +12
==========================================
+ Hits 6648 6732 +84
- Misses 1813 1826 +13
- Partials 218 230 +12
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
Hey @Thespica, please help me review. |
There was a problem hiding this comment.
Pull request overview
This PR adds support for multi-valued properties (LIST and SET cardinality) in GraphAr's Java implementation, enabling properties to hold multiple values instead of just single values. The implementation introduces a new Cardinality enum and integrates it throughout the info layer for YAML serialization/deserialization.
Key Changes
- Introduces
Cardinalityenum (SINGLE, LIST, SET) to distinguish single-valued from multi-valued properties - Updates Property, PropertyYaml, and related info classes to support cardinality metadata
- Adds validation rules: edges only support SINGLE cardinality, and CSV files don't support multi-cardinality properties
- Enhances BaseGraphInfoSaver to auto-generate filenames when saving to directories
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 16 comments.
Show a summary per file
| File | Description |
|---|---|
maven-projects/info/src/main/java/org/apache/graphar/info/type/Cardinality.java |
New enum defining SINGLE, LIST, and SET cardinality types with string conversion methods |
maven-projects/info/src/main/java/org/apache/graphar/info/Property.java |
Adds cardinality field and constructors to support multi-valued properties |
maven-projects/info/src/main/java/org/apache/graphar/info/yaml/PropertyYaml.java |
Adds cardinality field for YAML serialization, with special handling to omit SINGLE from output |
maven-projects/info/src/main/java/org/apache/graphar/info/PropertyGroup.java |
Adds getCardinality() method and validation to reject multi-cardinality in CSV files |
maven-projects/info/src/main/java/org/apache/graphar/info/VertexInfo.java |
Exposes getCardinality() method and adds validation calls before dumping |
maven-projects/info/src/main/java/org/apache/graphar/info/EdgeInfo.java |
Adds validation to reject multi-cardinality properties in edges and validation calls before dumping |
maven-projects/info/src/main/java/org/apache/graphar/info/GraphInfo.java |
Adds validation calls before dumping YAML |
maven-projects/info/src/main/java/org/apache/graphar/info/yaml/VertexYaml.java |
Adds unused labels field (unrelated to multi-property feature) |
maven-projects/info/src/main/java/org/apache/graphar/info/saver/BaseGraphInfoSaver.java |
Adds auto-filename generation when URIs are directories |
maven-projects/info/src/test/java/org/apache/graphar/info/MultiPropertyTest.java |
Comprehensive test suite for cardinality functionality including YAML round-trip and validation |
maven-projects/info/src/test/java/org/apache/graphar/info/TestDataFactory.java |
Adds factory method for creating properties with cardinality |
maven-projects/info/src/test/java/org/apache/graphar/info/TestUtil.java |
Adds helper methods to access LDBC test data with multi-property support |
maven-projects/info/src/test/java/org/apache/graphar/info/TestVerificationUtils.java |
Adds cardinality assertion to property comparison |
maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java |
Adds cardinality assertions to existing property tests |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
maven-projects/info/src/main/java/org/apache/graphar/info/VertexInfo.java
Outdated
Show resolved
Hide resolved
maven-projects/info/src/test/java/org/apache/graphar/info/MultiPropertyTest.java
Outdated
Show resolved
Hide resolved
maven-projects/info/src/main/java/org/apache/graphar/info/GraphInfo.java
Outdated
Show resolved
Hide resolved
maven-projects/info/src/main/java/org/apache/graphar/info/EdgeInfo.java
Outdated
Show resolved
Hide resolved
maven-projects/info/src/main/java/org/apache/graphar/info/yaml/PropertyYaml.java
Outdated
Show resolved
Hide resolved
maven-projects/info/src/main/java/org/apache/graphar/info/GraphInfo.java
Outdated
Show resolved
Hide resolved
maven-projects/info/src/main/java/org/apache/graphar/info/GraphInfo.java
Outdated
Show resolved
Hide resolved
maven-projects/info/src/main/java/org/apache/graphar/info/EdgeInfo.java
Outdated
Show resolved
Hide resolved
maven-projects/info/src/main/java/org/apache/graphar/info/type/Cardinality.java
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 14 out of 14 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Reason for this PR
close #778
What changes are included in this PR?
Are these changes tested?
Are there any user-facing changes?