W3C

Protocol for Web Description Resources (POWDER): Test Suite

W3C Working Group Note 04 June 2009

This version
http://www.w3.org/TR/2009/NOTE-powder-test-20090604/
Latest version
http://www.w3.org/TR/powder-test/
Previous version
http://www.w3.org/TR/2009/NOTE-powder-test-20090403/
Editors:
Antonis Kukurikos, Institute of Informatics & Telecommunications (IIT), NCSR
Phil Archer, Institute of Informatics & Telecommunications (IIT), NCSR "Demokritos" (formerly with FOSI)

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 infering 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 is the fourth publication of the document as a Working Group Note by the POWDER Working Group which does not expect to publish further versions. Changes since the previous version are recorded in the change log.

Publication of this Note is synchronized with several other documents:

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.

This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.


Table of Contents

1 Introduction
2 Test Types
2.1 Parser Tests
2.2 GRDDL Tests
2.3 POWDER Locator Tests
2.4 POWDER Data Extraction Tests
3 Manifest Files
4 The POWDER tests
4.1 Positive Parser Tests
4.2 Negative Parser Tests
4.3 GRDDL Tests
4.4 POWDER Locator Tests
4.5 POWDER Data Extraction Tests
4.6 Canonicalization Tests
5 Acknowledgements
6 References
7 Change Log

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 intented 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 valitidy 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].

2.4 POWDER Data Extraction Tests

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

2.5 IRI Canonicalization Tests

These tests provide data for testing the IRI canonicalization and data encoding steps set out in the Grouping of Resources Document, Sections 2.1.3 to 2.1.5.

The tests comprise one or more POWDER documents that contain non-ASCII or other characters that require particular handling, along with candidate IRIs, and the expected output of a POWDER Processor's describe(u) function.

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
wdrtest:canontest

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:

  1. The type of the test.
  2. A description for the purpose of the test, with respect to its type.
  3. A link to the section of the relevant document that defines the part of the specification that is subject to the test.
  4. The index of the test in the particular type.
  5. A link to the Manifest file that provides a formal description for the test.
  6. The preconditions that must be taken into account in order to consider the test valid.
  7. 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_parser_tests
