Search in sources :

Example 6 with ItemList

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;
}
Also used : Item(org.apache.jena.sparql.sse.Item) Quad(org.apache.jena.sparql.core.Quad) DatasetGraph(org.apache.jena.sparql.core.DatasetGraph) Graph(org.apache.jena.graph.Graph) Node(org.apache.jena.graph.Node) ItemList(org.apache.jena.sparql.sse.ItemList)

Example 7 with ItemList

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;
}
Also used : Item(org.apache.jena.sparql.sse.Item) Var(org.apache.jena.sparql.core.Var) ItemList(org.apache.jena.sparql.sse.ItemList) Node(org.apache.jena.graph.Node) BindingMap(org.apache.jena.sparql.engine.binding.BindingMap)

Example 8 with ItemList

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);
}
Also used : Item(org.apache.jena.sparql.sse.Item) ItemList(org.apache.jena.sparql.sse.ItemList)

Example 9 with ItemList

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);
}
Also used : ItemList(org.apache.jena.sparql.sse.ItemList)

Example 10 with ItemList

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);
    }
}
Also used : Item(org.apache.jena.sparql.sse.Item) ItemList(org.apache.jena.sparql.sse.ItemList) Node(org.apache.jena.graph.Node)

Aggregations

ItemList (org.apache.jena.sparql.sse.ItemList)18 Item (org.apache.jena.sparql.sse.Item)10 Node (org.apache.jena.graph.Node)4 Var (org.apache.jena.sparql.core.Var)4 DatasetGraph (org.apache.jena.sparql.core.DatasetGraph)2 Binding (org.apache.jena.sparql.engine.binding.Binding)2 ArrayList (java.util.ArrayList)1 Graph (org.apache.jena.graph.Graph)1 ARQException (org.apache.jena.sparql.ARQException)1 ARQInternalErrorException (org.apache.jena.sparql.ARQInternalErrorException)1 Op (org.apache.jena.sparql.algebra.Op)1 Table (org.apache.jena.sparql.algebra.Table)1 Quad (org.apache.jena.sparql.core.Quad)1 QueryIterator (org.apache.jena.sparql.engine.QueryIterator)1 ResultSetStream (org.apache.jena.sparql.engine.ResultSetStream)1 BindingMap (org.apache.jena.sparql.engine.binding.BindingMap)1 QueryIterPlainWrapper (org.apache.jena.sparql.engine.iterator.QueryIterPlainWrapper)1