Solvency II ontology


The Financial Regulation XBRL ontology is a one-to-one OWL/RDF representation of the XBRL (eXtensible Business Reporting Language) schema.

Operational XBRL ontologies like the  US Call Report and EU Solvency include FinRegOnt as a core ontology. The operational ontologies are also one-to-one conversions of their respective taxonomy schemata. The objective is not to design a better XBRL reporting ontology. The requirement is solely to import/export between RDF/OWL and XBRL:

  • For financial institutions to create XBRL instances from data in the sub-domain ontologies, Banking, Fund, Hedge Fund, and Insurance.
  • For regulators and analysts to load XBRL instance files into ontologies.

The ontology must be complete, covering all elements in the XML schema and all XBRL specifications, to meet the requirement.

We used the Topbraid Maestro ontology tool to import the XML schema and manually adjusted namespaces and resource names.

The resulting ontology fulfilled completeness requirement for tested US Call Report and EU Solvency II taxonomy.


XBRL is the dominant global standard for exchanging business information. A US CPA (certified public accountant), Charlie Hoffman invented XBRL in 1998 as a semantic standard based on XML (eXtensible Markup Language) syntax. The Securities and Exchange Commission (SEC) and the Federal Deposit Insurance Corporation (FDIC) mandate financial filings in XBRL.

Global adaptation came along with International Financial Reporting Standards (IFRS). European regulators for Banking and Insurance define reporting requirements as XBRL Taxonomies. Compliance filings are XBRL instance files.

Ontology Web Language (OWL) defines the semantics of concepts, their relationships, and axioms. Compliance crosses the domains of Finance and Legal.

Figure 1 shows how the Financial Regulation Ontology modules import XBRL and regulatory taxonomies.

Financial Regulation Ontoogy modules integrate XBRL and regulators
Figure 1: XBRL and Financial Regulation Ontology conceptual integration

Solid arrows are ontology from ontology imports and XSD from XSD imports. For example: FinRegOnt imports FIBO. Eurofiling imports XBRL

Dashed arrows are imports of XSD into the ontology. For example: FinRegOnt imports XBRL schema into an OWL representation. Insurance Ontology imports the EIOPA Solvency taxonomy. schema.

Finance and Legal domains have widely cited and adapted reference ontologies.

The Financial Industry Business Ontology (FIBO) is a collaboration between the Enterprise Data Management Council (EDMC) and the Object Management Group. The EDMC leads design in collaboration with major Financial Institutions. OMG provides governance and publishes FIBO as a formal standard.

(EDM Council)

The Legal Knowledge Interchange Format (LKIF) models legal rules of the kind found in legislation and regulations. It was the main deliverable of the European project for Standardized Transparent Representations to Extend Legal Accessibility (Estrella, IST-2004-027655)

(ESTRELLA project)

The Financial Regulation Ontology (FinRegOnt) extends and aligns the two domain reference ontologies. Ontology Alignment establishes the relationship of equivalent concepts in FIBO and LKIF. It enables queries and reasoning across the domains. FIBO extensions define subclasses for specific funds, hedge funds, banks and insurances. LKIF extensions cover the regulatory framework, laws, regulations, legal reasoning and forms.

An ontology must hold source data to be operational .

The Financial Regulation Ontology instantiate classes with real financial and legal data. To be useful a compliance ontology must create and load regulatory filings and reports. The Hedge Fund ontology has an OWL representation of SEC form PF (private fund). The Fund ontology has an OWL version of SEC form ADV (investment adviser) and loads a subset of public filing data into FIBO. The forms are in XML, but not XBRL. The Bank ontology has the XBRL US Call Report (Federal Financial Institutions Examination Council, FFIEC 031) as an example. The prototype shows how reproduce the FFIEC public report with a select statement in the ontology query language, SPARQL. The FDIC Call Report is just one of many mostly non-XBRL filing requirements for US banks. The Call Report Taxonomy only requires basic XBRL.

The European Insurance And Occupational Pensions Authority (EIOPA) Solvency II taxonomy is much bigger in size and complexity. Beyond the basic XBRL modules (XLink, Linkbase, Instance) it has XBRL releases for arc-role, cubes, enumerations, formulas, references, roles, tables, and taxonomy metadata.

Beginning ontologists should consult the tutorial and related work.

