Sphinx a user-friendly assertion language David North Senior Developer, CoreFiling Eurofiling Workshop, Luxembourg, December 2013
Dec 24, 2015
Sphinx a user-friendly assertion language
David NorthSenior Developer, CoreFilingEurofiling Workshop, Luxembourg, December 2013
What is Sphinx?
• Domain-specific language for making assertions about XBRL facts
• High-level, semantic, based on an n-dimensional world
• Not XML• Designed for humans to write and
edit directly• Proprietary
History
• 2009 – first prototypes• 2011 – stable language reaches 1.0• 2012 – version 2.0 incorporating real-
world feedback requiring breaking changes
• 2013 – (later abandoned) attempt to offer the Sphinx IP to XBRL International
The requirements Sphinx grew from• XBRL US (XUSI) – development of the
XBRL US Consistency Checks for quality/consistency of SEC filings
• CIMA – regulator needing to check quality/consistency of incoming instances
• Replaced a stopgap spreadsheet-based solution
Who uses it?
• XUSI• CIMA• HMRC
Proprietary: Disadvantages
• Not an XII standard• Fewer options for implementations• Difficult for a regulator to mandate
its usage by filers• Can't be part of DTS
Proprietary: Advantages
• High quality tools available from CoreFiling
• Fast evolution of the language in response to customer feedback
What can it be used for?
• Rapid creation of business and accounting rules
• Typical checks might include:– X must be reported– Co-constraints (if X is reported, Y must
be too)– Comparing data across dimensions
The language
• Based on item expressions• The most basic: [ ]• Represents the table of all items in
the instance. Operations on it apply to every cell in turn
• Restrict by axes (“aspects” in XBRL formula)– FooConcept[ ] – restriction to facts with
FooConcept– [Geography=UK, Product=Cheese] –
restricts dimensions
Lining up
How is the following expression evaluated?
Revenue[ ] = SalesRevenue[ ] + RentRevenue[ ]
Examples
Please refer to accompanying file “Sphinx Examples.txt”
Tools
• Rules authored in SpiderMonkey, potentially alongside taxonomy development– Can test against instances here
• Can plug authored “rulebase” into other CoreFiling tools both for GUI-based instance validation and command-line/web based validation (e.g. filter gateway).
Sphinx vs XBRL formula
• Sphinx does lining up (implicit filtering) by default
• Sphinx cannot do fact creation• Sphinx cannot use XPath• User-defined Sphinx functions are in-
language only (no ability to make them implementation-defined)
Questions?