//SFAC6 in Neo4j Cypher syntax CREATE (Term:Term {name: "Term"}) CREATE (Report:Term {name: "Report"}) CREATE (Association:Term{name: "Association"}) CREATE (Structure:Term {name: "Structure"}) CREATE (Rule:Term {name: "Rule"}) CREATE (Fact:Term {name: "Fact"}) CREATE (Assets:Term {name: "Assets", balance: "debit", period:"instant"}) CREATE (Liabilities:Term {name: "Liabilities", balance: "credit", period:"instant"}) CREATE (Equity:Term {name: "Equity", balance: "credit", period:"instant"}) CREATE (ComprehensiveIncome:Term {name: "ComprehensiveIncome", balance: "credit", period:"duration"}) CREATE (InvestmentsByOwners:Term {name: "InvestmentsByOwners", balance: "credit", period:"duration"}) CREATE (DistributionsToOwners:Term {name: "DistributionsToOwners", balance: "debit", period:"duration"}) CREATE (Revenues:Term {name: "Revenues", balance: "credit", period:"duration"}) CREATE (Expenses:Term {name: "Expenses", balance: "debit", period:"duration"}) CREATE (Gains:Term {name: "Gains", balance: "credit", period:"duration"}) CREATE (Losses:Term {name: "Losses", balance: "debit", period:"duration"}) CREATE (BalanceSheetBalances:Rule {name: "Assets = Liabilities + Equity"}) CREATE (IncomeStatementFoots:Rule {name: "ComprehensiveIncome = Revenues - Expenses + Gains - Losses"}) CREATE (ChangeInEquityRollsForward:Rule {name: "Equity_Ending = Equity_Beginning + ComprehensiveIncome + InvestmentsByOwners - DistributionsToOwners"}) CREATE (BalanceSheet:Structure {name: "Balance Sheet"}) CREATE (IncomeStatement:Structure {name: "Income Statement"}) CREATE (ChangesInEquity:Structure {name: "Changes in Equity"}) CREATE (Assets)-[:IS_A]->(Term) CREATE (Liabilities)-[:IS_A]->(Term) CREATE (Equity)-[:IS_A]->(Term) CREATE (ComprehensiveIncome)-[:IS_A]->(Term) CREATE (InvestmentsByOwners)-[:IS_A]->(Term) CREATE (DistributionsToOwners)-[:IS_A]->(Term) CREATE (Revenues)-[:IS_A]->(Term) CREATE (Expenses)-[:IS_A]->(Term) CREATE (Gains)-[:IS_A]->(Term) CREATE (Losses)-[:IS_A]->(Term) CREATE (Term)-[:PART_OF]->(Association) CREATE (Association)-[:PART_OF]->(Structure) CREATE (Structure)-[:PART_OF]->(Report) CREATE (Rule)-[:PART_OF]->(Report) CREATE (Fact)-[:PART_OF]->(Report) CREATE (BalanceSheetBalances)-[:IS_A]->(Rule) CREATE (IncomeStatementFoots)-[:IS_A]->(Rule) CREATE (ChangeInEquityRollsForward)-[:IS_A]->(Rule) CREATE (BalanceSheet)-[:IS_A]->(Structure) CREATE (IncomeStatement)-[:IS_A]->(Structure) CREATE (ChangesInEquity)-[:IS_A]->(Structure) CREATE (BalanceSheetBalances)-[:PART_OF]->(BalanceSheet) CREATE (IncomeStatementFoots)-[:PART_OF]->(IncomeStatement) CREATE (ChangeInEquityRollsForward)-[:PART_OF]->(ChangesInEquity) CREATE (ID0001:Fact {name: 'Assets for ABC company as of December 31, 2019 $0', concept:'ae:Assets', entityScheme:'http://standards.iso.org/iso/17442', entity:'GH259400TOMPUOLS65II', period:'2019-12-31', rounding:'INF', units:'iso4217:USD', value:'0'}) CREATE (ID0002:Fact {name: 'Liabilities for ABC company as of December 31, 2019 $0', concept:'ae:Liabilities', entityScheme:'http://standards.iso.org/iso/17442', entity:'GH259400TOMPUOLS65II', period:'2019-12-31', rounding:'INF', units:'iso4217:USD', value:'0'}) CREATE (ID0003:Fact {name: 'Equity for ABC company as of December 31, 2019 $0', concept:'ae:Equity', entityScheme:'http://standards.iso.org/iso/17442', entity:'GH259400TOMPUOLS65II', period:'2019-12-31', rounding:'INF', units:'iso4217:USD', value:'0'}) CREATE (ID1001:Fact {name: 'Assets for ABC company as of December 31, 2020 $3,500', concept:'ae:Assets', entityScheme:'http://standards.iso.org/iso/17442', entity:'GH259400TOMPUOLS65II', period:'2020-12-31', rounding:'INF', units:'iso4217:USD', value:'3500'}) CREATE (ID1002:Fact {name: 'Liabilities for ABC company as of December 31, 2020 $0', concept:'ae:Liabilities', entityScheme:'http://standards.iso.org/iso/17442', entity:'GH259400TOMPUOLS65II', period:'2020-12-31', rounding:'INF', units:'iso4217:USD', value:'0'}) CREATE (ID1003:Fact {name: 'Equity for ABC company as of December 31, 2020 $3,500', concept:'ae:Equity', entityScheme:'http://standards.iso.org/iso/17442', entity:'GH259400TOMPUOLS65II', period:'2020-12-31', rounding:'INF', units:'iso4217:USD', value:'3500'}) CREATE (ID1004:Fact {name: 'ComprehensiveIncome for ABC company for the year ended December 31, 2020 $3,000', concept:'ae:ComprehensiveIncome', entityScheme:'http://standards.iso.org/iso/17442', entity:'GH259400TOMPUOLS65II', period:'2020-01-01/2020-12-31', rounding:'INF', units:'iso4217:USD', value:'3000'}) CREATE (ID1005:Fact {name: 'InvestmentsByOwners for ABC company for the year ended December 31, 2020 $1,000', concept:'ae:InvestmentsByOwners', entityScheme:'http://standards.iso.org/iso/17442', entity:'GH259400TOMPUOLS65II', period:'2020-01-01/2020-12-31', rounding:'INF', units:'iso4217:USD', value:'1000'}) CREATE (ID1006:Fact {name: 'DistributionsToOwners for ABC company for the year ended December 31, 2020 $500', concept:'ae:DistributionsToOwners', entityScheme:'http://standards.iso.org/iso/17442', entity:'GH259400TOMPUOLS65II', period:'2020-01-01/2020-12-31', rounding:'INF', units:'iso4217:USD', value:'500'}) CREATE (ID1007:Fact {name: 'Revenues for ABC company for the year ended December 31, 2020 $7,000', concept:'ae:Revenues', entityScheme:'http://standards.iso.org/iso/17442', entity:'GH259400TOMPUOLS65II', period:'2020-01-01/2020-12-31', rounding:'INF', units:'iso4217:USD', value:'7000'}) CREATE (ID1008:Fact {name: 'Expenses for ABC company for the year ended December 31, 2020 $3,000', concept:'ae:Expenses', entityScheme:'http://standards.iso.org/iso/17442', entity:'GH259400TOMPUOLS65II', period:'2020-01-01/2020-12-31', rounding:'INF', units:'iso4217:USD', value:'3000'}) CREATE (ID1009:Fact {name: 'Gains for ABC company for the year ended December 31, 2020 $1,000', concept:'ae:Gains', entityScheme:'http://standards.iso.org/iso/17442', entity:'GH259400TOMPUOLS65II', period:'2020-01-01/2020-12-31', rounding:'INF', units:'iso4217:USD', value:'1000'}) CREATE (ID1010:Fact {name: 'Losses for ABC company for the year ended December 31, 2020 $2,000', concept:'ae:Losses', entityScheme:'http://standards.iso.org/iso/17442', entity:'GH259400TOMPUOLS65II', period:'2020-01-01/2020-12-31', rounding:'INF', units:'iso4217:USD', value:'2000'}) CREATE (ID0001)-[:IS_A]->(Fact) CREATE (ID0002)-[:IS_A]->(Fact) CREATE (ID0003)-[:IS_A]->(Fact) CREATE (ID1001)-[:IS_A]->(Fact) CREATE (ID1002)-[:IS_A]->(Fact) CREATE (ID1003)-[:IS_A]->(Fact) CREATE (ID1004)-[:IS_A]->(Fact) CREATE (ID1005)-[:IS_A]->(Fact) CREATE (ID1006)-[:IS_A]->(Fact) CREATE (ID1007)-[:IS_A]->(Fact) CREATE (ID1008)-[:IS_A]->(Fact) CREATE (ID1009)-[:IS_A]->(Fact) CREATE (ID1010)-[:IS_A]->(Fact) CREATE (ID0001)-[:IS_A]->(Assets) CREATE (ID0002)-[:IS_A]->(Liabilities) CREATE (ID0003)-[:IS_A]->(Equity) CREATE (ID1001)-[:IS_A]->(Assets) CREATE (ID1002)-[:IS_A]->(Liabilities) CREATE (ID1003)-[:IS_A]->(Equity) CREATE (ID1004)-[:IS_A]->(ComprehensiveIncome) CREATE (ID1005)-[:IS_A]->(InvestmentsByOwners) CREATE (ID1006)-[:IS_A]->(DistributionsToOwners) CREATE (ID1007)-[:IS_A]->(Revenues) CREATE (ID1008)-[:IS_A]->(Expenses) CREATE (ID1009)-[:IS_A]->(Gains) CREATE (ID1010)-[:IS_A]->(Losses) CREATE (Assets)-[:PART_OF]->(BalanceSheet) CREATE (Liabilities)-[:PART_OF]->(BalanceSheet) CREATE (Equity)-[:PART_OF]->(BalanceSheet) CREATE (Equity)-[:PART_OF]->(ChangesInEquity) CREATE (ComprehensiveIncome)-[:PART_OF]->(ChangesInEquity) CREATE (InvestmentsByOwners)-[:PART_OF]->(ChangesInEquity) CREATE (DistributionsToOwners)-[:PART_OF]->(ChangesInEquity) CREATE (Revenues)-[:PART_OF]->(IncomeStatement) CREATE (Expenses)-[:PART_OF]->(IncomeStatement) CREATE (Gains)-[:PART_OF]->(IncomeStatement) CREATE (Losses)-[:PART_OF]->(IncomeStatement) CREATE (ComprehensiveIncome)-[:PART_OF]->(IncomeStatement) WITH "$Assets = $Liabilities + $Equity" as Formula CALL apoc.cypher.run("return " + Formula + " as value", { Assets: 0, Liabilities: 0, Equity: 0 }) yield value as result RETURN result.value WITH "$Assets = $Liabilities + $Equity" as Formula CALL apoc.cypher.run("return " + Formula + " as value", { Assets: 5000, Liabilities: 1000, Equity: 4000 }) yield value as result RETURN result.value WITH "$Equity_Ending = $Equity_Beginning + $ComprehensiveIncome + $InvestmentsByOwners - $DistributionsToOwners" as Formula CALL apoc.cypher.run("return " + Formula + " as value", { Equity_Beginning: 0, Equity_Ending: 3500, ComprehensiveIncome: 3000, InvestmentsByOwners: 1000, DistributionsToOwners: 500 }) yield value as result RETURN result.value WITH "$ComprehensiveIncome = $Revenues - $Expenses + $Gains - $Losses" as Formula CALL apoc.cypher.run("return " + Formula + " as value", { Revenues: 5000, Expenses: 1000, Gains: 1000, Losses: 2000, ComprehensiveIncome: 3000 }) yield value as result RETURN result.value