diff --git a/index.html b/index.html
index d9e5f429..eec397eb 100644
--- a/index.html
+++ b/index.html
@@ -940,52 +940,6 @@
RDF Serialization/Deserialization
-
-
- Processor Levels
-
-
-
- JSON-LD mostly uses the JSON syntax [[RFC8259]] along with
- various micro-syntaxes based on XML Schema datatypes [[XMLSCHEMA11-2]].
- However, it has become increasingly common to include JSON within
- a script element
- within an HTML document [[HTML]],
- as described in .
- As not all processors operate in an environment which can include HTML,
- this specification describes various categories of JSON-LD processors.
-
- A pure JSON Processor only requires the use of a
- JSON processor and is restricted to processing documents retrieved
- with a JSON content type (e.g., application/ld+json
or other JSON type).
-
- A full Processor is capable of processing JSON-LD embedded in HTML,
- in addition to the capabilities of a pure JSON Processor.
-
-
-
@@ -5212,29 +5166,6 @@ Data Round Tripping
-
- HTML Content Algorithms
- This section describes features required of a full Processor.
-
-
-
The Application Programming Interface
@@ -5817,9 +5748,6 @@ LoadDocumentCallback
it MUST be added as a profile on application/ld+json
.
Processors MAY include other media types using a +json
suffix as defined in [[RFC6839]].
-
- A full Processor MUST include text/html
at any preference level,
- unless requestProfile is `http://www.w3.org/ns/json-ld#context`.
Set documentUrl to the location of the retrieved resource
considering redirections (exclusive of HTTP status 303
"See Other" redirects
@@ -5831,7 +5759,7 @@ LoadDocumentCallback
set url to the associated href
relative to the previous url
and restart the algorithm from step 2,
ensuring that documentUrl is set to the original url.
- If the retrieved resource's Content-Type is application/json
+ If the retrieved resource's Content-Type is application/json
or any media type with a +json
suffix as defined in [[RFC6839]]
except application/ld+json
,
and the response has an HTTP Link Header [[RFC8288]] using the http://www.w3.org/ns/json-ld#context
link relation,
@@ -5843,74 +5771,9 @@ LoadDocumentCallback
The HTTP Link Header is ignored for documents served as application/ld+json
or text/html
.
- Otherwise, if the retrieved resource's Content-Type is text/html
:
-
- - If the processor is a pure JSON Processor
- the promise is rejected with a JsonLdError whose code is set to loading document failed
- and processing is terminated.
- - Set documentUrl to the the Document Base URL
- of url, as defined in [[HTML]],
- using the existing documentUrl as the document's URL.
-
- - If the url parameter
- contains a fragment identifier,
- set source to the textContent
- of the script element in document
- having an id attribute
- that matches the fragment identifier, after decoding percent encoded sequences.
-
If no such element is found,
- or the located element is not a JSON-LD script element,
- the promise is rejected with a JsonLdError whose code is set to loading document failed
- and processing is terminated.
-
- - Otherwise, if the profile
- option is specified,
- set source to the result of transforming the
- textContent
- of the first script element in document
- having an type attribute
- of
application/ld+json
along with the value of the
- profile option, if found.
- - If source is still undefined and the extractAllScripts option is not present, or
false
,
- set source to the textContent
- of the first JSON-LD script element in document.
- If no such element is found,
- or the located element is not a JSON-LD script element,
- the promise is rejected with a JsonLdError whose code is set to loading document failed
- and processing is terminated.
- - If source is defined,
- set document to the result of the
- Extract Script Content algorithm,
- using source, rejecting promise
- with a JsonLdError whose code set from the result, if an error is detected
- and processing is terminated.
-
- - Otherwise, source is undefined.
-
- - If the extractAllScripts option is not present, or
false
,
- the promise is rejected with a JsonLdError whose code is set to loading document failed
- and processing is terminated.
- - Otherwise, the extractAllScripts option is
true
.
- Set document to a new empty array.
- For each JSON-LD script element in input:
-
- - Set source to its textContent.
- - Set script content to the result of the Extract Script Content algorithm,
- using source, rejecting promise
- with a JsonLdError whose code set from the result, if an error is detected
- and processing is terminated.
- - If script content is an array, merge it to the end of document.
- - Otherwise, append script content to document.
-
-
-
-
-
-
Otherwise, the retrieved document's Content-Type is neither
application/json
,
application/ld+json
,
- text/html
,
nor any other media type using a
+json
suffix as defined in [[RFC6839]].
Reject the promise passing a loading document failed error.
@@ -5998,6 +5861,105 @@ RemoteDocument
+
+ HTML Content Algorithms
+ This section describes optional features available
+ with a documentLoader supporting HTML script extraction.
+ Implementations of a documentLoader MAY support extracting JSON-LD from
+ script elements contained within an HTML [[HTML]] document.
+ This section describes the normative behavior of such processors.
+ Such a processor supports HTML script extraction.
+
+ Process HTML
+ This sections describe an extension to the algorithm specified
+ in LoadDocumentCallback to support extracting JSON-LD from HTML.
+
+ Step 2 is updated to add the following: A processor supporting HTML script extraction MUST include text/html
at any preference level,
+ unless requestProfile is `http://www.w3.org/ns/json-ld#context`.
+
+ After step 5, add the following processing step:
+ Otherwise, if the retrieved resource's Content-Type is text/html
:
+
+ - Set documentUrl to the the Document Base URL
+ of url, as defined in [[HTML]],
+ using the existing documentUrl as the document's URL.
+
+ - If the url parameter
+ contains a fragment identifier,
+ set source to the textContent
+ of the script element in document
+ having an id attribute
+ that matches the fragment identifier, after decoding percent encoded sequences.
+
If no such element is found,
+ or the located element is not a JSON-LD script element,
+ the promise is rejected with a JsonLdError whose code is set to loading document failed
+ and processing is terminated.
+
+ - Otherwise, if the profile
+ option is specified,
+ set source to the result of transforming the
+ textContent
+ of the first script element in document
+ having an type attribute
+ of
application/ld+json
along with the value of the
+ profile option, if found.
+ - If source is still undefined and the extractAllScripts option is not present, or
false
,
+ set source to the textContent
+ of the first JSON-LD script element in document.
+ If no such element is found,
+ or the located element is not a JSON-LD script element,
+ the promise is rejected with a JsonLdError whose code is set to loading document failed
+ and processing is terminated.
+ - If source is defined,
+ set document to the result of the
+ Extract Script Content algorithm,
+ using source, rejecting promise
+ with a JsonLdError whose code set from the result, if an error is detected
+ and processing is terminated.
+
+ - Otherwise, source is undefined.
+
+ - If the extractAllScripts option is not present, or
false
,
+ the promise is rejected with a JsonLdError whose code is set to loading document failed
+ and processing is terminated.
+ - Otherwise, the extractAllScripts option is
true
.
+ Set document to a new empty array.
+ For each JSON-LD script element in input:
+
+ - Set source to its textContent.
+ - Set script content to the result of the Extract Script Content algorithm,
+ using source, rejecting promise
+ with a JsonLdError whose code set from the result, if an error is detected
+ and processing is terminated.
+ - If script content is an array, merge it to the end of document.
+ - Otherwise, append script content to document.
+
+
+
+
+
+
+
+
+
+
Error Handling
@@ -6345,7 +6307,6 @@ Changes since JSON-LD Community Group Final Report
Added support for JSON literals.
Term definitions with keys which are of the form of a compact IRI or absolute IRI MUST NOT
expand to an IRI other than the expansion of the key itself.
- Define different processor modes: pure JSON Processor, event-based JSON processor, and full Processor.
Consolidate RemoteDocument processing into the LoadDocumentCallback
including variations on HTML processing.
The IRI compaction algorithm may generate an error if the result is an
diff --git a/tests/README.md b/tests/README.md
index 6e740a99..7377d6a9 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -9,7 +9,7 @@ More information and an RDFS definition of the test vocabulary can be found at [
# Design
-Tests driven from a top-level [manifest](manifest.jsonld) and are defined into [compact](compact-manifest.jsonld), [expand](expand-manifest.jsonld), [flatten](flatten-manifest.jsonld), [remote-doc](remote-doc-manifest.jsonld), [fromRdf](fromRdf-manifest.jsonld), and [toRdf](toRdf-manifest.jsonld) sections:
+Tests driven from a top-level [manifest](manifest.jsonld) and are defined into [compact](compact-manifest.jsonld), [expand](expand-manifest.jsonld), [flatten](flatten-manifest.jsonld), [html](html-manifest.jsonld), [remote-doc](remote-doc-manifest.jsonld), [fromRdf](fromRdf-manifest.jsonld), and [toRdf](toRdf-manifest.jsonld) sections:
* [compact](compact-manifest.jsonld) tests have _input_, _expected_ and _context_ documents.
The _expected_ results can be compared using [JSON-LD object comparison](#json-ld-object-comparison) with the processor output. Additionally, if the `ordered` option is not set, result should be expanded and compared with the expanded _expected_ document also using [JSON-LD object comparison](#json-ld-object-comparison).
@@ -18,6 +18,12 @@ Tests driven from a top-level [manifest](manifest.jsonld) and are defined into [
* [expand](expand-manifest.jsonld) tests have _input_ and _expected_ documents.
The _expected_ results can be compared using [JSON-LD object comparison](#json-ld-object-comparison) with the processor output.
+ For *NegativeEvaluationTests*, the result is a string associated with the expected error code.
+* [html](html.jsonld) tests have _input_ and _expected_ documents and an optional _context_ document.
+ The _expected_ results can be compared using [JSON-LD object comparison](#json-ld-object-comparison) with the processor output
+ after potentially remapping blank node identifiers (see below).
+ Additionally, if the result is compacted and the `ordered` option is not set, result should be expanded and compared with the expanded _expected_ document also using [JSON-LD object comparison](#json-ld-object-comparison).
+
For *NegativeEvaluationTests*, the result is a string associated with the expected error code.
* [flatten](flatten-manifest.jsonld) tests have _input_ and _expected_ documents and an optional _context_ document.
The _expected_ results can be compared using [JSON-LD object comparison](#json-ld-object-comparison) with the processor output
@@ -37,18 +43,6 @@ Tests driven from a top-level [manifest](manifest.jsonld) and are defined into [
The _expected_ results can be compared using [JSON-LD object comparison](#json-ld-object-comparison) with the processor output.
* [toRdf](toRdf-manifest.jsonld) tests have _input_ and _expected_ documents.
The _expected_ results can be compared using [RDF Dataset Isomorphism](https://www.w3.org/TR/rdf11-concepts/#dfn-dataset-isomorphism).
-* _http_ tests have _input_ and _expected_ documents and an optional _context_ document.
- These tests describe the behavior of an HTTP server performing content-negotiation using the ACCEPT header, specified using the _accept_ option to generate the _expected_ result document.
- The _expected_ results can be compared using [JSON-LD object comparison](#json-ld-object-comparison) with the processor output
- after potentially remapping blank node identifiers (see below).
- Additionally, if the result is compacted and the `ordered` option is not set, result should be expanded and compared with the expanded _expected_ document also using [JSON-LD object comparison](#json-ld-object-comparison).
-
- If the result is to be compacted, and no explicit context URL is provided, test subjects should use http/default-context.jsonld
-
- If the profile parameter includes http://example.com/do-not-use, test subjects should reject the URL and not accept the media type. Otherwise, for any other URL, applications should apply the specified URL for the context or frame, as appropriate.
-
- For *NegativeEvaluationTests*, the result is the expected HTTP status. Options may be present to describe the intended HTTP behavior:
- * _accept_: The HTTP _Accept_ header value.
Unless `processingMode` is set explicitly in a test entry, `processingMode` is compatible with both `json-ld-1.0` and `json-ld-1.1`.
diff --git a/tests/compact-manifest.jsonld b/tests/compact-manifest.jsonld
index 3992b566..4ff8c73e 100644
--- a/tests/compact-manifest.jsonld
+++ b/tests/compact-manifest.jsonld
@@ -1292,42 +1292,6 @@
"input": "compact/ep15-in.jsonld",
"context": "compact/ep15-context.jsonld",
"expect": "invalid container mapping"
- }, {
- "@id": "#th001",
- "@type": ["jld:PositiveEvaluationTest", "jld:CompactTest"],
- "name": "Compacts embedded JSON-LD script element",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "compact/h001-in.html",
- "context": "compact/h001-context.jsonld",
- "expect": "compact/h001-out.jsonld",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th002",
- "@type": ["jld:PositiveEvaluationTest", "jld:CompactTest"],
- "name": "Compacts first embedded JSON-LD script element",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "compact/h002-in.html",
- "context": "compact/h002-context.jsonld",
- "expect": "compact/h002-out.jsonld",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th003",
- "@type": ["jld:PositiveEvaluationTest", "jld:CompactTest"],
- "name": "Compacts targeted JSON-LD script element",
- "purpose": "Tests embedded JSON-LD in HTML with fragment identifier",
- "input": "compact/h003-in.html#second",
- "context": "compact/h003-context.jsonld",
- "expect": "compact/h003-out.jsonld",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th004",
- "@type": ["jld:PositiveEvaluationTest", "jld:CompactTest"],
- "name": "Compacts all embedded JSON-LD script elements with extractAllScripts option",
- "purpose": "Tests embedded JSON-LD in HTML extracting all elements",
- "input": "compact/h004-in.html",
- "context": "compact/h004-context.jsonld",
- "expect": "compact/h004-out.jsonld",
- "option": {"specVersion": "json-ld-1.1", "extractAllScripts": true}
}, {
"@id": "#tin01",
"@type": ["jld:PositiveEvaluationTest", "jld:CompactTest"],
diff --git a/tests/expand-manifest.jsonld b/tests/expand-manifest.jsonld
index 14caa764..c21ada68 100644
--- a/tests/expand-manifest.jsonld
+++ b/tests/expand-manifest.jsonld
@@ -1524,166 +1524,6 @@
"input": "expand/es02-in.jsonld",
"expect": "invalid container mapping",
"option": {"processingMode": "json-ld-1.1", "specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th001",
- "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"],
- "name": "Expands embedded JSON-LD script element",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "expand/h001-in.html",
- "expect": "expand/h001-out.jsonld",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th002",
- "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"],
- "name": "Expands first embedded JSON-LD script element",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "expand/h002-in.html",
- "expect": "expand/h002-out.jsonld",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th003",
- "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"],
- "name": "Expands targeted JSON-LD script element",
- "purpose": "Tests embedded JSON-LD in HTML with fragment identifier",
- "input": "expand/h003-in.html#second",
- "expect": "expand/h003-out.jsonld",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th004",
- "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"],
- "name": "Expands all embedded JSON-LD script elements with extractAllScripts option",
- "purpose": "Tests embedded JSON-LD in HTML extracting all elements",
- "input": "expand/h004-in.html",
- "expect": "expand/h004-out.jsonld",
- "option": {"specVersion": "json-ld-1.1", "extractAllScripts": true}
- }, {
- "@id": "#th005",
- "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"],
- "name": "Expands multiple embedded JSON-LD script elements where one is an array",
- "purpose": "Tests embedded JSON-LD in HTML extracting all elements with array",
- "input": "expand/h005-in.html",
- "expect": "expand/h005-out.jsonld",
- "option": {"specVersion": "json-ld-1.1", "extractAllScripts": true}
- }, {
- "@id": "#th006",
- "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"],
- "name": "Expands as empty with no embedded JSON-LD script elements",
- "purpose": "Tests embedded JSON-LD in HTML when none exist",
- "input": "expand/h006-in.html",
- "expect": "expand/h006-out.jsonld",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th007",
- "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"],
- "name": "Expands as empty with no embedded JSON-LD script elements and extractAllScripts",
- "purpose": "Tests embedded JSON-LD in HTML when none exist extracting all elements",
- "input": "expand/h007-in.html",
- "expect": "expand/h007-out.jsonld",
- "option": {"specVersion": "json-ld-1.1", "extractAllScripts": true}
- }, {
- "@id": "#th010",
- "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"],
- "name": "Expands embedded JSON-LD script element with HTML character references",
- "purpose": "Tests embedded JSON-LD in HTML with character references",
- "input": "expand/h010-in.html",
- "expect": "expand/h010-out.jsonld",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th011",
- "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest"],
- "name": "Errors if no element found at target",
- "purpose": "Tests embedded JSON-LD in HTML with fragment identifier that doesn't exist",
- "input": "expand/h011-in.html#third",
- "expect": "invalid script element",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th012",
- "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest"],
- "name": "Errors if targeted element is not a script element",
- "purpose": "Tests embedded JSON-LD in HTML which isn't a script element",
- "input": "expand/h012-in.html#first",
- "expect": "invalid script element",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th013",
- "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest"],
- "name": "Errors if targeted element does not have type application/ld+json",
- "purpose": "Tests embedded JSON-LD in HTML with wrong type",
- "input": "expand/h013-in.html#first",
- "expect": "invalid script element",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th014",
- "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest"],
- "name": "Errors if uncommented script text contains comment",
- "purpose": "Tests embedded JSON-LD in HTML with comments leftover",
- "input": "expand/h014-in.html",
- "expect": "invalid script element",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th015",
- "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest"],
- "name": "Errors if end comment missing",
- "purpose": "Tests embedded JSON-LD in HTML with unballanced comments",
- "input": "expand/h015-in.html",
- "expect": "invalid script element",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th016",
- "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest"],
- "name": "Errors if start comment missing",
- "purpose": "Tests embedded JSON-LD in HTML with unballanced comments",
- "input": "expand/h016-in.html",
- "expect": "invalid script element",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th017",
- "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest"],
- "name": "Errors if uncommented script is not valid JSON",
- "purpose": "Tests embedded JSON-LD in HTML which is invalid JSON",
- "input": "expand/h017-in.html",
- "expect": "invalid script element",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th018",
- "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"],
- "name": "Expands embedded JSON-LD script element relative to document base",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "expand/h018-in.html",
- "expect": "expand/h018-out.jsonld",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th019",
- "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"],
- "name": "Expands embedded JSON-LD script element relative to base option",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "expand/h019-in.html",
- "expect": "expand/h019-out.jsonld",
- "option": {"specVersion": "json-ld-1.1", "base": "http://a.example.com/doc"}
- }, {
- "@id": "#th020",
- "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"],
- "name": "Expands embedded JSON-LD script element relative to HTML base",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "expand/h020-in.html",
- "expect": "expand/h020-out.jsonld",
- "option": {"specVersion": "json-ld-1.1", "base": "http://a.example.com/doc"}
- }, {
- "@id": "#th021",
- "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"],
- "name": "Expands embedded JSON-LD script element relative to relative HTML base",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "expand/h021-in.html",
- "expect": "expand/h021-out.jsonld",
- "option": {"specVersion": "json-ld-1.1", "base": "http://a.example.com/doc"}
- }, {
- "@id": "#th022",
- "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"],
- "name": "Expands targeted JSON-LD script element with fragment and HTML base",
- "purpose": "Tests embedded JSON-LD in HTML with fragment identifier",
- "input": "expand/h022-in.html#second",
- "expect": "expand/h022-out.jsonld",
- "option": {"specVersion": "json-ld-1.1"}
}, {
"@id": "#tin01",
"@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest"],
diff --git a/tests/expand/h018-out.jsonld b/tests/expand/h018-out.jsonld
deleted file mode 100644
index 7bf2e224..00000000
--- a/tests/expand/h018-out.jsonld
+++ /dev/null
@@ -1,4 +0,0 @@
-[{
- "@id": "https://w3c.github.io/json-ld-api/tests/expand/h018-in.html",
- "http://example.com/foo": [{"@value": "bar"}]
-}]
\ No newline at end of file
diff --git a/tests/flatten-manifest.jsonld b/tests/flatten-manifest.jsonld
index 82cffbe4..d449e494 100644
--- a/tests/flatten-manifest.jsonld
+++ b/tests/flatten-manifest.jsonld
@@ -358,42 +358,6 @@
"option": {"specVersion": "json-ld-1.1"},
"input": "flatten/e001-in.jsonld",
"expect": "conflicting indexes"
- }, {
- "@id": "#th001",
- "@type": ["jld:PositiveEvaluationTest", "jld:FlattenTest"],
- "name": "Flattens embedded JSON-LD script element",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "flatten/h001-in.html",
- "context": "flatten/h001-context.jsonld",
- "expect": "flatten/h001-out.jsonld",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th002",
- "@type": ["jld:PositiveEvaluationTest", "jld:FlattenTest"],
- "name": "Flattens first embedded JSON-LD script element",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "flatten/h002-in.html",
- "context": "flatten/h002-context.jsonld",
- "expect": "flatten/h002-out.jsonld",
- "option": {"specVersion": "json-ld-1.1", "extractAllScripts": false}
- }, {
- "@id": "#th003",
- "@type": ["jld:PositiveEvaluationTest", "jld:FlattenTest"],
- "name": "Flattens targeted JSON-LD script element",
- "purpose": "Tests embedded JSON-LD in HTML with fragment identifier",
- "input": "flatten/h003-in.html#second",
- "context": "flatten/h003-context.jsonld",
- "expect": "flatten/h003-out.jsonld",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th004",
- "@type": ["jld:PositiveEvaluationTest", "jld:FlattenTest"],
- "name": "Flattens all script elements by default",
- "purpose": "Tests embedded JSON-LD in HTML with fragment identifier",
- "input": "flatten/h004-in.html",
- "context": "flatten/h004-context.jsonld",
- "expect": "flatten/h004-out.jsonld",
- "option": {"specVersion": "json-ld-1.1"}
}, {
"@id": "#tin01",
"@type": ["jld:PositiveEvaluationTest", "jld:FlattenTest"],
diff --git a/tests/html-manifest.jsonld b/tests/html-manifest.jsonld
new file mode 100644
index 00000000..3388586a
--- /dev/null
+++ b/tests/html-manifest.jsonld
@@ -0,0 +1,401 @@
+{
+ "@context": "context.jsonld",
+ "@id": "",
+ "@type": "mf:Manifest",
+ "name": "Expansion",
+ "description": "JSON-LD Expansion tests use object compare",
+ "baseIri": "https://w3c.github.io/json-ld-api/tests/",
+ "sequence": [{
+ "@id": "#te001",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Expands embedded JSON-LD script element",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/e001-in.html",
+ "expect": "html/e001-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#te002",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Expands first embedded JSON-LD script element",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/e002-in.html",
+ "expect": "html/e002-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#te003",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Expands targeted JSON-LD script element",
+ "purpose": "Tests embedded JSON-LD in HTML with fragment identifier",
+ "input": "html/e003-in.html#second",
+ "expect": "html/e003-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#te004",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Expands all embedded JSON-LD script elements with extractAllScripts option",
+ "purpose": "Tests embedded JSON-LD in HTML extracting all elements",
+ "input": "html/e004-in.html",
+ "expect": "html/e004-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1", "extractAllScripts": true}
+ }, {
+ "@id": "#te005",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Expands multiple embedded JSON-LD script elements where one is an array",
+ "purpose": "Tests embedded JSON-LD in HTML extracting all elements with array",
+ "input": "html/e005-in.html",
+ "expect": "html/e005-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1", "extractAllScripts": true}
+ }, {
+ "@id": "#te006",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Expands as empty with no embedded JSON-LD script elements",
+ "purpose": "Tests embedded JSON-LD in HTML when none exist",
+ "input": "html/e006-in.html",
+ "expect": "html/e006-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#te007",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Expands as empty with no embedded JSON-LD script elements and extractAllScripts",
+ "purpose": "Tests embedded JSON-LD in HTML when none exist extracting all elements",
+ "input": "html/e007-in.html",
+ "expect": "html/e007-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1", "extractAllScripts": true}
+ }, {
+ "@id": "#te010",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Expands embedded JSON-LD script element with HTML character references",
+ "purpose": "Tests embedded JSON-LD in HTML with character references",
+ "input": "html/e010-in.html",
+ "expect": "html/e010-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#te011",
+ "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Errors if no element found at target",
+ "purpose": "Tests embedded JSON-LD in HTML with fragment identifier that doesn't exist",
+ "input": "html/e011-in.html#third",
+ "expect": "invalid script element",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#te012",
+ "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Errors if targeted element is not a script element",
+ "purpose": "Tests embedded JSON-LD in HTML which isn't a script element",
+ "input": "html/e012-in.html#first",
+ "expect": "invalid script element",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#te013",
+ "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Errors if targeted element does not have type application/ld+json",
+ "purpose": "Tests embedded JSON-LD in HTML with wrong type",
+ "input": "html/e013-in.html#first",
+ "expect": "invalid script element",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#te014",
+ "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Errors if uncommented script text contains comment",
+ "purpose": "Tests embedded JSON-LD in HTML with comments leftover",
+ "input": "html/e014-in.html",
+ "expect": "invalid script element",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#te015",
+ "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Errors if end comment missing",
+ "purpose": "Tests embedded JSON-LD in HTML with unballanced comments",
+ "input": "html/e015-in.html",
+ "expect": "invalid script element",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#te016",
+ "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Errors if start comment missing",
+ "purpose": "Tests embedded JSON-LD in HTML with unballanced comments",
+ "input": "html/e016-in.html",
+ "expect": "invalid script element",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#te017",
+ "@type": ["jld:NegativeEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Errors if uncommented script is not valid JSON",
+ "purpose": "Tests embedded JSON-LD in HTML which is invalid JSON",
+ "input": "html/e017-in.html",
+ "expect": "invalid script element",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#te018",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Expands embedded JSON-LD script element relative to document base",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/e018-in.html",
+ "expect": "html/e018-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#te019",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Expands embedded JSON-LD script element relative to base option",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/e019-in.html",
+ "expect": "html/e019-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1", "base": "http://a.example.com/doc"}
+ }, {
+ "@id": "#te020",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Expands embedded JSON-LD script element relative to HTML base",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/e020-in.html",
+ "expect": "html/e020-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1", "base": "http://a.example.com/doc"}
+ }, {
+ "@id": "#te021",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Expands embedded JSON-LD script element relative to relative HTML base",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/e021-in.html",
+ "expect": "html/e021-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1", "base": "http://a.example.com/doc"}
+ }, {
+ "@id": "#te022",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ExpandTest", "jld:HtmlTest"],
+ "name": "Expands targeted JSON-LD script element with fragment and HTML base",
+ "purpose": "Tests embedded JSON-LD in HTML with fragment identifier",
+ "input": "html/e022-in.html#second",
+ "expect": "html/e022-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tc001",
+ "@type": ["jld:PositiveEvaluationTest", "jld:CompactTest", "jld:HtmlTest"],
+ "name": "Compacts embedded JSON-LD script element",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/c001-in.html",
+ "context": "html/c001-context.jsonld",
+ "expect": "html/c001-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tc002",
+ "@type": ["jld:PositiveEvaluationTest", "jld:CompactTest", "jld:HtmlTest"],
+ "name": "Compacts first embedded JSON-LD script element",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/c002-in.html",
+ "context": "html/c002-context.jsonld",
+ "expect": "html/c002-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tc003",
+ "@type": ["jld:PositiveEvaluationTest", "jld:CompactTest", "jld:HtmlTest"],
+ "name": "Compacts targeted JSON-LD script element",
+ "purpose": "Tests embedded JSON-LD in HTML with fragment identifier",
+ "input": "html/c003-in.html#second",
+ "context": "html/c003-context.jsonld",
+ "expect": "html/c003-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tc004",
+ "@type": ["jld:PositiveEvaluationTest", "jld:CompactTest", "jld:HtmlTest"],
+ "name": "Compacts all embedded JSON-LD script elements with extractAllScripts option",
+ "purpose": "Tests embedded JSON-LD in HTML extracting all elements",
+ "input": "html/c004-in.html",
+ "context": "html/c004-context.jsonld",
+ "expect": "html/c004-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1", "extractAllScripts": true}
+ }, {
+ "@id": "#tf001",
+ "@type": ["jld:PositiveEvaluationTest", "jld:FlattenTest", "jld:HtmlTest"],
+ "name": "Flattens embedded JSON-LD script element",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/f001-in.html",
+ "context": "html/f001-context.jsonld",
+ "expect": "html/f001-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tf002",
+ "@type": ["jld:PositiveEvaluationTest", "jld:FlattenTest", "jld:HtmlTest"],
+ "name": "Flattens first embedded JSON-LD script element",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/f002-in.html",
+ "context": "html/f002-context.jsonld",
+ "expect": "html/f002-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1", "extractAllScripts": false}
+ }, {
+ "@id": "#tf003",
+ "@type": ["jld:PositiveEvaluationTest", "jld:FlattenTest", "jld:HtmlTest"],
+ "name": "Flattens targeted JSON-LD script element",
+ "purpose": "Tests embedded JSON-LD in HTML with fragment identifier",
+ "input": "html/f003-in.html#second",
+ "context": "html/f003-context.jsonld",
+ "expect": "html/f003-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tf004",
+ "@type": ["jld:PositiveEvaluationTest", "jld:FlattenTest", "jld:HtmlTest"],
+ "name": "Flattens all script elements by default",
+ "purpose": "Tests embedded JSON-LD in HTML with fragment identifier",
+ "input": "html/f004-in.html",
+ "context": "html/f004-context.jsonld",
+ "expect": "html/f004-out.jsonld",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tr001",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Transforms embedded JSON-LD script element",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/r001-in.html",
+ "expect": "html/r001-out.nq",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tr002",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Transforms first embedded JSON-LD script element",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/r002-in.html",
+ "expect": "html/r002-out.nq",
+ "option": {"specVersion": "json-ld-1.1", "extractAllScripts": false}
+ }, {
+ "@id": "#tr003",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Transforms targeted JSON-LD script element",
+ "purpose": "Tests embedded JSON-LD in HTML with fragment identifier",
+ "input": "html/r003-in.html#second",
+ "expect": "html/r003-out.nq",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tr004",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Expands all embedded JSON-LD script elements with extractAllScripts option",
+ "purpose": "Tests embedded JSON-LD in HTML extracting all elements",
+ "input": "html/r004-in.html",
+ "expect": "html/r004-out.nq",
+ "option": {"specVersion": "json-ld-1.1", "extractAllScripts": true}
+ }, {
+ "@id": "#tr005",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Expands multiple embedded JSON-LD script elements where one is an array",
+ "purpose": "Tests embedded JSON-LD in HTML extracting all elements with array",
+ "input": "html/r005-in.html",
+ "expect": "html/r005-out.nq",
+ "option": {"specVersion": "json-ld-1.1", "extractAllScripts": true}
+ }, {
+ "@id": "#tr006",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Expands as empty with no embedded JSON-LD script elements",
+ "purpose": "Tests embedded JSON-LD in HTML when none exist",
+ "input": "html/r006-in.html",
+ "expect": "html/r006-out.nq",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tr007",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Expands as empty with no embedded JSON-LD script elements and extractAllScripts",
+ "purpose": "Tests embedded JSON-LD in HTML when none exist extracting all elements",
+ "input": "html/r007-in.html",
+ "expect": "html/r007-out.nq",
+ "option": {"specVersion": "json-ld-1.1", "extractAllScripts": true}
+ }, {
+ "@id": "#tr010",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Expands embedded JSON-LD script element with HTML character references",
+ "purpose": "Tests embedded JSON-LD in HTML with character references",
+ "input": "html/r010-in.html",
+ "expect": "html/r010-out.nq",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tr011",
+ "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Errors if no element found at target",
+ "purpose": "Tests embedded JSON-LD in HTML with fragment identifier that doesn't exist",
+ "input": "html/r011-in.html#third",
+ "expect": "invalid script element",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tr012",
+ "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Errors if targeted element is not a script element",
+ "purpose": "Tests embedded JSON-LD in HTML which isn't a script element",
+ "input": "html/r012-in.html#first",
+ "expect": "invalid script element",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tr013",
+ "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Errors if targeted element does not have type application/ld+json",
+ "purpose": "Tests embedded JSON-LD in HTML with wrong type",
+ "input": "html/r013-in.html#first",
+ "expect": "invalid script element",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tr014",
+ "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Errors if uncommented script text contains comment",
+ "purpose": "Tests embedded JSON-LD in HTML with comments leftover",
+ "input": "html/r014-in.html",
+ "expect": "invalid script element",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tr015",
+ "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Errors if end comment missing",
+ "purpose": "Tests embedded JSON-LD in HTML with unballanced comments",
+ "input": "html/r015-in.html",
+ "expect": "invalid script element",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tr016",
+ "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Errors if start comment missing",
+ "purpose": "Tests embedded JSON-LD in HTML with unballanced comments",
+ "input": "html/r016-in.html",
+ "expect": "invalid script element",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tr017",
+ "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Errors if uncommented script is not valid JSON",
+ "purpose": "Tests embedded JSON-LD in HTML which is invalid JSON",
+ "input": "html/r017-in.html",
+ "expect": "invalid script element",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tr018",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Expands embedded JSON-LD script element relative to document base",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/r018-in.html",
+ "expect": "html/r018-out.nq",
+ "option": {"specVersion": "json-ld-1.1"}
+ }, {
+ "@id": "#tr019",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Expands embedded JSON-LD script element relative to base option",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/r019-in.html",
+ "expect": "html/r019-out.nq",
+ "option": {"specVersion": "json-ld-1.1", "base": "http://a.example.com/doc"}
+ }, {
+ "@id": "#tr020",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Expands embedded JSON-LD script element relative to HTML base",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/r020-in.html",
+ "expect": "html/r020-out.nq",
+ "option": {"specVersion": "json-ld-1.1", "base": "http://a.example.com/doc"}
+ }, {
+ "@id": "#tr021",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Expands embedded JSON-LD script element relative to relative HTML base",
+ "purpose": "Tests embedded JSON-LD in HTML",
+ "input": "html/r021-in.html",
+ "expect": "html/r021-out.nq",
+ "option": {"specVersion": "json-ld-1.1", "base": "http://a.example.com/doc"}
+ }, {
+ "@id": "#tr022",
+ "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest", "jld:HtmlTest"],
+ "name": "Expands targeted JSON-LD script element with fragment and HTML base",
+ "purpose": "Tests embedded JSON-LD in HTML with fragment identifier",
+ "input": "html/r022-in.html#second",
+ "expect": "html/r022-out.nq",
+ "option": {"specVersion": "json-ld-1.1"}
+ }]
+}
\ No newline at end of file
diff --git a/tests/compact/h001-context.jsonld b/tests/html/c001-context.jsonld
similarity index 100%
rename from tests/compact/h001-context.jsonld
rename to tests/html/c001-context.jsonld
diff --git a/tests/compact/h001-in.html b/tests/html/c001-in.html
similarity index 100%
rename from tests/compact/h001-in.html
rename to tests/html/c001-in.html
diff --git a/tests/compact/h001-out.jsonld b/tests/html/c001-out.jsonld
similarity index 100%
rename from tests/compact/h001-out.jsonld
rename to tests/html/c001-out.jsonld
diff --git a/tests/compact/h002-context.jsonld b/tests/html/c002-context.jsonld
similarity index 100%
rename from tests/compact/h002-context.jsonld
rename to tests/html/c002-context.jsonld
diff --git a/tests/compact/h002-in.html b/tests/html/c002-in.html
similarity index 100%
rename from tests/compact/h002-in.html
rename to tests/html/c002-in.html
diff --git a/tests/compact/h002-out.jsonld b/tests/html/c002-out.jsonld
similarity index 100%
rename from tests/compact/h002-out.jsonld
rename to tests/html/c002-out.jsonld
diff --git a/tests/compact/h003-context.jsonld b/tests/html/c003-context.jsonld
similarity index 100%
rename from tests/compact/h003-context.jsonld
rename to tests/html/c003-context.jsonld
diff --git a/tests/compact/h003-in.html b/tests/html/c003-in.html
similarity index 100%
rename from tests/compact/h003-in.html
rename to tests/html/c003-in.html
diff --git a/tests/compact/h003-out.jsonld b/tests/html/c003-out.jsonld
similarity index 100%
rename from tests/compact/h003-out.jsonld
rename to tests/html/c003-out.jsonld
diff --git a/tests/compact/h004-context.jsonld b/tests/html/c004-context.jsonld
similarity index 100%
rename from tests/compact/h004-context.jsonld
rename to tests/html/c004-context.jsonld
diff --git a/tests/compact/h004-in.html b/tests/html/c004-in.html
similarity index 100%
rename from tests/compact/h004-in.html
rename to tests/html/c004-in.html
diff --git a/tests/compact/h004-out.jsonld b/tests/html/c004-out.jsonld
similarity index 100%
rename from tests/compact/h004-out.jsonld
rename to tests/html/c004-out.jsonld
diff --git a/tests/expand/h001-in.html b/tests/html/e001-in.html
similarity index 100%
rename from tests/expand/h001-in.html
rename to tests/html/e001-in.html
diff --git a/tests/expand/h001-out.jsonld b/tests/html/e001-out.jsonld
similarity index 100%
rename from tests/expand/h001-out.jsonld
rename to tests/html/e001-out.jsonld
diff --git a/tests/expand/h002-in.html b/tests/html/e002-in.html
similarity index 100%
rename from tests/expand/h002-in.html
rename to tests/html/e002-in.html
diff --git a/tests/expand/h002-out.jsonld b/tests/html/e002-out.jsonld
similarity index 100%
rename from tests/expand/h002-out.jsonld
rename to tests/html/e002-out.jsonld
diff --git a/tests/expand/h003-in.html b/tests/html/e003-in.html
similarity index 100%
rename from tests/expand/h003-in.html
rename to tests/html/e003-in.html
diff --git a/tests/expand/h003-out.jsonld b/tests/html/e003-out.jsonld
similarity index 100%
rename from tests/expand/h003-out.jsonld
rename to tests/html/e003-out.jsonld
diff --git a/tests/expand/h004-in.html b/tests/html/e004-in.html
similarity index 100%
rename from tests/expand/h004-in.html
rename to tests/html/e004-in.html
diff --git a/tests/expand/h004-out.jsonld b/tests/html/e004-out.jsonld
similarity index 100%
rename from tests/expand/h004-out.jsonld
rename to tests/html/e004-out.jsonld
diff --git a/tests/expand/h005-in.html b/tests/html/e005-in.html
similarity index 100%
rename from tests/expand/h005-in.html
rename to tests/html/e005-in.html
diff --git a/tests/expand/h005-out.jsonld b/tests/html/e005-out.jsonld
similarity index 100%
rename from tests/expand/h005-out.jsonld
rename to tests/html/e005-out.jsonld
diff --git a/tests/expand/h006-in.html b/tests/html/e006-in.html
similarity index 100%
rename from tests/expand/h006-in.html
rename to tests/html/e006-in.html
diff --git a/tests/expand/h006-out.jsonld b/tests/html/e006-out.jsonld
similarity index 100%
rename from tests/expand/h006-out.jsonld
rename to tests/html/e006-out.jsonld
diff --git a/tests/expand/h007-in.html b/tests/html/e007-in.html
similarity index 100%
rename from tests/expand/h007-in.html
rename to tests/html/e007-in.html
diff --git a/tests/expand/h007-out.jsonld b/tests/html/e007-out.jsonld
similarity index 100%
rename from tests/expand/h007-out.jsonld
rename to tests/html/e007-out.jsonld
diff --git a/tests/expand/h008-in.html b/tests/html/e008-in.html
similarity index 100%
rename from tests/expand/h008-in.html
rename to tests/html/e008-in.html
diff --git a/tests/expand/h008-out.jsonld b/tests/html/e008-out.jsonld
similarity index 100%
rename from tests/expand/h008-out.jsonld
rename to tests/html/e008-out.jsonld
diff --git a/tests/expand/h009-in.html b/tests/html/e009-in.html
similarity index 100%
rename from tests/expand/h009-in.html
rename to tests/html/e009-in.html
diff --git a/tests/expand/h009-out.jsonld b/tests/html/e009-out.jsonld
similarity index 100%
rename from tests/expand/h009-out.jsonld
rename to tests/html/e009-out.jsonld
diff --git a/tests/expand/h010-in.html b/tests/html/e010-in.html
similarity index 100%
rename from tests/expand/h010-in.html
rename to tests/html/e010-in.html
diff --git a/tests/expand/h010-out.jsonld b/tests/html/e010-out.jsonld
similarity index 100%
rename from tests/expand/h010-out.jsonld
rename to tests/html/e010-out.jsonld
diff --git a/tests/expand/h011-in.html b/tests/html/e011-in.html
similarity index 100%
rename from tests/expand/h011-in.html
rename to tests/html/e011-in.html
diff --git a/tests/expand/h012-in.html b/tests/html/e012-in.html
similarity index 100%
rename from tests/expand/h012-in.html
rename to tests/html/e012-in.html
diff --git a/tests/expand/h013-in.html b/tests/html/e013-in.html
similarity index 100%
rename from tests/expand/h013-in.html
rename to tests/html/e013-in.html
diff --git a/tests/expand/h014-in.html b/tests/html/e014-in.html
similarity index 100%
rename from tests/expand/h014-in.html
rename to tests/html/e014-in.html
diff --git a/tests/expand/h015-in.html b/tests/html/e015-in.html
similarity index 100%
rename from tests/expand/h015-in.html
rename to tests/html/e015-in.html
diff --git a/tests/expand/h016-in.html b/tests/html/e016-in.html
similarity index 100%
rename from tests/expand/h016-in.html
rename to tests/html/e016-in.html
diff --git a/tests/expand/h017-in.html b/tests/html/e017-in.html
similarity index 100%
rename from tests/expand/h017-in.html
rename to tests/html/e017-in.html
diff --git a/tests/expand/h018-in.html b/tests/html/e018-in.html
similarity index 100%
rename from tests/expand/h018-in.html
rename to tests/html/e018-in.html
diff --git a/tests/html/e018-out.jsonld b/tests/html/e018-out.jsonld
new file mode 100644
index 00000000..1006dad1
--- /dev/null
+++ b/tests/html/e018-out.jsonld
@@ -0,0 +1,4 @@
+[{
+ "@id": "https://w3c.github.io/json-ld-api/tests/html/e018-in.html",
+ "http://example.com/foo": [{"@value": "bar"}]
+}]
\ No newline at end of file
diff --git a/tests/expand/h019-in.html b/tests/html/e019-in.html
similarity index 100%
rename from tests/expand/h019-in.html
rename to tests/html/e019-in.html
diff --git a/tests/expand/h019-out.jsonld b/tests/html/e019-out.jsonld
similarity index 100%
rename from tests/expand/h019-out.jsonld
rename to tests/html/e019-out.jsonld
diff --git a/tests/expand/h020-in.html b/tests/html/e020-in.html
similarity index 100%
rename from tests/expand/h020-in.html
rename to tests/html/e020-in.html
diff --git a/tests/expand/h020-out.jsonld b/tests/html/e020-out.jsonld
similarity index 100%
rename from tests/expand/h020-out.jsonld
rename to tests/html/e020-out.jsonld
diff --git a/tests/expand/h021-in.html b/tests/html/e021-in.html
similarity index 100%
rename from tests/expand/h021-in.html
rename to tests/html/e021-in.html
diff --git a/tests/expand/h021-out.jsonld b/tests/html/e021-out.jsonld
similarity index 100%
rename from tests/expand/h021-out.jsonld
rename to tests/html/e021-out.jsonld
diff --git a/tests/expand/h022-in.html b/tests/html/e022-in.html
similarity index 100%
rename from tests/expand/h022-in.html
rename to tests/html/e022-in.html
diff --git a/tests/expand/h022-out.jsonld b/tests/html/e022-out.jsonld
similarity index 100%
rename from tests/expand/h022-out.jsonld
rename to tests/html/e022-out.jsonld
diff --git a/tests/flatten/h001-context.jsonld b/tests/html/f001-context.jsonld
similarity index 100%
rename from tests/flatten/h001-context.jsonld
rename to tests/html/f001-context.jsonld
diff --git a/tests/flatten/h001-in.html b/tests/html/f001-in.html
similarity index 100%
rename from tests/flatten/h001-in.html
rename to tests/html/f001-in.html
diff --git a/tests/flatten/h001-out.jsonld b/tests/html/f001-out.jsonld
similarity index 100%
rename from tests/flatten/h001-out.jsonld
rename to tests/html/f001-out.jsonld
diff --git a/tests/flatten/h002-context.jsonld b/tests/html/f002-context.jsonld
similarity index 100%
rename from tests/flatten/h002-context.jsonld
rename to tests/html/f002-context.jsonld
diff --git a/tests/flatten/h002-in.html b/tests/html/f002-in.html
similarity index 100%
rename from tests/flatten/h002-in.html
rename to tests/html/f002-in.html
diff --git a/tests/flatten/h002-out.jsonld b/tests/html/f002-out.jsonld
similarity index 100%
rename from tests/flatten/h002-out.jsonld
rename to tests/html/f002-out.jsonld
diff --git a/tests/flatten/h003-context.jsonld b/tests/html/f003-context.jsonld
similarity index 100%
rename from tests/flatten/h003-context.jsonld
rename to tests/html/f003-context.jsonld
diff --git a/tests/flatten/h003-in.html b/tests/html/f003-in.html
similarity index 100%
rename from tests/flatten/h003-in.html
rename to tests/html/f003-in.html
diff --git a/tests/flatten/h003-out.jsonld b/tests/html/f003-out.jsonld
similarity index 100%
rename from tests/flatten/h003-out.jsonld
rename to tests/html/f003-out.jsonld
diff --git a/tests/flatten/h004-context.jsonld b/tests/html/f004-context.jsonld
similarity index 100%
rename from tests/flatten/h004-context.jsonld
rename to tests/html/f004-context.jsonld
diff --git a/tests/flatten/h004-in.html b/tests/html/f004-in.html
similarity index 100%
rename from tests/flatten/h004-in.html
rename to tests/html/f004-in.html
diff --git a/tests/flatten/h004-out.jsonld b/tests/html/f004-out.jsonld
similarity index 100%
rename from tests/flatten/h004-out.jsonld
rename to tests/html/f004-out.jsonld
diff --git a/tests/toRdf/h001-in.html b/tests/html/r001-in.html
similarity index 100%
rename from tests/toRdf/h001-in.html
rename to tests/html/r001-in.html
diff --git a/tests/toRdf/h001-out.nq b/tests/html/r001-out.nq
similarity index 100%
rename from tests/toRdf/h001-out.nq
rename to tests/html/r001-out.nq
diff --git a/tests/toRdf/h002-in.html b/tests/html/r002-in.html
similarity index 100%
rename from tests/toRdf/h002-in.html
rename to tests/html/r002-in.html
diff --git a/tests/toRdf/h002-out.nq b/tests/html/r002-out.nq
similarity index 100%
rename from tests/toRdf/h002-out.nq
rename to tests/html/r002-out.nq
diff --git a/tests/toRdf/h003-in.html b/tests/html/r003-in.html
similarity index 100%
rename from tests/toRdf/h003-in.html
rename to tests/html/r003-in.html
diff --git a/tests/toRdf/h003-out.nq b/tests/html/r003-out.nq
similarity index 100%
rename from tests/toRdf/h003-out.nq
rename to tests/html/r003-out.nq
diff --git a/tests/toRdf/h004-in.html b/tests/html/r004-in.html
similarity index 100%
rename from tests/toRdf/h004-in.html
rename to tests/html/r004-in.html
diff --git a/tests/toRdf/h004-out.nq b/tests/html/r004-out.nq
similarity index 100%
rename from tests/toRdf/h004-out.nq
rename to tests/html/r004-out.nq
diff --git a/tests/toRdf/h005-in.html b/tests/html/r005-in.html
similarity index 100%
rename from tests/toRdf/h005-in.html
rename to tests/html/r005-in.html
diff --git a/tests/toRdf/h005-out.nq b/tests/html/r005-out.nq
similarity index 100%
rename from tests/toRdf/h005-out.nq
rename to tests/html/r005-out.nq
diff --git a/tests/toRdf/h006-in.html b/tests/html/r006-in.html
similarity index 100%
rename from tests/toRdf/h006-in.html
rename to tests/html/r006-in.html
diff --git a/tests/toRdf/h006-out.nq b/tests/html/r006-out.nq
similarity index 100%
rename from tests/toRdf/h006-out.nq
rename to tests/html/r006-out.nq
diff --git a/tests/toRdf/h007-in.html b/tests/html/r007-in.html
similarity index 100%
rename from tests/toRdf/h007-in.html
rename to tests/html/r007-in.html
diff --git a/tests/toRdf/h007-out.nq b/tests/html/r007-out.nq
similarity index 100%
rename from tests/toRdf/h007-out.nq
rename to tests/html/r007-out.nq
diff --git a/tests/toRdf/h010-in.html b/tests/html/r010-in.html
similarity index 100%
rename from tests/toRdf/h010-in.html
rename to tests/html/r010-in.html
diff --git a/tests/toRdf/h010-out.nq b/tests/html/r010-out.nq
similarity index 100%
rename from tests/toRdf/h010-out.nq
rename to tests/html/r010-out.nq
diff --git a/tests/toRdf/h011-in.html b/tests/html/r011-in.html
similarity index 100%
rename from tests/toRdf/h011-in.html
rename to tests/html/r011-in.html
diff --git a/tests/toRdf/h012-in.html b/tests/html/r012-in.html
similarity index 100%
rename from tests/toRdf/h012-in.html
rename to tests/html/r012-in.html
diff --git a/tests/toRdf/h013-in.html b/tests/html/r013-in.html
similarity index 100%
rename from tests/toRdf/h013-in.html
rename to tests/html/r013-in.html
diff --git a/tests/toRdf/h014-in.html b/tests/html/r014-in.html
similarity index 100%
rename from tests/toRdf/h014-in.html
rename to tests/html/r014-in.html
diff --git a/tests/toRdf/h015-in.html b/tests/html/r015-in.html
similarity index 100%
rename from tests/toRdf/h015-in.html
rename to tests/html/r015-in.html
diff --git a/tests/toRdf/h016-in.html b/tests/html/r016-in.html
similarity index 100%
rename from tests/toRdf/h016-in.html
rename to tests/html/r016-in.html
diff --git a/tests/toRdf/h017-in.html b/tests/html/r017-in.html
similarity index 100%
rename from tests/toRdf/h017-in.html
rename to tests/html/r017-in.html
diff --git a/tests/toRdf/h018-in.html b/tests/html/r018-in.html
similarity index 100%
rename from tests/toRdf/h018-in.html
rename to tests/html/r018-in.html
diff --git a/tests/html/r018-out.nq b/tests/html/r018-out.nq
new file mode 100644
index 00000000..d9ad2af0
--- /dev/null
+++ b/tests/html/r018-out.nq
@@ -0,0 +1 @@
+ "bar" .
diff --git a/tests/toRdf/h019-in.html b/tests/html/r019-in.html
similarity index 100%
rename from tests/toRdf/h019-in.html
rename to tests/html/r019-in.html
diff --git a/tests/toRdf/h019-out.nq b/tests/html/r019-out.nq
similarity index 100%
rename from tests/toRdf/h019-out.nq
rename to tests/html/r019-out.nq
diff --git a/tests/toRdf/h020-in.html b/tests/html/r020-in.html
similarity index 100%
rename from tests/toRdf/h020-in.html
rename to tests/html/r020-in.html
diff --git a/tests/toRdf/h020-out.nq b/tests/html/r020-out.nq
similarity index 100%
rename from tests/toRdf/h020-out.nq
rename to tests/html/r020-out.nq
diff --git a/tests/toRdf/h021-in.html b/tests/html/r021-in.html
similarity index 100%
rename from tests/toRdf/h021-in.html
rename to tests/html/r021-in.html
diff --git a/tests/toRdf/h021-out.nq b/tests/html/r021-out.nq
similarity index 100%
rename from tests/toRdf/h021-out.nq
rename to tests/html/r021-out.nq
diff --git a/tests/toRdf/h022-in.html b/tests/html/r022-in.html
similarity index 100%
rename from tests/toRdf/h022-in.html
rename to tests/html/r022-in.html
diff --git a/tests/toRdf/h022-out.nq b/tests/html/r022-out.nq
similarity index 100%
rename from tests/toRdf/h022-out.nq
rename to tests/html/r022-out.nq
diff --git a/tests/manifest.jsonld b/tests/manifest.jsonld
index fd7dfce2..c211faaa 100644
--- a/tests/manifest.jsonld
+++ b/tests/manifest.jsonld
@@ -10,6 +10,7 @@
"flatten-manifest.jsonld",
"fromRdf-manifest.jsonld",
"remote-doc-manifest.jsonld",
- "toRdf-manifest.jsonld"
+ "toRdf-manifest.jsonld",
+ "html-manifest.jsonld"
]
}
diff --git a/tests/toRdf-manifest.jsonld b/tests/toRdf-manifest.jsonld
index 9a72770b..ac335ac0 100644
--- a/tests/toRdf-manifest.jsonld
+++ b/tests/toRdf-manifest.jsonld
@@ -1239,166 +1239,6 @@
"input": "toRdf/e114-in.jsonld",
"expect": "toRdf/e114-out.nq",
"option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th001",
- "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"],
- "name": "Transforms embedded JSON-LD script element",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "toRdf/h001-in.html",
- "expect": "toRdf/h001-out.nq",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th002",
- "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"],
- "name": "Transforms first embedded JSON-LD script element",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "toRdf/h002-in.html",
- "expect": "toRdf/h002-out.nq",
- "option": {"specVersion": "json-ld-1.1", "extractAllScripts": false}
- }, {
- "@id": "#th003",
- "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"],
- "name": "Transforms targeted JSON-LD script element",
- "purpose": "Tests embedded JSON-LD in HTML with fragment identifier",
- "input": "toRdf/h003-in.html#second",
- "expect": "toRdf/h003-out.nq",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th004",
- "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"],
- "name": "Expands all embedded JSON-LD script elements with extractAllScripts option",
- "purpose": "Tests embedded JSON-LD in HTML extracting all elements",
- "input": "toRdf/h004-in.html",
- "expect": "toRdf/h004-out.nq",
- "option": {"specVersion": "json-ld-1.1", "extractAllScripts": true}
- }, {
- "@id": "#th005",
- "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"],
- "name": "Expands multiple embedded JSON-LD script elements where one is an array",
- "purpose": "Tests embedded JSON-LD in HTML extracting all elements with array",
- "input": "toRdf/h005-in.html",
- "expect": "toRdf/h005-out.nq",
- "option": {"specVersion": "json-ld-1.1", "extractAllScripts": true}
- }, {
- "@id": "#th006",
- "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"],
- "name": "Expands as empty with no embedded JSON-LD script elements",
- "purpose": "Tests embedded JSON-LD in HTML when none exist",
- "input": "toRdf/h006-in.html",
- "expect": "toRdf/h006-out.nq",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th007",
- "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"],
- "name": "Expands as empty with no embedded JSON-LD script elements and extractAllScripts",
- "purpose": "Tests embedded JSON-LD in HTML when none exist extracting all elements",
- "input": "toRdf/h007-in.html",
- "expect": "toRdf/h007-out.nq",
- "option": {"specVersion": "json-ld-1.1", "extractAllScripts": true}
- }, {
- "@id": "#th010",
- "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"],
- "name": "Expands embedded JSON-LD script element with HTML character references",
- "purpose": "Tests embedded JSON-LD in HTML with character references",
- "input": "toRdf/h010-in.html",
- "expect": "toRdf/h010-out.nq",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th011",
- "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest"],
- "name": "Errors if no element found at target",
- "purpose": "Tests embedded JSON-LD in HTML with fragment identifier that doesn't exist",
- "input": "toRdf/h011-in.html#third",
- "expect": "invalid script element",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th012",
- "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest"],
- "name": "Errors if targeted element is not a script element",
- "purpose": "Tests embedded JSON-LD in HTML which isn't a script element",
- "input": "toRdf/h012-in.html#first",
- "expect": "invalid script element",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th013",
- "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest"],
- "name": "Errors if targeted element does not have type application/ld+json",
- "purpose": "Tests embedded JSON-LD in HTML with wrong type",
- "input": "toRdf/h013-in.html#first",
- "expect": "invalid script element",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th014",
- "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest"],
- "name": "Errors if uncommented script text contains comment",
- "purpose": "Tests embedded JSON-LD in HTML with comments leftover",
- "input": "toRdf/h014-in.html",
- "expect": "invalid script element",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th015",
- "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest"],
- "name": "Errors if end comment missing",
- "purpose": "Tests embedded JSON-LD in HTML with unballanced comments",
- "input": "toRdf/h015-in.html",
- "expect": "invalid script element",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th016",
- "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest"],
- "name": "Errors if start comment missing",
- "purpose": "Tests embedded JSON-LD in HTML with unballanced comments",
- "input": "toRdf/h016-in.html",
- "expect": "invalid script element",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th017",
- "@type": ["jld:NegativeEvaluationTest", "jld:ToRDFTest"],
- "name": "Errors if uncommented script is not valid JSON",
- "purpose": "Tests embedded JSON-LD in HTML which is invalid JSON",
- "input": "toRdf/h017-in.html",
- "expect": "invalid script element",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th018",
- "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"],
- "name": "Expands embedded JSON-LD script element relative to document base",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "toRdf/h018-in.html",
- "expect": "toRdf/h018-out.nq",
- "option": {"specVersion": "json-ld-1.1"}
- }, {
- "@id": "#th019",
- "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"],
- "name": "Expands embedded JSON-LD script element relative to base option",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "toRdf/h019-in.html",
- "expect": "toRdf/h019-out.nq",
- "option": {"specVersion": "json-ld-1.1", "base": "http://a.example.com/doc"}
- }, {
- "@id": "#th020",
- "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"],
- "name": "Expands embedded JSON-LD script element relative to HTML base",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "toRdf/h020-in.html",
- "expect": "toRdf/h020-out.nq",
- "option": {"specVersion": "json-ld-1.1", "base": "http://a.example.com/doc"}
- }, {
- "@id": "#th021",
- "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"],
- "name": "Expands embedded JSON-LD script element relative to relative HTML base",
- "purpose": "Tests embedded JSON-LD in HTML",
- "input": "toRdf/h021-in.html",
- "expect": "toRdf/h021-out.nq",
- "option": {"specVersion": "json-ld-1.1", "base": "http://a.example.com/doc"}
- }, {
- "@id": "#th022",
- "@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"],
- "name": "Expands targeted JSON-LD script element with fragment and HTML base",
- "purpose": "Tests embedded JSON-LD in HTML with fragment identifier",
- "input": "toRdf/h022-in.html#second",
- "expect": "toRdf/h022-out.nq",
- "option": {"specVersion": "json-ld-1.1"}
}, {
"@id": "#tin01",
"@type": ["jld:PositiveEvaluationTest", "jld:ToRDFTest"],
diff --git a/tests/toRdf/h018-out.nq b/tests/toRdf/h018-out.nq
deleted file mode 100644
index aca6bac4..00000000
--- a/tests/toRdf/h018-out.nq
+++ /dev/null
@@ -1 +0,0 @@
- "bar" .
diff --git a/tests/vocab.html b/tests/vocab.html
index 3a93686b..aef8548b 100644
--- a/tests/vocab.html
+++ b/tests/vocab.html
@@ -30,247 +30,254 @@
},
"@graph": [
{
- "@id": "jld:PositiveEvaluationTest",
- "rdfs:comment": "A Positive Evaluation test is successful when the result of processing the input file specified as `mf:action` (aliased as \"input\" in test manifest) exactly matches the output file specified as `mf:result` (aliased as \"expect\" in test manifest) using the comparison defined in another class. The specifics of invoking test, including the interpretation of options (`:option`) and other input files are specified through another class.",
- "@type": "rdfs:Class",
- "rdfs:label": "Positive Evaluation Test",
- "rdfs:subClassOf": "jld:Test"
+ "@id": "jld:compactArrays",
+ "rdfs:label": "compact arrays",
+ "rdfs:range": "xsd:boolean",
+ "@type": "rdf:Property",
+ "rdfs:comment": "If set to `true`, the JSON-LD processor replaces arrays with just one element with that element during compaction. If set to false, all arrays will remain arrays even if they have just one element.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:Test",
- "rdfs:comment": "All JSON-LD tests have an input file referenced using `mf:action` (aliased as \"input\" in test manifest). Positive and Negative Evaluation Tests also have a result file referenced using `mf:result` (aliased as \"expect\" in test manifest). Other tests may take different inputs and options as defined for each test class. Tests should be run with the processingMode option set to \"json-ld-1.1\", unless specified explicitly as a test option.",
+ "@id": "jld:Option",
+ "rdfs:label": "Processor Options",
"@type": "rdfs:Class",
- "rdfs:label": "Superclass of all JSON-LD tests"
+ "rdfs:comment": "Options passed to the test runner to affect invocation of the appropriate API method."
},
{
- "@id": "jld:option",
- "rdfs:comment": "Options affecting processing",
- "rdfs:range": "jld:Option",
- "rdfs:domain": "jld:Test",
+ "@id": "jld:redirectTo",
+ "rdfs:label": "redirect to",
+ "rdfs:range": "xsd:boolean",
"@type": "rdf:Property",
- "rdfs:label": "option"
+ "rdfs:comment": "The location of a URL for redirection. A request made of the input file must be redirected to the designated URL.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:Option",
- "rdfs:comment": "Options passed to the test runner to affect invocation of the appropriate API method.",
+ "@id": "jld:NegativeSyntaxTest",
+ "rdfs:label": "Negative Syntax Test",
"@type": "rdfs:Class",
- "rdfs:label": "Processor Options"
+ "rdfs:subClassOf": "jld:Test",
+ "rdfs:comment": "A type of test specifically for syntax testing. Syntax tests are not required to have an associated result, only an action. Negative syntax tests are tests of which the result should be a parser error."
},
{
- "@id": "jld:CompactTest",
- "rdfs:comment": "A `CompactTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`.",
+ "@id": "jld:Test",
+ "rdfs:label": "Superclass of all JSON-LD tests",
"@type": "rdfs:Class",
- "rdfs:subClassOf": "jld:Test",
- "rdfs:label": "Compact Evaluation Test"
+ "rdfs:comment": "All JSON-LD tests have an input file referenced using `mf:action` (aliased as \"input\" in test manifest). Positive and Negative Evaluation Tests also have a result file referenced using `mf:result` (aliased as \"expect\" in test manifest). Other tests may take different inputs and options as defined for each test class. Tests should be run with the processingMode option set to \"json-ld-1.1\", unless specified explicitly as a test option."
},
{
- "@id": "https://w3c.github.io/json-ld-api/tests/vocab#",
- "rdfs:comment": "Manifest vocabulary for JSON-LD test cases",
- "dc11:title": "Test case manifest vocabulary extensions",
- "dc11:creator": "Gregg Kellogg",
- "dc11:publisher": "W3C Linked JSON Community Group",
- "dc11:description": "Test case manifest vocabulary extensions",
- "dc11:identifier": "https://w3c.github.io/json-ld-api/tests/vocab#",
- "dc11:date": "2013-09-23"
+ "@id": "jld:useNativeTypes",
+ "rdfs:label": "use native types",
+ "rdfs:range": "xsd:boolean",
+ "@type": "rdf:Property",
+ "rdfs:comment": "If the _use native types_ flag is set to `true`, RDF literals with a datatype IRI that equal `xsd:integer` or `xsd:double` are converted to a JSON numbers and RDF literals with a datatype IRI that equals `xsd:boolean` are converted to `true` or `false` based on their lexical form.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:NegativeEvaluationTest",
- "rdfs:comment": "A Negative Evaluation test is successful when the result of processing the input file specified as `mf:action` (aliased as \"input\" in test manifest) results in the error identified by the literal value of `mf:result` (aliased as \"expect\" in test manifest). The specifics of invoking test, including the interpretation of options (`:option`) and other input files are specified through another class. See the [README](https://w3c.github.io/json-ld-api/tests/) for more details on running tests.",
+ "@id": "jld:context",
+ "rdfs:label": "context",
+ "rdfs:range": "rdfs:Resource",
+ "@type": "rdf:Property",
+ "rdfs:comment": "A context that is used for transforming the input document.",
+ "rdfs:domain": "jld:Test"
+ },
+ {
+ "@id": "jld:FromRDFTest",
+ "rdfs:label": "From RDF Evaluation Test",
"@type": "rdfs:Class",
- "rdfs:label": "Positive Evaluation Test",
- "rdfs:subClassOf": "jld:Test"
+ "rdfs:subClassOf": "jld:Test",
+ "rdfs:comment": "A `FromRDFTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`."
+ },
+ {
+ "@id": "jld:httpStatus",
+ "rdfs:label": "HTTP status",
+ "rdfs:range": "xsd:boolean",
+ "@type": "rdf:Property",
+ "rdfs:comment": "The HTTP status code that must be returned when the input file is requested. This is typically used along with the `redirectTo` property.",
+ "rdfs:domain": "jld:Option"
},
{
"@id": "jld:useRdfType",
- "rdfs:comment": "If the _use rdf type_ flag is set to `true`, statements with an `rdf:type` predicate will not use `@type`, but will be transformed as a normal property.",
+ "rdfs:label": "use RDF types",
"rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "use RDF types"
+ "rdfs:comment": "If the _use rdf type_ flag is set to `true`, statements with an `rdf:type` predicate will not use `@type`, but will be transformed as a normal property.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:ExpandTest",
- "rdfs:comment": "A `ExpandTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`.",
+ "@id": "jld:NegativeEvaluationTest",
+ "rdfs:label": "Positive Evaluation Test",
"@type": "rdfs:Class",
"rdfs:subClassOf": "jld:Test",
- "rdfs:label": "Expand Evaluation Test"
+ "rdfs:comment": "A Negative Evaluation test is successful when the result of processing the input file specified as `mf:action` (aliased as \"input\" in test manifest) results in the error identified by the literal value of `mf:result` (aliased as \"expect\" in test manifest). The specifics of invoking test, including the interpretation of options (`:option`) and other input files are specified through another class. See the [README](https://w3c.github.io/json-ld-api/tests/) for more details on running tests."
},
{
- "@id": "jld:NegativeSyntaxTest",
- "rdfs:comment": "A type of test specifically for syntax testing. Syntax tests are not required to have an associated result, only an action. Negative syntax tests are tests of which the result should be a parser error.",
+ "@id": "jld:HtmlTest",
+ "rdfs:label": "HTML Evaluation Test",
"@type": "rdfs:Class",
"rdfs:subClassOf": "jld:Test",
- "rdfs:label": "Negative Syntax Test"
+ "rdfs:comment": "An `HtmlTest` modifies either a `PositiveEvaluationTest` or `NegativeEvaluationTest` indicating that the source is of type text/html, which requires optional _HTML script extraction_ support."
},
{
- "@id": "jld:compactArrays",
- "rdfs:comment": "If set to `true`, the JSON-LD processor replaces arrays with just one element with that element during compaction. If set to false, all arrays will remain arrays even if they have just one element.",
+ "@id": "jld:compactToRelative",
+ "rdfs:label": "compact to relative",
"rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "compact arrays"
+ "rdfs:comment": "If set to `false`, the JSON-LD processor will not attempt to compact using document-relative IRIs.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:HttpTest",
- "rdfs:comment": "An `HttpTest` modifies either a `PositiveEvaluationTest` or `NegativeEvaluationTest`.",
+ "@id": "jld:PositiveSyntaxTest",
+ "rdfs:label": "Positive Syntax Test",
"@type": "rdfs:Class",
"rdfs:subClassOf": "jld:Test",
- "rdfs:label": "HTTP Evaluation Test"
+ "rdfs:comment": "A type of test specifically for syntax testing. Syntax tests are not required to have an associated result, only an action."
},
{
- "@id": "jld:compactToRelative",
- "rdfs:comment": "If set to `false`, the JSON-LD processor will not attempt to compact using document-relative IRIs.",
- "rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
- "@type": "rdf:Property",
- "rdfs:label": "compact to relative"
+ "@id": "jld:ToRDFTest",
+ "rdfs:label": "To RDF Evaluation Test",
+ "@type": "rdfs:Class",
+ "rdfs:subClassOf": "jld:Test",
+ "rdfs:comment": "A `ToRDFTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`."
},
{
- "@id": "jld:httpStatus",
- "rdfs:comment": "The HTTP status code that must be returned when the input file is requested. This is typically used along with the `redirectTo` property.",
- "rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
- "@type": "rdf:Property",
- "rdfs:label": "HTTP status"
+ "@id": "jld:ExpandTest",
+ "rdfs:label": "Expand Evaluation Test",
+ "@type": "rdfs:Class",
+ "rdfs:subClassOf": "jld:Test",
+ "rdfs:comment": "A `ExpandTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`."
},
{
- "@id": "jld:FrameTest",
- "rdfs:comment": "A `FrameTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`.",
+ "@id": "jld:HttpTest",
+ "rdfs:label": "HTTP Evaluation Test",
"@type": "rdfs:Class",
"rdfs:subClassOf": "jld:Test",
- "rdfs:label": "Frame Evaluation Test"
+ "rdfs:comment": "An `HttpTest` modifies either a `PositiveEvaluationTest` or `NegativeEvaluationTest`."
},
{
- "@id": "jld:PositiveSyntaxTest",
- "rdfs:comment": "A type of test specifically for syntax testing. Syntax tests are not required to have an associated result, only an action.",
+ "@id": "jld:PositiveEvaluationTest",
+ "rdfs:label": "Positive Evaluation Test",
"@type": "rdfs:Class",
"rdfs:subClassOf": "jld:Test",
- "rdfs:label": "Positive Syntax Test"
+ "rdfs:comment": "A Positive Evaluation test is successful when the result of processing the input file specified as `mf:action` (aliased as \"input\" in test manifest) exactly matches the output file specified as `mf:result` (aliased as \"expect\" in test manifest) using the comparison defined in another class. The specifics of invoking test, including the interpretation of options (`:option`) and other input files are specified through another class."
},
{
- "@id": "jld:base",
- "rdfs:comment": "The base IRI to use when expanding or compacting the document. If set, this overrides the input document's IRI.",
+ "@id": "jld:expandContext",
+ "rdfs:label": "expand context",
"rdfs:range": "rdfs:Resource",
- "rdfs:domain": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "base"
+ "rdfs:comment": "A context that is used to initialize the active context when expanding a document.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:redirectTo",
- "rdfs:comment": "The location of a URL for redirection. A request made of the input file must be redirected to the designated URL.",
- "rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
- "@type": "rdf:Property",
- "rdfs:label": "redirect to"
+ "@id": "jld:FrameTest",
+ "rdfs:label": "Frame Evaluation Test",
+ "@type": "rdfs:Class",
+ "rdfs:subClassOf": "jld:Test",
+ "rdfs:comment": "A `FrameTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`."
},
{
- "@id": "jld:FlattenTest",
- "rdfs:comment": "A `FlattenTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`.",
+ "@id": "jld:CompactTest",
+ "rdfs:label": "Compact Evaluation Test",
"@type": "rdfs:Class",
"rdfs:subClassOf": "jld:Test",
- "rdfs:label": "Flatten Evaluation Test"
+ "rdfs:comment": "A `CompactTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`."
},
{
- "@id": "jld:expandContext",
- "rdfs:comment": "A context that is used to initialize the active context when expanding a document.",
+ "@id": "https://w3c.github.io/json-ld-api/tests/vocab#",
+ "dc11:description": "Test case manifest vocabulary extensions",
+ "dc11:identifier": "https://w3c.github.io/json-ld-api/tests/vocab#",
+ "dc11:title": "Test case manifest vocabulary extensions",
+ "dc11:creator": "Gregg Kellogg",
+ "dc11:date": "2013-09-23",
+ "rdfs:comment": "Manifest vocabulary for JSON-LD test cases",
+ "dc11:publisher": "W3C Linked JSON Community Group"
+ },
+ {
+ "@id": "jld:input",
+ "rdfs:label": "input",
"rdfs:range": "rdfs:Resource",
- "rdfs:domain": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "expand context"
+ "rdfs:comment": "Secondary input file",
+ "rdfs:domain": "jld:Test"
},
{
"@id": "jld:frame",
- "rdfs:comment": "A frame that is used for transforming the input document.",
+ "rdfs:label": "input",
"rdfs:range": "rdfs:Resource",
- "rdfs:domain": "jld:Test",
"@type": "rdf:Property",
- "rdfs:label": "input"
+ "rdfs:comment": "A frame that is used for transforming the input document.",
+ "rdfs:domain": "jld:Test"
},
{
- "@id": "jld:ToRDFTest",
- "rdfs:comment": "A `ToRDFTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`.",
- "@type": "rdfs:Class",
- "rdfs:subClassOf": "jld:Test",
- "rdfs:label": "To RDF Evaluation Test"
+ "@id": "jld:base",
+ "rdfs:label": "base",
+ "rdfs:range": "rdfs:Resource",
+ "@type": "rdf:Property",
+ "rdfs:comment": "The base IRI to use when expanding or compacting the document. If set, this overrides the input document's IRI.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:httpAccept",
- "rdfs:comment": "An HTTP Accept header.",
- "rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
+ "@id": "jld:option",
+ "rdfs:label": "option",
+ "rdfs:range": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "HTTP Accept"
+ "rdfs:comment": "Options affecting processing",
+ "rdfs:domain": "jld:Test"
},
{
- "@id": "jld:FromRDFTest",
- "rdfs:comment": "A `FromRDFTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`.",
+ "@id": "jld:FlattenTest",
+ "rdfs:label": "Flatten Evaluation Test",
"@type": "rdfs:Class",
"rdfs:subClassOf": "jld:Test",
- "rdfs:label": "From RDF Evaluation Test"
- },
- {
- "@id": "jld:useNativeTypes",
- "rdfs:comment": "If the _use native types_ flag is set to `true`, RDF literals with a datatype IRI that equal `xsd:integer` or `xsd:double` are converted to a JSON numbers and RDF literals with a datatype IRI that equals `xsd:boolean` are converted to `true` or `false` based on their lexical form.",
- "rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
- "@type": "rdf:Property",
- "rdfs:label": "use native types"
- },
- {
- "@id": "jld:context",
- "rdfs:comment": "A context that is used for transforming the input document.",
- "rdfs:range": "rdfs:Resource",
- "rdfs:domain": "jld:Test",
- "@type": "rdf:Property",
- "rdfs:label": "context"
+ "rdfs:comment": "A `FlattenTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`."
},
{
- "@id": "jld:contentType",
- "rdfs:comment": "The HTTP Content-Type used for the input file, in case it is a non-registered type.",
- "rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
+ "@id": "jld:specVersion",
+ "rdfs:label": "spec version",
+ "rdfs:range": "xsd:string",
"@type": "rdf:Property",
- "rdfs:label": "content type"
+ "rdfs:comment": "Indicates the JSON-LD version to which the test applies, rather than the specific processing mode. Values are \"json-ld-1.0\", and \"json-ld-1.1\". If not set, the test is presumed to be valid for all versions of JSON-LD. In cases where results differ between spec versions for the same test, the test will have both a \"1.0\" and \"1.1\" version, for example.",
+ "rdfs:domain": "jld:Option"
},
{
"@id": "jld:produceGeneralizedRdf",
- "rdfs:comment": "Unless the produce generalized RDF flag is set to true, RDF triples containing a blank node predicate are excluded from output.",
+ "rdfs:label": "produce generalized RDF",
"rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "produce generalized RDF"
+ "rdfs:comment": "Unless the produce generalized RDF flag is set to true, RDF triples containing a blank node predicate are excluded from output.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:specVersion",
- "rdfs:comment": "Indicates the JSON-LD version to which the test applies, rather than the specific processing mode. Values are \"json-ld-1.0\", and \"json-ld-1.1\". If not set, the test is presumed to be valid for all versions of JSON-LD. In cases where results differ between spec versions for the same test, the test will have both a \"1.0\" and \"1.1\" version, for example.",
+ "@id": "jld:processingMode",
+ "rdfs:label": "processing mode",
"rdfs:range": "xsd:string",
- "rdfs:domain": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "spec version"
+ "rdfs:comment": "If set to \"json-ld-1.1\", the JSON-LD processor must produce exactly the same results as the algorithms defined in this specification. If set to another value, the JSON-LD processor is allowed to extend or modify the algorithms defined in this specification to enable application-specific optimizations. The definition of such optimizations is beyond the scope of this specification and thus not defined. Consequently, different implementations may implement different optimizations. Developers must not define modes beginning with json-ld as they are reserved for future versions of this specification.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:input",
- "rdfs:comment": "Secondary input file",
- "rdfs:range": "rdfs:Resource",
- "rdfs:domain": "jld:Test",
+ "@id": "jld:httpLink",
+ "rdfs:label": "HTTP link",
+ "rdfs:range": "xsd:boolean",
"@type": "rdf:Property",
- "rdfs:label": "input"
+ "rdfs:comment": "An HTTP Link header to be added to the result of requesting the input file.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:httpLink",
- "rdfs:comment": "An HTTP Link header to be added to the result of requesting the input file.",
+ "@id": "jld:contentType",
+ "rdfs:label": "content type",
"rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "HTTP link"
+ "rdfs:comment": "The HTTP Content-Type used for the input file, in case it is a non-registered type.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:processingMode",
- "rdfs:comment": "If set to \"json-ld-1.1\", the JSON-LD processor must produce exactly the same results as the algorithms defined in this specification. If set to another value, the JSON-LD processor is allowed to extend or modify the algorithms defined in this specification to enable application-specific optimizations. The definition of such optimizations is beyond the scope of this specification and thus not defined. Consequently, different implementations may implement different optimizations. Developers must not define modes beginning with json-ld as they are reserved for future versions of this specification.",
- "rdfs:range": "xsd:string",
- "rdfs:domain": "jld:Option",
+ "@id": "jld:httpAccept",
+ "rdfs:label": "HTTP Accept",
+ "rdfs:range": "xsd:boolean",
"@type": "rdf:Property",
- "rdfs:label": "processing mode"
+ "rdfs:comment": "An HTTP Accept header.",
+ "rdfs:domain": "jld:Option"
}
]
}
@@ -302,6 +309,9 @@ Test Case Classes
From RDF Evaluation Test
A FromRDFTest
modifies either a PositiveEvaluationTest
, NegativeEvaluationTest
, PositiveSyntaxTest
or NegativeSyntaxTest
.
+HTML Evaluation Test
+An HtmlTest
modifies either a PositiveEvaluationTest
or NegativeEvaluationTest
indicating that the source is of type text/html, which requires optional HTML script extraction support.
+
HTTP Evaluation Test
An HttpTest
modifies either a PositiveEvaluationTest
or NegativeEvaluationTest
.
@@ -309,10 +319,10 @@ Test Case Classes
A type of test specifically for syntax testing. Syntax tests are not required to have an associated result, only an action. Negative syntax tests are tests of which the result should be a parser error.
Positive Evaluation Test
-A Positive Evaluation test is successful when the result of processing the input file specified as mf:action
(aliased as "input" in test manifest) exactly matches the output file specified as mf:result
(aliased as "expect" in test manifest) using the comparison defined in another class. The specifics of invoking test, including the interpretation of options (:option
) and other input files are specified through another class.
+A Negative Evaluation test is successful when the result of processing the input file specified as mf:action
(aliased as "input" in test manifest) results in the error identified by the literal value of mf:result
(aliased as "expect" in test manifest). The specifics of invoking test, including the interpretation of options (:option
) and other input files are specified through another class. See the README for more details on running tests.
Positive Evaluation Test
-A Negative Evaluation test is successful when the result of processing the input file specified as mf:action
(aliased as "input" in test manifest) results in the error identified by the literal value of mf:result
(aliased as "expect" in test manifest). The specifics of invoking test, including the interpretation of options (:option
) and other input files are specified through another class. See the README for more details on running tests.
+A Positive Evaluation test is successful when the result of processing the input file specified as mf:action
(aliased as "input" in test manifest) exactly matches the output file specified as mf:result
(aliased as "expect" in test manifest) using the comparison defined in another class. The specifics of invoking test, including the interpretation of options (:option
) and other input files are specified through another class.
Positive Syntax Test
A type of test specifically for syntax testing. Syntax tests are not required to have an associated result, only an action.
@@ -359,10 +369,10 @@ Test Case Properties
A context that is used to initialize the active context when expanding a document.
input
-A frame that is used for transforming the input document.
+Secondary input file
input
-Secondary input file
+A frame that is used for transforming the input document.
option
Options affecting processing
diff --git a/tests/vocab.jsonld b/tests/vocab.jsonld
index 425496c5..3bab6132 100644
--- a/tests/vocab.jsonld
+++ b/tests/vocab.jsonld
@@ -24,247 +24,254 @@
},
"@graph": [
{
- "@id": "jld:PositiveEvaluationTest",
- "rdfs:comment": "A Positive Evaluation test is successful when the result of processing the input file specified as `mf:action` (aliased as \"input\" in test manifest) exactly matches the output file specified as `mf:result` (aliased as \"expect\" in test manifest) using the comparison defined in another class. The specifics of invoking test, including the interpretation of options (`:option`) and other input files are specified through another class.",
- "@type": "rdfs:Class",
- "rdfs:label": "Positive Evaluation Test",
- "rdfs:subClassOf": "jld:Test"
+ "@id": "jld:compactArrays",
+ "rdfs:label": "compact arrays",
+ "rdfs:range": "xsd:boolean",
+ "@type": "rdf:Property",
+ "rdfs:comment": "If set to `true`, the JSON-LD processor replaces arrays with just one element with that element during compaction. If set to false, all arrays will remain arrays even if they have just one element.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:Test",
- "rdfs:comment": "All JSON-LD tests have an input file referenced using `mf:action` (aliased as \"input\" in test manifest). Positive and Negative Evaluation Tests also have a result file referenced using `mf:result` (aliased as \"expect\" in test manifest). Other tests may take different inputs and options as defined for each test class. Tests should be run with the processingMode option set to \"json-ld-1.1\", unless specified explicitly as a test option.",
+ "@id": "jld:Option",
+ "rdfs:label": "Processor Options",
"@type": "rdfs:Class",
- "rdfs:label": "Superclass of all JSON-LD tests"
+ "rdfs:comment": "Options passed to the test runner to affect invocation of the appropriate API method."
},
{
- "@id": "jld:option",
- "rdfs:comment": "Options affecting processing",
- "rdfs:range": "jld:Option",
- "rdfs:domain": "jld:Test",
+ "@id": "jld:redirectTo",
+ "rdfs:label": "redirect to",
+ "rdfs:range": "xsd:boolean",
"@type": "rdf:Property",
- "rdfs:label": "option"
+ "rdfs:comment": "The location of a URL for redirection. A request made of the input file must be redirected to the designated URL.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:Option",
- "rdfs:comment": "Options passed to the test runner to affect invocation of the appropriate API method.",
+ "@id": "jld:NegativeSyntaxTest",
+ "rdfs:label": "Negative Syntax Test",
"@type": "rdfs:Class",
- "rdfs:label": "Processor Options"
+ "rdfs:subClassOf": "jld:Test",
+ "rdfs:comment": "A type of test specifically for syntax testing. Syntax tests are not required to have an associated result, only an action. Negative syntax tests are tests of which the result should be a parser error."
},
{
- "@id": "jld:CompactTest",
- "rdfs:comment": "A `CompactTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`.",
+ "@id": "jld:Test",
+ "rdfs:label": "Superclass of all JSON-LD tests",
"@type": "rdfs:Class",
- "rdfs:subClassOf": "jld:Test",
- "rdfs:label": "Compact Evaluation Test"
+ "rdfs:comment": "All JSON-LD tests have an input file referenced using `mf:action` (aliased as \"input\" in test manifest). Positive and Negative Evaluation Tests also have a result file referenced using `mf:result` (aliased as \"expect\" in test manifest). Other tests may take different inputs and options as defined for each test class. Tests should be run with the processingMode option set to \"json-ld-1.1\", unless specified explicitly as a test option."
},
{
- "@id": "https://w3c.github.io/json-ld-api/tests/vocab#",
- "rdfs:comment": "Manifest vocabulary for JSON-LD test cases",
- "dc11:title": "Test case manifest vocabulary extensions",
- "dc11:creator": "Gregg Kellogg",
- "dc11:publisher": "W3C Linked JSON Community Group",
- "dc11:description": "Test case manifest vocabulary extensions",
- "dc11:identifier": "https://w3c.github.io/json-ld-api/tests/vocab#",
- "dc11:date": "2013-09-23"
+ "@id": "jld:useNativeTypes",
+ "rdfs:label": "use native types",
+ "rdfs:range": "xsd:boolean",
+ "@type": "rdf:Property",
+ "rdfs:comment": "If the _use native types_ flag is set to `true`, RDF literals with a datatype IRI that equal `xsd:integer` or `xsd:double` are converted to a JSON numbers and RDF literals with a datatype IRI that equals `xsd:boolean` are converted to `true` or `false` based on their lexical form.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:NegativeEvaluationTest",
- "rdfs:comment": "A Negative Evaluation test is successful when the result of processing the input file specified as `mf:action` (aliased as \"input\" in test manifest) results in the error identified by the literal value of `mf:result` (aliased as \"expect\" in test manifest). The specifics of invoking test, including the interpretation of options (`:option`) and other input files are specified through another class. See the [README](https://w3c.github.io/json-ld-api/tests/) for more details on running tests.",
+ "@id": "jld:context",
+ "rdfs:label": "context",
+ "rdfs:range": "rdfs:Resource",
+ "@type": "rdf:Property",
+ "rdfs:comment": "A context that is used for transforming the input document.",
+ "rdfs:domain": "jld:Test"
+ },
+ {
+ "@id": "jld:FromRDFTest",
+ "rdfs:label": "From RDF Evaluation Test",
"@type": "rdfs:Class",
- "rdfs:label": "Positive Evaluation Test",
- "rdfs:subClassOf": "jld:Test"
+ "rdfs:subClassOf": "jld:Test",
+ "rdfs:comment": "A `FromRDFTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`."
+ },
+ {
+ "@id": "jld:httpStatus",
+ "rdfs:label": "HTTP status",
+ "rdfs:range": "xsd:boolean",
+ "@type": "rdf:Property",
+ "rdfs:comment": "The HTTP status code that must be returned when the input file is requested. This is typically used along with the `redirectTo` property.",
+ "rdfs:domain": "jld:Option"
},
{
"@id": "jld:useRdfType",
- "rdfs:comment": "If the _use rdf type_ flag is set to `true`, statements with an `rdf:type` predicate will not use `@type`, but will be transformed as a normal property.",
+ "rdfs:label": "use RDF types",
"rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "use RDF types"
+ "rdfs:comment": "If the _use rdf type_ flag is set to `true`, statements with an `rdf:type` predicate will not use `@type`, but will be transformed as a normal property.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:ExpandTest",
- "rdfs:comment": "A `ExpandTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`.",
+ "@id": "jld:NegativeEvaluationTest",
+ "rdfs:label": "Positive Evaluation Test",
"@type": "rdfs:Class",
"rdfs:subClassOf": "jld:Test",
- "rdfs:label": "Expand Evaluation Test"
+ "rdfs:comment": "A Negative Evaluation test is successful when the result of processing the input file specified as `mf:action` (aliased as \"input\" in test manifest) results in the error identified by the literal value of `mf:result` (aliased as \"expect\" in test manifest). The specifics of invoking test, including the interpretation of options (`:option`) and other input files are specified through another class. See the [README](https://w3c.github.io/json-ld-api/tests/) for more details on running tests."
},
{
- "@id": "jld:NegativeSyntaxTest",
- "rdfs:comment": "A type of test specifically for syntax testing. Syntax tests are not required to have an associated result, only an action. Negative syntax tests are tests of which the result should be a parser error.",
+ "@id": "jld:HtmlTest",
+ "rdfs:label": "HTML Evaluation Test",
"@type": "rdfs:Class",
"rdfs:subClassOf": "jld:Test",
- "rdfs:label": "Negative Syntax Test"
+ "rdfs:comment": "An `HtmlTest` modifies either a `PositiveEvaluationTest` or `NegativeEvaluationTest` indicating that the source is of type text/html, which requires optional _HTML script extraction_ support."
},
{
- "@id": "jld:compactArrays",
- "rdfs:comment": "If set to `true`, the JSON-LD processor replaces arrays with just one element with that element during compaction. If set to false, all arrays will remain arrays even if they have just one element.",
+ "@id": "jld:compactToRelative",
+ "rdfs:label": "compact to relative",
"rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "compact arrays"
+ "rdfs:comment": "If set to `false`, the JSON-LD processor will not attempt to compact using document-relative IRIs.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:HttpTest",
- "rdfs:comment": "An `HttpTest` modifies either a `PositiveEvaluationTest` or `NegativeEvaluationTest`.",
+ "@id": "jld:PositiveSyntaxTest",
+ "rdfs:label": "Positive Syntax Test",
"@type": "rdfs:Class",
"rdfs:subClassOf": "jld:Test",
- "rdfs:label": "HTTP Evaluation Test"
+ "rdfs:comment": "A type of test specifically for syntax testing. Syntax tests are not required to have an associated result, only an action."
},
{
- "@id": "jld:compactToRelative",
- "rdfs:comment": "If set to `false`, the JSON-LD processor will not attempt to compact using document-relative IRIs.",
- "rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
- "@type": "rdf:Property",
- "rdfs:label": "compact to relative"
+ "@id": "jld:ToRDFTest",
+ "rdfs:label": "To RDF Evaluation Test",
+ "@type": "rdfs:Class",
+ "rdfs:subClassOf": "jld:Test",
+ "rdfs:comment": "A `ToRDFTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`."
},
{
- "@id": "jld:httpStatus",
- "rdfs:comment": "The HTTP status code that must be returned when the input file is requested. This is typically used along with the `redirectTo` property.",
- "rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
- "@type": "rdf:Property",
- "rdfs:label": "HTTP status"
+ "@id": "jld:ExpandTest",
+ "rdfs:label": "Expand Evaluation Test",
+ "@type": "rdfs:Class",
+ "rdfs:subClassOf": "jld:Test",
+ "rdfs:comment": "A `ExpandTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`."
},
{
- "@id": "jld:FrameTest",
- "rdfs:comment": "A `FrameTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`.",
+ "@id": "jld:HttpTest",
+ "rdfs:label": "HTTP Evaluation Test",
"@type": "rdfs:Class",
"rdfs:subClassOf": "jld:Test",
- "rdfs:label": "Frame Evaluation Test"
+ "rdfs:comment": "An `HttpTest` modifies either a `PositiveEvaluationTest` or `NegativeEvaluationTest`."
},
{
- "@id": "jld:PositiveSyntaxTest",
- "rdfs:comment": "A type of test specifically for syntax testing. Syntax tests are not required to have an associated result, only an action.",
+ "@id": "jld:PositiveEvaluationTest",
+ "rdfs:label": "Positive Evaluation Test",
"@type": "rdfs:Class",
"rdfs:subClassOf": "jld:Test",
- "rdfs:label": "Positive Syntax Test"
+ "rdfs:comment": "A Positive Evaluation test is successful when the result of processing the input file specified as `mf:action` (aliased as \"input\" in test manifest) exactly matches the output file specified as `mf:result` (aliased as \"expect\" in test manifest) using the comparison defined in another class. The specifics of invoking test, including the interpretation of options (`:option`) and other input files are specified through another class."
},
{
- "@id": "jld:base",
- "rdfs:comment": "The base IRI to use when expanding or compacting the document. If set, this overrides the input document's IRI.",
+ "@id": "jld:expandContext",
+ "rdfs:label": "expand context",
"rdfs:range": "rdfs:Resource",
- "rdfs:domain": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "base"
+ "rdfs:comment": "A context that is used to initialize the active context when expanding a document.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:redirectTo",
- "rdfs:comment": "The location of a URL for redirection. A request made of the input file must be redirected to the designated URL.",
- "rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
- "@type": "rdf:Property",
- "rdfs:label": "redirect to"
+ "@id": "jld:FrameTest",
+ "rdfs:label": "Frame Evaluation Test",
+ "@type": "rdfs:Class",
+ "rdfs:subClassOf": "jld:Test",
+ "rdfs:comment": "A `FrameTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`."
},
{
- "@id": "jld:FlattenTest",
- "rdfs:comment": "A `FlattenTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`.",
+ "@id": "jld:CompactTest",
+ "rdfs:label": "Compact Evaluation Test",
"@type": "rdfs:Class",
"rdfs:subClassOf": "jld:Test",
- "rdfs:label": "Flatten Evaluation Test"
+ "rdfs:comment": "A `CompactTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`."
},
{
- "@id": "jld:expandContext",
- "rdfs:comment": "A context that is used to initialize the active context when expanding a document.",
+ "@id": "https://w3c.github.io/json-ld-api/tests/vocab#",
+ "dc11:description": "Test case manifest vocabulary extensions",
+ "dc11:identifier": "https://w3c.github.io/json-ld-api/tests/vocab#",
+ "dc11:title": "Test case manifest vocabulary extensions",
+ "dc11:creator": "Gregg Kellogg",
+ "dc11:date": "2013-09-23",
+ "rdfs:comment": "Manifest vocabulary for JSON-LD test cases",
+ "dc11:publisher": "W3C Linked JSON Community Group"
+ },
+ {
+ "@id": "jld:input",
+ "rdfs:label": "input",
"rdfs:range": "rdfs:Resource",
- "rdfs:domain": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "expand context"
+ "rdfs:comment": "Secondary input file",
+ "rdfs:domain": "jld:Test"
},
{
"@id": "jld:frame",
- "rdfs:comment": "A frame that is used for transforming the input document.",
+ "rdfs:label": "input",
"rdfs:range": "rdfs:Resource",
- "rdfs:domain": "jld:Test",
"@type": "rdf:Property",
- "rdfs:label": "input"
+ "rdfs:comment": "A frame that is used for transforming the input document.",
+ "rdfs:domain": "jld:Test"
},
{
- "@id": "jld:ToRDFTest",
- "rdfs:comment": "A `ToRDFTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`.",
- "@type": "rdfs:Class",
- "rdfs:subClassOf": "jld:Test",
- "rdfs:label": "To RDF Evaluation Test"
+ "@id": "jld:base",
+ "rdfs:label": "base",
+ "rdfs:range": "rdfs:Resource",
+ "@type": "rdf:Property",
+ "rdfs:comment": "The base IRI to use when expanding or compacting the document. If set, this overrides the input document's IRI.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:httpAccept",
- "rdfs:comment": "An HTTP Accept header.",
- "rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
+ "@id": "jld:option",
+ "rdfs:label": "option",
+ "rdfs:range": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "HTTP Accept"
+ "rdfs:comment": "Options affecting processing",
+ "rdfs:domain": "jld:Test"
},
{
- "@id": "jld:FromRDFTest",
- "rdfs:comment": "A `FromRDFTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`.",
+ "@id": "jld:FlattenTest",
+ "rdfs:label": "Flatten Evaluation Test",
"@type": "rdfs:Class",
"rdfs:subClassOf": "jld:Test",
- "rdfs:label": "From RDF Evaluation Test"
+ "rdfs:comment": "A `FlattenTest` modifies either a `PositiveEvaluationTest`, `NegativeEvaluationTest`, `PositiveSyntaxTest` or `NegativeSyntaxTest`."
},
{
- "@id": "jld:useNativeTypes",
- "rdfs:comment": "If the _use native types_ flag is set to `true`, RDF literals with a datatype IRI that equal `xsd:integer` or `xsd:double` are converted to a JSON numbers and RDF literals with a datatype IRI that equals `xsd:boolean` are converted to `true` or `false` based on their lexical form.",
- "rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
- "@type": "rdf:Property",
- "rdfs:label": "use native types"
- },
- {
- "@id": "jld:context",
- "rdfs:comment": "A context that is used for transforming the input document.",
- "rdfs:range": "rdfs:Resource",
- "rdfs:domain": "jld:Test",
- "@type": "rdf:Property",
- "rdfs:label": "context"
- },
- {
- "@id": "jld:contentType",
- "rdfs:comment": "The HTTP Content-Type used for the input file, in case it is a non-registered type.",
- "rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
+ "@id": "jld:specVersion",
+ "rdfs:label": "spec version",
+ "rdfs:range": "xsd:string",
"@type": "rdf:Property",
- "rdfs:label": "content type"
+ "rdfs:comment": "Indicates the JSON-LD version to which the test applies, rather than the specific processing mode. Values are \"json-ld-1.0\", and \"json-ld-1.1\". If not set, the test is presumed to be valid for all versions of JSON-LD. In cases where results differ between spec versions for the same test, the test will have both a \"1.0\" and \"1.1\" version, for example.",
+ "rdfs:domain": "jld:Option"
},
{
"@id": "jld:produceGeneralizedRdf",
- "rdfs:comment": "Unless the produce generalized RDF flag is set to true, RDF triples containing a blank node predicate are excluded from output.",
+ "rdfs:label": "produce generalized RDF",
"rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "produce generalized RDF"
+ "rdfs:comment": "Unless the produce generalized RDF flag is set to true, RDF triples containing a blank node predicate are excluded from output.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:specVersion",
- "rdfs:comment": "Indicates the JSON-LD version to which the test applies, rather than the specific processing mode. Values are \"json-ld-1.0\", and \"json-ld-1.1\". If not set, the test is presumed to be valid for all versions of JSON-LD. In cases where results differ between spec versions for the same test, the test will have both a \"1.0\" and \"1.1\" version, for example.",
+ "@id": "jld:processingMode",
+ "rdfs:label": "processing mode",
"rdfs:range": "xsd:string",
- "rdfs:domain": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "spec version"
+ "rdfs:comment": "If set to \"json-ld-1.1\", the JSON-LD processor must produce exactly the same results as the algorithms defined in this specification. If set to another value, the JSON-LD processor is allowed to extend or modify the algorithms defined in this specification to enable application-specific optimizations. The definition of such optimizations is beyond the scope of this specification and thus not defined. Consequently, different implementations may implement different optimizations. Developers must not define modes beginning with json-ld as they are reserved for future versions of this specification.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:input",
- "rdfs:comment": "Secondary input file",
- "rdfs:range": "rdfs:Resource",
- "rdfs:domain": "jld:Test",
+ "@id": "jld:httpLink",
+ "rdfs:label": "HTTP link",
+ "rdfs:range": "xsd:boolean",
"@type": "rdf:Property",
- "rdfs:label": "input"
+ "rdfs:comment": "An HTTP Link header to be added to the result of requesting the input file.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:httpLink",
- "rdfs:comment": "An HTTP Link header to be added to the result of requesting the input file.",
+ "@id": "jld:contentType",
+ "rdfs:label": "content type",
"rdfs:range": "xsd:boolean",
- "rdfs:domain": "jld:Option",
"@type": "rdf:Property",
- "rdfs:label": "HTTP link"
+ "rdfs:comment": "The HTTP Content-Type used for the input file, in case it is a non-registered type.",
+ "rdfs:domain": "jld:Option"
},
{
- "@id": "jld:processingMode",
- "rdfs:comment": "If set to \"json-ld-1.1\", the JSON-LD processor must produce exactly the same results as the algorithms defined in this specification. If set to another value, the JSON-LD processor is allowed to extend or modify the algorithms defined in this specification to enable application-specific optimizations. The definition of such optimizations is beyond the scope of this specification and thus not defined. Consequently, different implementations may implement different optimizations. Developers must not define modes beginning with json-ld as they are reserved for future versions of this specification.",
- "rdfs:range": "xsd:string",
- "rdfs:domain": "jld:Option",
+ "@id": "jld:httpAccept",
+ "rdfs:label": "HTTP Accept",
+ "rdfs:range": "xsd:boolean",
"@type": "rdf:Property",
- "rdfs:label": "processing mode"
+ "rdfs:comment": "An HTTP Accept header.",
+ "rdfs:domain": "jld:Option"
}
]
}
\ No newline at end of file
diff --git a/tests/vocab.ttl b/tests/vocab.ttl
index e81f5492..756e066c 100644
--- a/tests/vocab.ttl
+++ b/tests/vocab.ttl
@@ -114,6 +114,15 @@
`PositiveSyntaxTest` or `NegativeSyntaxTest`.
""" .
+:HtmlTest a rdfs:Class ;
+ rdfs:subClassOf :Test ;
+ rdfs:label "HTML Evaluation Test" ;
+ rdfs:comment """
+ An `HtmlTest` modifies either a `PositiveEvaluationTest` or `NegativeEvaluationTest`
+ indicating that the source is of type text/html, which requires optional
+ _HTML script extraction_ support.
+ """ .
+
:HttpTest a rdfs:Class ;
rdfs:subClassOf :Test ;
rdfs:label "HTTP Evaluation Test" ;