コード例 #1
0
def test_query_filter_node_rel():
    query = make_list_query({'filter_node': 'x', 'rel': 'x'})
    expected = """
    WITH matched_edges AS (
        SELECT e.uri, e.weight, e.data, np1.uri as node_uri, np2.uri as other_uri
        FROM relations r, edges e, nodes n1, nodes n2,
             node_prefixes p1, node_prefixes p2, nodes np1, nodes np2
        WHERE e.relation_id=r.id
        AND e.start_id=n1.id
        AND e.end_id=n2.id
        AND p1.prefix_id=np1.id
        AND p1.node_id=n1.id
        AND p2.prefix_id=np2.id
        AND p2.node_id=n2.id
        AND r.uri = %(rel)s
    UNION ALL
        SELECT e.uri, e.weight, e.data, np2.uri as node_uri, np1.uri as other_uri
        FROM relations r, edges e, nodes n1, nodes n2,
             node_prefixes p1, node_prefixes p2, nodes np1, nodes np2
        WHERE e.relation_id=r.id
        AND e.start_id=n1.id
        AND e.end_id=n2.id
        AND p1.prefix_id=np1.id
        AND p1.node_id=n1.id
        AND p2.prefix_id=np2.id
        AND p2.node_id=n2.id
        AND r.uri = %(rel)s
        LIMIT 10000
    )
    SELECT DISTINCT ON (weight, uri) uri, data FROM matched_edges
    WHERE node_uri LIKE %(filter_node)s
    ORDER BY weight DESC, uri
    OFFSET %(offset)s LIMIT %(limit)s
    """
    whitespace_eq(query, expected)
コード例 #2
0
def test_query_start():
    query = make_list_query({'start': 'x'})
    expected = """
    WITH matched_edges AS (
        SELECT e.uri, e.weight, e.data
        FROM relations r, edges e, nodes n1, nodes n2,
             node_prefixes p1, node_prefixes p2, nodes np1, nodes np2
        WHERE e.relation_id=r.id
        AND e.start_id=n1.id
        AND e.end_id=n2.id
        AND p1.prefix_id=np1.id
        AND p1.node_id=n1.id
        AND p2.prefix_id=np2.id
        AND p2.node_id=n2.id
        AND np1.uri = %(start)s
        LIMIT 10000
    )
    SELECT DISTINCT ON (weight, uri) uri, data FROM matched_edges
    ORDER BY weight DESC, uri
    OFFSET %(offset)s LIMIT %(limit)s
    """
    whitespace_eq(query, expected)
コード例 #3
0
def test_query_filter_start_source():
    query = make_list_query({'filter_start': 'x', 'source': 'x'})
    expected = """
    WITH matched_edges AS (
        SELECT e.uri, e.weight, e.data, np1.uri as start_uri, np2.uri as end_uri
        FROM relations r, edges e, nodes n1, nodes n2,
             node_prefixes p1, node_prefixes p2, nodes np1, nodes np2,
             edge_sources es, sources s
        WHERE e.relation_id=r.id
        AND e.start_id=n1.id
        AND e.end_id=n2.id
        AND p1.prefix_id=np1.id
        AND p1.node_id=n1.id
        AND p2.prefix_id=np2.id
        AND p2.node_id=n2.id
        AND s.uri=%(source)s AND es.source_id=s.id AND es.edge_id=e.id
        LIMIT 10000
    )
    SELECT DISTINCT ON (weight, uri) uri, data FROM matched_edges
    WHERE start_uri LIKE %(filter_start)s
    ORDER BY weight DESC, uri
    OFFSET %(offset)s LIMIT %(limit)s
    """
    whitespace_eq(query, expected)