This is an automated email from the ASF dual-hosted git repository.

xiaokang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-graphar.git


The following commit(s) were added to refs/heads/main by this push:
     new 0cd3f0dd feat(java,info): add prefix for adj/pg and add datatype 
parser test (#820)
0cd3f0dd is described below

commit 0cd3f0dd9971b3e4c6979bdec375bb4516e17fc8
Author: Xiaokang Yang <[email protected]>
AuthorDate: Fri Jan 16 10:17:08 2026 +0800

    feat(java,info): add prefix for adj/pg and add datatype parser test (#820)
    
    * add prefix for adj/pg and add datatype parser test
    
    * fix prefix
---
 .../apache/graphar/info/yaml/AdjacentListYaml.java |  6 +++-
 .../graphar/info/yaml/PropertyGroupYaml.java       | 14 +++++++-
 .../apache/graphar/info/GraphInfoLoaderTest.java   |  6 ++--
 .../org/apache/graphar/info/GraphInfoTest.java     | 41 +++++++++++++++++++++-
 .../java/org/apache/graphar/info/PropertyTest.java | 19 ++++++++++
 .../java/org/apache/graphar/info/TestUtil.java     | 23 ++++++++----
 6 files changed, 97 insertions(+), 12 deletions(-)

diff --git 
a/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/AdjacentListYaml.java
 
b/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/AdjacentListYaml.java
index cb6ee2a8..63e4f2e1 100644
--- 
a/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/AdjacentListYaml.java
+++ 
b/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/AdjacentListYaml.java
@@ -44,10 +44,14 @@ public class AdjacentListYaml {
     }
 
     public AdjacentList toAdjacentList() {
+        String adjPrefix = prefix;
+        if (adjPrefix == null || adjPrefix.isEmpty()) {
+            adjPrefix = AdjListType.fromOrderedAndAlignedBy(ordered, 
aligned_by) + "/";
+        }
         return new AdjacentList(
                 AdjListType.fromOrderedAndAlignedBy(ordered, aligned_by),
                 FileType.fromString(file_type),
-                prefix);
+                adjPrefix);
     }
 
     public boolean isOrdered() {
diff --git 
a/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/PropertyGroupYaml.java
 
b/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/PropertyGroupYaml.java
index 72393218..e9ee846d 100644
--- 
a/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/PropertyGroupYaml.java
+++ 
b/maven-projects/info/src/main/java/org/apache/graphar/info/yaml/PropertyGroupYaml.java
@@ -46,10 +46,22 @@ public class PropertyGroupYaml {
     }
 
     public PropertyGroup toPropertyGroup() {
+        String pgPrefix = prefix;
+        if (pgPrefix == null || pgPrefix.isEmpty()) {
+            StringBuilder prefixBuilder = new StringBuilder();
+            for (int i = 0; i < properties.size(); i++) {
+                if (i > 0) {
+                    prefixBuilder.append("_");
+                }
+                prefixBuilder.append(properties.get(i).getName());
+            }
+            prefixBuilder.append("/");
+            pgPrefix = prefixBuilder.toString();
+        }
         return new PropertyGroup(
                 
properties.stream().map(PropertyYaml::toProperty).collect(Collectors.toList()),
                 FileType.fromString(file_type),
-                prefix);
+                pgPrefix);
     }
 
     public List<PropertyYaml> getProperties() {
diff --git 
a/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoLoaderTest.java
 
b/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoLoaderTest.java
index 3e4633b2..94187c42 100644
--- 
a/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoLoaderTest.java
+++ 
b/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoLoaderTest.java
@@ -42,7 +42,7 @@ public class GraphInfoLoaderTest {
 
     @Test
     public void testStringLoader() throws IOException {
-        final URI GRAPH_PATH_URI = TestUtil.getLdbcSampleGraphURI();
+        final URI GRAPH_PATH_URI = TestUtil.getCSVLdbcSampleGraphURI();
         GraphInfoLoader loader = new LocalFileSystemStringGraphInfoLoader();
         final GraphInfo graphInfo = loader.loadGraphInfo(GRAPH_PATH_URI);
         testGraphInfo(graphInfo);
@@ -50,7 +50,7 @@ public class GraphInfoLoaderTest {
 
     @Test
     public void testStreamLoader() throws IOException {
-        final URI GRAPH_PATH_URI = TestUtil.getLdbcSampleGraphURI();
+        final URI GRAPH_PATH_URI = TestUtil.getCSVLdbcSampleGraphURI();
         GraphInfoLoader loader = new LocalFileSystemStreamGraphInfoLoader();
         final GraphInfo graphInfo = loader.loadGraphInfo(GRAPH_PATH_URI);
         testGraphInfo(graphInfo);
@@ -58,7 +58,7 @@ public class GraphInfoLoaderTest {
 
     @Test
     public void testReaderLoader() throws IOException {
-        final URI GRAPH_PATH_URI = TestUtil.getLdbcSampleGraphURI();
+        final URI GRAPH_PATH_URI = TestUtil.getCSVLdbcSampleGraphURI();
         GraphInfoLoader loader = new LocalFileSystemReaderGraphInfoLoader();
         final GraphInfo graphInfo = loader.loadGraphInfo(GRAPH_PATH_URI);
         testGraphInfo(graphInfo);
diff --git 
a/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java 
b/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java
index 607e9805..fc931b60 100644
--- 
a/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java
+++ 
b/maven-projects/info/src/test/java/org/apache/graphar/info/GraphInfoTest.java
@@ -42,6 +42,7 @@ public class GraphInfoTest {
     private static VertexInfo personVertexInfo;
     private static EdgeInfo knowsEdgeInfo;
     private static URI GRAPH_PATH_URI;
+    private static URI PARUQET_GRAPH_PATH_URI;
     // test not exist property group
     private static final PropertyGroup notExistPg =
             new PropertyGroup(
@@ -54,7 +55,8 @@ public class GraphInfoTest {
         TestUtil.checkTestData();
 
         // Always use real test data - fail if not available
-        GRAPH_PATH_URI = TestUtil.getLdbcSampleGraphURI();
+        GRAPH_PATH_URI = TestUtil.getCSVLdbcSampleGraphURI();
+        PARUQET_GRAPH_PATH_URI = TestUtil.getParquetLdbcSampleGraphURI();
         GraphInfoLoader loader = new LocalFileSystemStreamGraphInfoLoader();
         try {
             graphInfo = loader.loadGraphInfo(GRAPH_PATH_URI);
@@ -510,4 +512,41 @@ public class GraphInfoTest {
                         graphInfo.getVersion().toString());
         Assert.assertFalse(invalidEdgeGraphInfo.isValidated());
     }
+
+    @Test
+    public void testParquetGraphInfo() {
+        GraphInfoLoader loader = new LocalFileSystemStreamGraphInfoLoader();
+        GraphInfo graphInfo;
+        try {
+            graphInfo = loader.loadGraphInfo(PARUQET_GRAPH_PATH_URI);
+        } catch (IOException e) {
+            throw new RuntimeException(
+                    "Failed to load real test data from "
+                            + PARUQET_GRAPH_PATH_URI
+                            + ": "
+                            + e.getMessage(),
+                    e);
+        }
+        VertexInfo personVertexInfo = graphInfo.getVertexInfos().get(0);
+        EdgeInfo knowsEdgeInfo = graphInfo.getEdgeInfos().get(0);
+        // test vertex property
+        PropertyGroup firstName_lastName_gender = 
personVertexInfo.getPropertyGroups().get(1);
+        Assert.assertEquals("firstName_lastName_gender/", 
firstName_lastName_gender.getPrefix());
+        Assert.assertEquals(FileType.PARQUET, 
firstName_lastName_gender.getFileType());
+        Assert.assertEquals(
+                URI.create("vertex/person/vertex_count"), 
personVertexInfo.getVerticesNumFileUri());
+        // test edge property
+        PropertyGroup creationDate = knowsEdgeInfo.getPropertyGroups().get(0);
+        Assert.assertEquals("creationDate/", creationDate.getPrefix());
+        Assert.assertEquals(FileType.PARQUET, creationDate.getFileType());
+        // test adjlist
+        AdjacentList adjOrderBySource =
+                knowsEdgeInfo.getAdjacentList(AdjListType.ordered_by_source);
+        Assert.assertEquals(FileType.PARQUET, adjOrderBySource.getFileType());
+        Assert.assertEquals(AdjListType.ordered_by_source, 
adjOrderBySource.getType());
+        Assert.assertEquals("ordered_by_source/", 
adjOrderBySource.getPrefix());
+        Assert.assertEquals(
+                
URI.create("edge/person_knows_person/ordered_by_source/adj_list/offset/"),
+                knowsEdgeInfo.getOffsetUri(AdjListType.ordered_by_source));
+    }
 }
diff --git 
a/maven-projects/info/src/test/java/org/apache/graphar/info/PropertyTest.java 
b/maven-projects/info/src/test/java/org/apache/graphar/info/PropertyTest.java
index 78fa86d9..27f28bab 100644
--- 
a/maven-projects/info/src/test/java/org/apache/graphar/info/PropertyTest.java
+++ 
b/maven-projects/info/src/test/java/org/apache/graphar/info/PropertyTest.java
@@ -19,6 +19,9 @@
 
 package org.apache.graphar.info;
 
+import java.io.IOException;
+import java.net.URI;
+import 
org.apache.graphar.info.loader.impl.LocalFileSystemStringGraphInfoLoader;
 import org.apache.graphar.info.type.DataType;
 import org.junit.Assert;
 import org.junit.Before;
@@ -35,6 +38,7 @@ public class PropertyTest {
         idProperty = TestDataFactory.createIdProperty();
         nameProperty = TestDataFactory.createProperty("name", DataType.STRING, 
false, true);
         optionalProperty = TestDataFactory.createProperty("optional", 
DataType.STRING, false, true);
+        TestUtil.checkTestData();
     }
 
     @Test
@@ -171,4 +175,19 @@ public class PropertyTest {
         TestVerificationUtils.verifyProperty(prop, "test", true, false);
         Assert.assertEquals(DataType.INT32, prop.getDataType());
     }
+
+    @Test
+    public void testLoadPropertyDateTypes() throws IOException {
+        String testDataRoot = TestUtil.getTestData();
+        String timestampEdge =
+                testDataRoot + 
"/ldbc_sample/parquet/person_knows-timestamp_person.edge.yml";
+        LocalFileSystemStringGraphInfoLoader 
localFileSystemStringGraphInfoLoader =
+                new LocalFileSystemStringGraphInfoLoader();
+        EdgeInfo edgeInfo =
+                
localFileSystemStringGraphInfoLoader.loadEdgeInfo(URI.create(timestampEdge));
+        Assert.assertTrue(edgeInfo.dump().contains("data_type: timestamp"));
+        String dateEdge = testDataRoot + 
"/ldbc_sample/parquet/person_knows-date_person.edge.yml";
+        edgeInfo = 
localFileSystemStringGraphInfoLoader.loadEdgeInfo(URI.create(dateEdge));
+        Assert.assertTrue(edgeInfo.dump().contains("data_type: date"));
+    }
 }
diff --git 
a/maven-projects/info/src/test/java/org/apache/graphar/info/TestUtil.java 
b/maven-projects/info/src/test/java/org/apache/graphar/info/TestUtil.java
index 0b703343..8a1aec6e 100644
--- a/maven-projects/info/src/test/java/org/apache/graphar/info/TestUtil.java
+++ b/maven-projects/info/src/test/java/org/apache/graphar/info/TestUtil.java
@@ -37,7 +37,10 @@ public class TestUtil {
     static final String SAVE_DIR =
             System.getProperty("test.output.dir", "target/test-output") + "/";
 
-    private static final String LDBC_SAMPLE_GRAPH_PATH = 
"/ldbc_sample/csv/ldbc_sample.graph.yml";
+    private static final String CSV_LDBC_SAMPLE_GRAPH_PATH =
+            "/ldbc_sample/csv/ldbc_sample.graph.yml";
+    private static final String PARQUET_LDBC_SAMPLE_GRAPH_PATH =
+            "/ldbc_sample/parquet/ldbc_sample.graph.yml";
     private static final String LDBC_GRAPH_PATH = 
"/ldbc/parquet/ldbc.graph.yml";
 
     public static String getTestData() {
@@ -49,12 +52,20 @@ public class TestUtil {
         return GAR_TEST_DATA != null && new 
java.io.File(GAR_TEST_DATA).exists();
     }
 
-    public static String getLdbcSampleGraphPath() {
-        return getTestData() + "/" + LDBC_SAMPLE_GRAPH_PATH;
+    public static String getCSVLdbcSampleGraphPath() {
+        return getTestData() + "/" + CSV_LDBC_SAMPLE_GRAPH_PATH;
     }
 
-    public static URI getLdbcSampleGraphURI() {
-        return URI.create(getLdbcSampleGraphPath());
+    public static URI getCSVLdbcSampleGraphURI() {
+        return URI.create(getCSVLdbcSampleGraphPath());
+    }
+
+    public static String getParquetLdbcSampleGraphPath() {
+        return getTestData() + "/" + PARQUET_LDBC_SAMPLE_GRAPH_PATH;
+    }
+
+    public static URI getParquetLdbcSampleGraphURI() {
+        return URI.create(getParquetLdbcSampleGraphPath());
     }
 
     public static String getLdbcGraphPath() {
@@ -127,7 +138,7 @@ public class TestUtil {
         try {
             GraphInfoLoader loader =
                     new 
org.apache.graphar.info.loader.impl.LocalFileSystemStreamGraphInfoLoader();
-            return loader.loadGraphInfo(getLdbcSampleGraphURI());
+            return loader.loadGraphInfo(getCSVLdbcSampleGraphURI());
         } catch (Exception e) {
             throw new RuntimeException(
                     "Failed to load real LDBC sample data: " + e.getMessage(), 
e);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to