negative_parser_tests
grddl_tests
locate_tests
data_tests
canon_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.com 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.com 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.com 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.com 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.htm 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&amp;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.com 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.com 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.com 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.com 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.com 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.com 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\.com|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&amp;group=abcdefg</includequerycontains>
      <excludequerycontains>id=123456&amp;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]+))?\/[^\?\#]*\?([^\#]*\&amp;)?id=123456(\&amp;|$)</includeregex>
      <includeregex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*\?([^\#]*\&amp;)?group=abcdefg(\&amp;|$)</includeregex>
      <excluderegex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*\?([^\#]*\&amp;)?id=123456(\&amp;|$)</excluderegex>
      <excluderegex>\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]*)(\:([0-9]+))?\/[^\?\#]*\?([^\#]*\&amp;)?group=abcdefg(\&amp;|$)</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>w3.org</includehosts>
         <includepathendswith>tests/locate_tests/loc002.html</includepathendswith>
      </iriset>
      <descriptorset>
      	 <ex:color>green</ex:color>
      	 <displaytext>POWDER file located through HTTP Link</displaytext>
      </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="self" href="http://www.w3.org/TR/powder-test/tests/locate_tests/loc004_atom.xml" />
    <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>

4.6 Canonicalization Tests

Canonicalization Test
Positive Percent encoded triples are converted into the characters they represent. 001
Test Assertion
With the exception of spaces and reserved characters, percent encoded triples are converted to the characters they represent in both the candidate IRI and the IRI constraints in a POWDER document. Therefore either candidate IRI will match the IRI set in either POWDER document.
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1.4 IRI/URI Canonicalization
Description
Manifestcanon001.rdf
Preconditions - Namespace
@prefix ex: <http://example.org/vocab#>
Documents match001a.xml match001b.xml
http://www.example.com/images/Céline.jpg http://www.example.com/images/C%C3%A9line.jpg
<?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>
      <includepathcontains>Fran%c3%a7ois C%C3%A9line</includepathcontains>
    </iriset>

    <descriptorset>
      <ex:color>red</ex:color>
    </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.com</includehosts>
      <includepathcontains>François Céline</includepathcontains>
    </iriset>

    <descriptorset>
      <ex:color>red</ex:color>
    </descriptorset>

  </dr>

</powder>
<rdf:Description rdf:about="http://www.example.com/images/Céline.jpg">
  <ex:color>red</ex:color>
  <wdrs:describedby rdf:resource="tests/canon_tests/match001a.xml" />
</rdf:Description>
<rdf:Description rdf:about="http://www.example.com/images/Céline.jpg">
  <ex:color>red</ex:color>
  <wdrs:describedby rdf:resource="tests/canon_tests/match001b.xml" />
</rdf:Description>
Canonicalization Test
Positive Space characters (%20) and reserved characters as per Section 2.2 of RFC 3986 must not be converted to literals. 002
Test Assertion
Percent-encoded spaces and reservered characters are not decoded either in the candidate IRI or the data.
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1.4 IRI/URI Canonicalization
Description
Manifestcanon002.rdf
Preconditions - Namespace
@prefix ex: <http://example.org/vocab#>
Documents match002.xml
http://example.com/my%20doc.doc 
<?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>/my%20doc.doc</includepathstartswith>
    </iriset>

    <descriptorset>
      <ex:color>red</ex:color>
    </descriptorset>
  </dr>

</powder>
<rdf:Description rdf:about="http://example.com/my%20doc.doc">
  <ex:color>red</ex:color>
  <wdrs:describedby rdf:resource="tests/canon_tests/match002.xml" />
</rdf:Description>
Canonicalization Test
Positive Space characters (%20) and reserved characters as per Section 2.2 of RFC 3986 must not be converted to literals. 003
Test Assertion
Percent-encoded spaces and reservered characters are not decoded either in the candidate IRI or the data.
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1.4 IRI/URI Canonicalization
Description
Manifestcanon003.rdf
Preconditions - Namespace
@prefix ex: <http://example.org/vocab#>
Documents match003.xml
http://example.com/foo/his%2Fhers/image.png
<?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/his%2Fhers</includepathstartswith>
    </iriset>

    <descriptorset>
      <ex:color>red</ex:color>
    </descriptorset>
  </dr>
</powder>
<rdf:Description rdf:about="http://example.com/foo/his%2Fhers/image.png">
  <ex:color>red</ex:color>
  <wdrs:describedby rdf:resource="tests/canon_tests/match003.xml" />
</rdf:Description>
Canonicalization Test
Positive Change the scheme and host string to ASCII lowercase 004
Test Assertion
Scheme and host matching is case-insensitive and are normalised to ASCII lower case before matching. Paths are unaffected.
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1.4 IRI/URI Canonicalization
Description
Manifestcanon004.rdf
Preconditions - Namespace
@prefix ex: <http://example.org/vocab#>
Documents match004.xml
httpS://EXAMPLE.com/FOO/Capital.svg
<?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>HTTPS</includeschemes>
      <includehosts>EXAMPLE.COM</includehosts>
      <includepathstartswith>/FOO</includepathstartswith>
    </iriset>

    <descriptorset>
      <ex:color>red</ex:color>
    </descriptorset>
  </dr>

</powder>
<rdf:Description rdf:about="https://example.com/FOO/Capital.svg">
  <ex:color>red</ex:color>
  <wdrs:describedby rdf:resource="tests/canon_tests/match004.xml" />
</rdf:Description>
Canonicalization Test
Positive If the host string does not completely consist of ASCII characters, apply the ToASCII operation to the host string, with the UseSTD3ASCIIRules flag unset and the AllowUnassigned flag set. 005
Test Assertion
Applying the ToASCII operation leads to a match for both of the candidate IRIs with either POWDER document.
Protocol for Web Description Resources (POWDER): Grouping of Resources Section 2.1.4 IRI/URI Canonicalization
Description
Manifestcanon005.rdf
Preconditions - Namespace
@prefix ex: <http://example.org/vocab#>
Documents match005a.xml match005b.xml
http://www.sigmaσ.example.org/images/Céline.jpg http://www.xn--sigma-kde.example.org/images/Céline.jpg
<?xml version="1.0" encoding="UTF-8" ?>
<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>sigmaσ.example.org</includehosts>
    </iriset>

    <descriptorset>
      <ex:color>red</ex:color>
    </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#">

  <attribution>
    <issuedby src="http://authority.example.org/company.rdf#me" />
    <issued>2007-12-14T00:00:00</issued>
  </attribution>

  <dr>
    <iriset>
      <includehosts>xn--sigma-kde.example.org</includehosts>
    </iriset>

    <descriptorset>
      <ex:color>red</ex:color>
    </descriptorset>

  </dr>

</powder>
<rdf:Description rdf:about="http://www.xn--sigma-kde.example.org/images/Céline.jpg">
  <ex:color>red</ex:color>
  <wdrs:describedby rdf:resource="tests/canon_tests/match005a.xml" />
</rdf:Description>
<rdf:Description rdf:about="http://www.xn--sigma-kde.example.org/images/Céline.jpg">
  <ex:color>red</ex:color>
  <wdrs:describedby rdf:resource="tests/canon_tests/match005b.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

7 Change Log

Changes since previous version:

  1. Section 4.6 (Canonicalization Tests) added.
  2. POWDER document for Locator Test 002 amended so that processors would return a description of the relevant HTML document if the HTTP link were followed correctly.