W3C

RDF Dataset Canonicalization (RDFC-1.0) Test Suite

Tests the 1.0 version of RDF Dataset Canonicalization and the generation of canonical maps.

This page describes RDF Dataset Canonicalization tests for the RDFC-1.0 profile. These tests are also described in JSON-LD and Turtle formats for convenience. The manifest vocabulary is described in the RDF Dataset Canonicalization Test Vocabulary (JSON-LD, Turtle) and is based on the RDF Test Vocabulary.

A previous version of this test suite included tests for the URGNA2012 profile, which is non-normative. Those tests continue to be avaliable in the Credentials Community Group repository.

General instructions for running the RDF Dataset Canonicalization Test suites

Tests for RDFC-1.0 take input files, specified as N-Quads, and generate Canonical N-Quads output as required by the RDFC-1.0 algorithm.

The result file is in the N-Quads format. The test passes if the result compares identically as the expected result as text files.

For a negative evaluation test, the test passes if the implementation generates an error due to excessive calls to Hash N-Degree Quads.

Tests for RDFC-1.0 Issued Identifiers Map.

The result file is in the JSON format with keys representing the blank node identifiers from the test input, and values representing the associated canonical identifier from the issued identifiers map created as an alternate result from Step 7 of the RDFC1.0 Canonicalization Algorithm. The test passes if the value of the resulting issued identifiers map matches the corresponding expected test result that can be loaded via the result field of the test.

Additionally, the keys of the issued identifiers map must exactly match the values of the input blank node identifier map. Note that the keys of the input blank node identifier map represent blank nodes and the specific value is not considered for test purposes.

Contributing Tests

The test manifests and entries are built automatically from manifest.csv using mk_manifest.rb, where each row defines a combination of Validation tests for the same action and implicit files. Tests may be contributed via pull request to https://github.com/w3c/rdf-canon with suitable changes to the manifest.csv and necessary action and result files.

Distribution

Distributed under both the W3C Test Suite License and the W3C 3-clause BSD License. To contribute to a W3C Test Suite, see the policies and contribution forms.

Disclaimer

UNDER BOTH MUTUALLY EXCLUSIVE LICENSES, THIS DOCUMENT AND ALL DOCUMENTS, TESTS AND SOFTWARE THAT LINK THIS STATEMENT ARE PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.

RDF Dataset Canonicalization (RDFC-1.0) Test Suite (86 entries)

