Source: synthetic_gpt4o_demodbs (Neo4j text2cypher)
Total valid queries: 507
Entities, officers, intermediaries, addresses.
queries.csv: 498 converted queries- 9 failed queries
Total: 498 + 9 = 507 / 507 ✓
Reason: Schema mismatch — Cypher uses similar relation between Entity and Other, but in TypeQL schema the other entity does not play similar relation roles (only intermediary and officer can participate).
MATCH (e:Entity)-[:similar]->(o:Other)
WHERE o.name = 'Top Games Holdings Inc.'
RETURN e.name AS EntityName, e.address AS EntityAddressReason: Schema mismatch — the other entity type does not play any role in the similar relation. Only intermediary and officer can participate.
MATCH (e:Entity)-[:similar]->(o:Other)
WHERE o.name = 'NINGBO SUNRISE ENTERPRISES UNITED CO., LTD.'
RETURN e.name AS entity_name, e.address AS entity_addressReason: Date month extraction — Cypher uses STARTS WITH 'MAR' on date field. TypeQL date type does not support string pattern matching or month extraction functions.
MATCH (e:Entity)
WHERE e.jurisdiction_description = 'Samoa' AND e.incorporation_date STARTS WITH 'MAR'
RETURN e.name, e.incorporation_dateReason: Date component extraction — Cypher uses SPLIT() and array indexing to extract year from date strings. TypeQL has no SPLIT(), array indexing, or year() function.
MATCH (e:Entity)
WHERE e.incorporation_date IS NOT NULL AND e.struck_off_date IS NOT NULL
WITH e,
toInteger(SPLIT(e.incorporation_date, "-")[2]) AS incorporation_year,
toInteger(SPLIT(e.struck_off_date, "-")[2]) AS struck_off_year
WHERE incorporation_year = struck_off_year
RETURN e.name AS entity_name, e.incorporation_date, e.struck_off_dateReason: Schema mismatch — offshore_entity does not play any role in the similar relation, and other entity does not have address attribute. The similar relation only connects intermediary and officer entities.
MATCH (e:Entity)-[:similar]->(o:Other)
WHERE e.name = 'HOTFOCUS CO., LTD.'
RETURN o.name AS similar_name, o.address AS similar_addressReason: Date component extraction — requires substring() to extract year from date. TypeQL has no date component extraction or string substring functions.
MATCH (e:Entity)
WHERE e.struck_off_date IS NOT NULL AND e.inactivation_date IS NOT NULL
AND substring(e.struck_off_date, -4) = substring(e.inactivation_date, -4)
RETURN e.name AS entity_name, e.struck_off_date, e.inactivation_dateReason: Date component extraction — substring() for year comparison not supported in TypeQL.
MATCH (e:Entity)
WHERE e.incorporation_date IS NOT NULL AND e.struck_off_date IS NOT NULL
AND substring(e.incorporation_date, -4) = substring(e.struck_off_date, -4)
RETURN e.name AS entity_name, e.incorporation_date, e.struck_off_dateReason: Dynamic string contains — Cypher uses CONTAINS between two variables. TypeQL's like operator requires a literal pattern string, not a variable reference.
MATCH (i:Intermediary)-[:registered_address]->(a:Address)
WHERE NOT i.countries CONTAINS a.countries
RETURN i.name AS IntermediaryName, i.countries AS IntermediaryCountry, a.address AS RegisteredAddress, a.countries AS AddressCountryReason: Schema mismatch — same as queries 41/61. offshore_entity and other do not play similar roles; only intermediary and officer can participate.
MATCH (e:Entity)-[:similar]->(o:Other)
WHERE o.name = 'NINGBO SUNRISE ENTERPRISES UNITED CO., LTD.'
RETURN e.name AS EntityName, e.address AS EntityAddressPreviously failed due to schema mismatch (officer vs intermediary types). Reinterpreted from English: intermediaries connected to >1 offshore entity, using entity_count() custom function.
Previously failed due to collect() + size(). Converted using address_count() function counting distinct postal_address entities per offshore_entity via registered_address relation.
Previously failed due to split() + size() on semicolon-delimited string. Reinterpreted using TypeQL multi-cardinality: count distinct former_name attributes > 1.
Previously failed due to officer entity missing status attribute. Added owns status to officer entity in schema, then converted using simple attribute filter.
Previously failed due to STARTS WITH 'FEB-2013' string pattern matching on dates. Converted using date range comparison: $d >= 2013-02-01; $d < 2013-03-01;.