Exemplo n.º 1
0
def test_add_doc_data_csv_base(conn, ex, uri):
    conn.addDocumentData('a,b,c\ndd,ee,ff', DocFormat.CSV, base=uri)
    statements = get_statements(conn)
    assert 3 == len(statements)
    subject = statements[0][0]
    assert statements == [[subject, ex.a, Literal('dd'), None],
                          [subject, ex.b, Literal('ee'), None],
                          [subject, ex.c, Literal('ff'), None]]
Exemplo n.º 2
0
def test_add_doc_data_context(conn, ex, uri):
    conn.addDocumentData({'a': 'aa', 'b': 'bb'}, context=uri)
    statements = get_statements(conn)
    assert 2 == len(statements)
    subject = statements[0][0]
    ns = conn.namespace(statements[0][1].getNamespace())
    assert statements == [[subject, ns.a, Literal('aa'), ex.g],
                          [subject, ns.b, Literal('bb'), ex.g]]
Exemplo n.º 3
0
def test_add_doc_data_subject(conn, ex, uri):
    conn.addDocumentData('a,b,c\ndd,ee,ff', DocFormat.CSV, subject=uri)
    statements = get_statements(conn)
    assert 3 == len(statements)
    ns = conn.namespace(statements[0][1].getNamespace())
    assert statements == [[ex.s, ns.a, Literal('dd'), None],
                          [ex.s, ns.b, Literal('ee'), None],
                          [ex.s, ns.c, Literal('ff'), None]]
Exemplo n.º 4
0
def test_add_doc_data_csv_escape(conn):
    conn.addDocumentData('a,b,c\nxx,"y?"y",zz', DocFormat.CSV, csv_escape='?')
    statements = get_statements(conn)
    assert 3 == len(statements)
    subject = statements[0][0]
    ns = conn.namespace(statements[0][1].getNamespace())
    assert statements == [[subject, ns.a, Literal('xx'), None],
                          [subject, ns.b, Literal('y"y'), None],
                          [subject, ns.c, Literal('zz'), None]]
Exemplo n.º 5
0
def test_add_doc_data_csv_separator(conn):
    conn.addDocumentData('a:b:c\nxx:yy:zz', DocFormat.CSV, csv_separator=':')
    statements = get_statements(conn)
    assert 3 == len(statements)
    subject = statements[0][0]
    ns = conn.namespace(statements[0][1].getNamespace())
    assert statements == [[subject, ns.a, Literal('xx'), None],
                          [subject, ns.b, Literal('yy'), None],
                          [subject, ns.c, Literal('zz'), None]]
Exemplo n.º 6
0
def test_add_doc_data_csv(conn):
    conn.addDocumentData('a,b,c\ndd,ee,ff', DocFormat.CSV)
    statements = get_statements(conn)
    assert 3 == len(statements)
    subject = statements[0][0]
    ns = conn.namespace(statements[0][1].getNamespace())
    assert statements == [[subject, ns.a, Literal('dd'), None],
                          [subject, ns.b, Literal('ee'), None],
                          [subject, ns.c, Literal('ff'), None]]
Exemplo n.º 7
0
def test_add_json_ld_integer_literal_value(conn, example):
    conn.addData({
        '@context': {
            '@vocab': 'http://franz.com/example/',
            '@base': 'http://franz.com/example/'
        },
        '@id': 's',
        example.p: Literal(42)
    })
    assert [[example.s, example.p, Literal(42), None]] == get_statements(conn)
Exemplo n.º 8
0
def test_add_doc_data_csv_base_and_subject(conn, ex):
    conn.addDocumentData('a,b,c\ndd,ee,ff',
                         DocFormat.CSV,
                         base='ex://',
                         subject='ex://$a')
    assert get_statements(conn) == [[ex.dd, ex.a,
                                     Literal('dd'), None],
                                    [ex.dd, ex.b,
                                     Literal('ee'), None],
                                    [ex.dd, ex.c,
                                     Literal('ff'), None]]
