By not allowing literals and blank nodes in predicate position we get the problem that the we can write rules and triples which in "traditional n3" get a result while in this implementation they don't.
Consider the triples:
:a :b "c". :a :b _:x.
and the rule
{:a ?b ?c}=>{?:a ?c ?b}.
This is all valid N3. But applying this rule to the triples would lead to
:a "c" :b. :a _:x :b.
Which could not be parsed by carl.
To guarantee that all output of EYE can be parsed by carl we either need to adapt the semantics of N3 as supported by the reasoner or allow those cases in carl.
By not allowing literals and blank nodes in predicate position we get the problem that the we can write rules and triples which in "traditional n3" get a result while in this implementation they don't. Consider the triples:
:a :b "c". :a :b _:x.
and the rule{:a ?b ?c}=>{?:a ?c ?b}.
This is all valid N3. But applying this rule to the triples would lead to
:a "c" :b. :a _:x :b.
Which could not be parsed by carl.To guarantee that all output of EYE can be parsed by carl we either need to adapt the semantics of N3 as supported by the reasoner or allow those cases in carl.