Abstract
The document describes and presents test cases for the Protocol for
Web Description Resources (POWDER). The test cases aim to indicate the
correct formats of POWDER documents and illustrate various crucial
aspects on the usage of POWDER documents, such as locating a document
and inferring information from it.
Status of this document
This section describes the status of this document at the time
of its publication. Other documents may supersede this document. A list
of current W3C publications and the latest revision of this technical
report can be found in the W3C technical reports index at http://www.w3.org/TR/.
Publication as a Working Group Note does not imply endorsement by the W3C Membership. This is
a draft document and may be updated, replaced or obsoleted by other documents at any time. It is
inappropriate to cite this document as other than work in progress.
This third publication of the document as a Working Group Note by the
POWDER Working Group
To send comments, please use the
public mailing list (public-powderwg@w3.org), an archived
mailing list. See W3C mailing list and archive usage guidelines.
This document has been produced as part of the Semantic Web Activity, following the procedures set out for the W3C Process.
As of this publication, the Working Group does not expect this
document to become a W3C Recommendation, and therefore it has no
associated W3C Patent Policy licensing obligations. If this
expectation changes, the Working Group will have an opportunity
to fulfill the associated patent policy requirements with respect
to a future draft.
Table of Contents
1 Introduction
As part of the POWDER specification, the POWDER Working Group
provides a set of test cases. The present document discusses these test
cases. They are intended to facilitate and exemplify the creation of
POWDER documents of varying complexity and provide a means to assert
the conformance of software applications designed to handle POWDER
documents.
The document provides a description of the various test types, the
format that was used and the structure of the manifest files that
accompany the tests.
2 Test Types
The tests are classified with respect to the issue they aim to
examine. The main concerns are the syntactic validity of a document,
the equivalence between various forms of POWDER documents, the ability
to locate a POWDER document
associated with a resource and the ability to infer information about a given resource from a POWDER document
associated with it. The following sections indicate the classification
of the tests included in the test suite and describe their structure.
2.1 Parser Tests
The parser tests aim to provide a test corpus for implementations of a POWDER parser.
The parser tests are initially separated into positive and negative
parser tests. Each test examines the validity of a POWDER document
against a conformance requirement of the specification. The documents
included in the positive tests meet the requirement they are tested
against, whereas those included in the negative tests violate a given
element of the conformance model.
When given a positive parser test document as its input, a POWDER
parser is expected to return a validity confirmation message. In
contrast, when the input is a negative parser test document, the POWDER
parser is expected to report that the POWDER document is invalid, and
may return a message indicating the requirement that is not met, as
indicated in the manifest file accompanying the POWDER document of the
test.
Each test consists of one POWDER document
and a Manifest file. The POWDER document is named posNNN.xml or
negNNN.xml if it is included in the positive or negative parser tests
respectively, where NNN is the index number of the test with three
digits. The Manifest file is named ManifestposNNN.rdf or
ManifestnegNNN.rdf.
2.2 GRDDL Tests
The GRDDL tests aim to provide a test corpus for implementations of a POWDER-to-POWDER-S transformation tool.
These tests include pairs of documents. The first peer is a POWDER document,
named powderNNN.xml and the second is a POWDER-S document, named
powdersNNN.rdf. Each POWDER-S document is what should be derived from
its corresponding POWDER document when applying a transformation on the
latter. The transformation may or may not be performed using the XSLT
provided for this purpose, but the output POWDER-S document must be
semantically equivalent (i.e. correspond to equivalent graphs). The
Manifest file describing each test is named ManifestgrddlNNN.rdf.
2.3 POWDER Locator Tests
The POWDER locator tests aim to facilitate the testing of
applications used to examine the association of a resource with a
POWDER description that applies to it. The tests comprise pairs of
documents. The first document defines a web resource that contains a
reference to a POWDER document
while the second one is the POWDER document itself. Any locator MUST
reach the POWDER document via the resource, or report. There are tests
for each means of locating a POWDER document, as defined in the DR
document included in the specification [DR].
The purpose of these tests is to provide an adequate data set for testing a
POWDER Processor
by providing the expected return values of a describe(u) function with
a given u and against a given POWDER document. The tests comprise of a
fixed IRI, a POWDER document
and an RDF graph expressed in RDF/XML that shows the results of running
describe(u) - where u is the IRI provided by the test - against the
POWDER document
3 Manifest Files
The Manifest files provide a formal, machine-readable description of
the test they apply to. Those associated with the POWDER tests follow
the schema developed for the RDF test cases [RDF-TEST].
Furthermore, the said schema is extended to include some new properties
and types, as defined in the POWDER test ontology.
Each test is associated with a Manifest file, identified from the
URI formed from the file's URL with a fragment test. A given test has a
rdf:type explicit, within the scope of:
wdrtest:parsertest
wdrtest:grddltest
wdrtest:locatortest
wdrtest:dataextractiontest
Where the wdrtest
namespace is bound to http://www.w3.org/2008/07/powder-test/testSchema#
and rtest
is bound to http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#.
The name of the original author of each test is given using a dc:creator
property.
The description of the test is given as a value of a rtest:description property.
The relevant requirement of the specification that this test examines is given as value of a wdrtest:specref
property.
The input document for a test is given as a value of a
rtest:inputDocument
property, whereas the expected output document, if
applied, is given as a value of a rtest:outputDocument
property. If the
production of an output document is not the purpose of the test
process, the wdrtest:expectedDocument
can be used to provide a free
description of the expected results from the execution of the test.
The status of a test included in the suite, declared using a rtest:status
property, can be in the set of the following values:
- APPROVED
- REJECTED
- PROPOSED
4 The POWDER Tests
This section demonstrates the documents included in the POWDER Test
Suite. The documents are categorized with respect to their type. Each
test is defined by the following parameters:
- The type of the test.
- A description for the purpose of the test, with respect to its type.
- A link to the section of the relevant document that defines the part of the specification that is subject to the test.
- The index of the test in the particular type.
- A link to the Manifest file that provides a formal description for the test.
- The preconditions that must be taken into account in order to consider the test valid.
- The documents that are part of the test.
The actual documents, along with the Manifest file, can be downloaded in a compressed file. The directory structure of the compressed file has as follows:
- Top Level
- POWDER-TS: The entry directory
- Second Level
- positive parsers tests
- negative parsers tests
- grddl tests
- locator tests
- data extraction tests
Each directory contains the test documents of the corresponding
type, along with the manifest file of each test and following the
naming conventions discussed in the present document.
4.1 Positive Parser Tests
Parser Test |
Positive |
A POWDER document must include exactly one attribution element |
001 |
Test Assertion |
A valid POWDER document must include exactly one attribution element |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.1 Operational Semantics |
Description |
Manifestpos001.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos001.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
The attribution element optionally contains a unique issued element |
002 |
Test Assertion |
The required attribution element of a valid POWDER document may contain exactly one issued element |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.1 Operational Semantics |
Description |
Manifestpos002.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos002.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
An attribution element optionally contains a unique validfrom element and/or a unique validuntil element |
003 |
Test Assertion |
The required attribution element of a valid POWDER document may contain exactly one validfrom element and may contain exactly one validuntil element |
Protocol for Web Description Resources (POWDER): Description Resources Section 5.2 Certification Using POWDER |
Description |
Manifestpos003.rdf |
Precondition - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos003.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me"/>
<issued>2007-12-14T00:00:00</issued>
<validfrom>2007-12-14T00:00:00</validfrom>
<validuntil>2008-12-14T00:00:00</validuntil>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
The attribution element may contain an abouthosts element |
004 |
Test Assertion |
The required attribution element of a valid POWDER document may contain exactly one abouthosts elements |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.3 Exclusive Description Resources |
Description |
Manifestpos004.rdf |
Precondition - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos004.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me"/>
<issued>2007-12-14T00:00:00</issued>
<validfrom>2007-12-14T00:00:00</validfrom>
<validuntil>2008-12-14T00:00:00</validuntil>
<abouthosts>books.example.com archive.example.net</abouthosts>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
A POWDER document may include an unordered list of two or more Description Resource (dr ) elements |
005 |
Test Assertion |
A valid POWDER document may contain any number of dr elements |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.1 Operational Semantics |
Description |
Manifestpos005.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos005.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
</descriptorset>
</dr>
<dr>
<iriset>
<includehosts>example.com</includehosts>
<includepathstartswith>/foo</includepathstartswith>
</iriset>
<descriptorset>
<ex:color>blue</ex:color>
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
A POWDER document may include an ordered list of two or more descriptor set elements |
006 |
Test Assertion |
A valid POWDER document may contain an ol element which contains an arbitrarily sized ordered set of dr elements |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.3 Exclusive Description Resources |
Description |
Manifestpos006.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos006.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
<abouthosts>example.com</abouthosts>
</attribution>
<ol>
<dr>
<iriset>
<includehosts>example.com</includehosts>
<includepathstartswith>/foo</includepathstartswith>
</iriset>
<descriptorset>
<ex:color>blue</ex:color>
</descriptorset>
</dr>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
</descriptorset>
</dr>
</ol>
</powder>
|
Parser Test |
Positive |
A POWDER document may include descriptor set elements without a dr element |
007 |
Test Assertions |
A valid POWDER document may contain descriptorset elements not within a dr element |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.5 Direct Resource Description |
Description |
Manifestpos007.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos007.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<abouthosts>example.org example.com</abouthosts>
</attribution>
<descriptorset xml:id="red">
<ex:color>red</ex:color>
</descriptorset>
<descriptorset xml:id="blue">
<ex:color>blue</ex:color>
</descriptorset>
</powder>
|
Parser Test |
Positive |
A dr element within a POWDER document must contain one or more iriset elements |
008 |
Test Assertions |
If a valid POWDER document contains dr elements, they must include one or more iriset elements |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.5 Direct Resource Description |
Description |
Manifestpos008.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos008.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
<abouthosts>example.org example.com</abouthosts>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
<includepathstartswith>/foo</includepathstartswith>
</iriset>
<iriset>
<includehosts>example.org</includehosts>
<includepathstartswith>/bar</includepathstartswith>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.com/foo and everything on example.org/bar is red and square</displaytext>
<displayicon src="http://example.org/icon.png"/>
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
A POWDER document may include references to descriptor sets defined in a remote POWDER document |
009 |
Test Assertion |
A valid POWDER document may contain descriptorset elements that point to externally defined descriptor sets |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.6 Pre-defined descriptors |
Description |
Manifestpos009.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos009.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#">
<attribution>
<issuedby src="http://books.example.com/company.rdf#me" />
<issued>2008-03-03T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>books.example.com</includehosts>
<includepathstartswith>/robin/</includepathstartswith>
</iriset>
<descriptorset src="http://education.example.org/powder1.xml#ks1" />
</dr>
</powder>
|
Parser Test |
Positive |
A POWDER document may contain Description Resources with multiple descriptorset elements |
010 |
Test Assertion |
A valid POWDER document may contain dr elements that contain more than one descriptorset elements |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.8.1 Multiple Descriptor Sets |
Description |
Manifestpos010.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos010.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>movie.example.com</includehosts>
<includepathstartswith>/after9pm</includepathstartswith>
</iriset>
<descriptorset>
<ex:agemin>18</ex:agemin>
</descriptorset>
<descriptorset>
<typeof src="http://trust.example.org/vocab#trustedsite"/>
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
A POWDER document may contain Description Resources that are referenced in various parts of the document |
011 |
Test Assertion |
A valid POWDER document may contain descriptorsets elements with a nodeattibute that can subsequently be referenced in one or more descriptorset elements in the document |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.8.1 Multiple Descriptor Sets |
Description |
Manifestpos011.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos011.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>movie.example.com</includehosts>
<includepathstartswith>/after9pm</includepathstartswith>
</iriset>
<descriptorset include="adult" />
<descriptorset include="trustmark" />
</dr>
<descriptorset node="adult">
<ex:agemin>18</ex:agemin>
</descriptorset>
<descriptorset node="trustmark">
<typeof src="http://trust.example.org/vocab#trustedsite" />
</descriptorset>
</powder>
|
Parser Test |
Positive |
The value of a descriptor may be an XML Literal |
012 |
Test Assertion |
A valid POWDER document may contain descriptorset elements that contain XML elements |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.8.2 XML Data in POWDER |
Description |
Manifestpos012.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos012.xml |
<?xml version="1.0"?>
<powder xmlns:ex="http://example.org/vocab#"
xmlns:ex2="http://example.org/palette#"
xmlns="http://www.w3.org/2007/05/powder#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.org</includehosts>
</iriset>
<descriptorset>
<ex:color rdf:parseType="Literal">
<ex2:hex>ff0000</ex2:hex>
<ex2:red>255</ex2:red>
<ex2:green>0</ex2:green>
<ex2:blue>0</ex2:blue>
</ex:color>
<displaytext>Everything on example.org is red</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
The includeschemes element may occur zero or exactly one time |
013 |
Test Assertion |
An iriset element MUST contain zero or exactly one occurence of the includeschemes element |
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1 Constraints on IRI components |
Description |
Manifestpos013.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos013.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includeschemes>http https</includeschemes>
<includehosts>example.org</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
The includehosts element may occur zero or exactly one time |
014 |
Test Assertion |
An iriset element MUST contain zero or exactly one occurence of the includehosts element |
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1 Constraints on IRI components |
Description |
Manifestpos014.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos014.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.org</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
The includeexactpaths element may occur zero or exactly one time |
015 |
Test Assertion |
An iriset element MUST contain zero or exactly one occurence of the includeexactpaths element |
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1 Constraints on IRI components |
Description |
Manifestpos015.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos015.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.org</includehosts>
<includeexactpaths>/foo/products/ /foo/retailers/</includeexactpaths>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org/foo/products/ and example.org/foo/retailers/ is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
The includepathcontains element may occur zero or more times |
016 |
Test Assertion |
An iriset element may contain any number of includepathcontains elements |
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1 Constraints on IRI components |
Description |
Manifestpos016.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos016.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.org</includehosts>
<includepathcontains>/products/</includepathcontains>
<includepathcontains>/retailers/</includepathcontains>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Every product or retailer related content on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
The includepathbeginswith element may occur zero or exactly one time |
017 |
Test Assertion |
An iriset element MUST contain zero or exactly one occurence of the includepathbeginswith element |
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1 Constraints on IRI components |
Description |
Manifestpos017.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos017.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.org</includehosts>
<includepathstartswith>/foo/ /bar/</includepathstartswith>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org/foo/ and example.org/bar/ is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
The includepathendswith element may occur zero or exactly one time |
018 |
Test Assertion |
An iriset element MUST contain zero or exactly one occurence of the includepathendswith element |
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1 Constraints on IRI components |
Description |
Manifestpos018.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos018.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.org</includehosts>
<includepathendswith>index.html index.html</includepathendswith>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Every home page on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
The includeports element may occur zero or exactly one time |
019 |
Test Assertion |
An iriset element MUST contain zero or exactly one occurence of the includeports element |
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1 Constraints on IRI components |
Description |
Manifestpos019.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos019.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.org</includehosts>
<includeports>8080 8180 8280</includeports>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
The includequerycontains element may occur zero or or exactly one time |
020 |
Test Assertion |
An iriset element may contain zero or exactly one occurence of the includequerycontains element |
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1 Constraints on IRI components |
Description |
Manifestpos020.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos020.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.org</includehosts>
<includequerycontains>id=abcdef&group=12345</includequerycontains>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Products on example.org that are red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
The includeregex element may occur zero or more times |
021 |
Test Assertion |
An iriset element may contain zero or more occurences of the includeregex element |
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1 Constraints on IRI components |
Description |
Manifestpos021.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos021.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includeregex>^(([^\:\/\?\#]+)\:)//([^\:\/\?\#]+\.)?example\.(org|net)/(foo|bar)</includeregex>
<includeregex>(\.jpg|\.png|\.gif)$</includeregex>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>All images on example.org/foo, example.org/bar, example.net/foo and example.net/bar are red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
The includeresources element may occur zero or exactly one time |
022 |
Test Assertion |
An iriset element may contain zero or exactly one occurence of the includeresources element |
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1 Constraints on IRI components |
Description |
Manifestpos022.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos022.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.org</includehosts>
<includepathstartswith>/foo</includepathstartswith>
<includeresources>http://example.org/bar/index.html</includeresources>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org/foo and http://example.org/bar/index.html is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Positive |
The includeiripattern element may occur zero or exactly one time |
023 |
Test Assertion |
An iriset element may contain zero or exactly one occurence of the includeiripattern element |
Protocol
for Web Description Resources (POWDER): Grouping of Resources Section
2.2 Grouping using Wildcards: The includeiripattern and
excludeiripattern IRI constraints |
Description |
Manifestpos023.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pos023.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includeiripattern>http://example.org</includeiripattern>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on http://example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
The preceeding tests related to IRI constraints are focused on the include...
elements. Each
test is equally applicable to the corresponding exclude...
element.
4.2 Negative Parser Tests
Parser Test |
Negative |
Every POWDER document includes exactly one attribution element |
001 |
Test Assertion |
If a POWDER document does not include exactly one attribution element, it is not a valid POWDER document |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.1 Operational Semantics |
Description |
Manifestneg001.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents neg001.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<attribution>
<issuedby ref="http://authority.example.org/company.rdf#you" />
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Negative |
The attribution element MUST contain an issuedby element |
002 |
Test Assertion |
If a POWDER document contains an attribution element that does not include an issuedby element, it is not a valid POWDER document |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.1 Operational Semantics |
Description |
Manifestneg002.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents neg002.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issued>2007-12-14T00:00:00</issued>
<validfrom>2007-12-14T00:00:00</validfrom>
<validuntil>2008-12-14T00:00:00</validuntil>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Negative |
A dr element MUST include an iriset element |
003 |
Test Assertion |
If a POWDER document contains at least one dr element that does not include an iriset element, it is not a valid POWDER document |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.1 Operational Semantics |
Description |
Manifestneg003.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents neg003.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Negative |
An iriset element must not be empty |
004 |
Test Assertion |
If a POWDER document contains a dr element that has an empty iriset element, it is not a valid POWDER document |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.1 Operational Semantics |
Description |
Manifestneg004.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents neg004.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
<validfrom>2007-12-14T00:00:00</validfrom>
<validuntil>2008-12-14T00:00:00</validuntil>
</attribution>
<dr>
<iriset>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Parser Test |
Negative |
A descriptorset element must not contain tag elements |
005 |
Test Assertion |
If a POWDER document contains a descriptorset element that contains a tag element, it is not a valid POWDER document |
Protocol
for Web Description Resources (POWDER): Description Resources Section
2.7 Free Text Tags, Comments, Labels and "See Also" |
Description |
Manifestneg005.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents neg005.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<tag>London</tag>
</descriptorset>
<tagset>
<tag>Swiss Re</tag>
<tag>gherkin</tag>
<tag>London</tag>
</tagset>
</dr>
</powder>
|
Parser Test |
Negative |
A dr element must contain a descriptotrset element or a tag element |
006 |
Test Assertion |
If a POWDER document contains neither a descriptorset element nor a tagset element, it is not a valid POWDER document |
Protocol
for Web Description Resources (POWDER): Description Resources Section
2.7 Free Text Tags, Comments, Labels and "See Also" |
Description |
Manifestneg006.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents neg006.xml |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
</dr>
</powder>
|
4.3 GRDDL Tests
GRDDL Test |
Positive |
Transformation of a POWDER document with a single Description Resource |
001 |
Test Assertion |
A transformation of a POWDER document to POWDER-S must produce semantically identical results with this test in respect to the dr elements |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.2 Formal Semantics |
Description |
Manifestgrddl001.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents powder001.xml | powders001.rdf |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
<?xml version="1.0"?>
<rdf:RDF
xmlns:wdrs="http://www.w3.org/2007/05/powder-s#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:ex="http://example.org/vocab#">
<owl:Ontology rdf:about="">
<wdrs:issuedby rdf:resource="http://authority.example.org/company.rdf#me" />
<wdrs:issued>2007-12-14T00:00:00</wdrs:issued>
</owl:Ontology>
<owl:Class rdf:nodeID="iriset_1">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex" />
<owl:hasValue rdf:datatype="http://www/w3.org/2001/XMLSchema#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="descriptorset_1">
<owl:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing" />
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#color" />
<owl:hasValue>red</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#shape" />
<owl:hasValue>square</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
<wdrs:text>Everything on example.org is red and square</wdrs:text>
<wdrs:logo rdf:resource="http://example.org/icon.png" />
</owl:Class>
<rdf:Description rdf:nodeID="iriset_1">
<rdfs:subClassOf rdf:nodeID="descriptorset_1"/>
</rdf:Description>
</rdf:RDF>
|
GRDDL Test |
Positive |
Transformation of a POWDER document with an ordered list of Description Resources |
002 |
Test Assertion |
A transformation of a POWDER
document to POWDER-S must produce semantically identical results with
this test with respect to the ol elements |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.3 Exclusive Description Resources |
Description |
Manifestgrddl002.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents powder002.xml | powders002.rdf |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
<abouthosts>example.com</abouthosts>
</attribution>
<ol>
<dr>
<iriset>
<includehosts>example.com</includehosts>
<includepathstartswith>/foo</includepathstartswith>
</iriset>
<descriptorset>
<ex:color>blue</ex:color>
</descriptorset>
</dr>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
</descriptorset>
</dr>
</ol>
</powder>
|
<?xml version="1.0"?>
<rdf:RDF
xmlns:wdrs="http://www.w3.org/2007/05/powder-s#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:ex="http://example.org/vocab#">
<owl:Ontology rdf:about="">
<wdrs:issuedby rdf:resource="http://authority.example.org/company.rdf#me" />
<wdrs:issued>2007-12-14T00:00:00</wdrs:issued>
</owl:Ontology>
<owl:Class rdf:nodeID="aboutset">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex" />
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="iriset_1">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex" />
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex" />
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?(\/foo)</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="iriset_1_not">
<owl:equivalentClass>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#notmatchesregex" />
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#notmatchesregex" />
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?(\/foo)</owl:hasValue>
</owl:Restriction>
</owl:unionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="descriptorset_1">
<rdfs:subClassOf rdf:nodeID="aboutset"/>
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#color" />
<owl:hasValue>blue</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
<rdf:Description rdf:nodeID="iriset_1">
<rdfs:subClassOf rdf:nodeID="descriptorset_1"/>
</rdf:Description>
<owl:Class rdf:nodeID="iriset_2">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex" />
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
<owl:Class rdf:nodeID="iriset_1_not" />
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="descriptorset_2">
<rdfs:subClassOf rdf:nodeID="aboutset"/>
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#color" />
<owl:hasValue>red</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
<owl:Class>
<rdfs:subClassOf rdf:nodeID="descriptorset_2"/>
</owl:Class>
</rdf:RDF>
|
GRDDL Test |
Positive |
Transformation of a POWDER document containing a description resource for which the scope is the union of two IRI sets |
003 |
Test Assertion |
A transformation of a POWDER
document to POWDER-S must produce semantically identical results with
this test with respect to the union of iriset elements |
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.6 Grouping of resources |
Description |
Manifestgrddl003.rdf |
Preconditions - Namespaces |
@prefix ex: <http://example.org/vocab#> |
Documents powder003.xml | powders003.rdf |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
<includepathstartswith>/foo</includepathstartswith>
</iriset>
<iriset>
<includehosts>example.org</includehosts>
<includepathstartswith>/bar</includepathstartswith>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.com/foo, and everything on example.org/bar, is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
<?xml version="1.0"?>
<rdf:RDF
xmlns:wdrs="http://www.w3.org/2007/05/powder-s#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:ex="http://example.org/vocab#">
<owl:Ontology rdf:about="">
<wdrs:issuedby rdf:resource="http://authority.example.org/company.rdf#me" />
<wdrs:issued>2007-12-14T00:00:00</wdrs:issued>
</owl:Ontology>
<owl:Class rdf:nodeID="iriset_1">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex" />
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex" />
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?(\/foo)</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="iriset_2">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex" />
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex" />
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?(\/bar)</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="descriptorset_1">
<wdrs:text>Everything on example.com/foo, and everything on example.org/bar, is red and square</wdrs:text>
<wdrs:logo rdf:resource="http://example.org/icon.png" />
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#color" />
<owl:hasValue>red</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#shape" />
<owl:hasValue>square</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:nodeID="iriset_1">
<rdfs:subClassOf rdf:nodeID="descriptorset_1"/>
</owl:Class>
<owl:Class rdf:nodeID="iriset_2">
<rdfs:subClassOf rdf:nodeID="descriptorset_1"/>
</owl:Class>
</rdf:RDF>
|
GRDDL Test |
Positive |
Transformation of a POWDER document with no DRs but with descriptors that can be referenced externally |
004 |
Test Assertion |
A transformation of a POWDER
document to POWDER-S must produce semantically identical results with
this test with respect to the transformation of descriptorset elements not within a dr element |
Protocol for Web Description Resources (POWDER): Formal Semantics Section 4.4 Direct Descriptions |
Description |
Manifestgrddl004.rdf |
Preconditions - Namespaces |
@prefix ex: <http://example.org/vocab#> |
Documents powder004.xml | powders004.rdf |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<abouthosts>example.org example.com</abouthosts>
</attribution>
<descriptorset xml:id="red">
<ex:color>red</ex:color>
</descriptorset>
<descriptorset xml:id="blue">
<ex:color>blue</ex:color>
</descriptorset>
</powder>
|
<?xml version="1.0"?>
<rdf:RDF
xmlns:wdrs="http://www.w3.org/2007/05/powder-s#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:ex="http://example.org/vocab#">
<owl:Ontology rdf:about="">
<wdrs:issuedby rdf:resource="http://authority.example.org/company.rdf#me" />
<wdrs:issued>2007-12-14T00:00:00</wdrs:issued>
</owl:Ontology>
<owl:Class rdf:nodeID="aboutset">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex" />
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.org|example\.com)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:ID="red">
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#color" />
<owl:hasValue rdf:resource="http://example.org/vocab#red"/>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:ID="blue">
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#color" />
<owl:hasValue rdf:resource="http://example.org/vocab#blue"/>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
</rdf:RDF>
|
GRDDL Test |
Positive |
Transformation of a POWDER document containing includehost and includeports in the iriset element |
005 |
Test Assertion |
A transformation of a POWDER
document to POWDER-S must produce semantically identical results with
this test with respect to the transformation of includehosts and includeports elements |
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1 Constraints on IRI components |
Description |
Manifestgrddl005.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents powder005.xml | powders005.rdf |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.com example.org</includehosts>
<includeports>80 8080 8081 8082</includeports>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org and example.com is is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
<?xml version="1.0"?>
<rdf:RDF
xmlns:wdrs="http://www.w3.org/2007/05/powder-s#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:ex="http://example.org/vocab#">
<owl:Ontology rdf:about="">
<wdrs:issuedby rdf:resource="http://authority.example.org/company.rdf#me" />
<wdrs:issued>2007-12-14T00:00:00</wdrs:issued>
</owl:Ontology>
<owl:Class rdf:nodeID="iriset_1">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex" />
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/([^\:\/\?\#\@]+\.)*[^\:\/\?\#\@]+\:(80|8080|8081|8082)\/</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex" />
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.org)(:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="descriptorset_1">
<owl:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing" />
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#color" />
<owl:hasValue>red</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#shape" />
<owl:hasValue>square</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
<wdrs:text>Everything on example.org is red and square</wdrs:text>
<wdrs:logo rdf:resource="http://example.org/icon.png" />
</owl:Class>
<rdf:Description rdf:nodeID="iriset_1">
<rdfs:subClassOf rdf:nodeID="descriptorset_1"/>
</rdf:Description>
</rdf:RDF>
|
GRDDL Test |
Positive |
Transformation of a POWDER document to POWDER-BASE. The sample POWDER file here
defines an empty set; it is provided here merely as a test bed for transformation tools. |
006 |
Test Assertion |
Child elements of iriset are transformed into
includeregex/excluderegex elements in POWDER-BASE. Other elements are unaffected. |
Protocol for Web Description Resources (POWDER): Formal Semantics Section 4.2 POWDER and POWDER-BASE IRI Set Semantics |
Description |
Manifestgrddl006.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents powder006.xml | powderb006.rdf |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
</attribution>
<dr>
<iriset>
<includeschemes>http https</includeschemes>
<excludeschemes>http https</excludeschemes>
<includehosts>example.com example.org</includehosts>
<excludehosts>example.com example.org</excludehosts>
<includepathstartswith>foo bar</includepathstartswith>
<excludepathstartswith>foo bar</excludepathstartswith>
<includepathcontains>foo bar</includepathcontains>
<excludepathcontains>foo bar</excludepathcontains>
<includepathendswith>foo bar</includepathendswith>
<excludepathendswith>foo bar</excludepathendswith>
<includeexactpaths>foo bar</includeexactpaths>
<excludeexactpaths>foo bar</excludeexactpaths>
<includeports>80 8080 8081 8082</includeports>
<excludeports>80 8080 8081 8082</excludeports>
<includeresources>http://www.example.com/thing.foo http://www.example.com/thing.jpg</includeresources>
<excluderesources>http://www.example.com/thing.foo http://www.example.com/thing.jpg</excluderesources>
<includequerycontains>id=123456&group=abcdefg</includequerycontains>
<excludequerycontains>id=123456&group=abcdefg</excludequerycontains>
<includeiripattern>http://*.example.org:8080</includeiripattern>
<excludeiripattern>http://*.example.org:8080</excludeiripattern>
<includeregex>me</includeregex>
<excluderegex>me</excluderegex>
</iriset>
<descriptorset>
<ex:shape>square</ex:shape>
</descriptorset>
</dr>
</powder>
|
<?xml version="1.0" encoding="UTF-8"?>
<powder xmlns="http://www.w3.org/2007/05/powder#" xmlns:ex="http://example.org/vocab#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me"/>
</attribution>
<dr>
<iriset>
<includeregex>^(http|https)\:\/\/</includeregex>
<excluderegex>^(http|https)\:\/\/</excluderegex>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com|example\.org)(\:([0-9]+))?\/</includeregex>
<excluderegex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com|example\.org)(\:([0-9]+))?\/</excluderegex>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?(foo|bar)</includeregex>
<excluderegex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?(foo|bar)</excluderegex>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*(foo|bar)[^\?\#]*[\?\#]?</includeregex>
<excluderegex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*(foo|bar)[^\?\#]*[\?\#]?</excluderegex>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*(foo|bar)($|\?|\#)</includeregex>
<excluderegex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*(foo|bar)($|\?|\#)</excluderegex>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?(foo|bar)($|\?|\#)</includeregex>
<excluderegex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?(foo|bar)($|\?|\#)</excluderegex>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)*[^\:\/\?\#\@]+\:(80|8080|8081|8082)\/</includeregex>
<excluderegex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)*[^\:\/\?\#\@]+\:(80|8080|8081|8082)\/</excluderegex>
<includeregex>^(http\:\/\/www\.example\.com\/thing\.foo|http\:\/\/www\.example\.com\/thing\.jpg)$</includeregex>
<excluderegex>^(http\:\/\/www\.example\.com\/thing\.foo|http\:\/\/www\.example\.com\/thing\.jpg)$</excluderegex>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*\?([^\#]*\&)?id=123456(\&|$)</includeregex>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*\?([^\#]*\&)?group=abcdefg(\&|$)</includeregex>
<excluderegex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*\?([^\#]*\&)?id=123456(\&|$)</excluderegex>
<excluderegex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*\?([^\#]*\&)?group=abcdefg(\&|$)</excluderegex>
<includeregex>^http:\/\/([^:/\?#@]+\.)+example.org:8080</includeregex>
<excluderegex>^http:\/\/([^:/\?#@]+\.)+example.org:8080</excluderegex>
<includeregex>me</includeregex>
<excluderegex>me</excluderegex>
</iriset>
<descriptorset>
<ex:shape>square</ex:shape>
</descriptorset>
</dr>
</powder>
|
GRDDL Test |
Positive |
Transformation of a POWDER-BASE document to POWDER-S. As with GRDDL test 006, the
input file is designed to contain many different POWDER features rather than present a realistic data file. |
007 |
Test Assertion |
POWDER features, such as ordered lists, pre-defined descriptor sets and DRs with multiple IRI sets
are transformed as described throughout the docmentation. This test data presents a particular
challenge with respect to the numbering/identification of different elements. |
Protocol for Web Description Resources (POWDER): Formal Semantics |
Description |
Manifestgrddl007.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents powder007.xml | powders007.rdf |
<?xml version="1.0" encoding="UTF-8"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me"/>
</attribution>
<dr>
<iriset>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</includeregex>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?(foo|bar)</includeregex>
</iriset>
<iriset>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.org)(\:([0-9]+))?\/</includeregex>
</iriset>
<descriptorset>
<ex:shape>square</ex:shape>
</descriptorset>
<tagset>
<tag>A tag</tag>
<tag>Another tag</tag>
</tagset>
</dr>
<ol>
<dr>
<iriset>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</includeregex>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*(\.html|\.php|\.pdf)($|\?|\#)</includeregex>
<excluderegex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*(\.jpg|\.png|\.gif)($|\?|\#)</excluderegex>
</iriset>
<descriptorset>
<ex:type>Document</ex:type>
</descriptorset>
</dr>
<dr>
<iriset>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</includeregex>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*(\.jpg|\.png|\.gif)($|\?|\#)</includeregex>
</iriset>
<descriptorset>
<ex:type>Image</ex:type>
</descriptorset>
</dr>
<dr>
<iriset>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</includeregex>
</iriset>
<descriptorset>
<ex:type>Other</ex:type>
</descriptorset>
</dr>
</ol>
<ol>
<dr>
<iriset>
<includeregex>^[A-Za-z]+:\/\/([^:/\?#@]+\.)+example.org(\:[0-9]+)?</includeregex>
</iriset>
<descriptorset>
<ex:colour>red</ex:colour>
</descriptorset>
</dr>
<dr>
<iriset>
<includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.org>)(\:([0-9]+))?\/</includeregex>
</iriset>
<descriptorset>
<ex:colour>Blue</ex:colour>
</descriptorset>
</dr>
</ol>
<descriptorset xml:id="round">
<ex:shape>round</ex:shape>
</descriptorset>
</powder> |
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:wdrs="http://www.w3.org/2007/05/powder-s#">
<owl:Ontology rdf:about="">
<wdrs:issuedby rdf:resource="http://authority.example.org/company.rdf#me"/>
</owl:Ontology>
<owl:Class xml:id="round">
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#shape"/>
<owl:hasValue>round</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:nodeID="iriset_1">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?(foo|bar)</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="iriset_2">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.org)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="descriptorset_1">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#shape"/>
<owl:hasValue>square</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:ID="tagset_1">
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#tag"/>
<owl:hasValue>A tag</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#tag"/>
<owl:hasValue>Another tag</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:nodeID="iriset_1">
<rdfs:subClassOf rdf:nodeID="descriptorset_1"/>
<rdfs:subClassOf rdf:nodeID="tagset_1"/>
</owl:Class>
<owl:Class rdf:nodeID="iriset_2">
<rdfs:subClassOf rdf:nodeID="descriptorset_1"/>
<rdfs:subClassOf rdf:nodeID="tagset_1"/>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol1_1">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*(\.html|\.php|\.pdf)($|\?|\#)</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#notmatchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*(\.jpg|\.png|\.gif)($|\?|\#)</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol1_1_not">
<owl:equivalentClass>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#notmatchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#notmatchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*(\.html|\.php|\.pdf)($|\?|\#)</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*(\.jpg|\.png|\.gif)($|\?|\#)</owl:hasValue>
</owl:Restriction>
</owl:unionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="descriptorset_ol1_1">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#type"/>
<owl:hasValue>Document</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol1_1">
<rdfs:subClassOf rdf:nodeID="descriptorset_ol1_1"/>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol1_2">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*(\.jpg|\.png|\.gif)($|\?|\#)</owl:hasValue>
</owl:Restriction>
<owl:Class rdf:nodeID="iriset_ol1_1_not"/>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol1_2_not">
<owl:equivalentClass>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#notmatchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#notmatchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*(\.jpg|\.png|\.gif)($|\?|\#)</owl:hasValue>
</owl:Restriction>
</owl:unionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="descriptorset_ol1_2">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#type"/>
<owl:hasValue>Image</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol1_2">
<rdfs:subClassOf rdf:nodeID="descriptorset_ol1_2"/>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol1_3">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
<owl:Class rdf:nodeID="iriset_ol1_1_not"/>
<owl:Class rdf:nodeID="iriset_ol1_2_not"/>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol1_3_not">
<owl:equivalentClass>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#notmatchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
</owl:unionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="descriptorset_ol1_3">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#type"/>
<owl:hasValue>Other</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol1_3">
<rdfs:subClassOf rdf:nodeID="descriptorset_ol1_3"/>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol2_1">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">^[A-Za-z]+:\/\/([^:/\?#@]+\.)+example.org(\:[0-9]+)?</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol2_1_not">
<owl:equivalentClass>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#notmatchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">^[A-Za-z]+:\/\/([^:/\?#@]+\.)+example.org(\:[0-9]+)?</owl:hasValue>
</owl:Restriction>
</owl:unionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="descriptorset_ol2_1">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#colour"/>
<owl:hasValue>red</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol2_1">
<rdfs:subClassOf rdf:nodeID="descriptorset_ol2_1"/>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol2_2">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.org>)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
<owl:Class rdf:nodeID="iriset_ol2_1_not"/>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol2_2_not">
<owl:equivalentClass>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#notmatchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.org>)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
</owl:unionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="descriptorset_ol2_2">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#colour"/>
<owl:hasValue>Blue</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:nodeID="iriset_ol2_2">
<rdfs:subClassOf rdf:nodeID="descriptorset_ol2_2"/>
</owl:Class>
</rdf:RDF>
|
GRDDL Test |
Positive |
Transformation of POWDER-specific elements to POWDER-S. |
008 |
Test Assertion |
POWDER includes several
elements that trigger special behavior, acting as shortcuts. This data
allows those transformations to be tested. |
Protocol for Web Description Resources (POWDER): Formal Semantics Section 4.2 POWDER and POWDER-BASE IRI Set Semantics |
Description |
Manifestgrddl008.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents powder008.xml | powders008.rdf |
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
<validfrom>2008-01-01T00:00:00</validfrom>
<validuntil>2008-12-31T23:59:59</validuntil>
<certifiedby src="http://another.example.org/" />
<supportedby src="http://yet.another.example.org" />
<abouthosts>example.com example.org</abouthosts>
<ex:property1>value</ex:property1>
<ex:property2 rdf:resource="http://example.org/foo.rdf#frag" />
<ex:property3 src="http://example.com/bar.rdf#frag" />
</attribution>
<more src="http://www.example.com/powder2.xml" />
<dr>
<iriset>
<includehosts>example.com example.org</includehosts>
</iriset>
<descriptorset>
<ex:finish rdf:resource="http://example.org/vocab#shiny"/>
<ex:shape>square</ex:shape>
<certified>true</certified>
<sha1sum>abcdef1234567890</sha1sum>
<typeof src="http://example.org/#thing" />
<displaytext>Some text to display</displaytext>
<displayicon src="http://example.com/icon.png" />
</descriptorset>
<tagset>
<seealso src="http://example.com/thing" />
<label>A bunch of tags</label>
<comment>A pithy comment</comment>
<tag>A tag</tag>
<tag>Another tag</tag>
</tagset>
</dr>
</powder> |
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:wdrs="http://www.w3.org/2007/05/powder-s#">
<owl:Ontology rdf:about="">
<wdrs:issuedby rdf:resource="http://authority.example.org/company.rdf#me"/>
<wdrs:issued>2007-12-14T00:00:00</wdrs:issued>
<wdrs:validFrom>2008-01-01T00:00:00</wdrs:validFrom>
<wdrs:validUntil>2008-12-31T23:59:59</wdrs:validUntil>
<wdrs:certfiedby rdf:resource="http://another.example.org/"/>
<wdrs:supportedby rdf:resource="http://yet.another.example.org"/>
<ex:property1 xmlns="http://www.w3.org/2007/05/powder#" xmlns:ex="http://example.org/vocab#">value</ex:property1>
<ex:property2 xmlns="http://www.w3.org/2007/05/powder#" xmlns:ex="http://example.org/vocab#" xmlns:prefix_1="http://www.w3.org/1999/02/22-rdf-syntax-ns#" prefix_1:resource="http://example.org/foo.rdf#frag"/>
<ex:property3 xmlns="http://www.w3.org/2007/05/powder#" xmlns:ex="http://example.org/vocab#" xmlns:prefix_2="http://www.w3.org/1999/02/22-rdf-syntax-ns#" prefix_2:resource="http://example.com/bar.rdf#frag"/>
</owl:Ontology>
<owl:Class rdf:nodeID="aboutset">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com|example\.org)(\:([0-9]+))?\/)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Ontology rdf:about="">
<rdfs:seeAlso rdf:resource="http://www.example.com/powder2.xml"/>
</owl:Ontology>
<owl:Class rdf:nodeID="iriset_1">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema-datatypes#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com|example\.org)(\:([0-9]+))?\/</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
<owl:Class rdf:nodeID="descriptorset_1">
<rdfs:subClassOf rdf:nodeID="aboutset"/>
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#shape"/>
<owl:hasValue>square</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://example.org/vocab#finish"/>
<owl:hasValue rdf:resource="http://example.org/vocab#shiny"/>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#certified"/>
<owl:hasValue>true</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#sha1sum"/>
<owl:hasValue>abcdef1234567890</owl:hasValue>
</owl:Restriction>
<owl:Class rdf:about="http://example.org/#thing"/>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
<wdrs:text>Some text to display</wdrs:text>
<wdrs:logo rdf:resource=""/>
</owl:Class>
<owl:Class rdf:ID="tagset_1">
<rdfs:label>A bunch of tags</rdfs:label>
<rdfs:comment>A pithy comment</rdfs:comment>
<rdfs:seeAlso rdf:resource="http://example.com/thing"/>
<rdfs:subClassOf>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#tag"/>
<owl:hasValue>A tag</owl:hasValue>
</owl:Restriction>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#tag"/>
<owl:hasValue>Another tag</owl:hasValue>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:nodeID="iriset_1">
<rdfs:subClassOf rdf:nodeID="descriptorset_1"/>
<rdfs:subClassOf rdf:nodeID="tagset_1"/>
</owl:Class>
</rdf:RDF> |
4.4 POWDER Locator Tests
Associating Test |
Positive |
Discover descriptions by using the (X)HMTL LINK element |
001 |
Test Assertion |
A (X)HTML document can point to a POWDER document by using the LINK element within its HEAD section |
Protocol for Web Description Resources (POWDER): Description Resources Section 4.1.1 (X)HTML link Elements |
Description |
Manifestlocate001.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents loc001.html | loc001.xml |
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://www.w3.org/2007/11/powder-profile">
<meta name="wdr.issuedby" content="http://authority.example.org/company.rdf#me" />
<link rel="describedby" href="loc001.xml" type="application/powder+xml" />
<title>POWDER Locator Test</title>
</head>
<body>
This is an XHTML document described by a POWDER document.
</body>
</html>
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Associating Test |
Positive |
Discover descriptions by using the HTTP link header |
002 |
Test Assertion |
An agent can discover the
POWDER document associated with a (X)HTML document by inspecting the
HTTP response headers when requesting the (X)HTML document |
Protocol for Web Description Resources (POWDER): Description Resources Section 4.1.3 HTTP Link Headers |
Description |
Manifestlocate002.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents loc002.html | loc002.xml |
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>POWDER Locator Test</title>
</head>
<body>
This is an XHTML document described by a POWDER document which is discovered through the HTTP Link: header.
</body>
</html>
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Associating Test |
Positive |
Discover descriptions by using the wdrs:describedby property |
003 |
Test Assertion |
A document expressed in a format that supports RDF properties can use the wdrs:described property to link a resource to a POWDER document |
Protocol
for Web Description Resources (POWDER): Description Resources Section
4.1.4 Semantic Linkage Using the describedby Property |
Description |
Manifestlocate003.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents loc003.html | loc003a.xml| loc003b.xml |
<html
xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.0"
xmlns:wdrs="http://www.w3.org/2007/05/powder-s#">
<head>
<title>POWDER Locator Test: RDFa and the wdrs:describedby property</title>
<link rel="wdrs:describedBy" href="loc003a.xml" type="application/xml+powder"/>
</head>
<body>
<p>…</p>
<p>Charles I came to the throne believing in his
<a about="loc003b.xml"
rev="wdrs:describedBy"
href="http://monarchy.example.org/divine_right.html">Divine Right</a> to rule...</p>
<p>…</p>
<p>This is an XHTML+RDFa document described by a <a href="loc003a.xml">POWDER document</a>. The document
contains a link to a <a rev="wdrs:describedby" href="page.html" about="loc003b.xml">resource</a>
that is described by another <a href="loc003b">POWDER document</a>.
</body>
</html>
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.org</includehosts>
</iriset>
<descriptorset>
<ex:color>blue</ex:color>
<ex:shape>round</ex:shape>
<displaytext>Everything on example.org is blue and round</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
Associating Test |
Positive |
Discover descriptions in feeds by using the wdrs:describedby property |
004 |
Test Assertion |
The wdrs:described property can be used to associate descriptions with feed entries |
Protocol for Web Description Resources (POWDER): Description Resources Section 4.1.2 ATOM link Elements |
Description |
Manifestlocate004.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents loc004_atom.xml | loc004a.xml | loc004b.xml |
<?xml version="1.0" encoding="utf-8"?>
<feed
xmlns="http://www.w3.org/2005/Atom">
<link rel="describedby" href="loc004a.xml" />
<title>The English Civil War</title>
<link href="http://ecw.example.org/"/>
<updated>2007-10-30T15:00:00Z</updated>
<author>
<name>John Doe</name>
</author>
<id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
<entry>
<title>Charles I</title>
<link href="http://ecw.example.org/charles1.html"/>
<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
<updated>2007-06-04T09:39:21Z</updated>
<summary>Charles I came to the throne believing in his Divine Right to rule...</summary>
</entry>
<entry>
<link rel="describedby" href="loc004b.xml" />
<title>Divine Right</title>
<link href="http://monarchy.example.org/divine_right.html"/>
<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6b</id>
<updated>2007-06-06T13:43:54Z</updated>
<summary>Divine Right was claimed by several English monarchs, notably Charles I...</summary>
</entry>
</feed>
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.org is red and square</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.org</includehosts>
</iriset>
<descriptorset>
<ex:color>blue</ex:color>
<ex:shape>round</ex:shape>
<displaytext>Everything on example.org is blue and round</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
4.5 POWDER Data Extraction Tests
Data Extraction Test |
Positive Test |
Results of the describe(u) function of a POWDER Processor given a POWDER document with a single dr element |
001 |
Test Assertion |
If the IRI and the POWDER document of the test are given to a describe function of a conformant POWDER Processor, it must return the RDF graph of the test |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.1 Operational Semantics |
Description |
Manifestdata001.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pp001.xml | pp001.rdf |
http://www.example.com/
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<displaytext>Everything on example.com is red and square</displaytext>
<displayicon src="http://authority.example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
<rdf:Description rdf:about="http://www.example.com/">
<ex:color>red</ex:color>
<ex:shape>square</ex:shape>
<wdrs:logo rdf:resource="http://example.org/icon.png"/>
<wdrs:text>Everything on example.com is red and square</wdrs:text>
<wdrs:describedby rdf:resource="tests/data_extraction/powder001.xml"/>
</rdf:Description>
|
Data Extraction Test |
Positive Test |
Results of the describe(u) function of a POWDER Processor given a POWDER document with disjoint description resources |
002 |
Test Assertion |
If the IRI and the POWDER document of the test are given to a describe function of a conformant POWDER Processor, it must return the RDF graph of the test |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.3 Exclusive Description Resources |
Description |
Manifestdata002.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pp002.xml | pp002.rdf |
http://www.example.com/foo/index.html
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
<excludepathstartswith>/foo</excludepathstartswith>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
</descriptorset>
</dr>
<dr>
<iriset>
<includehosts>example.com</includehosts>
<includepathstartswith>/foo</includepathstartswith>
</iriset>
<descriptorset>
<ex:color>blue</ex:color>
</descriptorset>
</dr>
</powder>
|
<rdf:Description rdf:about="http://www.example.com/foo/index.html">
<ex:color>blue</ex:color>
<wdrs:describedby rdf:resource="tests/data_extraction/powder002.xml"/>
</rdf:Description>
|
Data Extraction Test |
Positive Test |
Results of the describe(u) function of a POWDER Processor given a POWDER document with an ordered list of Description Resources |
003 |
Test Assertion |
If the IRI and the POWDER document of the test are given to a describe function of a conformant POWDER Processor, it must return the RDF graph of the test |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.3 Exclusive Description Resources |
Description |
Manifestdata003.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pp003.xml | pp003.rdf |
http://www.example.com/foo/index.html
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
<abouthosts>example.com</abouthosts>
</attribution>
<ol>
<dr>
<iriset>
<includehosts>example.com</includehosts>
<includepathstartswith>/foo</includepathstartswith>
</iriset>
<descriptorset>
<ex:color>blue</ex:color>
</descriptorset>
</dr>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
</descriptorset>
</dr>
</ol>
</powder>
|
<rdf:Description rdf:about="http://www.example.com/foo/index.html">
<ex:color>blue</ex:color>
<wdrs:describedby rdf:resource="tests/data_extraction/powder003.xml"/>
</rdf:Description>
|
Data Extraction Test |
Positive Test |
Results of the describe(u) function of a
POWDER Processor given a POWDER document with an ordered list of
Description Resources 2 |
004 |
Test Assertion |
If the IRI and the POWDER document of the test are given to a describe function of a conformant POWDER Processor, it must return the RDF graph of the test |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.3 Exclusive Description Resources |
Description |
Manifestdata004.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pp004.xml | pp004.rdf |
http://www.example.com/bar/index.html
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
<abouthosts>example.com</abouthosts>
</attribution>
<ol>
<dr>
<iriset>
<includehosts>example.com</includehosts>
<includepathstartswith>/foo</includepathstartswith>
</iriset>
<descriptorset>
<ex:color>blue</ex:color>
</descriptorset>
</dr>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
</descriptorset>
</dr>
</ol>
</powder>
|
<rdf:Description rdf:about="http://www.example.com/foo/index.html">
<ex:color>red</ex:color>
<wdrs:describedby rdf:resource="tests/data_extraction/powder004.xml"/>
</rdf:Description>
|
Data Extraction Test |
Positive Test |
Results of the describe(u) function of a
POWDER Processor given a POWDER document containing descriptor sets not
within a Description Resource |
005 |
Test Assertion |
If the IRI and the POWDER document of the test are given to a describe function of a conformant POWDER Processor, it must return the RDF graph of the test |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.5 Direct Resource Description |
Description |
Manifestdata005.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pp005.xml | pp005.rdf |
http://www.example.org/
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<abouthosts>example.org example.com</abouthosts>
</attribution>
<descriptorset xml:id="red">
<ex:color>red</ex:color>
</descriptorset>
<descriptorset xml:id="blue">
<ex:color>blue</ex:color>
</descriptorset>
</powder>
|
<rdf:Description rdf:about="http://www.example.org/">
<wdrs:notknownto rdf:resource="IRI of the POWDER Processor"/>
</rdf:Description>
|
Data Extraction Test |
Positive Test |
Results of the describe(u) function of a POWDER Processor given a POWDER document containing free text tags |
006 |
Test Assertion |
If the IRI and the POWDER document of the test are given to a describe function of a conformant POWDER Processor, it must return the RDF graph of the test |
Protocol
for Web Description Resources (POWDER): Description Resources Section
2.7 Free Text Tags, Comments, Labels and "See Also" |
Description |
Manifestdata006.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pp006.xml | pp006.rdf |
http://www.example.com/
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<tagset>
<tag>London</tag>
<tag>Swiss Re</tag>
<tag>gherkin</tag>
</tagset>
</dr>
</powder>
|
<rdf:Description rdf:about="http://example.com/">
<wdrs:tag>London</wdrs:tag>
<wdrs:tag>Swiss Re</wdrs:tag>
<wdrs:tag>gherkin</wdrs:tag>
<wdrs:describedby rdf:resource="tests/data_extraction/powder006.xml"/>
</rdf:Description>
|
Data Extraction Test |
Positive Test |
Results of the describe(u) function of a POWDER Processor given a POWDER document containing XML data |
007 |
Test Assertion |
If the IRI and the POWDER document of the test are given to a describe function of a conformant POWDER Processor, it must return the RDF graph of the test |
Protocol for Web Description Resources (POWDER): Description Resources 2.8.2 XML Data in POWDER |
Description |
Manifestdata007.rdf |
Preconditions - Namespace |
@prefix ex: <http://example.org/vocab#> |
Documents pp007.xml | pp007.rdf |
http://www.example.com/
|
<?xml version="1.0"?>
<powder xmlns:ex="http://example.org/vocab#"
xmlns:ex2="http://example.org/palette#"
xmlns="http://www.w3.org/2007/05/powder#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
<issued>2007-12-14T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color rdf:parseType="Literal">
<ex2:hex>ff0000</ex2:hex>
<ex2:red>255</ex2:red>
<ex2:green>0</ex2:green>
<ex2:blue>0</ex2:blue>
</ex:color>
<displaytext>Everything on example.org is red</displaytext>
<displayicon src="http://example.org/icon.png" />
</descriptorset>
</dr>
</powder>
|
<rdf:Description rdf:about="http://www.example.com/">
<ex:color rdf:parseType="Literal">
<ex2:hex>ff0000</ex2:hex>
<ex2:red>255</ex2:red>
<ex2:green>0</ex2:green>
<ex2:blue>0</ex2:blue>
</ex:color>
<wdrs:logo rdf:resource="http://example.org/icon.png"/>
<wdrs:text>Everything on example.org is red</wdrs:text>
<wdrs:describedby rdf:resource="tests/data_extraction/powder007.xml"/>
</rdf:Description>
|
Data Extraction Test |
Positive Test |
Results of the describe(u) function of a
POWDER Processor given a POWDER document containing references to
remote descriptor sets |
008 |
Test Assertion |
If the IRI and the POWDER document of the test are given to a describe function of a conformant POWDER Processor, it must return the RDF graph of the test |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.6 Pre-Defined Descriptors |
Description |
Manifestdata008.rdf |
Preconditions - Namespaces |
@prefix ex: <http://example.org/vocab#> |
tests/data_extraction/powder008a.xml |
Documents pp008b.xml | pp008.rdf |
http://books.example.com/robin/book1.html
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#">
<attribution>
<issuedby src="http://books.example.com/company.rdf#me" />
<issued>2008-03-03T00:00:00</issued>
</attribution>
<dr>
<iriset>
<includehosts>books.example.com</includehosts>
<includepathstartswith>/robin/</includepathstartswith>
</iriset>
<descriptorset src="tests/data_extraction/powder008a.xml#ks1" />
</dr>
<dr>
<iriset>
<includehosts>books.example.com</includehosts>
<includepathstartswith>/starling/</includepathstartswith>
</iriset>
<descriptorset src="tests/data_extraction/powder008a.xml#ks2" />
</dr>
</powder>
|
<rdf:Description rdf:about="http://books.example.com/robin/book1.html">
<wdrs:logo rdf:resource="http://education.example.org/ks1.png"/>
<wdrs:text>
This material is suitable for UK National Curriculum Key Stage 1
</wdrs:text>
<wdrs:describedby rdf:resource="tests/data_extraction/powder008b.xml"/>
</rdf:Description>
|
Data Extraction Test |
Positive Test |
Results of the describe(u) function of a
POWDER Processor given a POWDER document containing multiple dr elements and a IRI matching one of them |
009 |
Test Assertion |
If the IRI and the POWDER document of the test are given to a describe function of a conformant POWDER Processor, it must return the RDF graph of the test |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.1 Operational Semantics |
Description |
Manifestdata009.rdf |
Preconditions - Namespaces |
@prefix ex: <http://example.org/vocab#> |
Documents pp009.xml | pp009.rdf |
http://www.example.com/page.html
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
</descriptorset>
</dr>
<dr>
<iriset>
<includehosts>example.com</includehosts>
<includepathstartswith>/foo</includepathstartswith>
</iriset>
<descriptorset>
<ex:finish rdf:resource="http://example.org/vocab#shiny" />
</descriptorset>
</dr>
</powder>
|
<rdf:Description rdf:about="http://www.example.com/foo.bar">
<ex:color>red</ex:color>
<wdrs:describedby rdf:resource="tests/data/pp009.xml" />
</rdf:Description>
|
Data Extraction Test |
Positive Test |
Results of the describe(u) function of a
POWDER Processor given a POWDER document containing multiple dr elements and a IRI matching two of them |
010 |
Test Assertion |
If the IRI and the POWDER document of the test are given to a describe function of a conformant POWDER Processor, it must return the RDF graph of the test |
Protocol for Web Description Resources (POWDER): Description Resources Section 2.1 Operational Semantics |
Description |
Manifestdata010.rdf |
Preconditions - Namespaces |
@prefix ex: <http://example.org/vocab#> |
Documents pp010.xml | pp010.rdf |
http://www.example.com/foo.bar
|
<?xml version="1.0"?>
<powder xmlns="http://www.w3.org/2007/05/powder#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ex="http://example.org/vocab#">
<attribution>
<issuedby src="http://authority.example.org/company.rdf#me" />
</attribution>
<dr>
<iriset>
<includehosts>example.com</includehosts>
</iriset>
<descriptorset>
<ex:color>red</ex:color>
</descriptorset>
</dr>
<dr>
<iriset>
<includehosts>example.com</includehosts>
<includepathstartswith>/foo</includepathstartswith>
</iriset>
<descriptorset>
<ex:finish rdf:resource="http://example.org/vocab#shiny" />
</descriptorset>
</dr>
</powder>
|
<rdf:Description rdf:about="http://www.example.com/foo.bar">
<ex:color>red</ex:color>
<ex:finish rdf:resource="http://example.org/vocab#shiny" />
<wdrs:describedby rdf:resource="tests/data/pp010.xml" />
</rdf:Description>
|
5 Acknowledgements
Many thanks to Tim Boland for his comments and guidance and all members of the POWDER Working Group who have contributed to this document's production.
6 References
- [DR]
- Protocol for Web Description Resources: Description Resources W3C Working Draft 17 March 2008
- [RDF-TEST]
- RDF Test Cases W3C Recommendation 10 February 2004