To jump right into browsing ontology classes launch the ontology documentation browser or follow instructions for Protégé editor in the “how to” section of this website.

The FinRegOnt tutorial chapter one describes the reference ontologies, LKIF and FIBO and Financial Regulation Ontologies fundamental design.

Chapter two covers XML import procedures with Topbraid Maestro ontology tool suite in dept. The example is for loading US laws and regulations into FinRegOnt, but technical steps logical and physical integration model are the same for XBRL.

Finally the Operational ontologies for Insurance and Banking show taxonomies that import and use this XBRL design.

EIOPA sources and Topbraid conversion method

Financial Regulation Ontology uses Topbraid as the main ontology tool. XML and Database imports, transformation rules and orchestration are implemented with Maestro:

TopBraid Composer™ Maestro Edition (TBC-ME) combines world’s leading semantic web modeling capabilities with the most comprehensive data conversion options and a powerful Integrated Development Environment (IDE) for building semantic web and Linked Data applications.


Tutorial chapter two explains the import of XML schema with the ontology tool with detailed screenshots. The tutorial example is importing United States Code (USC =laws) and the Code of Federal Regulations (CFR), but users can substitute with XBRL schemata.

Figure 2 shows the load model for Linkbase, instance and XLink.

The load imports XBRL XSD source files, export the RDF graph, changes namespace URIs and creates OWL files.
Figure 2: XBRL into FinRegOnt OWL physical load model

We import the XML schema into the ontology tool. This creates a set of OWL files. Then we export the graph and change the URI namespaces as per Table 2.