test001c: simple id
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test001-in.nq
result
rdfc10/test001-rdfc10.nq
test002c: duplicate property iri values
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test002-in.nq
result
rdfc10/test002-rdfc10.nq
test003c: bnode
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test003-in.nq
result
rdfc10/test003-rdfc10.nq
test003m: bnode (map test)
type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test003-in.nq
result
rdfc10/test003-rdfc10map.json
test004c: bnode plus embed w/subject
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test004-in.nq
result
rdfc10/test004-rdfc10.nq
test004m: bnode plus embed w/subject (map test)
type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test004-in.nq
result
rdfc10/test004-rdfc10map.json
test005c: bnode embed
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test005-in.nq
result
rdfc10/test005-rdfc10.nq
test005m: bnode embed (map test)
type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test005-in.nq
result
rdfc10/test005-rdfc10map.json
test006c: multiple rdf types
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test006-in.nq
result
rdfc10/test006-rdfc10.nq
test008c: single subject complex
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test008-in.nq
result
rdfc10/test008-rdfc10.nq
test009c: multiple subjects - complex
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test009-in.nq
result
rdfc10/test009-rdfc10.nq
test010c: type
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test010-in.nq
result
rdfc10/test010-rdfc10.nq
test011c: type-coerced type
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test011-in.nq
result
rdfc10/test011-rdfc10.nq
test013c: type-coerced type, cycle
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test013-in.nq
result
rdfc10/test013-rdfc10.nq
test014c: check types
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test014-in.nq
result
rdfc10/test014-rdfc10.nq
test016c: blank node - dual link - embed
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test016-in.nq
result
rdfc10/test016-rdfc10.nq
test016m: blank node - dual link - embed (map test)
type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test016-in.nq
result
rdfc10/test016-rdfc10map.json
test017c: blank node - dual link - non-embed
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test017-in.nq
result
rdfc10/test017-rdfc10.nq
test017m: blank node - dual link - non-embed (map test)
type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test017-in.nq
result
rdfc10/test017-rdfc10map.json
test018c: blank node - self link
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test018-in.nq
result
rdfc10/test018-rdfc10.nq
test018m: blank node - self link (map test)
type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test018-in.nq
result
rdfc10/test018-rdfc10map.json
test019c: blank node - disjoint self links
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test019-in.nq
result
rdfc10/test019-rdfc10.nq
test020c: blank node - diamond
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test020-in.nq
result
rdfc10/test020-rdfc10.nq
test020m: blank node - diamond (map test)
type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test020-in.nq
result
rdfc10/test020-rdfc10map.json
test021c: blank node - circle of 2
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test021-in.nq
result
rdfc10/test021-rdfc10.nq
test022c: blank node - double circle of 2
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test022-in.nq
result
rdfc10/test022-rdfc10.nq
test023c: blank node - circle of 3
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test023-in.nq
result
rdfc10/test023-rdfc10.nq
test024c: blank node - double circle of 3 (0-1-2)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test024-in.nq
result
rdfc10/test024-rdfc10.nq
test025c: blank node - double circle of 3 (0-2-1)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test025-in.nq
result
rdfc10/test025-rdfc10.nq
test026c: blank node - double circle of 3 (1-0-2)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test026-in.nq
result
rdfc10/test026-rdfc10.nq
test027c: blank node - double circle of 3 (1-2-0)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test027-in.nq
result
rdfc10/test027-rdfc10.nq
test028c: blank node - double circle of 3 (2-1-0)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test028-in.nq
result
rdfc10/test028-rdfc10.nq
test029c: blank node - double circle of 3 (2-0-1)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test029-in.nq
result
rdfc10/test029-rdfc10.nq
test030c: blank node - point at circle of 3
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test030-in.nq
result
rdfc10/test030-rdfc10.nq
test030m: blank node - point at circle of 3 (map test)
type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test030-in.nq
result
rdfc10/test030-rdfc10map.json
test033c: disjoint identical subgraphs (1)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test033-in.nq
result
rdfc10/test033-rdfc10.nq
test034c: disjoint identical subgraphs (2)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test034-in.nq
result
rdfc10/test034-rdfc10.nq
test035c: reordered w/strings (1)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test035-in.nq
result
rdfc10/test035-rdfc10.nq
test036c: reordered w/strings (2)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test036-in.nq
result
rdfc10/test036-rdfc10.nq
test038c: reordered 4 bnodes, reordered 2 properties (1)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test038-in.nq
result
rdfc10/test038-rdfc10.nq
test039c: reordered 4 bnodes, reordered 2 properties (2)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test039-in.nq
result
rdfc10/test039-rdfc10.nq
test040c: reordered 6 bnodes (1)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test040-in.nq
result
rdfc10/test040-rdfc10.nq
test043c: literal with language
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test043-in.nq
result
rdfc10/test043-rdfc10.nq
test044c: poison – evil (1)

A poison graph which is computable given defined limits.

type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
high
action
rdfc10/test044-in.nq
result
rdfc10/test044-rdfc10.nq
test045c: poison – evil (2)

A poison graph which is computable given defined limits.

type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
high
action
rdfc10/test045-in.nq
result
rdfc10/test045-rdfc10.nq
test046c: poison – evil (3)

A poison graph which is computable given defined limits.

type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
high
action
rdfc10/test046-in.nq
result
rdfc10/test046-rdfc10.nq
test047c: deep diff (1)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test047-in.nq
result
rdfc10/test047-rdfc10.nq
test047m: deep diff (1) (map test)
type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test047-in.nq
result
rdfc10/test047-rdfc10map.json
test048c: deep diff (2)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test048-in.nq
result
rdfc10/test048-rdfc10.nq
test048m: deep diff (2) (map test)
type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test048-in.nq
result
rdfc10/test048-rdfc10map.json
test053c: @list

RDF Collections using rdf:first/rest ladders.

type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test053-in.nq
result
rdfc10/test053-rdfc10.nq
test053m: @list (map test)

RDF Collections using rdf:first/rest ladders.

