140 likes | 245 Vues
Sphinx a user-friendly assertion language. David North Senior Developer, CoreFiling Eurofiling 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
E N D
Sphinx a user-friendly assertion language David North Senior Developer, CoreFiling Eurofiling 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)