RML vs R2RML

RML is defined as a superset of the W3C-recommended mapping language R2RML, that maps data in relational databases to the RDF data model. RML extends R2RML's applicability and broaden R2RML's scope to define mappings of data in other formats too. RML keeps R2RML's cornerstones intact but extends those features that were relational database specific broadening R2RML's scope.

RML extends R2RML's Logical Table to a Logical Source (rml:LogicalSource) which can be, not only a relational database's table, but any data input. Instead of exclusively defining table names, RML can support any reference to any source within its Logical Source.

While in R2RML a database is the only possible input, in RML a broader range of input is supported. RML introduces the Reference Formulation property (rml:referenceFormulation) that clarifies which data format is parsed and how the references to the extracts of data are defined.

RML needs to process data that do not have an explicit iteration pattern as tables have, the iterator property (rml:iterator) needs to be defined. Since specifying hierarchical data elements requires a more rich language than just column names, the rr:column property of R2RML is extended in RML as rml:reference and its value is expected to be a valid expression according to the Reference Formulation specified.

R2RML RML
Logical Table (relational database) rr:logicalTable Logical Source (CSV, XML, JSON, HTML...) rml:logicalSource
Table Name rr:tablename URI (pointing to the source) rml:source
column rr:column reference rml:reference
(SQL) rr:SQLQuery Reference Formulation rml:referenceFormulation
per row iteration defined iterator rml:iterator