Comparison with R2RML

Conceptually, Sparqlify-ML and R2RML are very similar. Because R2RML is now a W3C Recommendation (since 27 September 2012), it makes sense to explain how the R2R-ML features can be expressed in Sparqlify-ML.

TODO Link to concepts.

Term maps and term constructors.
Any RD-RDF tool has to construct RDF terms from the tabular source data. Recall that there are 4 types of RDF terms, namely:
 * Blank nodes
 * URIs
 * Plain literals, and
 * Typed literals

For creating RDF terms from relational data, R2RML uses the concept of term-maps, whereas Sparqlify-ML uses the notion of term-constructors. The different namings originate from how the term creation is expressed: R2RML follows a declarative approach, whereas Sparqlify-ML follows a functional approach. Term construction is relatively complex in R2RML, so we first demonstrate what it looks in Sparqlify-ML:

Essentially, for each RDF term type, Sparqlify-ML defines a corresponding RDF term constructor. The following example demonstrates all four of them: The variables in the right hand side of the variable definitions refer to the columns of table person. As such, this table is assumed to have the columns id, name, homepage and age.

TODO Unfinished

Foreign key references
r2rml:join Sparqlify's new "references" clause

'''TODO: Using 'dot' as a separator for qualified variables may be suboptimal, as it may cause clashes with standard SPARQL, e.g: ?s ?p ?o.ex:abc a owl:Thing.