1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.any23.extractor.rdfa;
19
20 import org.apache.any23.extractor.ExtractionResult;
21 import org.apache.any23.extractor.IssueReport;
22 import org.eclipse.rdf4j.model.Resource;
23 import org.eclipse.rdf4j.model.Value;
24 import org.eclipse.rdf4j.model.ValueFactory;
25
26
27
28
29 final class SemarglSink implements org.semarglproject.sink.TripleSink, org.semarglproject.rdf.ProcessorGraphHandler {
30
31 private static final String BNODE_PREFIX = org.semarglproject.vocab.RDF.BNODE_PREFIX;
32
33 private final ExtractionResult handler;
34 private final ValueFactory valueFactory;
35
36 SemarglSink(ExtractionResult handler, ValueFactory valueFactory) {
37 this.handler = handler;
38 this.valueFactory = valueFactory;
39 }
40
41 private Resource createResource(String arg) {
42 if (arg.startsWith(BNODE_PREFIX)) {
43 return valueFactory.createBNode(arg.substring(BNODE_PREFIX.length()));
44 }
45 return valueFactory.createIRI(arg);
46 }
47
48 private void writeTriple(String s, String p, Value o) {
49 handler.writeTriple(createResource(s), valueFactory.createIRI(p), o);
50 }
51
52 @Override
53 public final void addNonLiteral(String s, String p, String o) {
54 writeTriple(s, p, createResource(o));
55 }
56
57 @Override
58 public final void addPlainLiteral(String s, String p, String o, String lang) {
59 writeTriple(s, p, lang == null ? valueFactory.createLiteral(o) : valueFactory.createLiteral(o, lang));
60 }
61
62 @Override
63 public final void addTypedLiteral(String s, String p, String o, String type) {
64 writeTriple(s, p, valueFactory.createLiteral(o, valueFactory.createIRI(type)));
65 }
66
67 @Override
68 public void startStream() {
69
70 }
71
72 @Override
73 public void endStream() {
74 }
75
76 @Override
77 public boolean setProperty(String key, Object value) {
78 return false;
79 }
80
81 @Override
82 public void setBaseUri(String baseUri) {
83 }
84
85 @Override
86 public void info(String infoClass, String message) {
87
88 }
89
90 @Override
91 public void warning(String warningClass, String message) {
92 handler.notifyIssue(IssueReport.IssueLevel.WARNING, message, -1, -1);
93 }
94
95 @Override
96 public void error(String errorClass, String message) {
97 handler.notifyIssue(IssueReport.IssueLevel.ERROR, message, -1, -1);
98 }
99 }