diff --git a/Dockerfile b/Dockerfile index ab61423b1..39626f759 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,6 @@ WORKDIR /opt/engine # this is a specific yang.db assembly used for knowledge based ontology - a general purpose RDF schema COPY distrib/knowledge-knowledge /opt/engine -COPY distrib/knowledge-fuse-source.zip /opt/engine RUN chmod 755 /opt/engine/start-fuse-service.sh # clean diff --git a/Dockerfile.custom b/Dockerfile.custom index 746272b3a..6b547fc29 100644 --- a/Dockerfile.custom +++ b/Dockerfile.custom @@ -14,7 +14,6 @@ WORKDIR /opt/engine # this is a specific yang.db assembly used for custom based ontology - a custom index schema COPY distrib/dragon-dragon /opt/engine -COPY distrib/dragon-dragon.zip /opt/engine RUN chmod 755 /opt/engine/start-fuse-service.sh # clean diff --git a/Dockerfile.knowledge b/Dockerfile.knowledge index abd96743f..958e77bcc 100644 --- a/Dockerfile.knowledge +++ b/Dockerfile.knowledge @@ -14,7 +14,6 @@ WORKDIR /opt/engine # this is a specific yang.db assembly used for knowledge based ontology - a general purpose RDF schema COPY distrib/knowledge-knowledge /opt/engine -COPY distrib/knowledge-fuse-source.zip /opt/engine RUN chmod 755 /opt/engine/start-fuse-service.sh # clean diff --git a/buildDocker.sh b/buildDocker.sh index 9a9a8fc0b..455733094 100755 --- a/buildDocker.sh +++ b/buildDocker.sh @@ -10,8 +10,8 @@ cd $(dirname "$0") echo "mvn clean install" mvn clean install -echo "docker build . -t yangdb/yang.db:${tagname}" -docker build -t yangdb/yang.db:${tagname} +echo "docker build -t yangdb/yang.db:${tagname} ." +docker build -t yangdb/yang.db:${tagname} . echo "docker push yangdb/yang.db:${tagname}" docker push yangdb/yang.db:${tagname} diff --git a/fuse-domain/fuse-domain-knowledge/fuse-domain-knowledge-assembly/resources/assembly/Knowledge/config/application.test.engine3.m1.dfs.knowledge.public.conf b/fuse-domain/fuse-domain-knowledge/fuse-domain-knowledge-assembly/resources/assembly/Knowledge/config/application.test.engine3.m1.dfs.knowledge.public.conf index d040ffcc8..ca7791011 100644 --- a/fuse-domain/fuse-domain-knowledge/fuse-domain-knowledge-assembly/resources/assembly/Knowledge/config/application.test.engine3.m1.dfs.knowledge.public.conf +++ b/fuse-domain/fuse-domain-knowledge/fuse-domain-knowledge-assembly/resources/assembly/Knowledge/config/application.test.engine3.m1.dfs.knowledge.public.conf @@ -50,7 +50,7 @@ Knowledge.physical_schema_initiator = com.yangdb.fuse.assembly.knowledge.Knowled Knowledge.physical_schema_data_loader = com.yangdb.fuse.assembly.knowledge.KnowledgeDataLoader Knowledge.physical_schema_csv_data_loader = com.yangdb.fuse.assembly.knowledge.KnowledgeCSVDataLoader -Knowledge.search_order_provider = com.yangdb.fuse.assembly.knowledge.KnowledgeSearchOrderProvider +Knowledge.search_order_provider = com.yangdb.fuse.assembly.knowledge.KnowledgeLightSearchOrderProvider Knowledge.physical_schema_provider_factory_class = com.yangdb.fuse.assembly.knowledge.KnowledgeRoutedSchemaProviderFactory Knowledge.stats_provider_class = com.yangdb.fuse.assembly.knowledge.KnowledgeStaticRuleBasedStatisticalProvider Knowledge.plan_extension_strategy_class = com.yangdb.fuse.assembly.knowledge.KnowledgeM2DfsRedundantPlanExtensionStrategy diff --git a/fuse-dv/fuse-dv-asg/src/main/java/com/yangdb/fuse/asg/strategy/schema/ExactConstraintTransformationAsgStrategy.java b/fuse-dv/fuse-dv-asg/src/main/java/com/yangdb/fuse/asg/strategy/schema/ExactConstraintTransformationAsgStrategy.java index 365115fcc..1b778d735 100644 --- a/fuse-dv/fuse-dv-asg/src/main/java/com/yangdb/fuse/asg/strategy/schema/ExactConstraintTransformationAsgStrategy.java +++ b/fuse-dv/fuse-dv-asg/src/main/java/com/yangdb/fuse/asg/strategy/schema/ExactConstraintTransformationAsgStrategy.java @@ -9,9 +9,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -22,27 +22,30 @@ import com.yangdb.fuse.asg.strategy.AsgStrategy; import com.yangdb.fuse.dispatcher.ontology.OntologyProvider; -import com.yangdb.fuse.model.asgQuery.AsgQueryUtil; import com.yangdb.fuse.executor.ontology.GraphElementSchemaProviderFactory; import com.yangdb.fuse.model.asgQuery.AsgEBase; import com.yangdb.fuse.model.asgQuery.AsgQuery; +import com.yangdb.fuse.model.asgQuery.AsgQueryUtil; import com.yangdb.fuse.model.asgQuery.AsgStrategyContext; import com.yangdb.fuse.model.ontology.Ontology; import com.yangdb.fuse.model.ontology.Property; -import com.yangdb.fuse.model.query.properties.*; -import com.yangdb.fuse.model.query.properties.constraint.ConstraintOp; import com.yangdb.fuse.model.query.entity.EEntityBase; import com.yangdb.fuse.model.query.entity.ETyped; +import com.yangdb.fuse.model.query.properties.*; +import com.yangdb.fuse.model.query.properties.constraint.ConstraintOp; +import com.yangdb.fuse.model.query.properties.projection.IdentityProjection; import com.yangdb.fuse.unipop.schemaProviders.GraphElementPropertySchema; import com.yangdb.fuse.unipop.schemaProviders.GraphElementSchemaProvider; import com.yangdb.fuse.unipop.schemaProviders.GraphVertexSchema; import javaslang.collection.Stream; import java.util.ArrayList; +import java.util.Collections; import java.util.Optional; import java.util.Set; import static com.yangdb.fuse.unipop.schemaProviders.GraphElementPropertySchema.IndexingSchema.Type.exact; +import static java.util.Collections.unmodifiableList; /** * Created by roman.margolis on 08/02/2018. @@ -128,11 +131,17 @@ private void transformEPropGroup(Ontology.Accessor ont, GraphElementSchemaProvid eProp.getpType(), exactIndexingSchema.get().getName(), eProp.getCon())); + }else if(eProp.isProjection()) { + ePropGroup.getProps().add(new EProp( + 0, + eProp.getpType(), + new IdentityProjection())); } } ePropGroup.getGroups().forEach(group -> transformEPropGroup(ont, schemaProvider, group, eTypedAsgEBase)); } + //endregion //region Fields diff --git a/fuse-dv/fuse-dv-core/src/main/java/com/yangdb/fuse/executor/ontology/schema/load/DataLoaderUtils.java b/fuse-dv/fuse-dv-core/src/main/java/com/yangdb/fuse/executor/ontology/schema/load/DataLoaderUtils.java index 41c5258bd..11588a229 100644 --- a/fuse-dv/fuse-dv-core/src/main/java/com/yangdb/fuse/executor/ontology/schema/load/DataLoaderUtils.java +++ b/fuse-dv/fuse-dv-core/src/main/java/com/yangdb/fuse/executor/ontology/schema/load/DataLoaderUtils.java @@ -127,6 +127,7 @@ static ByteArrayOutputStream extractFile(InflaterInputStream zipIn) throws IOExc static Object parseValue(String explicitType, Object value, DateFormat sdf) { switch (explicitType) { + case "text": case "string": case "stringValue": return value.toString(); diff --git a/fuse-dv/fuse-dv-unipop/src/main/java/com/yangdb/fuse/unipop/controller/discrete/DiscreteElementReduceController.java b/fuse-dv/fuse-dv-unipop/src/main/java/com/yangdb/fuse/unipop/controller/discrete/DiscreteElementReduceController.java index 51dee4f04..702c1061c 100644 --- a/fuse-dv/fuse-dv-unipop/src/main/java/com/yangdb/fuse/unipop/controller/discrete/DiscreteElementReduceController.java +++ b/fuse-dv/fuse-dv-unipop/src/main/java/com/yangdb/fuse/unipop/controller/discrete/DiscreteElementReduceController.java @@ -162,7 +162,8 @@ private void buildEdgeQuery(ReduceEdgeQuery reduceQuery, SearchBuilder searchBui wrap(new FilterSourceRoutingSearchAppender()), wrap(new ElementRoutingSearchAppender()), wrap(new EdgeSourceSearchAppender()), - wrap(new EdgeRoutingSearchAppender()), + //todo: add configuration to enable/disable routing +// wrap(new EdgeRoutingSearchAppender()), wrap(new EdgeSourceRoutingSearchAppender()), wrap(new EdgeIndexSearchAppender()), wrap(new DualEdgeDirectionSearchAppender()), diff --git a/fuse-dv/fuse-dv-unipop/src/main/java/com/yangdb/fuse/unipop/controller/discrete/DiscreteVertexController.java b/fuse-dv/fuse-dv-unipop/src/main/java/com/yangdb/fuse/unipop/controller/discrete/DiscreteVertexController.java index 2b8a9b729..798a5f98a 100644 --- a/fuse-dv/fuse-dv-unipop/src/main/java/com/yangdb/fuse/unipop/controller/discrete/DiscreteVertexController.java +++ b/fuse-dv/fuse-dv-unipop/src/main/java/com/yangdb/fuse/unipop/controller/discrete/DiscreteVertexController.java @@ -113,6 +113,7 @@ protected Iterator search(SearchVertexQuery searchVertexQuery, Iterable elementConverter = new CompositeElementConverter<>( new DiscreteEdgeConverter<>(context, profiler)); @@ -133,7 +134,8 @@ protected Iterator search(SearchVertexQuery searchVertexQuery, Iterable metadata() { return getMetadata().getProperties(); } @Override + @JsonIgnore public Map fields() { return getProperties().getProperties(); } @Override + @JsonProperty("source") public String source() { return getSource(); } @Override + @JsonProperty("target") public String target() { return getTarget(); } diff --git a/fuse-model/src/main/java/com/yangdb/fuse/model/logical/LogicalNode.java b/fuse-model/src/main/java/com/yangdb/fuse/model/logical/LogicalNode.java index d97554a76..aff8bfae8 100644 --- a/fuse-model/src/main/java/com/yangdb/fuse/model/logical/LogicalNode.java +++ b/fuse-model/src/main/java/com/yangdb/fuse/model/logical/LogicalNode.java @@ -58,9 +58,14 @@ public class LogicalNode implements Vertex { public static final String NODE = "Node"; - private String id; + @JsonProperty("label") private String label = NODE; + @JsonProperty("id") + private String id; + + @JsonProperty("metadata") private NodeMetadata metadata = new NodeMetadata(); + @JsonProperty("properties") private NodeProperties properties = new NodeProperties(); ; public LogicalNode() {} @@ -70,38 +75,66 @@ public LogicalNode(String id,String label) { this.label = label; } + @JsonProperty("label") public String getLabel() { return label; } + @JsonProperty("id") public String getId() { return id; } + @JsonProperty("metadata") public NodeMetadata getMetadata() { return metadata; } + @JsonProperty("properties") public NodeProperties getProperties() { return properties; } @Override + @JsonProperty("id") public String id() { return getId(); } @Override + @JsonProperty("label") public String label() { return getLabel(); } + @JsonProperty("label") + public void setLabel(String label) { + this.label = label; + } + + @JsonProperty("id") + public void setId(String id) { + this.id = id; + } + + @JsonProperty("metadata") + public void setMetadata(NodeMetadata metadata) { + this.metadata = metadata; + } + + @JsonProperty("properties") + public void setProperties(NodeProperties properties) { + this.properties = properties; + } + @Override + @JsonProperty("metadata") public Map metadata() { return getMetadata().getProperties(); } @Override + @JsonProperty("properties") public Map fields() { return getProperties().getProperties(); } diff --git a/fuse-model/src/main/java/com/yangdb/fuse/model/query/properties/projection/CalculatedFieldProjection.java b/fuse-model/src/main/java/com/yangdb/fuse/model/query/properties/projection/CalculatedFieldProjection.java index ff9080a27..e4e25c3c3 100644 --- a/fuse-model/src/main/java/com/yangdb/fuse/model/query/properties/projection/CalculatedFieldProjection.java +++ b/fuse-model/src/main/java/com/yangdb/fuse/model/query/properties/projection/CalculatedFieldProjection.java @@ -43,8 +43,10 @@ * */ +import com.fasterxml.jackson.annotation.JsonInclude; import com.yangdb.fuse.model.query.aggregation.AggLOp; +@JsonInclude(JsonInclude.Include.NON_EMPTY) public class CalculatedFieldProjection extends Projection { private AggLOp expression; diff --git a/fuse-model/src/main/java/com/yangdb/fuse/model/query/properties/projection/IdentityProjection.java b/fuse-model/src/main/java/com/yangdb/fuse/model/query/properties/projection/IdentityProjection.java index f58c08005..133d7ce65 100644 --- a/fuse-model/src/main/java/com/yangdb/fuse/model/query/properties/projection/IdentityProjection.java +++ b/fuse-model/src/main/java/com/yangdb/fuse/model/query/properties/projection/IdentityProjection.java @@ -43,8 +43,11 @@ * */ +import com.fasterxml.jackson.annotation.JsonInclude; + /** * Created by roman.margolis on 27/02/2018. */ +@JsonInclude(JsonInclude.Include.NON_EMPTY) public class IdentityProjection extends Projection { }