IF {
?address :has9Zip ?zip .
BIND(strbefore(?zip, "-")
} THEN {
?address :has5Zip ?zip5 .
}
If you wanted to materialize it I believe you'd have to write a custom transaction listener. There should be an example in the stardog-examples repo somewhere.
I don't think you can do something that complex in the csv virtual graph mapping. You could import the csv into a relational database like Derby and do the transformation in the sql mapping.