com.thinkaurelius.titan.core.Cardinality Java Examples
The following examples show how to use
com.thinkaurelius.titan.core.Cardinality.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ManagementSystem.java From titan1withtp3.1 with Apache License 2.0 | 6 votes |
private TitanGraphIndex createMixedIndex(String indexName, ElementCategory elementCategory, TitanSchemaType constraint, String backingIndex) { Preconditions.checkArgument(graph.getIndexSerializer().containsIndex(backingIndex), "Unknown external index backend: %s", backingIndex); checkIndexName(indexName); TypeDefinitionMap def = new TypeDefinitionMap(); def.setValue(TypeDefinitionCategory.INTERNAL_INDEX, false); def.setValue(TypeDefinitionCategory.ELEMENT_CATEGORY, elementCategory); def.setValue(TypeDefinitionCategory.BACKING_INDEX, backingIndex); def.setValue(TypeDefinitionCategory.INDEXSTORE_NAME, indexName); def.setValue(TypeDefinitionCategory.INDEX_CARDINALITY, Cardinality.LIST); def.setValue(TypeDefinitionCategory.STATUS, SchemaStatus.ENABLED); TitanSchemaVertex indexVertex = transaction.makeSchemaVertex(TitanSchemaCategory.GRAPHINDEX, indexName, def); Preconditions.checkArgument(constraint == null || (elementCategory.isValidConstraint(constraint) && constraint instanceof TitanSchemaVertex)); if (constraint != null) { addSchemaEdge(indexVertex, (TitanSchemaVertex) constraint, TypeDefinitionCategory.INDEX_SCHEMA_CONSTRAINT, null); } updateSchemaVertex(indexVertex); return new TitanGraphIndexWrapper(indexVertex.asIndexType()); }
Example #2
Source File: IndexProviderTest.java From titan1withtp3.1 with Apache License 2.0 | 6 votes |
public static final Map<String,KeyInformation> getMapping(final IndexFeatures indexFeatures) { Preconditions.checkArgument(indexFeatures.supportsStringMapping(Mapping.TEXTSTRING) || (indexFeatures.supportsStringMapping(Mapping.TEXT) && indexFeatures.supportsStringMapping(Mapping.STRING)), "Index must support string and text mapping"); return new HashMap<String,KeyInformation>() {{ put(TEXT,new StandardKeyInformation(String.class, Cardinality.SINGLE, new Parameter("mapping", indexFeatures.supportsStringMapping(Mapping.TEXT)?Mapping.TEXT:Mapping.TEXTSTRING))); put(TIME,new StandardKeyInformation(Long.class, Cardinality.SINGLE)); put(WEIGHT,new StandardKeyInformation(Double.class, Cardinality.SINGLE, new Parameter("mapping",Mapping.DEFAULT))); put(LOCATION,new StandardKeyInformation(Geoshape.class, Cardinality.SINGLE)); put(NAME,new StandardKeyInformation(String.class, Cardinality.SINGLE, new Parameter("mapping", indexFeatures.supportsStringMapping(Mapping.STRING)?Mapping.STRING:Mapping.TEXTSTRING))); if(indexFeatures.supportsCardinality(Cardinality.LIST)) { put(PHONE_LIST, new StandardKeyInformation(String.class, Cardinality.LIST, new Parameter("mapping", indexFeatures.supportsStringMapping(Mapping.STRING) ? Mapping.STRING : Mapping.TEXTSTRING))); } if(indexFeatures.supportsCardinality(Cardinality.SET)) { put(PHONE_SET, new StandardKeyInformation(String.class, Cardinality.SET, new Parameter("mapping", indexFeatures.supportsStringMapping(Mapping.STRING) ? Mapping.STRING : Mapping.TEXTSTRING))); } put(DATE,new StandardKeyInformation(Instant.class, Cardinality.SINGLE)); }}; }
Example #3
Source File: Titan0GraphManagement.java From incubator-atlas with Apache License 2.0 | 6 votes |
@Override public AtlasPropertyKey makePropertyKey(String propertyName, Class propertyClass, AtlasCardinality cardinality) { if (cardinality.isMany()) { newMultProperties.add(propertyName); } PropertyKeyMaker propertyKeyBuilder = management.makePropertyKey(propertyName).dataType(propertyClass); if (cardinality != null) { Cardinality titanCardinality = TitanObjectFactory.createCardinality(cardinality); propertyKeyBuilder.cardinality(titanCardinality); } PropertyKey propertyKey = propertyKeyBuilder.make(); return GraphDbObjectFactory.createPropertyKey(propertyKey); }
Example #4
Source File: Titan0Graph.java From incubator-atlas with Apache License 2.0 | 6 votes |
public Titan0Graph() { //determine multi-properties once at startup TitanManagement mgmt = null; try { mgmt = Titan0GraphDatabase.getGraphInstance().getManagementSystem(); Iterable<PropertyKey> keys = mgmt.getRelationTypes(PropertyKey.class); multiProperties = Collections.synchronizedSet(new HashSet<String>()); for(PropertyKey key : keys) { if (key.getCardinality() != Cardinality.SINGLE) { multiProperties.add(key.getName()); } } } finally { if (mgmt != null) { mgmt.rollback(); } } }
Example #5
Source File: ElasticSearchIndexTest.java From titan1withtp3.1 with Apache License 2.0 | 6 votes |
@Test public void testSupport() { assertTrue(index.supports(of(String.class, Cardinality.SINGLE), Text.CONTAINS)); assertTrue(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.TEXT)), Text.CONTAINS_PREFIX)); assertTrue(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.TEXT)), Text.CONTAINS_REGEX)); assertFalse(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.TEXT)), Text.REGEX)); assertFalse(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping",Mapping.STRING)), Text.CONTAINS)); assertTrue(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.STRING)), Text.PREFIX)); assertTrue(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.STRING)), Text.REGEX)); assertTrue(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping",Mapping.STRING)), Cmp.EQUAL)); assertTrue(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping",Mapping.STRING)), Cmp.NOT_EQUAL)); assertTrue(index.supports(of(Date.class, Cardinality.SINGLE), Cmp.EQUAL)); assertTrue(index.supports(of(Date.class, Cardinality.SINGLE), Cmp.LESS_THAN_EQUAL)); assertTrue(index.supports(of(Date.class, Cardinality.SINGLE), Cmp.LESS_THAN)); assertTrue(index.supports(of(Date.class, Cardinality.SINGLE), Cmp.GREATER_THAN)); assertTrue(index.supports(of(Date.class, Cardinality.SINGLE), Cmp.GREATER_THAN_EQUAL)); assertTrue(index.supports(of(Date.class, Cardinality.SINGLE), Cmp.NOT_EQUAL)); assertTrue(index.supports(of(Boolean.class, Cardinality.SINGLE), Cmp.EQUAL)); assertTrue(index.supports(of(Boolean.class, Cardinality.SINGLE), Cmp.NOT_EQUAL)); assertTrue(index.supports(of(UUID.class, Cardinality.SINGLE), Cmp.EQUAL)); assertTrue(index.supports(of(UUID.class, Cardinality.SINGLE), Cmp.NOT_EQUAL)); }
Example #6
Source File: TestCoreElements.java From titan1withtp3.1 with Apache License 2.0 | 6 votes |
@Test public void testMultiplicityCardinality() { assertEquals(Multiplicity.MULTI,Multiplicity.convert(Cardinality.LIST)); assertEquals(Multiplicity.SIMPLE,Multiplicity.convert(Cardinality.SET)); assertEquals(Multiplicity.MANY2ONE,Multiplicity.convert(Cardinality.SINGLE)); assertEquals(Multiplicity.MULTI.getCardinality(),Cardinality.LIST); assertEquals(Multiplicity.SIMPLE.getCardinality(),Cardinality.SET); assertEquals(Multiplicity.MANY2ONE.getCardinality(),Cardinality.SINGLE); assertFalse(Multiplicity.MULTI.isConstrained()); assertTrue(Multiplicity.SIMPLE.isConstrained()); assertTrue(Multiplicity.ONE2ONE.isConstrained()); assertTrue(Multiplicity.ONE2ONE.isConstrained(Direction.BOTH)); assertTrue(Multiplicity.SIMPLE.isConstrained(Direction.BOTH)); assertFalse(Multiplicity.MULTI.isUnique(Direction.OUT)); assertTrue(Multiplicity.MANY2ONE.isUnique(Direction.OUT)); }
Example #7
Source File: Titan1Graph.java From incubator-atlas with Apache License 2.0 | 6 votes |
public Titan1Graph() { //determine multi-properties once at startup TitanManagement mgmt = null; try { mgmt = Titan1GraphDatabase.getGraphInstance().openManagement(); Iterable<PropertyKey> keys = mgmt.getRelationTypes(PropertyKey.class); multiProperties = new HashSet<>(); for (PropertyKey key : keys) { if (key.cardinality() != Cardinality.SINGLE) { multiProperties.add(key.name()); } } } finally { if (mgmt != null) { mgmt.rollback(); } } }
Example #8
Source File: StandardKeyInformation.java From titan1withtp3.1 with Apache License 2.0 | 5 votes |
public StandardKeyInformation(Class<?> dataType, Cardinality cardinality, Parameter... parameters) { Preconditions.checkNotNull(dataType); Preconditions.checkNotNull(parameters); this.dataType = dataType; this.parameters = parameters; this.cardinality = cardinality; }
Example #9
Source File: ManagementSystem.java From titan1withtp3.1 with Apache License 2.0 | 5 votes |
private TitanGraphIndex createCompositeIndex(String indexName, ElementCategory elementCategory, boolean unique, TitanSchemaType constraint, PropertyKey... keys) { checkIndexName(indexName); Preconditions.checkArgument(keys != null && keys.length > 0, "Need to provide keys to index [%s]", indexName); Preconditions.checkArgument(!unique || elementCategory == ElementCategory.VERTEX, "Unique indexes can only be created on vertices [%s]", indexName); boolean allSingleKeys = true; boolean oneNewKey = false; for (PropertyKey key : keys) { Preconditions.checkArgument(key != null && key instanceof PropertyKeyVertex, "Need to provide valid keys: %s", key); if (key.cardinality() != Cardinality.SINGLE) allSingleKeys = false; if (key.isNew()) oneNewKey = true; else updatedTypes.add((PropertyKeyVertex) key); } Cardinality indexCardinality; if (unique) indexCardinality = Cardinality.SINGLE; else indexCardinality = (allSingleKeys ? Cardinality.SET : Cardinality.LIST); TypeDefinitionMap def = new TypeDefinitionMap(); def.setValue(TypeDefinitionCategory.INTERNAL_INDEX, true); def.setValue(TypeDefinitionCategory.ELEMENT_CATEGORY, elementCategory); def.setValue(TypeDefinitionCategory.BACKING_INDEX, Token.INTERNAL_INDEX_NAME); def.setValue(TypeDefinitionCategory.INDEXSTORE_NAME, indexName); def.setValue(TypeDefinitionCategory.INDEX_CARDINALITY, indexCardinality); def.setValue(TypeDefinitionCategory.STATUS, oneNewKey ? SchemaStatus.ENABLED : SchemaStatus.INSTALLED); TitanSchemaVertex indexVertex = transaction.makeSchemaVertex(TitanSchemaCategory.GRAPHINDEX, indexName, def); for (int i = 0; i < keys.length; i++) { Parameter[] paras = {ParameterType.INDEX_POSITION.getParameter(i)}; addSchemaEdge(indexVertex, keys[i], TypeDefinitionCategory.INDEX_FIELD, paras); } Preconditions.checkArgument(constraint == null || (elementCategory.isValidConstraint(constraint) && constraint instanceof TitanSchemaVertex)); if (constraint != null) { addSchemaEdge(indexVertex, (TitanSchemaVertex) constraint, TypeDefinitionCategory.INDEX_SCHEMA_CONSTRAINT, null); } updateSchemaVertex(indexVertex); TitanGraphIndexWrapper index = new TitanGraphIndexWrapper(indexVertex.asIndexType()); if (!oneNewKey) updateIndex(index, SchemaAction.REGISTER_INDEX); return index; }
Example #10
Source File: BaseVertexCentricQueryBuilder.java From titan1withtp3.1 with Apache License 2.0 | 5 votes |
@Override public Q orderBy(String keyName, org.apache.tinkerpop.gremlin.process.traversal.Order order) { Preconditions.checkArgument(schemaInspector.containsPropertyKey(keyName), "Provided key does not exist: %s", keyName); PropertyKey key = schemaInspector.getPropertyKey(keyName); Preconditions.checkArgument(key != null && order != null, "Need to specify and key and an order"); Preconditions.checkArgument(Comparable.class.isAssignableFrom(key.dataType()), "Can only order on keys with comparable data type. [%s] has datatype [%s]", key.name(), key.dataType()); Preconditions.checkArgument(key.cardinality() == Cardinality.SINGLE, "Ordering is undefined on multi-valued key [%s]", key.name()); Preconditions.checkArgument(!(key instanceof SystemRelationType), "Cannot use system types in ordering: %s", key); Preconditions.checkArgument(!orders.containsKey(key)); Preconditions.checkArgument(orders.isEmpty(), "Only a single sort order is supported on vertex queries"); orders.add(key, Order.convert(order)); return getThis(); }
Example #11
Source File: LuceneIndex.java From titan1withtp3.1 with Apache License 2.0 | 5 votes |
@Override public boolean supports(KeyInformation information, TitanPredicate titanPredicate) { if (information.getCardinality()!= Cardinality.SINGLE) return false; Class<?> dataType = information.getDataType(); Mapping mapping = Mapping.getMapping(information); if (mapping!=Mapping.DEFAULT && !AttributeUtil.isString(dataType)) return false; if (Number.class.isAssignableFrom(dataType)) { if (titanPredicate instanceof Cmp) return true; } else if (dataType == Geoshape.class) { return titanPredicate == Geo.WITHIN; } else if (AttributeUtil.isString(dataType)) { switch(mapping) { case DEFAULT: case TEXT: return titanPredicate == Text.CONTAINS || titanPredicate == Text.CONTAINS_PREFIX; // || titanPredicate == Text.CONTAINS_REGEX; case STRING: return titanPredicate == Cmp.EQUAL || titanPredicate==Cmp.NOT_EQUAL || titanPredicate==Text.PREFIX || titanPredicate==Text.REGEX; } } else if (dataType == Date.class || dataType == Instant.class) { if (titanPredicate instanceof Cmp) return true; } else if (dataType == Boolean.class) { return titanPredicate == Cmp.EQUAL || titanPredicate == Cmp.NOT_EQUAL; } else if (dataType == UUID.class) { return titanPredicate == Cmp.EQUAL || titanPredicate == Cmp.NOT_EQUAL; } return false; }
Example #12
Source File: BaseKey.java From titan1withtp3.1 with Apache License 2.0 | 5 votes |
private BaseKey(String name, Class<?> dataType, int id, Index index, Cardinality cardinality) { super(name, id, TitanSchemaCategory.PROPERTYKEY); Preconditions.checkArgument(index!=null && cardinality!=null); this.dataType = dataType; this.index = index; this.cardinality = cardinality; }
Example #13
Source File: HasStepFolder.java From titan1withtp3.1 with Apache License 2.0 | 5 votes |
public static boolean validTitanOrder(OrderGlobalStep ostep, Traversal rootTraversal, boolean isVertexOrder) { for (Comparator comp : (List<Comparator>) ostep.getComparators()) { if (!(comp instanceof ElementValueComparator)) return false; ElementValueComparator evc = (ElementValueComparator) comp; if (!(evc.getValueComparator() instanceof Order)) return false; TitanTransaction tx = TitanTraversalUtil.getTx(rootTraversal.asAdmin()); String key = evc.getPropertyKey(); PropertyKey pkey = tx.getPropertyKey(key); if (pkey == null || !(Comparable.class.isAssignableFrom(pkey.dataType()))) return false; if (isVertexOrder && pkey.cardinality() != Cardinality.SINGLE) return false; } return true; }
Example #14
Source File: SolrIndex.java From titan1withtp3.1 with Apache License 2.0 | 5 votes |
@Override public boolean supports(KeyInformation information, TitanPredicate titanPredicate) { Class<?> dataType = information.getDataType(); Mapping mapping = Mapping.getMapping(information); if (mapping!=Mapping.DEFAULT && !AttributeUtil.isString(dataType)) return false; if(information.getCardinality() != Cardinality.SINGLE) { return false; } if (Number.class.isAssignableFrom(dataType)) { return titanPredicate instanceof Cmp; } else if (dataType == Geoshape.class) { return titanPredicate == Geo.WITHIN; } else if (AttributeUtil.isString(dataType)) { switch(mapping) { case DEFAULT: case TEXT: return titanPredicate == Text.CONTAINS || titanPredicate == Text.CONTAINS_PREFIX || titanPredicate == Text.CONTAINS_REGEX; case STRING: return titanPredicate == Cmp.EQUAL || titanPredicate==Cmp.NOT_EQUAL || titanPredicate==Text.REGEX || titanPredicate==Text.PREFIX; // case TEXTSTRING: // return (titanPredicate instanceof Text) || titanPredicate == Cmp.EQUAL || titanPredicate==Cmp.NOT_EQUAL; } } else if (dataType == Date.class || dataType == Instant.class) { if (titanPredicate instanceof Cmp) return true; } else if (dataType == Boolean.class) { return titanPredicate == Cmp.EQUAL || titanPredicate == Cmp.NOT_EQUAL; } else if (dataType == UUID.class) { return titanPredicate == Cmp.EQUAL || titanPredicate==Cmp.NOT_EQUAL; } return false; }
Example #15
Source File: SolrIndex.java From titan1withtp3.1 with Apache License 2.0 | 5 votes |
@Override public boolean supports(KeyInformation information) { if(information.getCardinality() != Cardinality.SINGLE) { return false; } Class<?> dataType = information.getDataType(); Mapping mapping = Mapping.getMapping(information); if (Number.class.isAssignableFrom(dataType) || dataType == Geoshape.class || dataType == Date.class || dataType == Instant.class || dataType == Boolean.class || dataType == UUID.class) { if (mapping==Mapping.DEFAULT) return true; } else if (AttributeUtil.isString(dataType)) { if (mapping==Mapping.DEFAULT || mapping==Mapping.TEXT || mapping==Mapping.STRING) return true; } return false; }
Example #16
Source File: Titan1GraphManagement.java From incubator-atlas with Apache License 2.0 | 5 votes |
@Override public AtlasPropertyKey makePropertyKey(String propertyName, Class propertyClass, AtlasCardinality cardinality) { if (cardinality.isMany()) { newMultProperties.add(propertyName); } PropertyKeyMaker propertyKeyBuilder = management.makePropertyKey(propertyName).dataType(propertyClass); if (cardinality != null) { Cardinality titanCardinality = TitanObjectFactory.createCardinality(cardinality); propertyKeyBuilder.cardinality(titanCardinality); } PropertyKey propertyKey = propertyKeyBuilder.make(); return GraphDbObjectFactory.createPropertyKey(propertyKey); }
Example #17
Source File: TitanObjectFactory.java From incubator-atlas with Apache License 2.0 | 5 votes |
/** * Converts a Multiplicity to a Cardinality. * * @param multiplicity * @return */ public static Cardinality createCardinality(AtlasCardinality cardinality) { switch(cardinality) { case SINGLE: return Cardinality.SINGLE; case LIST: return Cardinality.LIST; case SET: return Cardinality.SET; default: throw new IllegalStateException("Unrecognized cardinality: " + cardinality); } }
Example #18
Source File: GraphDbObjectFactory.java From incubator-atlas with Apache License 2.0 | 5 votes |
/** * Converts a Multiplicity to a Cardinality. * * @param cardinality * @return */ public static AtlasCardinality createCardinality(Cardinality cardinality) { if (cardinality == Cardinality.SINGLE) { return AtlasCardinality.SINGLE; } else if (cardinality == Cardinality.LIST) { return AtlasCardinality.LIST; } return AtlasCardinality.SET; }
Example #19
Source File: TitanObjectFactory.java From incubator-atlas with Apache License 2.0 | 5 votes |
/** * Converts a Multiplicity to a Cardinality. * * @param multiplicity * @return */ public static Cardinality createCardinality(AtlasCardinality cardinality) { switch(cardinality) { case SINGLE: return Cardinality.SINGLE; case LIST: return Cardinality.LIST; case SET: return Cardinality.SET; default: throw new IllegalStateException("Unrecognized cardinality: " + cardinality); } }
Example #20
Source File: GraphDbObjectFactory.java From incubator-atlas with Apache License 2.0 | 5 votes |
/** * Converts a Multiplicity to a Cardinality. * * @param cardinality * @return */ public static AtlasCardinality createCardinality(Cardinality cardinality) { if (cardinality == Cardinality.SINGLE) { return AtlasCardinality.SINGLE; } else if (cardinality == Cardinality.LIST) { return AtlasCardinality.LIST; } return AtlasCardinality.SET; }
Example #21
Source File: TitanSuite.java From peapod with Apache License 2.0 | 5 votes |
@BeforeClass public static void setGraphProvider() throws IOException { GraphTest.graphProvider = new GraphProvider() { public Graph getGraph() throws IOException { TitanGraph graph = TitanFactory.build().set("storage.backend", "inmemory").open(); TitanManagement management = graph.openManagement(); management.makePropertyKey("location").dataType(String.class).cardinality(Cardinality.LIST).make(); management.makePropertyKey("firstName").dataType(String.class).cardinality(Cardinality.LIST).make(); management.commit(); return graph; } }; }
Example #22
Source File: LuceneIndex.java From titan1withtp3.1 with Apache License 2.0 | 5 votes |
@Override public boolean supports(KeyInformation information) { if (information.getCardinality()!= Cardinality.SINGLE) return false; Class<?> dataType = information.getDataType(); Mapping mapping = Mapping.getMapping(information); if (Number.class.isAssignableFrom(dataType) || dataType == Geoshape.class || dataType == Date.class || dataType == Instant.class || dataType == Boolean.class || dataType == UUID.class) { if (mapping==Mapping.DEFAULT) return true; } else if (AttributeUtil.isString(dataType)) { if (mapping==Mapping.DEFAULT || mapping==Mapping.STRING || mapping==Mapping.TEXT) return true; } return false; }
Example #23
Source File: IndexFeatures.java From titan1withtp3.1 with Apache License 2.0 | 5 votes |
public IndexFeatures(boolean supportsDocumentTTL, Mapping defaultMap, ImmutableSet<Mapping> supportedMap, String wildcardField, ImmutableSet<Cardinality> supportedCardinaities, boolean supportsNanoseconds) { Preconditions.checkArgument(defaultMap!=null || defaultMap!=Mapping.DEFAULT); Preconditions.checkArgument(supportedMap!=null && !supportedMap.isEmpty() && supportedMap.contains(defaultMap)); this.supportsDocumentTTL = supportsDocumentTTL; this.defaultStringMapping = defaultMap; this.supportedStringMappings = supportedMap; this.wildcardField = wildcardField; this.supportedCardinaities = supportedCardinaities; this.supportsNanoseconds = supportsNanoseconds; }
Example #24
Source File: IndexProviderTest.java From titan1withtp3.1 with Apache License 2.0 | 5 votes |
@Test public void testCommonSupport() { assertTrue(index.supports(of(String.class, Cardinality.SINGLE))); assertTrue(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.TEXT)))); assertTrue(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping",Mapping.STRING)))); assertTrue(index.supports(of(Double.class, Cardinality.SINGLE))); assertFalse(index.supports(of(Double.class, Cardinality.SINGLE, new Parameter("mapping",Mapping.TEXT)))); assertTrue(index.supports(of(Long.class, Cardinality.SINGLE))); assertTrue(index.supports(of(Long.class, Cardinality.SINGLE, new Parameter("mapping",Mapping.DEFAULT)))); assertTrue(index.supports(of(Integer.class, Cardinality.SINGLE))); assertTrue(index.supports(of(Short.class, Cardinality.SINGLE))); assertTrue(index.supports(of(Byte.class, Cardinality.SINGLE))); assertTrue(index.supports(of(Float.class, Cardinality.SINGLE))); assertTrue(index.supports(of(Geoshape.class, Cardinality.SINGLE))); assertFalse(index.supports(of(Object.class, Cardinality.SINGLE))); assertFalse(index.supports(of(Exception.class, Cardinality.SINGLE))); assertTrue(index.supports(of(Double.class, Cardinality.SINGLE), Cmp.EQUAL)); assertTrue(index.supports(of(Double.class, Cardinality.SINGLE), Cmp.GREATER_THAN_EQUAL)); assertTrue(index.supports(of(Double.class, Cardinality.SINGLE), Cmp.LESS_THAN)); assertTrue(index.supports(of(Double.class, Cardinality.SINGLE, new Parameter("mapping",Mapping.DEFAULT)), Cmp.LESS_THAN)); assertFalse(index.supports(of(Double.class, Cardinality.SINGLE, new Parameter("mapping",Mapping.TEXT)), Cmp.LESS_THAN)); assertTrue(index.supports(of(Geoshape.class, Cardinality.SINGLE), Geo.WITHIN)); assertFalse(index.supports(of(Double.class, Cardinality.SINGLE), Geo.INTERSECT)); assertFalse(index.supports(of(Long.class, Cardinality.SINGLE), Text.CONTAINS)); assertFalse(index.supports(of(Geoshape.class, Cardinality.SINGLE), Geo.DISJOINT)); }
Example #25
Source File: PropertyKeyDefinition.java From titan1withtp3.1 with Apache License 2.0 | 4 votes |
public PropertyKeyDefinition(String name, long id, Cardinality cardinality, Class dataType) { this(name,id,Multiplicity.convert(cardinality),dataType); }
Example #26
Source File: LuceneIndexTest.java From titan1withtp3.1 with Apache License 2.0 | 4 votes |
@Test public void testSupport() { // DEFAULT(=TEXT) support assertTrue(index.supports(of(String.class, Cardinality.SINGLE), Text.CONTAINS)); assertTrue(index.supports(of(String.class, Cardinality.SINGLE), Text.CONTAINS_PREFIX)); assertFalse(index.supports(of(String.class, Cardinality.SINGLE), Text.CONTAINS_REGEX)); // TODO Not supported yet assertFalse(index.supports(of(String.class, Cardinality.SINGLE), Text.REGEX)); assertFalse(index.supports(of(String.class, Cardinality.SINGLE), Text.PREFIX)); assertFalse(index.supports(of(String.class, Cardinality.SINGLE), Cmp.EQUAL)); assertFalse(index.supports(of(String.class, Cardinality.SINGLE), Cmp.NOT_EQUAL)); // Same tests as above, except explicitly specifying TEXT instead of relying on DEFAULT assertTrue(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.TEXT)), Text.CONTAINS)); assertTrue(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.TEXT)), Text.CONTAINS_PREFIX)); assertFalse(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.TEXT)), Text.CONTAINS_REGEX)); // TODO Not supported yet assertFalse(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.TEXT)), Text.REGEX)); assertFalse(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.TEXT)), Text.PREFIX)); assertFalse(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.TEXT)), Cmp.EQUAL)); assertFalse(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.TEXT)), Cmp.NOT_EQUAL)); // STRING support assertFalse(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.STRING)), Text.CONTAINS)); assertFalse(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.STRING)), Text.CONTAINS_PREFIX)); assertTrue(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.STRING)), Text.REGEX)); assertTrue(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.STRING)), Text.PREFIX)); assertTrue(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.STRING)), Cmp.EQUAL)); assertTrue(index.supports(of(String.class, Cardinality.SINGLE, new Parameter("mapping", Mapping.STRING)), Cmp.NOT_EQUAL)); assertTrue(index.supports(of(Date.class, Cardinality.SINGLE), Cmp.EQUAL)); assertTrue(index.supports(of(Date.class, Cardinality.SINGLE), Cmp.LESS_THAN_EQUAL)); assertTrue(index.supports(of(Date.class, Cardinality.SINGLE), Cmp.LESS_THAN)); assertTrue(index.supports(of(Date.class, Cardinality.SINGLE), Cmp.GREATER_THAN)); assertTrue(index.supports(of(Date.class, Cardinality.SINGLE), Cmp.GREATER_THAN_EQUAL)); assertTrue(index.supports(of(Date.class, Cardinality.SINGLE), Cmp.NOT_EQUAL)); assertTrue(index.supports(of(Boolean.class, Cardinality.SINGLE), Cmp.EQUAL)); assertTrue(index.supports(of(Boolean.class, Cardinality.SINGLE), Cmp.NOT_EQUAL)); assertTrue(index.supports(of(UUID.class, Cardinality.SINGLE), Cmp.EQUAL)); assertTrue(index.supports(of(UUID.class, Cardinality.SINGLE), Cmp.NOT_EQUAL)); }
Example #27
Source File: IndexProviderTest.java From titan1withtp3.1 with Apache License 2.0 | 4 votes |
public static StandardKeyInformation of(Class<?> clazz, Cardinality cardinality, Parameter... paras) { return new StandardKeyInformation(clazz, cardinality, paras); }
Example #28
Source File: TitanIndexTest.java From titan1withtp3.1 with Apache License 2.0 | 4 votes |
@Test public void testDualMapping() { if (!indexFeatures.supportsStringMapping(Mapping.TEXTSTRING)) return; PropertyKey name = makeKey("name", String.class); TitanGraphIndex mixed = mgmt.buildIndex("mixed", Vertex.class).addKey(name, Mapping.TEXTSTRING.asParameter()).buildMixedIndex(INDEX); mixed.name(); finishSchema(); tx.addVertex("name", "Long John Don"); tx.addVertex("name", "Long Little Lewis"); tx.addVertex("name", "Middle Sister Mabel"); clopen(); evaluateQuery(tx.query().has("name", Cmp.EQUAL, "Long John Don"), ElementCategory.VERTEX, 1, new boolean[]{true, true}, "mixed"); evaluateQuery(tx.query().has("name", Text.CONTAINS, "Long"), ElementCategory.VERTEX, 2, new boolean[]{true, true}, "mixed"); evaluateQuery(tx.query().has("name", Text.CONTAINS, "Long Don"), ElementCategory.VERTEX, 1, new boolean[]{true, true}, "mixed"); evaluateQuery(tx.query().has("name", Text.CONTAINS_PREFIX, "Lon"), ElementCategory.VERTEX, 2, new boolean[]{true, true}, "mixed"); evaluateQuery(tx.query().has("name", Text.CONTAINS_REGEX, "Lit*le"), ElementCategory.VERTEX, 1, new boolean[]{true, true}, "mixed"); evaluateQuery(tx.query().has("name", Text.REGEX, "Long.*"), ElementCategory.VERTEX, 2, new boolean[]{true, true}, "mixed"); evaluateQuery(tx.query().has("name", Text.PREFIX, "Middle"), ElementCategory.VERTEX, 1, new boolean[]{true, true}, "mixed"); for (Vertex u : tx.getVertices()) { String n = u.<String>value("name"); if (n.endsWith("Don")) { u.remove(); } else if (n.endsWith("Lewis")) { u.property(VertexProperty.Cardinality.single, "name", "Big Brother Bob"); } else if (n.endsWith("Mabel")) { u.property("name").remove(); } } clopen(); evaluateQuery(tx.query().has("name", Text.CONTAINS, "Long"), ElementCategory.VERTEX, 0, new boolean[]{true, true}, "mixed"); evaluateQuery(tx.query().has("name", Text.CONTAINS, "Big"), ElementCategory.VERTEX, 1, new boolean[]{true, true}, "mixed"); evaluateQuery(tx.query().has("name", Text.PREFIX, "Big"), ElementCategory.VERTEX, 1, new boolean[]{true, true}, "mixed"); evaluateQuery(tx.query().has("name", Text.PREFIX, "Middle"), ElementCategory.VERTEX, 0, new boolean[]{true, true}, "mixed"); }
Example #29
Source File: TitanIndexTest.java From titan1withtp3.1 with Apache License 2.0 | 4 votes |
@Category({BrittleTests.class}) @Test public void testIndexReplay() throws Exception { final TimestampProvider times = graph.getConfiguration().getTimestampProvider(); final Instant startTime = times.getTime(); clopen(option(SYSTEM_LOG_TRANSACTIONS), true , option(KCVSLog.LOG_READ_LAG_TIME, TRANSACTION_LOG), Duration.ofMillis(50) , option(LOG_READ_INTERVAL, TRANSACTION_LOG), Duration.ofMillis(250) , option(MAX_COMMIT_TIME), Duration.ofSeconds(1) , option(STORAGE_WRITE_WAITTIME), Duration.ofMillis(300) , option(TestMockIndexProvider.INDEX_BACKEND_PROXY, INDEX), readConfig.get(INDEX_BACKEND, INDEX) , option(INDEX_BACKEND, INDEX), TestMockIndexProvider.class.getName() , option(TestMockIndexProvider.INDEX_MOCK_FAILADD, INDEX), true ); PropertyKey name = mgmt.makePropertyKey("name").dataType(String.class).make(); PropertyKey age = mgmt.makePropertyKey("age").dataType(Integer.class).make(); mgmt.buildIndex("mi", Vertex.class).addKey(name, getTextMapping()).addKey(age).buildMixedIndex(INDEX); finishSchema(); Vertex vs[] = new TitanVertex[4]; vs[0] = tx.addVertex("name", "Big Boy Bobson", "age", 55); newTx(); vs[1] = tx.addVertex("name", "Long Little Lewis", "age", 35); vs[2] = tx.addVertex("name", "Tall Long Tiger", "age", 75); vs[3] = tx.addVertex("name", "Long John Don", "age", 15); newTx(); vs[2] = getV(tx, vs[2]); vs[2].remove(); vs[3] = getV(tx, vs[3]); vs[3].property(VertexProperty.Cardinality.single, "name", "Bad Boy Badsy"); vs[3].property("age").remove(); newTx(); vs[0] = getV(tx, vs[0]); vs[0].property(VertexProperty.Cardinality.single, "age", 66); newTx(); clopen(); //Just to make sure nothing has been persisted to index evaluateQuery(tx.query().has("name", Text.CONTAINS, "boy"), ElementCategory.VERTEX, 0, new boolean[]{true, true}, "mi"); /* Transaction Recovery */ TransactionRecovery recovery = TitanFactory.startTransactionRecovery(graph, startTime); //wait Thread.sleep(12000L); recovery.shutdown(); long[] recoveryStats = ((StandardTransactionLogProcessor) recovery).getStatistics(); clopen(); evaluateQuery(tx.query().has("name", Text.CONTAINS, "boy"), ElementCategory.VERTEX, 2, new boolean[]{true, true}, "mi"); evaluateQuery(tx.query().has("name", Text.CONTAINS, "long"), ElementCategory.VERTEX, 1, new boolean[]{true, true}, "mi"); // TitanVertex v = Iterables.getOnlyElement(tx.query().has("name",Text.CONTAINS,"long").vertices()); // System.out.println(v.getProperty("age")); evaluateQuery(tx.query().has("name", Text.CONTAINS, "long").interval("age", 30, 40), ElementCategory.VERTEX, 1, new boolean[]{true, true}, "mi"); evaluateQuery(tx.query().has("age", 75), ElementCategory.VERTEX, 0, new boolean[]{true, true}, "mi"); evaluateQuery(tx.query().has("name", Text.CONTAINS, "boy").interval("age", 60, 70), ElementCategory.VERTEX, 1, new boolean[]{true, true}, "mi"); evaluateQuery(tx.query().interval("age", 0, 100), ElementCategory.VERTEX, 2, new boolean[]{true, true}, "mi"); assertEquals(1, recoveryStats[0]); //schema transaction was successful assertEquals(4, recoveryStats[1]); //all 4 index transaction had provoked errors in the indexing backend }
Example #30
Source File: TitanIndexTest.java From titan1withtp3.1 with Apache License 2.0 | 4 votes |
@Test public void testVertexTTLWithMixedIndices() throws Exception { if (!features.hasCellTTL() || !indexFeatures.supportsDocumentTTL()) { return; } PropertyKey name = makeKey("name", String.class); PropertyKey time = makeKey("time", Long.class); PropertyKey text = makeKey("text", String.class); VertexLabel event = mgmt.makeVertexLabel("event").setStatic().make(); final int eventTTLSeconds = (int) TestGraphConfigs.getTTL(TimeUnit.SECONDS); mgmt.setTTL(event, Duration.ofSeconds(eventTTLSeconds)); mgmt.buildIndex("index1", Vertex.class). addKey(name, getStringMapping()).addKey(time).buildMixedIndex(INDEX); mgmt.buildIndex("index2", Vertex.class).indexOnly(event). addKey(text, getTextMapping()).buildMixedIndex(INDEX); assertEquals(Duration.ZERO, mgmt.getTTL(name)); assertEquals(Duration.ZERO, mgmt.getTTL(time)); assertEquals(Duration.ofSeconds(eventTTLSeconds), mgmt.getTTL(event)); finishSchema(); TitanVertex v1 = tx.addVertex("event"); v1.property(VertexProperty.Cardinality.single, "name", "first event"); v1.property(VertexProperty.Cardinality.single, "text", "this text will help to identify the first event"); long time1 = System.currentTimeMillis(); v1.property(VertexProperty.Cardinality.single, "time", time1); TitanVertex v2 = tx.addVertex("event"); v2.property(VertexProperty.Cardinality.single, "name", "second event"); v2.property(VertexProperty.Cardinality.single, "text", "this text won't match"); long time2 = time1 + 1; v2.property(VertexProperty.Cardinality.single, "time", time2); evaluateQuery(tx.query().has("name", "first event").orderBy("time", decr), ElementCategory.VERTEX, 1, new boolean[]{true, true}, tx.getPropertyKey("time"), Order.DESC, "index1"); evaluateQuery(tx.query().has("text", Text.CONTAINS, "help").has(LABEL_NAME, "event"), ElementCategory.VERTEX, 1, new boolean[]{true, true}, "index2"); clopen(); Object v1Id = v1.id(); Object v2Id = v2.id(); evaluateQuery(tx.query().has("name", "first event").orderBy("time", decr), ElementCategory.VERTEX, 1, new boolean[]{true, true}, tx.getPropertyKey("time"), Order.DESC, "index1"); evaluateQuery(tx.query().has("text", Text.CONTAINS, "help").has(LABEL_NAME, "event"), ElementCategory.VERTEX, 1, new boolean[]{true, true}, "index2"); v1 = getV(tx, v1Id); v2 = getV(tx, v1Id); assertNotNull(v1); assertNotNull(v2); Thread.sleep(TimeUnit.MILLISECONDS.convert((long) Math.ceil(eventTTLSeconds * 1.25), TimeUnit.SECONDS)); clopen(); Thread.sleep(TimeUnit.MILLISECONDS.convert((long) Math.ceil(eventTTLSeconds * 1.25), TimeUnit.SECONDS)); evaluateQuery(tx.query().has("text", Text.CONTAINS, "help").has(LABEL_NAME, "event"), ElementCategory.VERTEX, 0, new boolean[]{true, true}, "index2"); evaluateQuery(tx.query().has("name", "first event").orderBy("time", decr), ElementCategory.VERTEX, 0, new boolean[]{true, true}, tx.getPropertyKey("time"), Order.DESC, "index1"); v1 = getV(tx, v1Id); v2 = getV(tx, v2Id); assertNull(v1); assertNull(v2); }