There is an important difference between the import of laws and regulations and this XBRL import. The CFR/USC conversion has two steps:

  1. Source to Staging OWL representation
    A simple tool-based reverse engineering of the Federal Digital System schema into a one-to-one representation. (e.g.
  2. Staging to FinRegOnt ontology.
    An extract of the step one result, transformation and load into an ontology re-design of law and regulation. (e.g.

The XBRL RDF/OWL corresponds to step one, staging. We do not need a re-design of XBRL and the regulatory taxonomies, because we directly extract, transform and load (ETL) from staging OWL representation into FIBO.

The XSD import converts the source schema constructs into OWL

The generated OWL entities have an annotation that preserves the source XML tag. The ontology tool uses the tag to export OWL instances into XML files. This is how semantic compliance populates regulatory forms with FIBO data.

XSD/XML Constructs OWL Constructs
xsd:simpleType with xsd:enumerationBecomes an owl:Class as a subclass of EnumeratedValue. Instances are created for every enumerated value. Optionally, an instance of Enumeration, referring to all the instances, is created as well as the owl:oneOf union over the instances.
xsd:complexType over xsd:complexContentowl:Class
xsd:complexType over xsd:simpleContentowl:Class
xsd:element (global) with complex typeowl:Class and subclass of the class generated from the referenced complex type. Optionally, the generated class is prefixed with A_Global- to distinguish global elements from complex types with similar names during trimming or case modification of characters. Also optionally, the generated class becomes subclass of A_GlobalElements.
xsd:element (global) with simple typeowl:Datatype
xsd:element (local to a type)owl:DatatypeProperty or owl:ObjectProperty depending on the element type. OWL Restrictions are built for the occurrence.
xsd:groupowl:Class and optionally subclass of A_AbstractModelGroup
xsd:attributeGroupowl:Class and optionally subclass of A_AbstractAttributeGroup
xsd:minOccurs and xsd:maxOccursCardinality specified in minimum cardinality, maximum cardinality and universal (allValuesFrom) OWL restrictions.
Anonymous Complex TypeAs for Complex Type except a URI is constructed from the parent element and the nested element reference. Optionally, the class is defined as a subclass of A_Anon.
Anonymous Simple TypeAs for Simple Type except a URI is constructed from the parent element and the nested element reference.
xsd:default on an attributeUses dtype:defaultValue to attach a value to the OWL restriction representing the associated property.
Substitution GroupsSubclass statements are generated for the members. Instance files resolve their types by consulting the OWL model at import-time.
Annotation attributes on elementsOWL annotation property declarations are created, and the property values are placed directly on the relevant class.
Annotations using xsd:annotationBecome, based on user selection, dc:description, rdfs:comment and/or skos:definition OWL annotations.
xsi:type on an XML elementOverrides the schema type with the specified type.

Table 1: Mapping of XSD constructs to OWL. (source: Topbraid Maestro help system)

Scope for FinRegOnt is the XBRL folder in  EIOPA_SolvencyII_XBRL_Taxonomy_2.1.0

The package of 20 August 2016 is a conformance suite for Solvency II, so we take the XBRL schemata from this secondary source. The package also has a folder for Eurofiling, a joint initiative of the EIOPA and the European Banking Authority (EBA), XBRL Europe and stakeholders. A really revolutionary harmonization: Eurofiling collects taxonomy extensions to XBRL that are common to banking, insurance, securities and central bank reporting.

Source XBRL XSD namespaceTarget ontology URI<><><>,<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>

Table 2: Source namespace to target namespace

Resulting ontology modules

The diagram, figure 3 shows the XBRL ontology include graph.

XBRL ontology includes
Figure 3: XBRL ontology include graph

Table 3 lists and describes the ontology files.

./instance.ttlinstanceAn RDF/OWL version of XBRL instance. The instance ontology provides context and attribute classes for facts in XBRL instances.
linkbase.ttllinkbaseAn RDF/OWL version of the XBRL linkbase schema file. Linkbase connect different XBRL instance similar to object properties in OWL..
xbrl_all.ttlxbrl_allA configuration ontology file to include all XBRL ontology modules. The ontology doesn’t define any triples.
XLink.ttlXLinkAn RDF/OWL version of XBRL Xlink. The Xlink ontology implements classes and properties that extend the W3 xling standard. XLink, is an XML markup language and W3C specification that provides methods for creating internal and external links within XML documents, and associating metadata with those links (Wiki)  This core ontology defines classes for ArcType, DocumentationType, LocatorType, ResourceType, Simple Type and TitleType.
arcroleparent-child.ttlparent-childAn RDF/OWL version of the XBRL parent-child. Like its original XSD, the ontology doesn’t do anything other than importing linkbase. We keep the file for consistency in case taxonomies have it as an import.
cubexbrldi.ttlxbrldiAn RDF/OWL version of the XBRL dimension. The ontology has classes for typed and explicit dimension members.
xbrldt.ttlxbrldtAn RDF/OWL version of the XBRL hypercube. The ontology adds dimension item, enumerated values, context elements and hypercube items to XBRL instance.
dtrnon-numeric.ttlnon-numericAn RDF/OWL version for non-numeric items. The ontology adds subclasses to instance:ItemAttrs.
numeric.ttlnumericThe ontology provides more numeric Item Types as subclasses of XBRL Instance Decimal and Pure Item Type.
enumextensible-enumerations.ttlextensible-enumerationsAn RDF/OWL version of the XBRL extensible enumerations. The ontology adds custom emum items.
formulaaspect-cover.ttlaspect-coverA XBRL formula specifies validation based on XBRL instance facts and generation of derived data as output XBRL instance facts. The formula ontology provides classes and properties instance ontologies that include formula. Aspect filters cover aspects that govern implicit filtering and sub-partition of sequences of facts in an XBRL instance.
assertion-severity.ttlassertion-severityAn assertion is either satisfied or not satisfied. The severity lets the taxonomy assigns a level of importance to the assertion. There are 3 ontology classes for this purpose: Error, OK and Warning.
boolean.ttlBooleanThe Boolean filter defines the syntax to combine sub-filters with AND/OR. The ontology defines two classes for this purpose.
concept.ttlconceptThe concept filter ontology extends Variable with classes to filter element-name, period type, balance, schema data type and substitution group.
consistency.ttlconsistencyThe consistency ontology extends Validation with classes to check the  consistency of the fact produced by a formula evaluation with aspect-matched input facts in the XBRL business report.
custom-function.ttlcustom-functionA XBRL formula specifies validation based on XBRL instance facts and generation of derived data as output XBRL instance facts. Variables schema allows the taxonomy to include custom function calls. However these depend on the XBRL processor’s execution. The custom function schema extends this functionality by defining a syntax to define the implementation.   The ontology defines Implementation, Input and Step classes.
dimension.ttldimensionThe dimension filter extends Variables schema with syntax to filter XBRL instance fact based on instance dimensions.  The ontology defines classes for explicit and typed dimensions, model and axis.
entity.ttlentityThe entity ontology extends Variable with filters for entity identifier. It defines classes for specific and regular expression identifier filters.
existence.ttlexistenceExistence assertions specify the syntax for assertions that enable testing for facts meeting specified criteria. The ontology extends Variable with Existence Assertion subclass of Variable Set Assertion.
formula.ttlformulaAn RDF/OWL version of the XBRL formula schema file. A XBRL formula specifies validation based on XBRL instance facts and generation of derived data as output XBRL instance facts. The formula ontology provides classes and properties instance ontologies that include formula.
general.ttlgeneralThe General extends Variable. It can be used, when other more specific filters are not suitable. The general filter is particularly suitable when a filter is required that conditions on several aspects of a fact.  The ontology defines General, a subclass of  Variable Filter.
match.ttlmatchThe Match Filter defines XML syntax [XML] for filters that condition upon matching the value of an aspect of a fact to the same aspect of other facts.   The ontology defines Match model as a subclass of Variable Resource Type. Several subclasses of Match model define the possible building blocks: location, entity Id, period, segment, unit, XDT and non-XDT.
message.ttlmessageThe message ontology provides classes and properties to tie error messages to edit checks.
period.ttlperiodPeriod Filter is an extension to Variables that defines syntax for filters that condition upon the features of the period at which or over which facts have been measured.   The ontology creates subclasses of Variable Resource-type for period, duration, start and end date.
relative.ttlrelativeThe Relative filter matches facts based on the aspect of a particular other fact.  The ontology defines the Relative Filter class as a subclass of Variable Resource.
segment-scenario.ttlsegment-scenarioThis extension of Variables defines the syntax to condition on the content of segments and scenarios. This is for content NOT based on the dimensional aspect model (dimension.ttl).  The ontology defines a subclass of Variable Resource-type: Filter model and two subclasses for Segment and Scenario.
tuple.ttltupleThe Tuple extends Variable with filters for ordered lists in XBRL instances.  The ontology defines subclasses of Variable Resource-type for Ancestor, Location, Parent and Sibling filter.
unit.ttlunitThe Unit extends Variable with a syntax for filters that can condition on units of measurement when selecting facts from XBRL instances.   The ontology defines a class for the Qname model and Xlink Resource subclasses for Single and General Measures.
validation.ttlvalidationValidation specifies complex business rules as sets of assertions. The ontology defines classes for Assertion and Assertion Sets.
value.ttlvalueThe formula ontology provides classes and properties instance ontologies formula values.
variable.ttlvariableThe ontology defines a syntax for declaration of two kinds of variables: fact variables that only check to sequences of facts in an XBRL instance and general variables that can check to a broader range of values.  The ontology defines variable classes for Filter, Function, Parameter, Resource and related classes and properties.
genericgeneric.ttlgenericThe Generic XBRL specification aims to ease the creation of new kinds of metadata by providing more concrete linking components, as well as guidance to define custom linking components.  The ontology defines Generic Arc Type as a subclass of XLink Arc Type and Generic Links as a subclass of XLink Extended Type.
label.ttllabelGeneric Label extends the XBRL Specification [XBRL 2.1]. It specifies syntax for labels that are more flexible. Generic labels associate a label with any element. Generic labels give a syntactic foundation for XBRL extension specifications.  The ontology defines label as a subclass of XLink Resource-type.
reference.ttlreferenceReference Generic specifies syntax for references that are more flexible than those defined in the XBRL Specification. Generic references associate a reference with any element.  The ontology defines Reference as a subclass of XLink Resource-type.
rolerestatedLabel.ttlrestatedLabelAn RDF/OWL version of the XBRL restated label.
tablecomposition-axis.ttlcomposition-axisAn RDF/OWL version of XBRL table composition-axis. The Table Linkbase provides a mechanism for taxonomy authors to define a tabular layout of facts. The resulting tables function for both presentation and data entry. The ontology is a direct conversion of the XBRL table composition XSD file (composition-axis.xsd). The source XSD is from the EIOPA Solvency taxonomy package. The schema may be depreciated, but we keep it for consistency with Eurofiling.
tablefilter-axis.ttlfilter-axisXBRL specification shows filter-axis as depreciated, but we keep it for consistency with Eurofiling.
relationship-axis.ttlrelationship-axisThe Table Linkbase provides a mechanism for taxonomy authors to define a tabular layout of facts. The resulting tables are used for both presentation and data entry. The source XSD is from the EIOPA Solvency taxonomy package. XBRL specification shows relationship-axis as depreciated, but we keep it for consistency with Eurofiling.
rule-axis.ttlrule-axisAn RDF/OWL version of XBRL table rule-axis. The source XSD is from the EIOPA Solvency taxonomy package. XBRL specification shows rule-axis as depreciated, but we keep it for consistency with Eurofiling.
selection-axis.ttlselection-axisXBRL specification shows selection-axis as depreciated, but we keep it for consistency with Eurofiling.
table.ttltableAn RDF/OWL version of XBRL table. The Table Linkbase provides a mechanism for taxonomy authors to define a tabular layout of facts. The resulting tables can be used for both presentation and data entry. Tables use hierarchies to specify the arrangement of XBRL facts. These hierarchies are one of the basic building blocks of the specification, but also constitute by themselves a vehicle to communicate the meaning of those reporting concepts in a similar fashion to that of the presentation linkbase, but enhanced to cover multidimensional information and more complex models.   The structural ontology classes are Table Set, Table, Axis, Breakdown and Structural Node. Other classes define Table Sets, Parameters and Breakdowns.  The “-axis” ontologies for composition, filter, relationship rule, selection and tuple include the Table ontology.
tuple-axis.ttltuple-axisThe schema may be depreciated, but we keep it for consistency with Eurofiling.
taxtaxonomy-package.ttltaxon-pkgXBRL taxonomies are typically distributed as ZIP files, with accompanying human-readable documentation describing which of the component files should be considered entry points. This specification defines a standard format and location for a manifest file that can be included in such ZIP files that allows compliant tools to find the entry points automatically.   The ontology defines classes and properties to describe the package: Entry points (for XBRL-tools), country, document, package type, license and version information.
utrutr.ttlutrThe ontology has classes that extend  the W3 MathML schema with data types, numerator/denominator, units and expressions. The schema doesn’t show on XBRL specifications, but we keep it for consistency with Eurofiling.
w3MathML.ttlMathMLMathematical Markup Language (MathML) applies XML for describing mathematical notations and capturing both its structure and content.  The ontology defines classes and properties for content, definition, matrix, operators, presentation and annotation. This is an XML Schema module for the statistical operators of content MathML.   Author: Stephane Dalmas, INRIA.

Table 3: XBRL ontology directory, file, prefix and description

Conclusion and outlook

The ontology meets the requirements and fits its purpose.
The Call Report taxonomy imports XLink, Linkbase and Instance OWL files. We can import FFIEC 031 XBRL instances into OWL and query the data with SPARQL.

The Eurofiling and Solvency II taxonomy successfully imports the extended set of OWL files for table, variable, formula. Work on Solvency instances is still in progress and will be published on the Insurance Ontology website soon.

Next steps:

Semantic enhancements

We will not create a re-design of XBRL or the regulatory taxonomies. However, the SPARQL query using string comparisons (just like XBRL processors) is error prone and cumbersome. The Call Report query is an example:

# SELECT {...} WHERE {....
# The linkbase label location leads to the Location of the column
	?lb_loc xlink:label-loc ?lb_label_loc .
	?lb_loc a xbrl-linkbase:Loc .
 	?loc_ref xbrl-linkbase:locRef ?lb_loc .
 	?loc_ref a xbrl-linkbase:PresentationLink .
  	?loc_ref xlink:role-presentationLink ""^^xsd:string .

The semantic enhancement adds Object Properties to connect the resources directly:
rdf:type owl:ObjectProperty ;
rdfs:domain linkbase:loc ;
rdfs:label “has Column Presentation Link”^^xsd:string ;
rdfs:range linkbase:presentationLink ;
This helps querying the information correctly and also adds type control to range and domain. SPIN rules can CONSTRUCT instances based on the role-presentationLink.

Operational Ontologies, Banking and Insurance

Upcoming chapter four of the tutorial will show how we populate RDF/OWL instances from FIBO and export the results to XML. First SEC forms ADV and PF and then Call Report and Solvency.

Feedback & sharing

FinRegOnt, the reference ontologies FIBO/LKIF, XBRL are Open Source.

Please share this article with your colleagues and networks

and email your questions, correction and suggestions to: