10
10
import com .hp .hpl .jena .rdf .model .Literal ;
11
11
import com .hp .hpl .jena .rdf .model .RDFNode ;
12
12
13
+ import de .unibonn .iai .eis .linda .helper .SPARQLHandler ;
14
+
13
15
public class JSONSesameOutputResultBinding {
14
16
public List <Object > binding ;
15
17
@@ -20,29 +22,54 @@ public JSONSesameOutputResultBinding(QuerySolution row,
20
22
Map <String , Object > varHash = new HashMap <String , Object >();
21
23
varHash .put ("@name" , resultVar );
22
24
RDFNode node = row .get (resultVar );
23
- if (node instanceof Literal ) {
24
- // section where the node is a literal
25
- Integer languageIdentifierPoint = node .toString ().length () - 3 ;
26
- if (node .toString ().charAt (languageIdentifierPoint ) == '@' ) {
27
- // section if it is language literal
28
- Map <String , String > langLiteralHash = new HashMap <String , String >();
29
- langLiteralHash .put (
30
- "@xml:lang" ,
31
- node .toString ().substring (
32
- languageIdentifierPoint + 1 ));
33
- langLiteralHash .put (
34
- "#text" ,
35
- node .toString ().substring (0 ,
36
- languageIdentifierPoint ));
37
- varHash .put ("uri" , langLiteralHash );
25
+ if (node != null && !node .toString ().equals ("" )) {
26
+ if (node instanceof Literal ) {
27
+ // section where the node is a literal
28
+ if (node .toString ().length () > 3 ) {
29
+ Integer languageIdentifierPoint = node .toString ()
30
+ .length () - 3 ;
31
+ if (node .toString ().charAt (languageIdentifierPoint ) == '@' ) {
32
+ // section if it is language literal
33
+ Map <String , String > langLiteralHash = new HashMap <String , String >();
34
+ langLiteralHash .put ("@xml:lang" , node .toString ()
35
+ .substring (languageIdentifierPoint + 1 ));
36
+ langLiteralHash .put ("#text" , node .toString ()
37
+ .substring (0 , languageIdentifierPoint ));
38
+ varHash .put ("literal" , langLiteralHash );
39
+ } else {
40
+ if (((Literal ) node ).getDatatypeURI () == null ) {
41
+ // plain literal
42
+ varHash .put ("literal" , node .toString ());
43
+ } else {
44
+ // typed literal
45
+ Map <String , String > langLiteralHash = new HashMap <String , String >();
46
+ langLiteralHash .put ("datatype" ,
47
+ SPARQLHandler .getLiteralDataType (node ));
48
+ langLiteralHash .put ("#text" ,
49
+ SPARQLHandler .getLiteralValue (node ));
50
+ varHash .put ("typed-literal" , langLiteralHash );
51
+ }
52
+ }
53
+ } else {
54
+ if (((Literal ) node ).getDatatypeURI () == null ) {
55
+ // plain literal
56
+ varHash .put ("literal" , node .toString ());
57
+ } else {
58
+ // typed literal
59
+ Map <String , String > langLiteralHash = new HashMap <String , String >();
60
+ langLiteralHash .put ("datatype" ,
61
+ SPARQLHandler .getLiteralDataType (node ));
62
+ langLiteralHash .put ("#text" ,
63
+ SPARQLHandler .getLiteralValue (node ));
64
+ varHash .put ("typed-literal" , langLiteralHash );
65
+ }
66
+ }
38
67
} else {
39
- varHash .put ("literal" , node .toString ());
68
+ // section where the node is a uri
69
+ varHash .put ("uri" , node .toString ());
40
70
}
41
- } else {
42
- // section where the node is a uri
43
- varHash .put ("uri" , node .toString ());
71
+ this .binding .add (varHash );
44
72
}
45
- this .binding .add (varHash );
46
73
}
47
74
}
48
75
}
0 commit comments