{
if (!writingStarted) {
throw new RuntimeException("Document writing has not yet been started");
}
Resource subj = st.getSubject();
URI pred = st.getPredicate();
Value obj = st.getObject();
try {
if (!headerWritten) {
header();
}
// can only be about baseURI subject
// can't have nested BNodes in header
if (inHeader && isAbout(subj)) {
if (obj instanceof URI) {
String relativize = relativize(obj.stringValue());
writer.handleMetaLink(pred, relativize);
return;
}
else if (obj instanceof Literal) {
writer.handleMetaAttribute(pred, (Literal)obj);
return;
}
}
else if (inHeader) {
flush();
body();
}
if (!nodeStack.isEmpty() && !subj.equals(nodeStack.peek().getValue())) {
// New subject, empty the stack
popStacks(subj);
}
else if (nodeStack.size() > 1 && subj instanceof URI) {
// New subject, empty the stack