# 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
anduiid
functions are supported based on the database see [[OntopSPARQLFunctions |Supported Sparql Functions]] for more information.- Using Oracle
strBefore
andstrAfter
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
andSHA384
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:
- cast the object to string in the mapping
- 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-1UNOPTIMIZED 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, TOPREGEX 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