# Known issues

WARNING

THIS PAGE IS OUTDATED.

TODO: check these points and move them somewhere else if still relevant.

# RDF

  • GRAPH is not supported yet

# SPARQL

  • ORDER BY doesn't support functions as parameters, accepts variables only. Example:
SELECT ...
ORDER BY str(?o)
SELECT ...
ORDER BY xsd:integer(?o)
SELECT ...
ORDER BY (?o1 + ?o2)
  • REGEX is not supported by MsSQL and DB2, while the other databases handle it differently: see [[Regex SPARQL filter]]

  • URI with a hierarchical directory path of the form directory/directory/.../name are supported if we use them without prefix or with complete prefix. Example we can query <http://en.wikipedia.org/wiki/BMW_7_Series#section/help> using it as it is or with a complete prefix as:

PREFIX bmwSection: http://en.wikipedia.org/wiki/BMW_7_Series#section/
SELECT * WHERE {?x ?y bmwSection:help}

It is not supported the form:

PREFIX bmw: http://en.wikipedia.org/wiki/BMW_7_Series#
SELECT * WHERE {?x ?y bmw:section/help}
  • No support for cast functions (e.g. xsd:string(...), xsd:integer(...) ).
  • REPLACE function is supported with some limitations based on the database used. See [[Replace SPARQL filter]].
  • Do not use SELECT Expressions with more variable declarations, use the correspondant version with BIND. Example: Instead of:
SELECT  ?title (?p AS ?fullPrice) (?fullPrice*?discount) AS ?customerPrice)
{ ?x ns:price ?p .
  ?x dc:title ?title . 
  ?x ns:discount ?discount .
}

Use:

SELECT  ?title  (?fullPrice*?discount) AS ?customerPrice)
{ 
  ?x dc:title ?title . 
  ?x ns:discount ?discount .
  BIND (?p AS ?fullPrice)
  ?x ns:price ?fullPrice .
}
  • Hash functions in oracle are supported only if DBMS_CRYPTO is enabled by the DBA.
  • Hash, timezone and uiid functions are supported based on the database see [[OntopSPARQLFunctions |Supported Sparql Functions]] for more information.
  • Using Oracle strBefore and strAfter SPARQL functions return null instead of an empty string when no result has been found.
  • IF, COALESCE, EXISTS, NOT EXISTS, IN, NOT IN, STRDT, timezone and SHA384 functions are not supported .

# Mapping

WARNING

Are Bnodes supported in the mapping?

# OWL API

  • Implementation of most OWLReasoner methods is missing.

  • Symbol @ When we pass a literal to the OWL API, if it finds an "@" it will interpret it as a language tag. The OWL API says:

"If the datatype is  rdf:PlainLiteral, and the lexical value contains
a language tag then the language tag will   be parsed out of the lexical value. For example, "abc@en"^^rdf:PlainLiteral would be parsed into a lexical value  of 'abc' and a language tag of 'en'. "

Thus, if one expects such symbols in an object property the best solutions are:

  1. cast the object to string in the mapping
  2. replace the @ in the query with @.

# Databases and SQL

  • Registered Keywords - when you have a column name that is also a registered DBMS keyword, you should enclose that column name in quotes. Supported common keywords are: cast, do, extract, first, following, last, materialized, nulls, partition, range, row, rows, siblings, value, xml.
  • ORDER BY in H2: in presence of an Union, the last version of H2 (1.4.), it orders both subqueries independently of each other giving wrong results. See SPARQL-compliance test offset-1
  • UNOPTIMIZED SQL OPERATORS/FUNCTIONS: MIN/MAX, CASE, WHEN clause, DATE FUNCTIONS, NESTED SELECTS, MATCHES, RIGHT/FULL/SELF/CARTESIAN JOIN, SUBJOIN, ALL, ANY, UNION, INTERSECT, MINUM and EXCEPT: Unoptimized sql operators will be transformed in view and generate a result.
  • UNSUPPORTED SQL OPERATORS: EXISTS, UNIQUE, TOP
  • REGEX OPERATOR is not supported by MsSQL and DB2, while the other databases handle it differently

# R2RML mappings

WARNING

Are Bnodes supported in the mapping?

  • no support for inverseExpression
  • predicate cannot be uritemplate (column reference or template declaration)
  • object cannot be uritemplate (column reference or template declaration) when predicate is rdf:type
  • no support for bnode in Ontop
  • no support for sqlversion
  • no support for graphMaps (hence context graphs)
  • bnode naming is arbitrary
  • constant type objects are returned as simple literal. Constant-valued term maps are not considered as having a term type, and specifying rr:termType on these term maps has no effect. For example we return "2011-01-04T00:00:00.0" instead of "2011-01-04T00:00:00.0"^^xsd:dateTime

The current state of the W3C R2RML compliance tests could be seen [[W3C-R2RML-Compliance| here]]

# Ontop Bootstrapper

WARNING

Are Bnodes supported in the mapping?

  • The BNode syntax generated by Ontop bootstrapper cannot be processed by Ontop
  • Foreign keys on multiple columns are not supported