From 3978b719a92a8aa175640226c9946fee904bd75e Mon Sep 17 00:00:00 2001 From: joshua Date: Fri, 28 Jul 2023 12:38:26 -0700 Subject: [PATCH] Upgrade TypeQL and Driver to 2.18.x and bump VERSION to 1.7.0 --- README.md | 25 ++- build.gradle | 6 +- gradle/wrapper/gradle-wrapper.jar | Bin 58910 -> 58694 bytes gradlew | 2 - gradlew.bat | 207 +++++++++--------- .../osi/loader/config/Configuration.java | 2 +- .../config/ConfigurationValidation.java | 6 +- .../generator/AppendAttributeGenerator.java | 18 +- ...AppendAttributeOrInsertThingGenerator.java | 24 +- .../loader/generator/AttributeGenerator.java | 8 +- .../osi/loader/generator/EntityGenerator.java | 2 +- .../loader/generator/RelationGenerator.java | 26 +-- .../typedb/osi/loader/util/GeneratorUtil.java | 53 ++--- .../typedb/osi/loader/util/TypeDBUtil.java | 6 +- .../osi/loader/loader/TypeDBLoaderTest.java | 118 +++++----- 15 files changed, 252 insertions(+), 251 deletions(-) diff --git a/README.md b/README.md index d96dd71..2011c5d 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ --- --- -### +### [![TypeDB Loader Test](https://github.com/bayer-science-for-a-better-life/grami/actions/workflows/testandbuild.yaml/badge.svg)](https://github.com/bayer-science-for-a-better-life/grami/actions/workflows/testandbuild.yaml) [![TypeDB Loader Build](https://github.com/bayer-science-for-a-better-life/grami/actions/workflows/release.yaml/badge.svg)](https://github.com/bayer-science-for-a-better-life/grami/actions/workflows/release.yaml) @@ -129,7 +129,7 @@ public class LoadingData { ## Step-by-Step Tutorial -A complete tutorial for TypeDB version >= 2.5.0 is in work and will be published asap. +A complete tutorial for TypeDB version >= 2.5.0 is in work and will be published. An example of configuration and usage of TypeDB Loader on real data can be found [in the TypeDB Examples](https://github.com/vaticle/typedb-examples/tree/master/biology/catalogue_of_life). @@ -142,6 +142,7 @@ There is an [example repository](https://github.com/bayer-science-for-a-better-l ## Connecting to TypeDB Cluster To connect to TypeDB Cluster, a set of options is provided: + ``` --typedb-cluster= --username= @@ -154,18 +155,20 @@ To connect to TypeDB Cluster, a set of options is provided: Ranges are [inclusive, exclusive). -| TypeDB Loader | TypeDB Client (internal) | TypeDB | TypeDB Cluster | -|:--------------:|:------------------------:|:----------------:|:----------------:| -| 1.6.0 | 2.14.2 | 2.14.x to 2.16.x | 2.14.x to 2.16.x | -| 1.2.0 to 1.6.0 | 2.8.0 - 2.14.0 | 2.8.0 to 2.14.0 | N/A | -| 1.1.0 to 1.2.0 | 2.8.0 | 2.8.x | N/A | -| 1.0.0 | 2.5.0 to 2.7.1 | 2.5.x to 2.7.x | N/A | -| 0.1.1 | 2.0.0 to 2.5.0 | 2.0.x to 2.4.x | N/A | -| <0.1 | 1.8.0 | 1.8.x | N/A | +| TypeDB Loader | TypeDB Client (internal) | TypeDB | TypeDB Cluster | +|:-------------:|:------------------------:|:---------------:|:---------------:| +| 1.7.0 | 2.18.1 | 2.18.x - | 2.18.x - | +| 1.6.0 | 2.14.2 | 2.14.x - 2.17.x | 2.14.x - 2.16.x | +| 1.2.0 - 1.6.0 | 2.8.0 - 2.14.0 | 2.8.0 - 2.14.0 | N/A | +| 1.1.0 - 1.2.0 | 2.8.0 | 2.8.x | N/A | +| 1.0.0 | 2.5.0 - 2.7.1 | 2.5.x - 2.7.x | N/A | +| 0.1.1 | 2.0.0 - 2.5.0 | 2.0.x - 2.4.x | N/A | +| <0.1 | 1.8.0 | 1.8.x | N/A | * [Type DB](https://github.com/vaticle/typedb) -Find the Readme for GraMi for grakn < 2.0 [here](https://github.com/bayer-science-for-a-better-life/grami/blob/b3d6d272c409d6c40254354027b49f90b255e1c3/README.md) +Find the Readme for GraMi for grakn < +2.0 [here](https://github.com/bayer-science-for-a-better-life/grami/blob/b3d6d272c409d6c40254354027b49f90b255e1c3/README.md) ## Contributions diff --git a/build.gradle b/build.gradle index 1a15943..e85f12e 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { } group 'com.vaticle.typedb-osi' -version '1.6.0' +version '1.7.0' repositories { mavenCentral() @@ -15,8 +15,8 @@ repositories { } dependencies { - implementation("com.vaticle.typedb:typedb-client:2.14.2") - implementation("com.vaticle.typeql:typeql-grammar:2.14.0") + implementation("com.vaticle.typedb:typedb-client:2.18.1") + implementation("com.vaticle.typeql:typeql-lang:2.18.0") implementation("com.google.code.gson:gson:2.8.6") implementation("org.slf4j:slf4j-api:1.7.25") implementation("org.apache.logging.log4j:log4j-api:2.17.1") diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 62d4c053550b91381bbd28b1afc82d634bf73a8a..490fda8577df6c95960ba7077c43220e5bb2c0d9 100644 GIT binary patch delta 6107 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 F{|nTN-B$nr delta 6447 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 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/java/com/vaticle/typedb/osi/loader/config/Configuration.java b/src/main/java/com/vaticle/typedb/osi/loader/config/Configuration.java index 3f505e9..2f23fa9 100644 --- a/src/main/java/com/vaticle/typedb/osi/loader/config/Configuration.java +++ b/src/main/java/com/vaticle/typedb/osi/loader/config/Configuration.java @@ -39,7 +39,7 @@ public class Configuration { public static AttributeValueType getValueType(TypeDBSession session, String conceptType) { AttributeValueType valueType = null; try (TypeDBTransaction txn = session.transaction(TypeDBTransaction.Type.READ)) { - Set answers = txn.query().match(TypeQL.match(TypeQL.var("t").type(conceptType)).get("t")).collect(Collectors.toSet()); + Set answers = txn.query().match(TypeQL.match(TypeQL.cVar("t").type(conceptType)).get(TypeQL.cVar("t"))).collect(Collectors.toSet()); assert answers.size() == 1; for (ConceptMap answer : answers) { valueType = AttributeValueType.valueOf(answer.get("t").asAttributeType().getValueType().name()); diff --git a/src/main/java/com/vaticle/typedb/osi/loader/config/ConfigurationValidation.java b/src/main/java/com/vaticle/typedb/osi/loader/config/ConfigurationValidation.java index 0885e9e..e7d8fe8 100644 --- a/src/main/java/com/vaticle/typedb/osi/loader/config/ConfigurationValidation.java +++ b/src/main/java/com/vaticle/typedb/osi/loader/config/ConfigurationValidation.java @@ -377,7 +377,7 @@ private boolean valConceptTypeInSchema(HashMap> valida String conceptType, String breadcrumbConceptType) { boolean exists = false; - TypeQLMatch query = TypeQL.match(TypeQL.var("t").type(conceptType)); + TypeQLMatch query = TypeQL.match(TypeQL.cVar("t").type(conceptType)); try (TypeDBTransaction txn = session.transaction(TypeDBTransaction.Type.READ)) { Util.trace(Integer.toString((int) txn.query().match(query).count())); exists = true; @@ -532,7 +532,7 @@ private void valRoleType(HashMap> validationReport, String breadcrumbs, String relationType, String roleType) { - TypeQLMatch query = TypeQL.match(TypeQL.type(relationType).relates(TypeQL.var("r"))).get("r"); + TypeQLMatch query = TypeQL.match(TypeQL.type(relationType).relates(TypeQL.cVar("r"))).get(TypeQL.cVar("r")); try (TypeDBTransaction txn = session.transaction(TypeDBTransaction.Type.READ)) { Stream answers = txn.query().match(query); if (answers.noneMatch(a -> a.get("r").asRoleType().getLabel().name().equals(roleType))) { @@ -547,7 +547,7 @@ private void valRolePlayedByConcept(HashMap> validatio String relationType, String role, String conceptType) { - TypeQLMatch query = TypeQL.match(TypeQL.var("c").plays(relationType, role)).get("c"); + TypeQLMatch query = TypeQL.match(TypeQL.cVar("c").plays(relationType, role)).get(TypeQL.cVar("c")); try (TypeDBTransaction txn = session.transaction(TypeDBTransaction.Type.READ)) { Stream answers = txn.query().match(query); if (answers.noneMatch(c -> c.get("c").asThingType().getLabel().name().equals(conceptType))) { diff --git a/src/main/java/com/vaticle/typedb/osi/loader/generator/AppendAttributeGenerator.java b/src/main/java/com/vaticle/typedb/osi/loader/generator/AppendAttributeGenerator.java index a88ca6a..abce249 100644 --- a/src/main/java/com/vaticle/typedb/osi/loader/generator/AppendAttributeGenerator.java +++ b/src/main/java/com/vaticle/typedb/osi/loader/generator/AppendAttributeGenerator.java @@ -27,7 +27,7 @@ import com.vaticle.typeql.lang.TypeQL; import com.vaticle.typeql.lang.pattern.constraint.ThingConstraint; import com.vaticle.typeql.lang.pattern.variable.ThingVariable; -import com.vaticle.typeql.lang.pattern.variable.UnboundVariable; +import com.vaticle.typeql.lang.pattern.variable.UnboundConceptVariable; import com.vaticle.typeql.lang.query.TypeQLInsert; import org.apache.commons.io.FilenameUtils; import org.apache.logging.log4j.LogManager; @@ -87,22 +87,22 @@ public void write(TypeDBTransaction tx, String[] row, boolean allowMultiInsert) public TypeQLInsert generateMatchInsertStatement(String[] row) { if (row.length > 0) { - ThingVariable.Thing entityMatchStatement = TypeQL.var("thing") + ThingVariable.Thing entityMatchStatement = TypeQL.cVar("thing") .isa(appendConfiguration.getMatch().getType()); for (Configuration.Definition.Attribute consAtt : appendConfiguration.getMatch().getOwnerships()) { - ArrayList> constraintValues = GeneratorUtil.generateValueConstraintsConstrainingAttribute( + ArrayList constraintValues = GeneratorUtil.generateValueConstraintsConstrainingAttribute( row, header, filePath, fileSeparator, consAtt); - for (ThingConstraint.Value constraintValue : constraintValues) { + for (ThingConstraint.Predicate constraintValue : constraintValues) { entityMatchStatement.constrain(GeneratorUtil.valueToHasConstraint(consAtt.getAttribute(), constraintValue)); } } - UnboundVariable insertUnboundVar = TypeQL.var("thing"); + UnboundConceptVariable insertUnboundVar = TypeQL.cVar("thing"); ThingVariable.Thing insertStatement = null; for (Configuration.Definition.Attribute attributeToAppend : appendConfiguration.getInsert().getOwnerships()) { - ArrayList> constraintValues = GeneratorUtil.generateValueConstraintsConstrainingAttribute( + ArrayList constraintValues = GeneratorUtil.generateValueConstraintsConstrainingAttribute( row, header, filePath, fileSeparator, attributeToAppend); - for (ThingConstraint.Value constraintValue : constraintValues) { + for (ThingConstraint.Predicate constraintValue : constraintValues) { if (insertStatement == null) { insertStatement = insertUnboundVar.constrain(GeneratorUtil.valueToHasConstraint(attributeToAppend.getAttribute(), constraintValue)); } else { @@ -114,10 +114,10 @@ public TypeQLInsert generateMatchInsertStatement(String[] row) { if (insertStatement != null) { return TypeQL.match(entityMatchStatement).insert(insertStatement); } else { - return TypeQL.insert(TypeQL.var("null").isa("null").has("null", "null")); + return TypeQL.insert(TypeQL.cVar("null").isa("null").has("null", "null")); } } else { - return TypeQL.insert(TypeQL.var("null").isa("null").has("null", "null")); + return TypeQL.insert(TypeQL.cVar("null").isa("null").has("null", "null")); } } diff --git a/src/main/java/com/vaticle/typedb/osi/loader/generator/AppendAttributeOrInsertThingGenerator.java b/src/main/java/com/vaticle/typedb/osi/loader/generator/AppendAttributeOrInsertThingGenerator.java index d4c682d..82ff874 100644 --- a/src/main/java/com/vaticle/typedb/osi/loader/generator/AppendAttributeOrInsertThingGenerator.java +++ b/src/main/java/com/vaticle/typedb/osi/loader/generator/AppendAttributeOrInsertThingGenerator.java @@ -27,7 +27,7 @@ import com.vaticle.typeql.lang.TypeQL; import com.vaticle.typeql.lang.pattern.constraint.ThingConstraint; import com.vaticle.typeql.lang.pattern.variable.ThingVariable; -import com.vaticle.typeql.lang.pattern.variable.UnboundVariable; +import com.vaticle.typeql.lang.pattern.variable.UnboundConceptVariable; import com.vaticle.typeql.lang.query.TypeQLInsert; import org.apache.commons.io.FilenameUtils; import org.apache.logging.log4j.LogManager; @@ -97,22 +97,22 @@ public void write(TypeDBTransaction tx, String[] row, boolean allowMultiInsert) public TypeQLInsert generateMatchInsertStatement(String[] row) { if (row.length > 0) { - ThingVariable.Thing entityMatchStatement = TypeQL.var("thing") + ThingVariable.Thing entityMatchStatement = TypeQL.cVar("thing") .isa(appendOrInsertConfiguration.getMatch().getType()); for (Configuration.Definition.Attribute ownershipThingGetter : appendOrInsertConfiguration.getMatch().getOwnerships()) { - ArrayList> constraintValues = GeneratorUtil.generateValueConstraintsConstrainingAttribute( + ArrayList constraintValues = GeneratorUtil.generateValueConstraintsConstrainingAttribute( row, header, filePath, fileSeparator, ownershipThingGetter); - for (ThingConstraint.Value constraintValue : constraintValues) { + for (ThingConstraint.Predicate constraintValue : constraintValues) { entityMatchStatement.constrain(GeneratorUtil.valueToHasConstraint(ownershipThingGetter.getAttribute(), constraintValue)); } } - UnboundVariable insertUnboundVar = TypeQL.var("thing"); + UnboundConceptVariable insertUnboundVar = TypeQL.cVar("thing"); ThingVariable.Thing insertStatement = null; for (Configuration.Definition.Attribute attributeToAppend : appendOrInsertConfiguration.getInsert().getOwnerships()) { - ArrayList> constraintValues = GeneratorUtil.generateValueConstraintsConstrainingAttribute( + ArrayList constraintValues = GeneratorUtil.generateValueConstraintsConstrainingAttribute( row, header, filePath, fileSeparator, attributeToAppend); - for (ThingConstraint.Value constraintValue : constraintValues) { + for (ThingConstraint.Predicate constraintValue : constraintValues) { if (insertStatement == null) { insertStatement = insertUnboundVar.constrain(GeneratorUtil.valueToHasConstraint(attributeToAppend.getAttribute(), constraintValue)); } else { @@ -124,10 +124,10 @@ public TypeQLInsert generateMatchInsertStatement(String[] row) { if (insertStatement != null) { return TypeQL.match(entityMatchStatement).insert(insertStatement); } else { - return TypeQL.insert(TypeQL.var("null").isa("null").has("null", "null")); + return TypeQL.insert(TypeQL.cVar("null").isa("null").has("null", "null")); } } else { - return TypeQL.insert(TypeQL.var("null").isa("null").has("null", "null")); + return TypeQL.insert(TypeQL.cVar("null").isa("null").has("null", "null")); } } @@ -136,9 +136,9 @@ public TypeQLInsert generateThingInsertStatement(String[] row) { ThingVariable.Thing insertStatement = GeneratorUtil.generateBoundThingVar(appendOrInsertConfiguration.getMatch().getType()); for (Configuration.Definition.Attribute attribute : appendOrInsertConfiguration.getMatch().getOwnerships()) { - ArrayList> constraintValues = GeneratorUtil.generateValueConstraintsConstrainingAttribute( + ArrayList constraintValues = GeneratorUtil.generateValueConstraintsConstrainingAttribute( row, header, filePath, fileSeparator, attribute); - for (ThingConstraint.Value constraintValue : constraintValues) { + for (ThingConstraint.Predicate constraintValue : constraintValues) { insertStatement.constrain(GeneratorUtil.valueToHasConstraint(attribute.getAttribute(), constraintValue)); } } @@ -147,7 +147,7 @@ public TypeQLInsert generateThingInsertStatement(String[] row) { return TypeQL.insert(insertStatement); } else { - return TypeQL.insert(TypeQL.var("null").isa("null").has("null", "null")); + return TypeQL.insert(TypeQL.cVar("null").isa("null").has("null", "null")); } } diff --git a/src/main/java/com/vaticle/typedb/osi/loader/generator/AttributeGenerator.java b/src/main/java/com/vaticle/typedb/osi/loader/generator/AttributeGenerator.java index 5fd11fa..2a2315e 100644 --- a/src/main/java/com/vaticle/typedb/osi/loader/generator/AttributeGenerator.java +++ b/src/main/java/com/vaticle/typedb/osi/loader/generator/AttributeGenerator.java @@ -76,20 +76,20 @@ public void write(TypeDBTransaction tx, String[] row, boolean allowMultiInsert) public List generateInsertStatements(String[] row) { if (row.length > 0) { - ArrayList> constraints = GeneratorUtil.generateValueConstraintsConstrainingAttribute( + ArrayList constraints = GeneratorUtil.generateValueConstraintsConstrainingAttribute( row, header, filePath, fileSeparator, attributeConfiguration.getInsert()); List insertStatements = new ArrayList<>(); - for (ThingConstraint.Value constraint : constraints) { + for (ThingConstraint.Predicate constraint : constraints) { insertStatements.add(TypeQL.insert( - TypeQL.var("a") + TypeQL.cVar("a") .constrain(constraint) .isa(attributeConfiguration.getInsert().getAttribute()) )); } return insertStatements; } else { - return List.of(TypeQL.insert(TypeQL.var("null").isa("null").has("null", "null"))); + return List.of(TypeQL.insert(TypeQL.cVar("null").isa("null").has("null", "null"))); } } diff --git a/src/main/java/com/vaticle/typedb/osi/loader/generator/EntityGenerator.java b/src/main/java/com/vaticle/typedb/osi/loader/generator/EntityGenerator.java index 2a7a858..0642182 100644 --- a/src/main/java/com/vaticle/typedb/osi/loader/generator/EntityGenerator.java +++ b/src/main/java/com/vaticle/typedb/osi/loader/generator/EntityGenerator.java @@ -79,7 +79,7 @@ public TypeQLInsert generateThingInsertStatement(String[] row) { return TypeQL.insert(insertStatement); } else { - return TypeQL.insert(TypeQL.var("null").isa("null").has("null", "null")); + return TypeQL.insert(TypeQL.cVar("null").isa("null").has("null", "null")); } } diff --git a/src/main/java/com/vaticle/typedb/osi/loader/generator/RelationGenerator.java b/src/main/java/com/vaticle/typedb/osi/loader/generator/RelationGenerator.java index 89cb070..1492900 100644 --- a/src/main/java/com/vaticle/typedb/osi/loader/generator/RelationGenerator.java +++ b/src/main/java/com/vaticle/typedb/osi/loader/generator/RelationGenerator.java @@ -27,7 +27,7 @@ import com.vaticle.typeql.lang.TypeQL; import com.vaticle.typeql.lang.pattern.constraint.ThingConstraint; import com.vaticle.typeql.lang.pattern.variable.ThingVariable; -import com.vaticle.typeql.lang.pattern.variable.UnboundVariable; +import com.vaticle.typeql.lang.pattern.variable.UnboundConceptVariable; import com.vaticle.typeql.lang.query.TypeQLInsert; import org.apache.commons.io.FilenameUtils; import org.apache.logging.log4j.LogManager; @@ -132,9 +132,9 @@ public TypeQLInsert generateMatchInsertStatement(String[] row) { ThingVariable.Relation insertStatement = null; for (int i = 0; i < roleTypes.size(); i++) { if (insertStatement == null) { - insertStatement = TypeQL.var("rel").rel(roleTypes.get(i), playerVars.get(i)); + insertStatement = TypeQL.cVar("rel").rel(roleTypes.get(i), TypeQL.cVar(playerVars.get(i))); } else { - insertStatement = insertStatement.rel(roleTypes.get(i), playerVars.get(i)); + insertStatement = insertStatement.rel(roleTypes.get(i), TypeQL.cVar(playerVars.get(i))); } } if (insertStatement != null) { @@ -145,19 +145,19 @@ public TypeQLInsert generateMatchInsertStatement(String[] row) { return TypeQL.match(playerMatchStatements).insert(insertStatement); } else { - return TypeQL.insert(TypeQL.var("null").isa("null").has("null", "null")); + return TypeQL.insert(TypeQL.cVar("null").isa("null").has("null", "null")); } } else { - return TypeQL.insert(TypeQL.var("null").isa("null").has("null", "null")); + return TypeQL.insert(TypeQL.cVar("null").isa("null").has("null", "null")); } } private ThingVariable.Thing getThingPlayerMatchStatementByAttribute(String[] row, Configuration.Definition.Player player, String playerVar) { - ThingVariable.Thing playerMatchStatement = TypeQL.var(playerVar).isa(player.getMatch().getType()); + ThingVariable.Thing playerMatchStatement = TypeQL.cVar(playerVar).isa(player.getMatch().getType()); for (Configuration.Definition.Attribute consA : player.getMatch().getOwnerships()) { - ArrayList> constraintValues = GeneratorUtil.generateValueConstraintsConstrainingAttribute( + ArrayList constraintValues = GeneratorUtil.generateValueConstraintsConstrainingAttribute( row, header, filePath, fileSeparator, consA); - for (ThingConstraint.Value constraintValue : constraintValues) { + for (ThingConstraint.Predicate constraintValue : constraintValues) { playerMatchStatement.constrain(GeneratorUtil.valueToHasConstraint(consA.getAttribute(), constraintValue)); } } @@ -165,10 +165,10 @@ private ThingVariable.Thing getThingPlayerMatchStatementByAttribute(String[] row } private ThingVariable.Attribute getAttributePlayerMatchStatement(String[] row, Configuration.Definition.Player player, String playerVar) { - ArrayList> constraints = GeneratorUtil.generateValueConstraintsConstrainingAttribute( + ArrayList constraints = GeneratorUtil.generateValueConstraintsConstrainingAttribute( row, header, filePath, fileSeparator, player.getMatch().getAttribute()); if (constraints.size() > 0) { - return TypeQL.var(playerVar) + return TypeQL.cVar(playerVar) .constrain(constraints.get(0)) .isa(player.getMatch().getType()); } else { @@ -203,15 +203,15 @@ private ArrayList> recursiveAssemblyMatchStatement(String[] row // identify relation player "byPlayer" ArrayList> statements = new ArrayList<>(); //create the relation statement with the player vars that will be filled in recursion: - UnboundVariable ubv = TypeQL.var(playerVar); + UnboundConceptVariable ubv = TypeQL.cVar(playerVar); ThingVariable.Relation relationMatch = null; for (int idx = 0; idx < player.getMatch().getPlayers().length; idx++) { Configuration.Definition.Player curPlayer = player.getMatch().getPlayers()[idx]; String curPlayerVar = playerVar + "-" + idx; if (idx == 0) { - relationMatch = ubv.rel(curPlayer.getRole(), curPlayerVar); + relationMatch = ubv.rel(curPlayer.getRole(), TypeQL.cVar(curPlayerVar)); } else { - relationMatch = relationMatch.rel(curPlayer.getRole(), curPlayerVar); + relationMatch = relationMatch.rel(curPlayer.getRole(), TypeQL.cVar(curPlayerVar)); } // this is where the recursion happens to fill the player var! ArrayList> recursiveMatch = recursiveAssemblyMatchStatement(row, curPlayer, curPlayerVar); diff --git a/src/main/java/com/vaticle/typedb/osi/loader/util/GeneratorUtil.java b/src/main/java/com/vaticle/typedb/osi/loader/util/GeneratorUtil.java index ed48d72..0700eaa 100644 --- a/src/main/java/com/vaticle/typedb/osi/loader/util/GeneratorUtil.java +++ b/src/main/java/com/vaticle/typedb/osi/loader/util/GeneratorUtil.java @@ -22,6 +22,7 @@ import com.vaticle.typedb.osi.loader.type.AttributeValueType; import com.vaticle.typeql.lang.TypeQL; import com.vaticle.typeql.lang.common.TypeQLToken; +import com.vaticle.typeql.lang.pattern.constraint.Predicate; import com.vaticle.typeql.lang.pattern.constraint.ThingConstraint; import com.vaticle.typeql.lang.pattern.variable.ThingVariable; import org.apache.commons.io.FilenameUtils; @@ -55,9 +56,9 @@ public static void constrainThingWithHasAttributes(String[] row, ThingVariable insertStatement, Configuration.Definition.Attribute[] attributes) { for (Configuration.Definition.Attribute attribute : attributes) { - ArrayList> constraintValues = GeneratorUtil.generateValueConstraintsConstrainingAttribute( + ArrayList constraintValues = GeneratorUtil.generateValueConstraintsConstrainingAttribute( row, header, filePath, fileSeparator, attribute); - for (ThingConstraint.Value constraintValue : constraintValues) { + for (ThingConstraint.Predicate constraintValue : constraintValues) { insertStatement.constrain(GeneratorUtil.valueToHasConstraint(attribute.getAttribute(), constraintValue)); } } @@ -68,22 +69,22 @@ public static int getColumnIndexByName(String[] header, String column) { } public static ThingVariable.Thing generateBoundThingVar(String schemaType) { - return TypeQL.var("e").isa(schemaType); + return TypeQL.cVar("e").isa(schemaType); } public static ThingConstraint.Has valueToHasConstraint(String attributeSchemaType, - ThingConstraint.Value valueConstraints) { + ThingConstraint.Predicate valueConstraints) { if (valueConstraints != null) { return new ThingConstraint.Has(attributeSchemaType, valueConstraints); } return null; } - public static ArrayList> generateValueConstraintsConstrainingAttribute(String[] row, - String[] header, - String filepath, - char fileSeparator, - Configuration.Definition.Attribute attribute) { + public static ArrayList generateValueConstraintsConstrainingAttribute(String[] row, + String[] header, + String filepath, + char fileSeparator, + Configuration.Definition.Attribute attribute) { String attributeType = attribute.getAttribute(); AttributeValueType attributeValueType = attribute.getConceptValueType(); @@ -99,11 +100,11 @@ public static ArrayList> generateValueConstraintsConstr } - ArrayList> valueConstraints = new ArrayList<>(); + ArrayList valueConstraints = new ArrayList<>(); if (token != null && !token.isEmpty()) { String cleanedToken = cleanToken(token); if (listSeparator == null) { - ThingConstraint.Value valueConstraint = generateValueConstraint(attributeType, attributeValueType, cleanedToken, preprocessor, row, filepath, fileSeparator); + ThingConstraint.Predicate valueConstraint = generateValueConstraint(attributeType, attributeValueType, cleanedToken, preprocessor, row, filepath, fileSeparator); if (valueConstraint != null) { valueConstraints.add(valueConstraint); } @@ -111,7 +112,7 @@ public static ArrayList> generateValueConstraintsConstr for (String exploded : cleanedToken.split(listSeparator)) { String cleanedExplodedToken = cleanToken(exploded); if (!cleanedExplodedToken.isEmpty()) { - ThingConstraint.Value valueConstraint = generateValueConstraint(attributeType, attributeValueType, cleanedExplodedToken, preprocessor, row, filepath, fileSeparator); + ThingConstraint.Predicate valueConstraint = generateValueConstraint(attributeType, attributeValueType, cleanedExplodedToken, preprocessor, row, filepath, fileSeparator); if (valueConstraint != null) { valueConstraints.add(valueConstraint); } @@ -123,13 +124,13 @@ public static ArrayList> generateValueConstraintsConstr } - public static ThingConstraint.Value generateValueConstraint(String attributeSchemaType, - AttributeValueType attributeValueType, - String cleanedValue, - Configuration.PreprocessorConfig preprocessorConfig, - String[] row, - String filepath, - char fileSeparator) { + public static ThingConstraint.Predicate generateValueConstraint(String attributeSchemaType, + AttributeValueType attributeValueType, + String cleanedValue, + Configuration.PreprocessorConfig preprocessorConfig, + String[] row, + String filepath, + char fileSeparator) { String fileName = FilenameUtils.getName(filepath); String fileNoExtension = FilenameUtils.removeExtension(fileName); String originalRow = String.join(Character.toString(fileSeparator), row); @@ -138,14 +139,14 @@ public static ThingConstraint.Value generateValueConstraint(String attributeS cleanedValue = applyPreprocessor(cleanedValue, preprocessorConfig); } - ThingConstraint.Value constraint = null; + ThingConstraint.Predicate constraint = null; switch (attributeValueType) { case STRING: - constraint = new ThingConstraint.Value.String(TypeQLToken.Predicate.Equality.EQ, cleanedValue); + constraint = new ThingConstraint.Predicate(new Predicate.String(TypeQLToken.Predicate.Equality.EQ, cleanedValue)); break; case LONG: try { - constraint = new ThingConstraint.Value.Long(TypeQLToken.Predicate.Equality.EQ, Long.parseLong(cleanedValue)); + constraint = new ThingConstraint.Predicate(new Predicate.Long(TypeQLToken.Predicate.Equality.EQ, Long.parseLong(cleanedValue))); } catch (NumberFormatException numberFormatException) { FileLogger.getLogger().logColumnWarnings(fileName, originalRow); dataLogger.warn(String.format("column of type long for variable <%s> with non- value <%s> - skipping column - faulty row written to <%s_column_type.log>", attributeSchemaType, cleanedValue, fileNoExtension)); @@ -153,7 +154,7 @@ public static ThingConstraint.Value generateValueConstraint(String attributeS break; case DOUBLE: try { - constraint = new ThingConstraint.Value.Double(TypeQLToken.Predicate.Equality.EQ, Double.parseDouble(cleanedValue)); + constraint = new ThingConstraint.Predicate(new Predicate.Double(TypeQLToken.Predicate.Equality.EQ, Double.parseDouble(cleanedValue))); } catch (NumberFormatException numberFormatException) { FileLogger.getLogger().logColumnWarnings(fileName, originalRow); dataLogger.warn(String.format("column of type double for variable <%s> with non- value <%s> - skipping column - faulty row written to <%s_column_type.log>", attributeSchemaType, cleanedValue, fileNoExtension)); @@ -161,9 +162,9 @@ public static ThingConstraint.Value generateValueConstraint(String attributeS break; case BOOLEAN: if (cleanedValue.equalsIgnoreCase("true")) { - constraint = new ThingConstraint.Value.Boolean(TypeQLToken.Predicate.Equality.EQ, true); + constraint = new ThingConstraint.Predicate(new Predicate.Boolean(TypeQLToken.Predicate.Equality.EQ, true)); } else if (cleanedValue.equalsIgnoreCase("false")) { - constraint = new ThingConstraint.Value.Boolean(TypeQLToken.Predicate.Equality.EQ, false); + constraint = new ThingConstraint.Predicate(new Predicate.Boolean(TypeQLToken.Predicate.Equality.EQ, false)); } else { FileLogger.getLogger().logColumnWarnings(fileName, originalRow); dataLogger.warn(String.format("column of type boolean for variable <%s> with non- value <%s> - skipping column - faulty row written to <%s_column_type.log>", attributeSchemaType, cleanedValue, fileNoExtension)); @@ -181,7 +182,7 @@ public static ThingConstraint.Value generateValueConstraint(String attributeS } else { dateTime = date.atStartOfDay(); } - constraint = new ThingConstraint.Value.DateTime(TypeQLToken.Predicate.Equality.EQ, dateTime); + constraint = new ThingConstraint.Predicate(new Predicate.DateTime(TypeQLToken.Predicate.Equality.EQ, dateTime)); } catch (DateTimeException dateTimeException) { FileLogger.getLogger().logColumnWarnings(fileName, originalRow); dataLogger.warn(String.format("column of type datetime for variable <%s> with non- datetime value <%s> - skipping column - faulty row written to <%s_column_type.log>", attributeSchemaType, cleanedValue, fileNoExtension)); diff --git a/src/main/java/com/vaticle/typedb/osi/loader/util/TypeDBUtil.java b/src/main/java/com/vaticle/typedb/osi/loader/util/TypeDBUtil.java index fc9d232..aeccd9d 100644 --- a/src/main/java/com/vaticle/typedb/osi/loader/util/TypeDBUtil.java +++ b/src/main/java/com/vaticle/typedb/osi/loader/util/TypeDBUtil.java @@ -134,10 +134,10 @@ public static TypeQLInsert replaceMatchWithAnswer(TypeQLInsert query, ConceptMap List> insertVars = query.asInsert().variables(); List matchVars = new ArrayList<>(); ans.map().forEach((var, concept) -> { - if (concept.isThing()) matchVars.add(TypeQL.var(var).iid(concept.asThing().getIID())); + if (concept.isThing()) matchVars.add(TypeQL.cVar(var).iid(concept.asThing().getIID())); else if (concept.asType().getLabel().scope().isPresent()) { - matchVars.add(TypeQL.var(var).type(concept.asType().getLabel().scope().get(), concept.asType().getLabel().name())); - } else matchVars.add(TypeQL.var(var).type(concept.asType().getLabel().name())); + matchVars.add(TypeQL.cVar(var).type(concept.asType().getLabel().scope().get(), concept.asType().getLabel().name())); + } else matchVars.add(TypeQL.cVar(var).type(concept.asType().getLabel().name())); }); return TypeQL.match(matchVars).insert(insertVars); } diff --git a/src/test/java/com/vaticle/typedb/osi/loader/loader/TypeDBLoaderTest.java b/src/test/java/com/vaticle/typedb/osi/loader/loader/TypeDBLoaderTest.java index 14d1409..893b150 100644 --- a/src/test/java/com/vaticle/typedb/osi/loader/loader/TypeDBLoaderTest.java +++ b/src/test/java/com/vaticle/typedb/osi/loader/loader/TypeDBLoaderTest.java @@ -23,7 +23,7 @@ import com.vaticle.typedb.osi.loader.util.TypeDBUtil; import com.vaticle.typeql.lang.TypeQL; import com.vaticle.typeql.lang.pattern.variable.ThingVariable; -import com.vaticle.typeql.lang.pattern.variable.UnboundVariable; +import com.vaticle.typeql.lang.pattern.variable.UnboundConceptVariable; import com.vaticle.typeql.lang.query.TypeQLMatch; import org.junit.Assert; import org.junit.Test; @@ -86,16 +86,16 @@ public void loadPhoneCallsTest() { public void testAttributes(TypeDBSession session) { try (TypeDBTransaction read = session.transaction(TypeDBTransaction.Type.READ)) { - TypeQLMatch getQuery = TypeQL.match(TypeQL.var("a").isa("is-in-use")).get("a"); + TypeQLMatch getQuery = TypeQL.match(TypeQL.cVar("a").isa("is-in-use")).get(TypeQL.cVar("a")); Assert.assertEquals(3, read.query().match(getQuery).count()); - getQuery = TypeQL.match(TypeQL.var("a").eq("yes").isa("is-in-use")).get("a"); + getQuery = TypeQL.match(TypeQL.cVar("a").eq("yes").isa("is-in-use")).get(TypeQL.cVar("a")); Assert.assertEquals(1, read.query().match(getQuery).count()); - getQuery = TypeQL.match(TypeQL.var("a").eq("no").isa("is-in-use")).get("a"); + getQuery = TypeQL.match(TypeQL.cVar("a").eq("no").isa("is-in-use")).get(TypeQL.cVar("a")); Assert.assertEquals(1, read.query().match(getQuery).count()); - getQuery = TypeQL.match(TypeQL.var("a").eq("5").isa("is-in-use")).get("a"); + getQuery = TypeQL.match(TypeQL.cVar("a").eq("5").isa("is-in-use")).get(TypeQL.cVar("a")); Assert.assertEquals(1, read.query().match(getQuery).count()); } } @@ -104,19 +104,19 @@ public void testEntities(TypeDBSession session) { // query person by phone-number try (TypeDBTransaction read = session.transaction(TypeDBTransaction.Type.READ)) { - TypeQLMatch getQuery = TypeQL.match(TypeQL.var("p").isa("person").has("phone-number", "+261 860 539 4754")).get("p").limit(1000); + TypeQLMatch getQuery = TypeQL.match(TypeQL.cVar("p").isa("person").has("phone-number", "+261 860 539 4754")).get(TypeQL.cVar("p")).limit(1000); Assert.assertEquals(1, read.query().match(getQuery).count()); // query person by last name - getQuery = TypeQL.match(TypeQL.var("p").isa("person").has("last-name", "Smith")).get("p").limit(1000); + getQuery = TypeQL.match(TypeQL.cVar("p").isa("person").has("last-name", "Smith")).get(TypeQL.cVar("p")).limit(1000); Assert.assertEquals(2, read.query().match(getQuery).count()); // query all entities of type person - getQuery = TypeQL.match(TypeQL.var("c").isa("person")).get("c").limit(1000); + getQuery = TypeQL.match(TypeQL.cVar("c").isa("person")).get(TypeQL.cVar("c")).limit(1000); Assert.assertEquals(39, read.query().match(getQuery).count()); // query all entites of type company - getQuery = TypeQL.match(TypeQL.var("e").isa("company")).get("e").limit(1000); + getQuery = TypeQL.match(TypeQL.cVar("e").isa("company")).get(TypeQL.cVar("e")).limit(1000); Assert.assertEquals(2, read.query().match(getQuery).count()); } } @@ -125,40 +125,40 @@ public void testRelations(TypeDBSession session) { // query call by duration try (TypeDBTransaction read = session.transaction(TypeDBTransaction.Type.READ)) { - TypeQLMatch getQuery = TypeQL.match(TypeQL.var("c").isa("call").has("duration", 2851)).get("c").limit(1000); + TypeQLMatch getQuery = TypeQL.match(TypeQL.cVar("c").isa("call").has("duration", 2851)).get(TypeQL.cVar("c")).limit(1000); Assert.assertEquals(1, read.query().match(getQuery).count()); // query call by date - getQuery = TypeQL.match(TypeQL.var("c").isa("call").has("started-at", getDT("2018-09-17T18:43:42"))).get("c").limit(1000); + getQuery = TypeQL.match(TypeQL.cVar("c").isa("call").has("started-at", getDT("2018-09-17T18:43:42"))).get(TypeQL.cVar("c")).limit(1000); Assert.assertEquals(1, read.query().match(getQuery).count()); // query call by caller - ThingVariable.Thing player = TypeQL.var("p").isa("person").has("phone-number", "+7 171 898 0853"); - ThingVariable.Relation relation = TypeQL.var("c").isa("call").toUnbound().rel("caller", "p"); + ThingVariable.Thing player = TypeQL.cVar("p").isa("person").has("phone-number", "+7 171 898 0853"); + ThingVariable.Relation relation = TypeQL.cVar("c").isa("call").toUnbound().rel("caller", TypeQL.cVar("p")); ArrayList> statements = new ArrayList<>(); statements.add(player); statements.add(relation); - getQuery = TypeQL.match(statements).get("c").limit(1000); + getQuery = TypeQL.match(statements).get(TypeQL.cVar("c")).limit(1000); Assert.assertEquals(14, read.query().match(getQuery).count()); // query call by callee - player = TypeQL.var("p").isa("person").has("phone-number", "+7 171 898 0853"); - relation = TypeQL.var("c").isa("call").toUnbound().rel("callee", "p"); + player = TypeQL.cVar("p").isa("person").has("phone-number", "+7 171 898 0853"); + relation = TypeQL.cVar("c").isa("call").toUnbound().rel("callee", TypeQL.cVar("p")); statements = new ArrayList<>(); statements.add(player); statements.add(relation); - getQuery = TypeQL.match(statements).get("c").limit(1000); + getQuery = TypeQL.match(statements).get(TypeQL.cVar("c")).limit(1000); Assert.assertEquals(4, read.query().match(getQuery).count()); // query call by caller & callee - ThingVariable.Thing playerOne = TypeQL.var("p1").isa("person").has("phone-number", "+7 171 898 0853"); - ThingVariable.Thing playerTwo = TypeQL.var("p2").isa("person").has("phone-number", "+57 629 420 5680"); - relation = TypeQL.var("c").isa("call").toUnbound().rel("caller", "p1").rel("callee", "p2"); + ThingVariable.Thing playerOne = TypeQL.cVar("p1").isa("person").has("phone-number", "+7 171 898 0853"); + ThingVariable.Thing playerTwo = TypeQL.cVar("p2").isa("person").has("phone-number", "+57 629 420 5680"); + relation = TypeQL.cVar("c").isa("call").toUnbound().rel("caller", TypeQL.cVar("p1")).rel("callee", TypeQL.cVar("p2")); statements = new ArrayList<>(); statements.add(playerOne); statements.add(playerTwo); statements.add(relation); - getQuery = TypeQL.match(statements).get("c").limit(1000); + getQuery = TypeQL.match(statements).get(TypeQL.cVar("c")).limit(1000); Assert.assertEquals(4, read.query().match(getQuery).count()); } } @@ -166,7 +166,7 @@ public void testRelations(TypeDBSession session) { public void testAttributeRelation(TypeDBSession session) { TypeDBTransaction read = session.transaction(TypeDBTransaction.Type.READ); - TypeQLMatch getQuery = TypeQL.match(TypeQL.var("a").isa("in-use")).get("a"); + TypeQLMatch getQuery = TypeQL.match(TypeQL.cVar("a").isa("in-use")).get(TypeQL.cVar("a")); Assert.assertEquals(7, read.query().match(getQuery).count()); read.close(); @@ -176,78 +176,78 @@ public void testNestedRelations(TypeDBSession session) { // query specific communication-channel and count the number of past calls (single past-call): try (TypeDBTransaction read = session.transaction(TypeDBTransaction.Type.READ)) { - ThingVariable.Thing playerOne = TypeQL.var("p1").isa("person").has("phone-number", "+54 398 559 0423"); - ThingVariable.Thing playerTwo = TypeQL.var("p2").isa("person").has("phone-number", "+48 195 624 2025"); - ThingVariable.Relation relation = TypeQL.var("c").rel("peer", "p1").rel("peer", "p2").rel("past-call", "x").isa("communication-channel"); + ThingVariable.Thing playerOne = TypeQL.cVar("p1").isa("person").has("phone-number", "+54 398 559 0423"); + ThingVariable.Thing playerTwo = TypeQL.cVar("p2").isa("person").has("phone-number", "+48 195 624 2025"); + ThingVariable.Relation relation = TypeQL.cVar("c").rel("peer", TypeQL.cVar("p1")).rel("peer", TypeQL.cVar("p2")).rel("past-call", TypeQL.cVar("x")).isa("communication-channel"); ArrayList> statements = new ArrayList<>(); statements.add(playerOne); statements.add(playerTwo); statements.add(relation); - TypeQLMatch getQuery = TypeQL.match(statements).get("c").limit(1000); + TypeQLMatch getQuery = TypeQL.match(statements).get(TypeQL.cVar("c")).limit(1000); Assert.assertEquals(1, read.query().match(getQuery).count()); - getQuery = TypeQL.match(statements).get("x").limit(1000); + getQuery = TypeQL.match(statements).get(TypeQL.cVar("x")).limit(1000); Assert.assertEquals(1, read.query().match(getQuery).count()); // query specific communication-channel and count the number of past calls (listSeparated past-calls: - playerOne = TypeQL.var("p1").isa("person").has("phone-number", "+263 498 495 0617"); - playerTwo = TypeQL.var("p2").isa("person").has("phone-number", "+33 614 339 0298"); - relation = TypeQL.var("c").rel("peer", "p1").rel("peer", "p2").rel("past-call", "x").isa("communication-channel"); + playerOne = TypeQL.cVar("p1").isa("person").has("phone-number", "+263 498 495 0617"); + playerTwo = TypeQL.cVar("p2").isa("person").has("phone-number", "+33 614 339 0298"); + relation = TypeQL.cVar("c").rel("peer", TypeQL.cVar("p1")).rel("peer", TypeQL.cVar("p2")).rel("past-call", TypeQL.cVar("x")).isa("communication-channel"); statements = new ArrayList<>(); statements.add(playerOne); statements.add(playerTwo); statements.add(relation); - getQuery = TypeQL.match(statements).get("c").limit(1000); + getQuery = TypeQL.match(statements).get(TypeQL.cVar("c")).limit(1000); Assert.assertEquals(1, read.query().match(getQuery).count()); - getQuery = TypeQL.match(statements).get("x").limit(1000); + getQuery = TypeQL.match(statements).get(TypeQL.cVar("x")).limit(1000); Assert.assertEquals(1, read.query().match(getQuery).count()); // make sure that this doesn't get inserted: - playerOne = TypeQL.var("p1").isa("person").has("phone-number", "+7 690 597 4443"); - playerTwo = TypeQL.var("p2").isa("person").has("phone-number", "+54 398 559 9999"); - relation = TypeQL.var("c").rel("peer", "p1").rel("peer", "p2").rel("past-call", "x").isa("communication-channel"); + playerOne = TypeQL.cVar("p1").isa("person").has("phone-number", "+7 690 597 4443"); + playerTwo = TypeQL.cVar("p2").isa("person").has("phone-number", "+54 398 559 9999"); + relation = TypeQL.cVar("c").rel("peer", TypeQL.cVar("p1")).rel("peer", TypeQL.cVar("p2")).rel("past-call", TypeQL.cVar("x")).isa("communication-channel"); statements = new ArrayList<>(); statements.add(playerOne); statements.add(playerTwo); statements.add(relation); - getQuery = TypeQL.match(statements).get("c").limit(1000); + getQuery = TypeQL.match(statements).get(TypeQL.cVar("c")).limit(1000); Assert.assertEquals(0, read.query().match(getQuery).count()); - getQuery = TypeQL.match(statements).get("x").limit(1000); + getQuery = TypeQL.match(statements).get(TypeQL.cVar("x")).limit(1000); Assert.assertEquals(0, read.query().match(getQuery).count()); // these are added by doing player matching for past calls: - playerOne = TypeQL.var("p1").isa("person").has("phone-number", "+81 308 988 7153"); - playerTwo = TypeQL.var("p2").isa("person").has("phone-number", "+351 515 605 7915"); - relation = TypeQL.var("c").rel("peer", "p1").rel("peer", "p2").rel("past-call", "x").isa("communication-channel"); + playerOne = TypeQL.cVar("p1").isa("person").has("phone-number", "+81 308 988 7153"); + playerTwo = TypeQL.cVar("p2").isa("person").has("phone-number", "+351 515 605 7915"); + relation = TypeQL.cVar("c").rel("peer", TypeQL.cVar("p1")).rel("peer", TypeQL.cVar("p2")).rel("past-call", TypeQL.cVar("x")).isa("communication-channel"); statements = new ArrayList<>(); statements.add(playerOne); statements.add(playerTwo); statements.add(relation); - getQuery = TypeQL.match(statements).get("c").limit(1000); + getQuery = TypeQL.match(statements).get(TypeQL.cVar("c")).limit(1000); Assert.assertEquals(5, read.query().match(getQuery).count()); - getQuery = TypeQL.match(statements).get("x").limit(1000); + getQuery = TypeQL.match(statements).get(TypeQL.cVar("x")).limit(1000); Assert.assertEquals(5, read.query().match(getQuery).count()); - playerOne = TypeQL.var("p1").isa("person").has("phone-number", "+7 171 898 0853"); - playerTwo = TypeQL.var("p2").isa("person").has("phone-number", "+57 629 420 5680"); - relation = TypeQL.var("c").rel("peer", "p1").rel("peer", "p2").rel("past-call", "x").isa("communication-channel"); + playerOne = TypeQL.cVar("p1").isa("person").has("phone-number", "+7 171 898 0853"); + playerTwo = TypeQL.cVar("p2").isa("person").has("phone-number", "+57 629 420 5680"); + relation = TypeQL.cVar("c").rel("peer", TypeQL.cVar("p1")).rel("peer", TypeQL.cVar("p2")).rel("past-call", TypeQL.cVar("x")).isa("communication-channel"); statements = new ArrayList<>(); statements.add(playerOne); statements.add(playerTwo); statements.add(relation); - getQuery = TypeQL.match(statements).get("c").limit(1000); + getQuery = TypeQL.match(statements).get(TypeQL.cVar("c")).limit(1000); Assert.assertEquals(4, read.query().match(getQuery).count()); - getQuery = TypeQL.match(statements).get("x").limit(1000); + getQuery = TypeQL.match(statements).get(TypeQL.cVar("x")).limit(1000); Assert.assertEquals(4, read.query().match(getQuery).count()); // these must not be found (come from player-matched past-call): - playerOne = TypeQL.var("p1").isa("person").has("phone-number", "+261 860 539 4754"); - relation = TypeQL.var("c").rel("peer", "p1").rel("past-call", "x").isa("communication-channel"); + playerOne = TypeQL.cVar("p1").isa("person").has("phone-number", "+261 860 539 4754"); + relation = TypeQL.cVar("c").rel("peer", TypeQL.cVar("p1")).rel("past-call", TypeQL.cVar("x")).isa("communication-channel"); statements = new ArrayList<>(); statements.add(playerOne); statements.add(relation); - getQuery = TypeQL.match(statements).get("c").limit(1000); + getQuery = TypeQL.match(statements).get(TypeQL.cVar("c")).limit(1000); Assert.assertEquals(0, read.query().match(getQuery).count()); - getQuery = TypeQL.match(statements).get("x").limit(1000); + getQuery = TypeQL.match(statements).get(TypeQL.cVar("x")).limit(1000); Assert.assertEquals(0, read.query().match(getQuery).count()); } } @@ -256,36 +256,36 @@ public void testAppendAttribute(TypeDBSession session) { // Count number of total inserts try (TypeDBTransaction read = session.transaction(TypeDBTransaction.Type.READ)) { - TypeQLMatch.Limited getQuery = TypeQL.match(TypeQL.var("p").isa("person").has("twitter-username", TypeQL.var("x"))).get("x").limit(1000); + TypeQLMatch.Limited getQuery = TypeQL.match(TypeQL.cVar("p").isa("person").has("twitter-username", TypeQL.cVar("x"))).get(TypeQL.cVar("x")).limit(1000); Assert.assertEquals(7, read.query().match(getQuery).count()); // Count multi-write using listSeparator - getQuery = TypeQL.match(TypeQL.var("p").isa("person").has("phone-number", "+263 498 495 0617").has("twitter-username", TypeQL.var("x"))).get("x").limit(1000); + getQuery = TypeQL.match(TypeQL.cVar("p").isa("person").has("phone-number", "+263 498 495 0617").has("twitter-username", TypeQL.cVar("x"))).get(TypeQL.cVar("x")).limit(1000); Assert.assertEquals(2, read.query().match(getQuery).count()); //test relation total inserts - getQuery = TypeQL.match(TypeQL.var("c").isa("call").has("call-rating", TypeQL.var("cr"))).get("c").limit(1000); + getQuery = TypeQL.match(TypeQL.cVar("c").isa("call").has("call-rating", TypeQL.cVar("cr"))).get(TypeQL.cVar("c")).limit(1000); Assert.assertEquals(5, read.query().match(getQuery).count()); // specific relation write - getQuery = TypeQL.match(TypeQL.var("c").isa("call").has("started-at", getDT("2018-09-24T03:16:48")).has("call-rating", TypeQL.var("cr"))).get("cr").limit(1000); + getQuery = TypeQL.match(TypeQL.cVar("c").isa("call").has("started-at", getDT("2018-09-24T03:16:48")).has("call-rating", TypeQL.cVar("cr"))).get(TypeQL.cVar("cr")).limit(1000); read.query().match(getQuery).forEach(answer -> Assert.assertEquals(5L, answer.get("cr").asAttribute().getValue())); } } public void testInsertOrAppend(TypeDBSession session) { try (TypeDBTransaction read = session.transaction(TypeDBTransaction.Type.READ)) { - TypeQLMatch getQuery = TypeQL.match(TypeQL.var("e").isa("person").has("nick-name", UnboundVariable.named("x"))).get("x"); + TypeQLMatch getQuery = TypeQL.match(TypeQL.cVar("e").isa("person").has("nick-name", UnboundConceptVariable.named("x"))).get(TypeQL.cVar("x")); Assert.assertEquals(12, read.query().match(getQuery).count()); // test new ones present (middle and at end) - getQuery = TypeQL.match(TypeQL.var("p").isa("person").has("first-name", "Naruto")).get("p").limit(1000); + getQuery = TypeQL.match(TypeQL.cVar("p").isa("person").has("first-name", "Naruto")).get(TypeQL.cVar("p")).limit(1000); Assert.assertEquals(1, read.query().match(getQuery).count()); - getQuery = TypeQL.match(TypeQL.var("p").isa("person").has("first-name", "Sasuke")).get("p").limit(1000); + getQuery = TypeQL.match(TypeQL.cVar("p").isa("person").has("first-name", "Sasuke")).get(TypeQL.cVar("p")).limit(1000); Assert.assertEquals(1, read.query().match(getQuery).count()); - getQuery = TypeQL.match(TypeQL.var("p").isa("person").has("first-name", "Sakura")).get("p").limit(1000); + getQuery = TypeQL.match(TypeQL.cVar("p").isa("person").has("first-name", "Sakura")).get(TypeQL.cVar("p")).limit(1000); Assert.assertEquals(1, read.query().match(getQuery).count()); } }