From 8821def731a086520251b3c50b5fb7f52a5ce535 Mon Sep 17 00:00:00 2001 From: Gregg Kellogg Date: Fri, 27 Sep 2019 16:11:54 -0700 Subject: [PATCH 1/2] Add tests to check for keyword redefinition allowing `@protected`. For w3c/json-ld-syntax#246. --- index.html | 6 ++- tests/expand-manifest.html | 84 ++++++++++++++++++++++++++++++++++++ tests/expand-manifest.jsonld | 24 +++++++++++ tests/expand/pr30-in.jsonld | 11 +++++ tests/expand/pr30-out.jsonld | 9 ++++ tests/expand/pr31-in.jsonld | 13 ++++++ tests/expand/pr32-in.jsonld | 13 ++++++ tests/toRdf-manifest.html | 84 ++++++++++++++++++++++++++++++++++++ tests/toRdf-manifest.jsonld | 24 +++++++++++ tests/toRdf/pr30-in.jsonld | 11 +++++ tests/toRdf/pr30-out.nq | 2 + tests/toRdf/pr31-in.jsonld | 13 ++++++ tests/toRdf/pr32-in.jsonld | 13 ++++++ 13 files changed, 305 insertions(+), 2 deletions(-) create mode 100644 tests/expand/pr30-in.jsonld create mode 100644 tests/expand/pr30-out.jsonld create mode 100644 tests/expand/pr31-in.jsonld create mode 100644 tests/expand/pr32-in.jsonld create mode 100644 tests/toRdf/pr30-in.jsonld create mode 100644 tests/toRdf/pr30-out.nq create mode 100644 tests/toRdf/pr31-in.jsonld create mode 100644 tests/toRdf/pr32-in.jsonld diff --git a/index.html b/index.html index 554d7a72..f72dd518 100644 --- a/index.html +++ b/index.html @@ -1365,8 +1365,10 @@

