Implementing RDQL in Rasqal - Structure
- Query syntax parsing into...
- Abstract query construct made from sequences of:
- source URIs (
from
)
- binding variables (
select
)
- triples to select (
where
)
- constraint clauses
- namespace / URI prefixes (expanded)
- Query construction/access API
- TripleSource(uri) interface providing...
- TriplesMatch(s,p,o) interface
- Factories for TriplesSource via Redland or Raptor (TODO)
RDQL / QL development
- Easy: Variable bindings
- (Easy: optional triples, one way - TODO)
- Medium: tokeniser and parser (lex and yacc)
- Medium: writing it in C
- Medium: query engine over TriplesMatch
- Medum, but dull: constraint evaluation
- (Medium: multiple sources - TODO)
- Hard: thinking about the APIs
- Hard: planning for future QLs, functionality
RDQL surprises and issues
- Jena RDQL Test suite tests beyond the RDQL note EBNF
- There are 4 pre-defined prefixes and namespaces
- xsd:integer and xsd:double in RDF typed literals
- UTF-8, \uHHHH in prefixes, local names (TODO)
- Are blank nodes allowed in queries?
- Multiple sources
- Constraint expressions still too rich
- Not using xsd:boolean, xsd:string
select *
vs no select