use of org.apache.jena.sparql.sse.ItemList in project jena by apache.
the class BuilderGraph method buildDataset.
public static DatasetGraph buildDataset(DatasetGraph dsg, ItemList list) {
BuilderLib.checkTag(list, Tags.tagDataset);
list = list.cdr();
for (Item item : list) {
if (!item.isTagged(Tags.tagGraph)) {
// Not (graph ...) so it's (quad), short form quad or an error.
Quad q = BuilderGraph.buildQuad(item.getList(), "Expected (graph ...) or a quad () as elements of a dataset");
dsg.add(q);
continue;
}
Node name = null;
ItemList graphContent = item.getList().cdr();
if (!graphContent.isEmpty() && graphContent.car().isNode()) {
name = graphContent.car().getNode();
graphContent = graphContent.cdr();
}
Graph g;
if (name == null) {
g = dsg.getDefaultGraph();
if (g == null) {
g = GraphFactory.createDefaultGraph();
dsg.setDefaultGraph(g);
}
} else {
g = dsg.getGraph(name);
if (g == null) {
g = GraphFactory.createDefaultGraph();
dsg.addGraph(name, g);
}
}
BuilderGraph.buildGraph(g, graphContent);
}
return dsg;
}
use of org.apache.jena.sparql.sse.ItemList in project jena by apache.
the class BuilderBinding method buildBinding.
private static Binding buildBinding(ItemList list) {
// (row or (binding
if (list.size() == 0)
BuilderLib.broken(list, "Empty list");
Item head = list.get(0);
if (!head.isSymbolIgnoreCase(Tags.tagRow) && !head.isSymbolIgnoreCase(Tags.tagBinding))
BuilderLib.broken(list, "Does not start (" + Tags.tagRow + " ...) or (" + Tags.tagBinding + " ...)", head);
BindingMap binding = BindingFactory.create();
for (int i = 1; i < list.size(); i++) {
Item item = list.get(i);
BuilderLib.checkList(item, "Attempt to build a binding pair from non-list: " + item);
ItemList pair = item.getList();
BuilderLib.checkLength(2, pair, "Need a pair for a binding");
Var v = BuilderNode.buildVar(pair.get(0));
Item cdr = pair.get(1);
// undef
if (cdr.isSymbolIgnoreCase(Tags.tagUndef) || cdr.isSymbolIgnoreCase(Tags.tagNull))
continue;
BuilderLib.checkNode(cdr);
Node node = BuilderNode.buildNode(item.getList().get(1));
if (node == null)
BuilderLib.broken(item.getList().get(1), "Null node from " + item.getList().get(1));
if (node.isVariable())
BuilderLib.broken(item.getList().get(1), "No variables as table values: " + FmtUtils.stringForNode(node));
if (!node.isConcrete())
BuilderLib.broken(item.getList().get(1), "Ony concrete nodes as table values: " + FmtUtils.stringForNode(node));
binding.add(v, node);
}
return binding;
}
use of org.apache.jena.sparql.sse.ItemList in project jena by apache.
the class ParseHandlerPlain method listFinish.
@Override
public void listFinish(int line, int column) {
ItemList list = popList();
Item item = Item.createList(list);
listAdd(item);
}
use of org.apache.jena.sparql.sse.ItemList in project jena by apache.
the class ParseHandlerPlain method listAdd.
protected void listAdd(Item item) {
if (listStack.isEmpty()) {
// Top level is outside a list.
setCurrentItem(item);
return;
}
if (item != null) {
ItemList list = currentList();
list.add(item);
}
setCurrentItem(item);
}
use of org.apache.jena.sparql.sse.ItemList in project jena by apache.
the class BuilderPrefixMapping method build.
public static void build(PrefixMapping newMappings, Item elt) {
if (!elt.isList())
BuilderLib.broken(elt, "Prefix mapping requires a list of pairs", elt);
ItemList prefixes = elt.getList();
// Strip (prefixmapping ...)
if (elt.isTaggedIgnoreCase(Tags.tagPrefixMap) || elt.isTaggedIgnoreCase(Tags.tagPrefixMapping)) {
BuilderLib.checkLength(2, elt.getList(), "Not of length 2" + elt.shortString());
// drop the tag
prefixes = prefixes.cdr();
}
for (Item pair : prefixes) {
if (!pair.isList() || pair.getList().size() != 2)
BuilderLib.broken(pair, "Not a prefix/IRI pair");
Item prefixItem = pair.getList().get(0);
Item iriItem = pair.getList().get(1);
// Maybe a Node (fake prefixed name) or a Symbol, depending on parser set up.
String prefix = null;
// -- Prefix as symbol
if (prefixItem.isSymbol())
prefix = prefixItem.getSymbol();
if (prefix == null)
BuilderLib.broken(pair, "Prefix part not recognized: " + prefixItem);
if (!prefix.endsWith(":"))
BuilderLib.broken(pair, "Prefix part does not end with a ':': " + pair);
prefix = prefix.substring(0, prefix.length() - 1);
if (StrUtils.contains(prefix, ":"))
BuilderLib.broken(pair, "Prefix itself contains a ':' : " + pair);
// -- /Prefix
Node iriNode = iriItem.getNode();
if (iriNode == null || !iriNode.isURI())
BuilderLib.broken(pair, "Not an IRI: " + iriItem);
String iri = iriNode.getURI();
newMappings.setNsPrefix(prefix, iri);
}
}
Aggregations