Algorithm

  • If processing mode is json-ld-1.1 and term is @type, value - MUST be a map with the entry @container - and value @set. Any other value means that a + MUST be a map with only the entry @container + and value @set + and optional entry `@protected`. + Any other value means that a keyword redefinition error has been detected and processing is aborted.
  • Otherwise, since keywords cannot be overridden, diff --git a/tests/expand-manifest.html b/tests/expand-manifest.html index 36057695..00eef5e7 100644 --- a/tests/expand-manifest.html +++ b/tests/expand-manifest.html @@ -8128,6 +8128,90 @@

    +
    +Test tpr30 Keywords may be protected. +
    +
    +
    +
    id
    +
    #tpr30
    +
    Type
    +
    jld:PositiveEvaluationTest, jld:ExpandTest
    +
    Purpose
    +
    Keywords may not be redefined other than to protect them.
    +
    input
    +
    +expand/pr30-in.jsonld +
    +
    expect
    +
    +expand/pr30-out.jsonld +
    +
    Options
    +
    +
    +
    specVersion
    +
    json-ld-1.1
    +
    +
    +
    +
    +
    +Test tpr31 Protected keyword aliases cannot be overridden. +
    +
    +
    +
    id
    +
    #tpr31
    +
    Type
    +
    jld:NegativeEvaluationTest, jld:ExpandTest
    +
    Purpose
    +
    Keywords may not be redefined other than to protect them.
    +
    input
    +
    +expand/pr31-in.jsonld +
    +
    expect
    +
    +protected term redefinition +
    +
    Options
    +
    +
    +
    specVersion
    +
    json-ld-1.1
    +
    +
    +
    +
    +
    +Test tpr32 Protected @type cannot be overridden. +
    +
    +
    +
    id
    +
    #tpr32
    +
    Type
    +
    jld:NegativeEvaluationTest, jld:ExpandTest
    +
    Purpose
    +
    Keywords may not be redefined other than to protect them.
    +
    input
    +
    +expand/pr32-in.jsonld +
    +
    expect
    +
    +protected term redefinition +
    +
    Options
    +
    +
    +
    specVersion
    +
    json-ld-1.1
    +
    +
    +
    +
    Test tpr33 Fails if trying to declare a keyword alias as prefix.
    diff --git a/tests/expand-manifest.jsonld b/tests/expand-manifest.jsonld index 8b16a8d1..22b15f35 100644 --- a/tests/expand-manifest.jsonld +++ b/tests/expand-manifest.jsonld @@ -2368,6 +2368,30 @@ "option": {"specVersion": "json-ld-1.1"}, "input": "expand/pr29-in.jsonld", "expect": "expand/pr29-out.jsonld" + }, { + "@id": "#tpr30", + "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"], + "name": "Keywords may be protected.", + "purpose": "Keywords may not be redefined other than to protect them.", + "option": {"specVersion": "json-ld-1.1"}, + "input": "expand/pr30-in.jsonld", + "expect": "expand/pr30-out.jsonld" + }, { + "@id": "#tpr31", + "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest"], + "name": "Protected keyword aliases cannot be overridden.", + "purpose": "Keywords may not be redefined other than to protect them.", + "option": {"specVersion": "json-ld-1.1"}, + "input": "expand/pr31-in.jsonld", + "expect": "protected term redefinition" + }, { + "@id": "#tpr32", + "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest"], + "name": "Protected @type cannot be overridden.", + "purpose": "Keywords may not be redefined other than to protect them.", + "option": {"specVersion": "json-ld-1.1"}, + "input": "expand/pr32-in.jsonld", + "expect": "protected term redefinition" }, { "@id": "#tpr33", "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest"], diff --git a/tests/expand/pr30-in.jsonld b/tests/expand/pr30-in.jsonld new file mode 100644 index 00000000..5744284d --- /dev/null +++ b/tests/expand/pr30-in.jsonld @@ -0,0 +1,11 @@ +{ + "@context": { + "@version": 1.1, + "id": {"@id": "@id", "@protected": true}, + "type": {"@id" : "@type", "@container": "@set", "@protected" : true}, + "@type": {"@container": "@set", "@protected": true} + }, + "id": "http://example.com/1", + "type": "http://example.org/ns/Foo", + "@type": "http://example.org/ns/Bar" +} \ No newline at end of file diff --git a/tests/expand/pr30-out.jsonld b/tests/expand/pr30-out.jsonld new file mode 100644 index 00000000..37af7677 --- /dev/null +++ b/tests/expand/pr30-out.jsonld @@ -0,0 +1,9 @@ +[ + { + "@id": "http://example.com/1", + "@type": [ + "http://example.org/ns/Foo", + "http://example.org/ns/Bar" + ] + } +] \ No newline at end of file diff --git a/tests/expand/pr31-in.jsonld b/tests/expand/pr31-in.jsonld new file mode 100644 index 00000000..459d335a --- /dev/null +++ b/tests/expand/pr31-in.jsonld @@ -0,0 +1,13 @@ +{ + "@context": [{ + "@version": 1.1, + "id": {"@id": "@id", "@protected": true}, + "type": {"@id" : "@type", "@container": "@set", "@protected" : true}, + "@type": {"@container": "@set", "@protected": true} + }, { + "@version": 1.1, + "id": "http://example.com/id" + }], + "id": "http://example.com/1", + "type": ["http://example.org/ns/Foo"] +} \ No newline at end of file diff --git a/tests/expand/pr32-in.jsonld b/tests/expand/pr32-in.jsonld new file mode 100644 index 00000000..3f287c01 --- /dev/null +++ b/tests/expand/pr32-in.jsonld @@ -0,0 +1,13 @@ +{ + "@context": [{ + "@version": 1.1, + "id": {"@id": "@id", "@protected": true}, + "type": {"@id" : "@type", "@container": "@set", "@protected" : true}, + "@type": {"@container": "@set", "@protected": true} + }, { + "@version": 1.1, + "@type": {"@protected": true} + }], + "id": "http://example.com/1", + "type": ["http://example.org/ns/Foo"] +} \ No newline at end of file diff --git a/tests/toRdf-manifest.html b/tests/toRdf-manifest.html index 7d724f52..6e40ee2e 100644 --- a/tests/toRdf-manifest.html +++ b/tests/toRdf-manifest.html @@ -7066,6 +7066,90 @@

    +
    +Test tpr30 Keywords may be protected. +
    +
    +
    +
    id
    +
    #tpr30
    +
    Type
    +
    jld:PositiveEvaluationTest, jld:ToRDFTest
    +
    Purpose
    +
    Keywords may not be redefined other than to protect them.
    +
    input
    +
    +toRdf/pr30-in.jsonld +
    +
    expect
    +
    +toRdf/pr30-out.nq +
    +
    Options
    +
    +
    +
    specVersion
    +
    json-ld-1.1
    +
    +
    +
    +
    +
    +Test tpr31 Protected keyword aliases cannot be overridden. +
    +
    +
    +
    id
    +
    #tpr31
    +
    Type
    +
    jld:NegativeEvaluationTest, jld:ToRDFTest
    +
    Purpose
    +
    Keywords may not be redefined other than to protect them.
    +
    input
    +
    +toRdf/pr31-in.jsonld +
    +
    expect
    +
    +term redefinition +
    +
    Options
    +
    +
    +
    specVersion
    +
    json-ld-1.1
    +
    +
    +
    +
    +
    +Test tpr32 Protected @type cannot be overridden. +
    +
    +
    +
    id
    +
    #tpr32
    +
    Type
    +
    jld:NegativeEvaluationTest, jld:ToRDFTest
    +
    Purpose
    +
    Keywords may not be redefined other than to protect them.
    +
    input
    +
    +toRdf/pr32-in.jsonld +
    +
    expect
    +
    +protected term redefinition +
    +
    Options
    +
    +
    +
    specVersion
    +
    json-ld-1.1
    +
    +
    +
    +
    Test tpr33 Fails if trying to declare a keyword alias as prefix.
    diff --git a/tests/toRdf-manifest.jsonld b/tests/toRdf-manifest.jsonld index 0cd3e3e3..d756f252 100644 --- a/tests/toRdf-manifest.jsonld +++ b/tests/toRdf-manifest.jsonld @@ -2110,6 +2110,30 @@ "option": {"specVersion": "json-ld-1.1"}, "input": "toRdf/pr29-in.jsonld", "expect": "toRdf/pr29-out.nq" + }, { + "@id": "#tpr30", + "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"], + "name": "Keywords may be protected.", + "purpose": "Keywords may not be redefined other than to protect them.", + "option": {"specVersion": "json-ld-1.1"}, + "input": "toRdf/pr30-in.jsonld", + "expect": "toRdf/pr30-out.nq" + }, { + "@id": "#tpr31", + "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest"], + "name": "Protected keyword aliases cannot be overridden.", + "purpose": "Keywords may not be redefined other than to protect them.", + "option": {"specVersion": "json-ld-1.1"}, + "input": "toRdf/pr31-in.jsonld", + "expect": "term redefinition" + }, { + "@id": "#tpr32", + "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest"], + "name": "Protected @type cannot be overridden.", + "purpose": "Keywords may not be redefined other than to protect them.", + "option": {"specVersion": "json-ld-1.1"}, + "input": "toRdf/pr32-in.jsonld", + "expect": "protected term redefinition" }, { "@id": "#tpr33", "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest"], diff --git a/tests/toRdf/pr30-in.jsonld b/tests/toRdf/pr30-in.jsonld new file mode 100644 index 00000000..5744284d --- /dev/null +++ b/tests/toRdf/pr30-in.jsonld @@ -0,0 +1,11 @@ +{ + "@context": { + "@version": 1.1, + "id": {"@id": "@id", "@protected": true}, + "type": {"@id" : "@type", "@container": "@set", "@protected" : true}, + "@type": {"@container": "@set", "@protected": true} + }, + "id": "http://example.com/1", + "type": "http://example.org/ns/Foo", + "@type": "http://example.org/ns/Bar" +} \ No newline at end of file diff --git a/tests/toRdf/pr30-out.nq b/tests/toRdf/pr30-out.nq new file mode 100644 index 00000000..52703634 --- /dev/null +++ b/tests/toRdf/pr30-out.nq @@ -0,0 +1,2 @@ + . + . diff --git a/tests/toRdf/pr31-in.jsonld b/tests/toRdf/pr31-in.jsonld new file mode 100644 index 00000000..459d335a --- /dev/null +++ b/tests/toRdf/pr31-in.jsonld @@ -0,0 +1,13 @@ +{ + "@context": [{ + "@version": 1.1, + "id": {"@id": "@id", "@protected": true}, + "type": {"@id" : "@type", "@container": "@set", "@protected" : true}, + "@type": {"@container": "@set", "@protected": true} + }, { + "@version": 1.1, + "id": "http://example.com/id" + }], + "id": "http://example.com/1", + "type": ["http://example.org/ns/Foo"] +} \ No newline at end of file diff --git a/tests/toRdf/pr32-in.jsonld b/tests/toRdf/pr32-in.jsonld new file mode 100644 index 00000000..3f287c01 --- /dev/null +++ b/tests/toRdf/pr32-in.jsonld @@ -0,0 +1,13 @@ +{ + "@context": [{ + "@version": 1.1, + "id": {"@id": "@id", "@protected": true}, + "type": {"@id" : "@type", "@container": "@set", "@protected" : true}, + "@type": {"@container": "@set", "@protected": true} + }, { + "@version": 1.1, + "@type": {"@protected": true} + }], + "id": "http://example.com/1", + "type": ["http://example.org/ns/Foo"] +} \ No newline at end of file From 3a748f429f3d8925562a52564eab78c939b3912a Mon Sep 17 00:00:00 2001 From: Gregg Kellogg Date: Mon, 30 Sep 2019 11:41:52 -0700 Subject: [PATCH 2/2] Reorder types in expand/pr30-out for ordered tests. --- tests/expand/pr30-out.jsonld | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/expand/pr30-out.jsonld b/tests/expand/pr30-out.jsonld index 37af7677..caa90d7e 100644 --- a/tests/expand/pr30-out.jsonld +++ b/tests/expand/pr30-out.jsonld @@ -2,8 +2,8 @@ { "@id": "http://example.com/1", "@type": [ - "http://example.org/ns/Foo", - "http://example.org/ns/Bar" + "http://example.org/ns/Bar", + "http://example.org/ns/Foo" ] } ] \ No newline at end of file