Exemplo n.º 9
0
def test_add_doc_data_csv_dialect(conn, excel_tab):
    conn.addDocumentData('a\tb\tc\r\n"x""x"\t yy\tzz',
                         DocFormat.CSV,
                         csv_dialect=excel_tab)
    statements = get_statements(conn)
    assert 3 == len(statements)
    subject = statements[0][0]
    ns = conn.namespace(statements[0][1].getNamespace())
    assert statements == [[subject, ns.a, Literal('x"x'), None],
                          [subject, ns.b, Literal(' yy'), None],
                          [subject, ns.c, Literal('zz'), None]]
Exemplo n.º 10
0
def test_add_doc_data_csv_override_dialect(conn, doc, arg, value, dialect):
    conn.addDocumentData(doc,
                         DocFormat.CSV,
                         csv_dialect=dialect,
                         **{arg: value})
    statements = get_statements(conn)
    assert 3 == len(statements)
    subject = statements[0][0]
    ns = conn.namespace(statements[0][1].getNamespace())
    assert statements == [[subject, ns.a, Literal('x"x'), None],
                          [subject, ns.b, Literal(' yy'), None],
                          [subject, ns.c, Literal('zz'), None]]
Exemplo n.º 11
0
def test_add_json_ld_typed_literal_value(conn, example):
    conn.addData({
        '@context': {
            '@vocab': 'http://franz.com/example/',
            '@base': 'http://franz.com/example/'
        },
        '@id': 's',
        example.p: Literal('oooo', XMLSchema.BASE64BINARY)
    })
    assert [[
        example.s, example.p,
        Literal('oooo', XMLSchema.BASE64BINARY), None
    ]] == get_statements(conn)
Exemplo n.º 12
0
def test_add_json_ld_lang_literal_value(conn, example):
    conn.addData({
        '@context': {
            '@vocab': 'http://franz.com/example/',
            '@base': 'http://franz.com/example/'
        },
        '@id':
        's',
        # A bathtub in Sindarin
        example.p:
        Literal('🛀', language='sjn')
    })
    assert [[example.s, example.p,
             Literal('🛀', language='sjn'), None]] == get_statements(conn)
Exemplo n.º 13
0
def test_add_doc_data_prefix_in_keys(conn, pref1, pref2):
    p1 = conn.namespace('p1://')
    p2 = conn.namespace('p2://')
    conn.addDocumentData({
        'a': 'aa',
        'b': 'bb'
    },
                         keys={
                             'a': DocumentKey(prefix=pref1),
                             'b': DocumentKey(prefix=pref2)
                         })
    statements = get_statements(conn)
    assert len(statements) == 2
    assert statements == [[statements[0][0], p1.a,
                           Literal('aa'), None],
                          [statements[1][0], p2.b,
                           Literal('bb'), None]]
Exemplo n.º 14
0
def test_add_doc_data_attributes(conn, ex, attr):
    conn.addDocumentData({'p': 'oo'},
                         base=ex(''),
                         subject=ex.s,
                         attributes={'test': 'c'})
    assert [{
        'test': 'c'
    }] == get_triple_attributes(conn, ex.s, ex.p, Literal('oo'))
Exemplo n.º 15
0
def test_add_doc_data_store_source(conn):
    # Empty dict will not be stored at all, so we need at least one key
    src = '{"a":"bb"}'
    conn.addDocumentData(src, json_store_source=True)
    for _s, _p, o, _g in get_statements(conn):
        if o == Literal(src):
            break
    else:
        pytest.fail('Source document not found.')
Exemplo n.º 16
0
def test_add_doc_data_prefix_override(conn, pref1, pref2):
    p2 = conn.namespace('p2://')
    conn.addDocumentData({'a': 'aa'},
                         keys={
                             'a': DocumentKey(prefix=pref1),
                         },
                         prefix={'a': pref2})
    statements = get_statements(conn)
    assert len(statements) == 1
    assert statements == [[statements[0][0], p2.a, Literal('aa'), None]]
