When using the BURP version from branch kgc-2025-conformance with this mapping:
@prefix rml: <http://w3id.org/rml/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix : <http://example.org/> .
:jsonSource a rml:LogicalSource ;
rml:source [
a rml:RelativePathSource , rml:Source ;
rml:path "data.json" ] ;
rml:referenceFormulation rml:JSONPath ;
rml:iterator "$.people[*]" .
:jsonView a rml:LogicalView ;
rml:viewOn :jsonSource ;
rml:field [
a rml:ExpressionField ;
rml:fieldName "name" ;
rml:reference "$.name" ;
] ;
rml:field [
a rml:IterableField ;
rml:fieldName "item" ;
rml:iterator "$.items[*]" ;
rml:field [
a rml:ExpressionField ;
rml:fieldName "type" ;
rml:reference "$.type" ;
] ;
rml:field [
a rml:ExpressionField ;
rml:fieldName "weight" ;
rml:reference "$.weight" ;
] ;
] .
:csvSource a rml:LogicalSource ;
rml:source [ a rml:RelativePathSource , rml:Source ;
rml:path "data.csv" ] ;
rml:referenceFormulation rml:CSV .
:csvView a rml:LogicalView ;
rml:viewOn :csvSource ;
rml:field [
a rml:ExpressionField ;
rml:fieldName "name" ;
rml:reference "name" ;
] ;
rml:field [
a rml:ExpressionField ;
rml:fieldName "id" ;
rml:reference "id" ;
] ;
rml:field [
a rml:ExpressionField ;
rml:fieldName "birthyear" ;
rml:reference "birthyear" ;
] ;
rml:innerJoin [
rml:parentLogicalView :jsonView ;
rml:joinCondition [
rml:parent "name" ;
rml:child "name" ;
] ;
rml:field [
a rml:ExpressionField ;
rml:fieldName "item_type" ;
rml:reference "item.type" ;
] ;
] .
:tm a rml:TriplesMap;
rml:logicalSource :csvView;
rml:subjectMap [
rml:template "http://example.org/person/{id}" ;
rml:class :Person
] ;
rml:predicateObjectMap [
rml:predicate :hasName ;
rml:objectMap [
rml:reference "name" ;
]
] ;
rml:predicateObjectMap [
rml:predicate :hasBirthyear ;
rml:objectMap [
rml:reference "birthyear" ;
rml:datatype xsd:gYear ;
]
] ;
rml:predicateObjectMap [
rml:predicate :hasItem ;
rml:objectMap [
rml:reference "item_type" ;
]
] .
And source file data.csv
id,name,birthyear
P1,alice,1995
P2,bob,1999
P3,tobias,2005
and data.json
{
"people": [
{
"name": "alice",
"items": [
{
"type": "sword",
"weight": 1500
},
{
"type": "shield",
"weight": 2500
}
]
},
{
"name": "bob",
"items": [
{
"type": "flower",
"weight": 15
}
]
}
]
}
I get following error:
SLF4J(W): No SLF4J providers were found.
SLF4J(W): Defaulting to no-operation (NOP) logger implementation
SLF4J(W): See https://www.slf4j.org/codes.html#noProviders for further details.
java.lang.NullPointerException: Cannot invoke "Object.getClass()" because "value" is null
at org.apache.jena.datatypes.TypeMapper.getTypeByValue(TypeMapper.java:161)
at org.apache.jena.graph.impl.LiteralLabelImpl.<init>(LiteralLabelImpl.java:136)
at org.apache.jena.graph.impl.LiteralLabelFactory.createTypedLiteral(LiteralLabelFactory.java:93)
at org.apache.jena.rdf.model.ResourceFactory$Impl.createTypedLiteral(ResourceFactory.java:344)
at org.apache.jena.rdf.model.ResourceFactory.createTypedLiteral(ResourceFactory.java:161)
at burp.model.ExpressionMap.createTypedLiteral(ExpressionMap.java:284)
at burp.model.ExpressionMap.generateLiterals(ExpressionMap.java:234)
at burp.model.ObjectMap.generateTerms(ObjectMap.java:27)
at burp.Main.generate(Main.java:159)
at burp.Main.doMain(Main.java:55)
at burp.Main.main(Main.java:42)
Cannot invoke "Object.getClass()" because "value" is null
System exiting with code: 1
No error when changing rml:leftJoin to rml:InnerJoin
When using the BURP version from branch kgc-2025-conformance with this mapping:
And source file data.csv
and data.json
I get following error:
No error when changing rml:leftJoin to rml:InnerJoin