type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test053-in.nq
result
rdfc10/test053-rdfc10map.json
test054c: t-graph
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test054-in.nq
result
rdfc10/test054-rdfc10.nq
test055c: simple reorder (1)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test055-in.nq
result
rdfc10/test055-rdfc10.nq
test055m: simple reorder (1) (map test)
type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test055-in.nq
result
rdfc10/test055-rdfc10map.json
test056c: simple reorder (2)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test056-in.nq
result
rdfc10/test056-rdfc10.nq
test056m: simple reorder (2) (map test)
type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test056-in.nq
result
rdfc10/test056-rdfc10map.json
test057c: unnamed graph
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test057-in.nq
result
rdfc10/test057-rdfc10.nq
test057m: unnamed graph (map test)
type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test057-in.nq
result
rdfc10/test057-rdfc10map.json
test058c: unnamed graph with blank node objects
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test058-in.nq
result
rdfc10/test058-rdfc10.nq
test059c: n-quads parsing
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test059-in.nq
result
rdfc10/test059-rdfc10.nq
test060c: n-quads escaping
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test060-in.nq
result
rdfc10/test060-rdfc10.nq
test060m: n-quads escaping (map test)
type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test060-in.nq
result
rdfc10/test060-rdfc10map.json
test061c: same literal value with multiple languages
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test061-in.nq
result
rdfc10/test061-rdfc10.nq
test062c: same literal value with multiple datatypes
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test062-in.nq
result
rdfc10/test062-rdfc10.nq
test063c: blank node - diamond (with _:b)

This duplicates #test020, but uses _:b as a blank node prefix

type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test063-in.nq
result
rdfc10/test063-rdfc10.nq
test063m: blank node - diamond (with _:b) (map test)

This duplicates #test020, but uses _:b as a blank node prefix

type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test063-in.nq
result
rdfc10/test063-rdfc10map.json
test064c: blank node - double circle of 3 (0-1-2, reversed)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test064-in.nq
result
rdfc10/test064-rdfc10.nq
test065c: blank node - double circle of 3 (0-2-1, reversed)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test065-in.nq
result
rdfc10/test065-rdfc10.nq
test066c: blank node - double circle of 3 (1-0-2, reversed)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test066-in.nq
result
rdfc10/test066-rdfc10.nq
test067c: blank node - double circle of 3 (1-2-0, reversed)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test067-in.nq
result
rdfc10/test067-rdfc10.nq
test068c: blank node - double circle of 3 (2-1-0, reversed)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test068-in.nq
result
rdfc10/test068-rdfc10.nq
test069c: blank node - double circle of 3 (2-0-1, reversed)
type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
medium
action
rdfc10/test069-in.nq
result
rdfc10/test069-rdfc10.nq
test070c: dataset - isomorphic default and iri named

Isomorphic graphs in default and IRI named graph

type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test070-in.nq
result
rdfc10/test070-rdfc10.nq
test070m: dataset - isomorphic default and iri named (map test)

Isomorphic graphs in default and IRI named graph

type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test070-in.nq
result
rdfc10/test070-rdfc10map.json
test071c: dataset - isomorphic default and node named

Isomorphic graphs in default and blank node named graph

type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test071-in.nq
result
rdfc10/test071-rdfc10.nq
test071m: dataset - isomorphic default and node named (map test)

Isomorphic graphs in default and blank node named graph

type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test071-in.nq
result
rdfc10/test071-rdfc10map.json
test072c: dataset - shared blank nodes

Blank nodes shared in default and named graph

type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test072-in.nq
result
rdfc10/test072-rdfc10.nq
test072m: dataset - shared blank nodes (map test)

Blank nodes shared in default and named graph

type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test072-in.nq
result
rdfc10/test072-rdfc10map.json
test073c: dataset - referencing graph name

Default graph with blank node shared with graph name

type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test073-in.nq
result
rdfc10/test073-rdfc10.nq
test073m: dataset - referencing graph name (map test)

Default graph with blank node shared with graph name

type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test073-in.nq
result
rdfc10/test073-rdfc10map.json
test074c: poison - Clique Graph (negative test)

A 10-node Clique of blank node resources all inter-related.

type
rdfc:RDFC10NegativeEvalTest
approval
rdft:Approved
computationalComplexity
high
action
rdfc10/test074-in.nq
test075c: blank node - diamond (uses SHA-384)

Same as test020 except for using SHA-384

type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test075-in.nq
result
rdfc10/test075-rdfc10.nq
test075m: blank node - diamond (uses SHA-384) (map test)

Same as test020 except for using SHA-384

type
rdfc:RDFC10MapTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test075-in.nq
result
rdfc10/test075-rdfc10map.json
test076c: duplicate ground triple in input

The duplicate triples must be removed

type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test076-in.nq
result
rdfc10/test076-rdfc10.nq
test077c: duplicate triple with blank node in input

The duplicate triples must be removed

type
rdfc:RDFC10EvalTest
approval
rdft:Approved
computationalComplexity
low
action
rdfc10/test077-in.nq
result
rdfc10/test077-rdfc10.nq