[
https://issues.apache.org/jira/browse/JENA-1545?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16467246#comment-16467246
]
ASF GitHub Bot commented on JENA-1545:
--------------------------------------
Github user afs commented on the issue:
https://github.com/apache/jena/pull/416
Extensively revised : calling `checkTriple` inside `createTriple` doesn't
delegate properly in the proxy pattern. Instead, and in the interests of
simplicity, any `ParserProfile` exposes enough setup state to allow a proxy to
provide an alternative `createTriple` operation:
This way provides the immediate need for PR #299 without limiting future
possibilities for stream based checking (e.g. to have a checking policy passed
to a ParserProfile) to include line and column numbers. It is inline with the
current javadoc for `ParserProfile` which already says a `FactoryRDF` is used.
Example, to allow literals as subjects:
public static void main(String[] args) {
ParserProfile pp = RiotLib.profile(Lang.TTL, "http://base/");
ParserProfile pp2 = new ParserProfileWrapper(pp) {
@Override public Triple createTriple(Node subject, Node
predicate, Node object, long line, long col) {
if ( subject == null || (!subject.isURI() &&
!subject.isBlank() && !subject.isLiteral()) ) {
getErrorHandler().error("Subject is not a URI, blank
node or literal", line, col);
throw new RiotException("Bad subject: " + subject);
}
if ( predicate == null || (!predicate.isURI()) ) {
getErrorHandler().error("Predicate not a URI", line,
col);
throw new RiotException("Bad predicate: " + predicate);
}
if ( object == null || (!object.isURI() &&
!object.isBlank() && !object.isLiteral()) ) {
getErrorHandler().error("Object is not a URI, blank
node or literal", line, col);
throw new RiotException("Bad object: " + object);
}
getErrorHandler().warning("Create triple!", line, col);
return getFactorRDF().createTriple(subject, predicate,
object);
}
};
// Example of literal subject, calling machinery directly.
Tokenizer t = TokenizerFactory.makeTokenizer(new StringReader("123
<p> <o>"));
LangTurtle parser = new LangTurtle(t, pp2,
StreamRDFLib.writer(System.out));
parser.parse();
}
> Add ParserProfileWrapper; expose checkTriple/checkQuad.
> -------------------------------------------------------
>
> Key: JENA-1545
> URL: https://issues.apache.org/jira/browse/JENA-1545
> Project: Apache Jena
> Issue Type: Improvement
> Components: RIOT
> Affects Versions: Jena 3.7.0
> Reporter: Andy Seaborne
> Priority: Major
>
> See [https://github.com/apache/jena/pull/299]
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)