I’m getting a NPE when importing a virtual graph from mysql.
java.lang.NullPointerException at com.complexible.stardog.virttual.VirtualGraphIterator$MaterializationContext.getColumnIndex(VirtualGraphIterator.java:281)
…
An error occurred adding RDF to the index: null
I’m sorry that I can’t include the mappings, data or complete stack trace but I thought I’d report it anyway.
Thanks. Do you have any quoted field names, eg `field with space`? We did some work that may have fixed this in 5.2.1. Worth trying. The error message has been improved to indicate which field was not found which may help narrow down the issue.
No quoted fields but I think I found out what the problem was. I was doing a join between two tables (actually a self join) and using the table alias in the mapping since there were duplicate column names. If I alias the columns and don't use the table alias it seems to work. This isn't the exact mapping but just a quick example.
The following doesn't work
<{a.id}> a my:Thing
:has <{b.id}>
sm:map [
sm:query """
select
a.id,
b.id
from
mytable a
join
mytable b
on
a.id = b.otherid"""
] .
while this does
<{a_id}> a my:Thing
:has <{b_id}>
sm:map [
sm:query """
select
a.id as a_id,
b.id as b_id
from
mytable a
join
mytable b
on
a.id = b.otherid"""
] .
I think this would work with a query but not with materialization (or ?s ?p ?o query). We treat the field names literally during materialization but I guess we need to generate a better projection to properly resolve the fields and avoid any ambiguities.