Beispiel #1
0
def decomposeJoinBlock(jb, l, genPred, prefixes, decomposition, c):
    # jb == joinblock
    # l == list de endpoints
    tl = []
    sl = []
    fl = []
    #print "len jb.triples" + str(len(jb.triples))

    for bgp in jb.triples:
        if isinstance(bgp, Triple):
            tl.append(bgp)
        elif isinstance(bgp, Filter):
            fl.append(bgp)
        elif isinstance(bgp, Optional):
            sl.append(
                Optional(
                    decomposeUnionBlock(bgp.bgg, l, genPred, prefixes,
                                        decomposition, c)))
        elif isinstance(bgp, UnionBlock):
            pub = decomposeUnionBlock(bgp, l, genPred, prefixes, decomposition,
                                      c)
            if pub:
                sl.append(pub)
        elif isinstance(bgp, JoinBlock):
            pub = decomposeJoinBlock(bgp, l, genPred, prefixes, decomposition,
                                     c)
            if pub:
                sl.append(pub)
    #print 'fl'
    #print fl
    if tl:
        gs = getGroups(l, tl, genPred, prefixes, decomposition, c)
        #print 'gs'
        #print gs
        if gs:
            gs.extend(sl)
            sl = gs
        else:
            return None

    fl1 = includeFilter(sl, fl)
    fl = list(set(fl) - set(fl1))
    #print "sl" + str(sl) + str(len(sl))
    #print "fl" + str(fl)
    if sl:
        if (len(sl) == 1 and isinstance(sl[0], UnionBlock) and fl != []):
            sl[0] = updateFilters(sl[0], fl)
        j = JoinBlock(sl, filters=fl)
        #print "filters" + str(j.filters)
        return j
    else:
        return None
Beispiel #2
0
def makePlanJoinBlock(jb, plan):
    sl = []
    ol = []
    for bgp in jb.triples:
        if type(bgp) == list:
            sl.extend(bgp)
        elif isinstance(bgp, Optional):
            ol.append(Optional(makePlanUnionBlock(bgp.bgg, plan)))
        elif isinstance(bgp, UnionBlock):
            sl.append(makePlanUnionBlock(bgp, plan))
        elif isinstance(bgp, Service):
            sl.append(bgp)

    pl = makePlanAux(sl, plan)
    if ol:
        pl = [pl]
        pl.extend(ol)
    return JoinBlock(pl)
Beispiel #3
0
def decomposeJoinBlock(jb, l, genPred, prefixes, decomposition, c):
    # jb == joinblock
    # l == list de endpoints
    tl = []
    sl = []
    fl = []

    for bgp in jb.triples:
        # print bgp
        if isinstance(bgp, Triple):
            tl.append(bgp)
        elif isinstance(bgp, Filter):
            fl.append(bgp)
        elif isinstance(bgp, Optional):
            sl.append(
                Optional(
                    decomposeUnionBlock(bgp.bgg, l, genPred, prefixes,
                                        decomposition, c)))
        elif isinstance(bgp, UnionBlock):
            pub = decomposeUnionBlock(bgp, l, genPred, prefixes, decomposition,
                                      c)
            if pub:
                sl.append(pub)
    # print 'tl'
    # print tl
    if tl:
        gs = getGroups(l, tl, genPred, prefixes, decomposition, c)
        # print 'gs'
        # print gs
        if gs:
            gs.extend(sl)
            sl = gs
        else:
            return None

    includeFilter(sl, fl)
    # print 'sl'
    # print sl
    if sl:
        return JoinBlock(sl)
    else:
        return None
Beispiel #4
0
def p_bgp_4(p):
    """
    bgp : OPTIONAL LKEY group_graph_pattern RKEY
    """
    p[0] = Optional(p[3])
Beispiel #5
0
def p_bgp_service_4(p):
    """
    bgp_service : OPTIONAL LKEY group_graph_pattern_service RKEY
    """
    p[0] = Optional(p[3])