Exemplo n.º 17
0
def test_add_doc_data_rules(conn, ex):
    conn.addData('''
        @prefix ldm: <http://franz.com/ns/allegrograph/6.4/load-meta#> .
        ldm:myrules ldm:id "ex://test${x}" ;
                    ldm:prefix "ex://" .''')
    conn.addDocumentData({'x': "abc"}, rules='myrules')
    statements = [
        stmt for stmt in get_statements(conn)
        if 'load-meta' not in str(stmt[0])
    ]
    assert statements == [[ex.testabc, ex.x, Literal('abc'), None]]
Exemplo n.º 18
0
def test_long_literal():
    # This behavior of using LONG as the datatype might be convenient in demos,
    # (you can do ``Literal(42L)``), but has a few drawbacks:
    #    - is incorrect: will map arbitrarily huge values to LONG, which is
    #      supposed to be 64 bit, while SMALLER values will become INTEGERS
    #      (which have no size limit).
    #    - In fact longs start at sys.maxint + 1 == 2 ** 63, i.e. as soon as
    #      it is no longer valid to hold them in xsd:longs.
    #    - Python 3 has no 'long' type.
    literal = Literal(84104105115032109097107101115032110111032115101110115101046)
    assert literal.datatype is XMLSchema.LONG
Exemplo n.º 19
0
def test_add_doc_content_encoding(conn, after):
    f = tempfile.NamedTemporaryFile(suffix='.json.gz', delete=False)
    filename = f.name
    after.append(lambda: os.remove(filename))
    with gzip.GzipFile('data.json', 'wb', fileobj=f) as gz:
        gz.write('{"p":"oo"}'.encode('utf-8'))
    f.close()

    conn.addDocumentFile(filename, DocFormat.JSON, content_encoding='gzip')
    statements = get_statements(conn)
    assert 1 == len(statements)
    assert statements[0][2] == Literal("oo")
Exemplo n.º 20
0
def test_add_doc_encoding(conn, after):
    f = tempfile.NamedTemporaryFile(suffix='.csv', delete=False)
    filename = f.name
    after.append(lambda: os.remove(filename))
    f.write(u'p\nрджреБрдкЁЯЫБ'.encode('utf-16le'))
    f.close()

    # This is completely broken... it expects an external format name here
    conn.addDocumentFile(filename, DocFormat.CSV, encoding='unicode')
    statements = get_statements(conn)
    assert 1 == len(statements)
    assert statements[0][2] == Literal(u"рджреБрдкЁЯЫБ")
Exemplo n.º 21
0
def test_add_doc_data_transform_template(conn):
    conn.addDocumentData({'a': 'XY'}, transform={'a': 'test-$a'})
    statements = get_statements(conn)
    assert len(statements) == 1
    assert statements[0][2] == Literal('test-XY')
Exemplo n.º 22
0
def test_literals_from_python_values(value, expected_text, expected_type):
    literal = Literal(value)
    assert literal.label == expected_text
    # Well-known types are normalized, so it is safe to use the ``is`` operator here.
    assert literal.datatype is expected_type
Exemplo n.º 23
0
def test_true_literal():
    assert Literal(True).booleanValue()
Exemplo n.º 24
0
def test_false_literal():
    assert not Literal(False).booleanValue()
Exemplo n.º 25
0
def test_time_value_tz():
    lit = Literal('1984-08-26T10:00:05+02:00', XMLSchema.DATETIME)
    t = lit.datetimeValue()
    assert t.utcoffset() == timedelta(0, 7200)
Exemplo n.º 26
0
def test_add_doc_data_transform_built_in(conn):
    conn.addDocumentData({'a': 'aa'}, transform={'a': 'string-capitalize'})
    statements = get_statements(conn)
    assert len(statements) == 1
    assert statements[0][2] == Literal('Aa')