Commits

Toby Inkster committed 6215ebb

Update; release 0.102

Comments (0)

Files changed (20)

Changes

-############################################################################
-## Changes #################################################################
-############################################################################
-
-XRD-Parser
-==========
-
-Created:      2009-12-04
-Home page:    <http://search.cpan.org/dist/XRD-Parser/>
-Bug tracker:  <http://rt.cpan.org/Dist/Display.html?Queue=XRD-Parser>
-Maintainer:   Toby Inkster <mailto:tobyink@cpan.org>
-
-0.102 [2010-08-11]
- - (Addition) new_from_url() constructor.
- - (Removal) new() constructor no longer accepts undef content - use
-   new_from_url() instead.
-
-0.101 [2010-07-07]
- - Split hostmeta_location function out from hostmeta construtor.
-
-0.100 [2010-06-30]
- - Improvements to method for extracting host names from URIs.
- - (Update) Tracked changes to host-meta spec.
-
-0.06 [2010-04-26]
- - Add reasonable timeouts for hostmeta constructor.
-
-0.05 [2010-02-02]
- - Allow both methods of handling <Property> within <Link> to be toggled
-   independently.
- - Provide an alternative method of handling <Property> within <Link>: RDFS
-   subproperties.
- - (Addition) host_uri and template_uri utility functions.
- - (Update) Copyright 2010.
- - (Update) Switch to my new build system.
- - (Update) Synchronise callback functionality with RDF::RDFa::Parser 0.30.
-
-0.04 [2009-12-16]
- - Don't reify <Link> elements multiple times for multiple <Property>
-   children.
- - Parse <Property> children of <Link template> elements.
- - Support http://host-meta.net/xrd/1.0 and http://host-meta.net/ns/1.0 as
-   alternatives.
-
-0.03
- - Prefer namespace-aware DOM functions.
- - Send proper HTTP Accept header when requesting XRD files.
- - (Addition) Provide an XRD::Parser->hostmeta($uri) shortcut constructor.
-
-0.02
- - Implement <Alias/> element as an owl:sameAs-like predicate rather than
-   simply duplicating data.
- - Map XRD <Expires/> element to the RDF URI
-   <http://ontologi.es/xrd#expires>.
- - (Addition) Support <Link template/> attribute via a special datatype and
-   special predicate URI scheme.
- - (Addition) Support for IANA keywords in <Link rel/> attribute.
- - (Addition) Support for host-meta's <hm:Host/> element as a way to set
-   subjects.
-
-0.01 # First release
-

Changes.ttl

-#############################################################
-
-@prefix :        <http://usefulinc.com/ns/doap#> .
-@prefix dcs:     <http://ontologi.es/doap-changeset#> .
-@prefix dc:      <http://purl.org/dc/terms/> .
-@prefix foaf:    <http://xmlns.com/foaf/0.1/> .
-@prefix my:      <http://purl.org/NET/cpan-uri/dist/XRD-Parser/> .
-@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
-@prefix toby:    <http://tobyinkster.co.uk/#> .
-@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
-
-#############################################################
-
-<>
-
-	dc:title         "Changes" ;
-	dc:description   "Revision history for Perl extension XRD::Parser."@en ;
-	dc:subject       my:project ;
-	dc:creator       toby:i .
-
-#############################################################
-
-my:v_0-01
-
-	a               :Version ;
-	:revision       "0.01"^^xsd:string ;
-	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.01.tar.gz> ;
-	rdfs:label      "First release"@en .
-
-my:v_0-02
-
-	a               :Version ;
-	:revision       "0.02"^^xsd:string ;
-	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.02.tar.gz> ;
-	dcs:changeset [
-		dcs:versus my:v_0-01 ;
-		dcs:item
-			[ rdfs:label "Support for host-meta's <hm:Host/> element as a way to set subjects."@en ; a dcs:Addition ] ,
-			[ rdfs:label "Implement <Alias/> element as an owl:sameAs-like predicate rather than simply duplicating data."@en ] ,
-			[ rdfs:label "Support <Link template/> attribute via a special datatype and special predicate URI scheme."@en ; a dcs:Addition ] ,
-			[ rdfs:label "Support for IANA keywords in <Link rel/> attribute."@en ; a dcs:Addition ] ,
-			[ rdfs:label "Map XRD <Expires/> element to the RDF URI <http://ontologi.es/xrd#expires>."@en ]
-		] .
-
-my:v_0-03
-
-	a               :Version ;
-	:revision       "0.03"^^xsd:string ;
-	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.03.tar.gz> ;
-	dcs:changeset [
-		dcs:versus my:v_0-02 ;
-		dcs:item
-			[ rdfs:label "Provide an XRD::Parser->hostmeta($uri) shortcut constructor."@en ; a dcs:Addition ] ,
-			[ rdfs:label "Send proper HTTP Accept header when requesting XRD files."@en ] ,
-			[ rdfs:label "Prefer namespace-aware DOM functions."@en ]
-		] .
-		
-my:v_0-04
-
-	a               :Version ;
-	dc:issued       "2009-12-16"^^xsd:date ;
-	:revision       "0.04"^^xsd:string ;
-	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.04.tar.gz> ;
-	dcs:changeset [
-		dcs:versus my:v_0-03 ;
-		dcs:item 
-			[ rdfs:label "Support http://host-meta.net/xrd/1.0 and http://host-meta.net/ns/1.0 as alternatives."@en ] ,
-			[ rdfs:label "Don't reify <Link> elements multiple times for multiple <Property> children."@en ] ,
-			[ rdfs:label "Parse <Property> children of <Link template> elements."@en ] ;
-		rdfs:comment "And other minor bugfixes."@en 
-		] .
-		
-my:v_0-05
-
-	a               :Version ;
-	dc:issued       "2010-02-02"^^xsd:date ;
-	:revision       "0.05"^^xsd:string ;
-	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.05.tar.gz> ;
-	dcs:changeset [
-		dcs:versus my:v_0-04 ;
-		dcs:item
-			[ rdfs:label "Provide an alternative method of handling <Property> within <Link>: RDFS subproperties."@en ] ,
-			[ rdfs:label "Allow both methods of handling <Property> within <Link> to be toggled independently."@en ] ,
-			[ rdfs:label "host_uri and template_uri utility functions."@en ; a dcs:Addition ] ,
-			[ rdfs:label "Switch to my new build system."@en ; a dcs:Update ] ,
-			[ rdfs:label "Synchronise callback functionality with RDF::RDFa::Parser 0.30."@en ; a dcs:Update ] ,
-			[ rdfs:label "Copyright 2010."@en ; a dcs:Update ]
-		] .
-
-my:v_0-06
-
-	a               :Version ;
-	dc:issued       "2010-04-26"^^xsd:date ;
-	:revision       "0.06"^^xsd:string ;
-	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.06.tar.gz> ;
-	dcs:changeset [
-		dcs:versus my:v_0-05 ;
-		dcs:item
-			[ rdfs:label "Add reasonable timeouts for hostmeta constructor."@en ]
-		] .
-
-my:v_0-100
-
-	a               :Version ;
-	dc:issued       "2010-06-30"^^xsd:date ;
-	:revision       "0.100"^^xsd:string ;
-	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.100.tar.gz> ;
-	dcs:changeset [
-		dcs:versus my:v_0-06 ;
-		dcs:item
-			[ rdfs:label "Improvements to method for extracting host names from URIs."@en ] ,
-			[ rdfs:label "Tracked changes to host-meta spec."@en ; a dcs:Update ] 
-		] .
-
-my:v_0-101
-
-	a               :Version ;
-	dc:issued       "2010-07-07"^^xsd:date ;
-	:revision       "0.101"^^xsd:string ;
-	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.101.tar.gz> ;
-	dcs:changeset [
-		dcs:versus my:v_0-100 ;
-		dcs:item
-			[ rdfs:label "Split hostmeta_location function out from hostmeta construtor."@en ; rdfs:comment "The hostmeta_location function is useful in its own right to modules like HTTP::LRDD."@en ]
-		] .
-
-my:v_0-102
-
-	a               :Version ;
-	dc:issued       "2010-08-11"^^xsd:date ;
-	:revision       "0.102"^^xsd:string ;
-	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.102.tar.gz> ;
-	dcs:changeset [
-		dcs:versus my:v_0-101 ;
-		dcs:item
-			[ rdfs:label "new() constructor no longer accepts undef content - use new_from_url() instead."@en ; a dcs:Removal ] ,
-			[ rdfs:label "new_from_url() constructor."@en ; a dcs:Addition ] 
-		] .
-
-#############################################################
-
-my:project
-
-	a               :Project ;
-	:name           "XRD-Parser" ;
-	:shortdesc      "parse XRD and host-meta files into RDF::Trine models"@en ;
-	:programming-language  "Perl" ;
-	:homepage       <https://metacpan.org/release/XRD-Parser> ;
-	:download-page  <https://metacpan.org/release/XRD-Parser> ;
-	:bug-database   <http://rt.cpan.org/Dist/Display.html?Queue=XRD-Parser> ;
-	:repository     [ a :SVNRepository ; :browse <http://goddamn.co.uk/svn-web/perlmods/browse/XRD-Parser/> ] ;
-	:maintainer     toby:i ;
-	:developer      toby:i ;
-	:documenter     toby:i ;
-	:tester         toby:i ;
-	:created        "2009-12-04"^^xsd:date ;
-	:license        <http://dev.perl.org/licenses/> ;
-	:release        my:v_0-01 ,  my:v_0-02 ,  my:v_0-03 ,  my:v_0-04 ,  my:v_0-05 ,  my:v_0-06 , 
-	                my:v_0-100 , my:v_0-101 , my:v_0-102 .
-
-#############################################################
-
-toby:i
-
-	a               foaf:Person ;
-	foaf:name       "Toby Inkster" ;
-	foaf:homepage   <http://tobyinkster.co.uk/> ;
-	foaf:page       <https://metacpan.org/author/TOBYINK> ;
-	foaf:mbox       <mailto:tobyink@cpan.org> ;
-	<http://www.w3.org/2002/07/owl#sameAs> <http://purl.org/NET/cpan-uri/person/tobyink> .
-
-#############################################################

Changes.xml

-<?xml version="1.0" encoding="utf-8"?>
-<rdf:RDF xmlns:dbug="http://ontologi.es/doap-bugs#" xmlns:dc="http://purl.org/dc/terms/" xmlns:dcs="http://ontologi.es/doap-changeset#" xmlns:doap="http://usefulinc.com/ns/doap#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r0">
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r1"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r2"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r3"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r4"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r5"/>
-	<dcs:versus rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-01"/>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r1">
-	<rdf:type rdf:resource="http://ontologi.es/doap-changeset#Addition"/>
-	<rdfs:label xml:lang="en">Support for host-meta's &lt;hm:Host/> element as a way to set subjects.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r10">
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r11"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r12"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r13"/>
-	<dcs:versus rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-03"/>
-	<rdfs:comment xml:lang="en">And other minor bugfixes.</rdfs:comment>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r11">
-	<rdfs:label xml:lang="en">Support http://host-meta.net/xrd/1.0 and http://host-meta.net/ns/1.0 as alternatives.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r12">
-	<rdfs:label xml:lang="en">Don't reify &lt;Link> elements multiple times for multiple &lt;Property> children.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r13">
-	<rdfs:label xml:lang="en">Parse &lt;Property> children of &lt;Link template> elements.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r14">
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r15"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r16"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r17"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r18"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r19"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r20"/>
-	<dcs:versus rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-04"/>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r15">
-	<rdfs:label xml:lang="en">Provide an alternative method of handling &lt;Property> within &lt;Link>: RDFS subproperties.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r16">
-	<rdfs:label xml:lang="en">Allow both methods of handling &lt;Property> within &lt;Link> to be toggled independently.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r17">
-	<rdf:type rdf:resource="http://ontologi.es/doap-changeset#Addition"/>
-	<rdfs:label xml:lang="en">host_uri and template_uri utility functions.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r18">
-	<rdf:type rdf:resource="http://ontologi.es/doap-changeset#Update"/>
-	<rdfs:label xml:lang="en">Switch to my new build system.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r19">
-	<rdf:type rdf:resource="http://ontologi.es/doap-changeset#Update"/>
-	<rdfs:label xml:lang="en">Synchronise callback functionality with RDF::RDFa::Parser 0.30.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r2">
-	<rdfs:label xml:lang="en">Implement &lt;Alias/> element as an owl:sameAs-like predicate rather than simply duplicating data.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r20">
-	<rdf:type rdf:resource="http://ontologi.es/doap-changeset#Update"/>
-	<rdfs:label xml:lang="en">Copyright 2010.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r21">
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r22"/>
-	<dcs:versus rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-05"/>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r22">
-	<rdfs:label xml:lang="en">Add reasonable timeouts for hostmeta constructor.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r23">
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r24"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r25"/>
-	<dcs:versus rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-06"/>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r24">
-	<rdfs:label xml:lang="en">Improvements to method for extracting host names from URIs.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r25">
-	<rdf:type rdf:resource="http://ontologi.es/doap-changeset#Update"/>
-	<rdfs:label xml:lang="en">Tracked changes to host-meta spec.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r26">
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r27"/>
-	<dcs:versus rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-100"/>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r27">
-	<rdfs:comment xml:lang="en">The hostmeta_location function is useful in its own right to modules like HTTP::LRDD.</rdfs:comment>
-	<rdfs:label xml:lang="en">Split hostmeta_location function out from hostmeta construtor.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r28">
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r29"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r30"/>
-	<dcs:versus rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-101"/>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r29">
-	<rdf:type rdf:resource="http://ontologi.es/doap-changeset#Removal"/>
-	<rdfs:label xml:lang="en">new() constructor no longer accepts undef content - use new_from_url() instead.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r3">
-	<rdf:type rdf:resource="http://ontologi.es/doap-changeset#Addition"/>
-	<rdfs:label xml:lang="en">Support &lt;Link template/> attribute via a special datatype and special predicate URI scheme.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r30">
-	<rdf:type rdf:resource="http://ontologi.es/doap-changeset#Addition"/>
-	<rdfs:label xml:lang="en">new_from_url() constructor.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r31">
-	<doap:browse rdf:resource="http://goddamn.co.uk/viewvc/perlmods/XRD-Parser/"/>
-	<rdf:type rdf:resource="http://usefulinc.com/ns/doap#SVNRepository"/>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r4">
-	<rdf:type rdf:resource="http://ontologi.es/doap-changeset#Addition"/>
-	<rdfs:label xml:lang="en">Support for IANA keywords in &lt;Link rel/> attribute.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r5">
-	<rdfs:label xml:lang="en">Map XRD &lt;Expires/> element to the RDF URI &lt;http://ontologi.es/xrd#expires>.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r6">
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r7"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r8"/>
-	<dcs:item rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r9"/>
-	<dcs:versus rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-02"/>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r7">
-	<rdf:type rdf:resource="http://ontologi.es/doap-changeset#Addition"/>
-	<rdfs:label xml:lang="en">Provide an XRD::Parser->hostmeta($uri) shortcut constructor.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r8">
-	<rdfs:label xml:lang="en">Send proper HTTP Accept header when requesting XRD files.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r9">
-	<rdfs:label xml:lang="en">Prefer namespace-aware DOM functions.</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:about="file:///home/tai/src/perlmods/XRD-Parser/Changes.ttl">
-	<dc:creator rdf:resource="http://tobyinkster.co.uk/#i"/>
-	<dc:description xml:lang="en">Revision history for Perl extension XRD::Parser.</dc:description>
-	<dc:subject rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/project"/>
-	<dc:title>Changes</dc:title>
-</rdf:Description>
-<rdf:Description rdf:about="http://purl.org/NET/cpan-uri/dist/XRD-Parser/project">
-	<doap:bug-database rdf:resource="http://rt.cpan.org/Dist/Display.html?Queue=XRD-Parser"/>
-	<doap:created rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2009-12-04</doap:created>
-	<doap:developer rdf:resource="http://tobyinkster.co.uk/#i"/>
-	<doap:documenter rdf:resource="http://tobyinkster.co.uk/#i"/>
-	<doap:download-page rdf:resource="http://search.cpan.org/dist/XRD-Parser/"/>
-	<doap:homepage rdf:resource="http://search.cpan.org/dist/XRD-Parser/"/>
-	<doap:license rdf:resource="http://dev.perl.org/licenses/"/>
-	<doap:maintainer rdf:resource="http://tobyinkster.co.uk/#i"/>
-	<doap:name>XRD-Parser</doap:name>
-	<doap:programming-language>Perl</doap:programming-language>
-	<doap:release rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-01"/>
-	<doap:release rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-02"/>
-	<doap:release rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-03"/>
-	<doap:release rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-04"/>
-	<doap:release rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-05"/>
-	<doap:release rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-06"/>
-	<doap:release rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-100"/>
-	<doap:release rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-101"/>
-	<doap:release rdf:resource="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-102"/>
-	<doap:repository rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r31"/>
-	<doap:shortdesc xml:lang="en">parse XRD and host-meta files into RDF::Trine models</doap:shortdesc>
-	<doap:tester rdf:resource="http://tobyinkster.co.uk/#i"/>
-	<rdf:type rdf:resource="http://usefulinc.com/ns/doap#Project"/>
-</rdf:Description>
-<rdf:Description rdf:about="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-01">
-	<doap:file-release rdf:resource="http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.01.tar.gz"/>
-	<doap:revision rdf:datatype="http://www.w3.org/2001/XMLSchema#string">0.01</doap:revision>
-	<rdf:type rdf:resource="http://usefulinc.com/ns/doap#Version"/>
-	<rdfs:label xml:lang="en">First release</rdfs:label>
-</rdf:Description>
-<rdf:Description rdf:about="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-02">
-	<dcs:changeset rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r0"/>
-	<doap:file-release rdf:resource="http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.02.tar.gz"/>
-	<doap:revision rdf:datatype="http://www.w3.org/2001/XMLSchema#string">0.02</doap:revision>
-	<rdf:type rdf:resource="http://usefulinc.com/ns/doap#Version"/>
-</rdf:Description>
-<rdf:Description rdf:about="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-03">
-	<dcs:changeset rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r6"/>
-	<doap:file-release rdf:resource="http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.03.tar.gz"/>
-	<doap:revision rdf:datatype="http://www.w3.org/2001/XMLSchema#string">0.03</doap:revision>
-	<rdf:type rdf:resource="http://usefulinc.com/ns/doap#Version"/>
-</rdf:Description>
-<rdf:Description rdf:about="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-04">
-	<dcs:changeset rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r10"/>
-	<dc:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2009-12-16</dc:issued>
-	<doap:file-release rdf:resource="http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.04.tar.gz"/>
-	<doap:revision rdf:datatype="http://www.w3.org/2001/XMLSchema#string">0.04</doap:revision>
-	<rdf:type rdf:resource="http://usefulinc.com/ns/doap#Version"/>
-</rdf:Description>
-<rdf:Description rdf:about="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-05">
-	<dcs:changeset rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r14"/>
-	<dc:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2010-02-02</dc:issued>
-	<doap:file-release rdf:resource="http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.05.tar.gz"/>
-	<doap:revision rdf:datatype="http://www.w3.org/2001/XMLSchema#string">0.05</doap:revision>
-	<rdf:type rdf:resource="http://usefulinc.com/ns/doap#Version"/>
-</rdf:Description>
-<rdf:Description rdf:about="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-06">
-	<dcs:changeset rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r21"/>
-	<dc:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2010-04-26</dc:issued>
-	<doap:file-release rdf:resource="http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.06.tar.gz"/>
-	<doap:revision rdf:datatype="http://www.w3.org/2001/XMLSchema#string">0.06</doap:revision>
-	<rdf:type rdf:resource="http://usefulinc.com/ns/doap#Version"/>
-</rdf:Description>
-<rdf:Description rdf:about="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-100">
-	<dcs:changeset rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r23"/>
-	<dc:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2010-06-30</dc:issued>
-	<doap:file-release rdf:resource="http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.100.tar.gz"/>
-	<doap:revision rdf:datatype="http://www.w3.org/2001/XMLSchema#string">0.100</doap:revision>
-	<rdf:type rdf:resource="http://usefulinc.com/ns/doap#Version"/>
-</rdf:Description>
-<rdf:Description rdf:about="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-101">
-	<dcs:changeset rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r26"/>
-	<dc:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2010-07-07</dc:issued>
-	<doap:file-release rdf:resource="http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.101.tar.gz"/>
-	<doap:revision rdf:datatype="http://www.w3.org/2001/XMLSchema#string">0.101</doap:revision>
-	<rdf:type rdf:resource="http://usefulinc.com/ns/doap#Version"/>
-</rdf:Description>
-<rdf:Description rdf:about="http://purl.org/NET/cpan-uri/dist/XRD-Parser/v_0-102">
-	<dcs:changeset rdf:nodeID="rBBC7CB4CA4C011DF832BFDE63AFF7FC6r28"/>
-	<dc:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2010-08-11</dc:issued>
-	<doap:file-release rdf:resource="http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.102.tar.gz"/>
-	<doap:revision rdf:datatype="http://www.w3.org/2001/XMLSchema#string">0.102</doap:revision>
-	<rdf:type rdf:resource="http://usefulinc.com/ns/doap#Version"/>
-</rdf:Description>
-<rdf:Description xmlns:ns1="http://www.w3.org/2002/07/owl#" rdf:about="http://tobyinkster.co.uk/#i">
-	<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
-	<ns1:sameAs rdf:resource="http://purl.org/NET/cpan-uri/person/tobyink"/>
-	<foaf:homepage rdf:resource="http://tobyinkster.co.uk/"/>
-	<foaf:mbox rdf:resource="mailto:tobyink@cpan.org"/>
-	<foaf:name>Toby Inkster</foaf:name>
-	<foaf:page rdf:resource="http://search.cpan.org/~tobyink/"/>
-</rdf:Description>
-</rdf:RDF>

MANIFEST.SKIP

-^MANIFEST.bak$
-^Makefile.old$
-^XRD-Parser-.\...\.tar\.gz$
-^Makefile$
-^blib/
-^pm_to_blib
-^blibdirs
-\.svn
-^example.*\.pl$
-^MYMETA.yml

META.yml

----
-abstract: 'parse XRD and host-meta files into RDF::Trine models'
-author:
-  - 'Toby Inkster <tobyink@cpan.org>'
-build_requires:
-  ExtUtils::MakeMaker: 6.42
-  Test::More: 0.61
-configure_requires:
-  ExtUtils::MakeMaker: 6.42
-distribution_type: module
-generated_by: 'Module::Install version 0.95'
-license: perl
-meta-spec:
-  url: http://module-build.sourceforge.net/META-spec-v1.4.html
-  version: 1.4
-name: XRD-Parser
-no_index:
-  directory:
-    - inc
-    - t
-requires:
-  HTTP::Link::Parser: 0.03
-  LWP::UserAgent: 0
-  RDF::Trine: 0
-  Scalar::Util: 0
-  URI: 0
-  URI::Escape: 0
-  XML::LibXML: 0
-  perl: 5.8.0
-resources:
-  bugtracker: http://rt.cpan.org/Dist/Display.html?Queue=XRD-Parser
-  homepage: http://search.cpan.org/dist/XRD-Parser/
-  license: http://dev.perl.org/licenses/
-  repository: http://goddamn.co.uk/viewvc/perlmods/XRD-Parser/
-version: 0.102
-use strict;
-use warnings;
-
-use inc::Module::Install;
-
-my $dist = 'XRD-Parser';
-my $fn   = "lib/$dist.pm"; $fn =~ s#-#/#g;
-
-name                $dist;
-perl_version_from   $fn;
-version_from        $fn;
-abstract_from       $fn;
-readme_from         $fn;
-author              'Toby Inkster <tobyink@cpan.org>';
-license             'perl';
-
-test_requires       'Test::More' => '0.61';
-
-requires            'LWP::UserAgent' => 0;
-requires            'XML::LibXML'    => 0;
-requires            'RDF::Trine'     => 0;
-requires            'Scalar::Util'   => 0;
-requires            'URI::Escape'    => 0;
-requires            'URI'            => 0;
-requires            'HTTP::Link::Parser' => '0.03';
-
-resources(
-	'homepage'   => "https://metacpan.org/release/$dist",
-	'repository' => "http://goddamn.co.uk/svn-web/perlmods/browse/$dist/",
-	'bugtracker' => "http://rt.cpan.org/Dist/Display.html?Queue=$dist",
-	);
-	
-write_doap_changes;
-write_doap_changes_xml;
-auto_license;
-auto_manifest;
-
-auto_install;
-WriteAll(
-	'meta' => 1,
-	'sign' => 1,
-	);
+use inc::Module::Package 'RDF:standard';

README

-NAME
-    XRD::Parser - parse XRD and host-meta files into RDF::Trine models
-
-SYNOPSIS
-      use RDF::Query;
-      use XRD::Parser;
-  
-      my $parser = XRD::Parser->new(undef, "http://example.com/foo.xrd");
-      my $results = RDF::Query->new(
-        "SELECT * WHERE {?who <http://spec.example.net/auth/1.0> ?auth.}")
-        ->execute($parser->graph);
-        
-      while (my $result = $results->next)
-      {
-        print $result->{'auth'}->uri . "\n";
-      }
-
-    or maybe:
-
-      my $data = XRD::Parser->hostmeta('gmail.com')
-                              ->graph
-                                ->as_hashref;
-
-DESCRIPTION
-    While XRD has a rather different history, it turns out it can mostly be
-    thought of as a serialisation format for a limited subset of RDF.
-
-    This package ignores the order of <Link> elements, as RDF is a graph
-    format with no concept of statements coming in an "order". The XRD spec
-    says that grokking the order of <Link> elements is only a SHOULD. That
-    said, if you're concerned about the order of <Link> elements, the
-    callback routines allowed by this package may be of use.
-
-    This package aims to be roughly compatible with RDF::RDFa::Parser's
-    interface.
-
-  Constructors
-    "$p = XRD::Parser->new($content, $uri, [\%options], [$store])"
-        This method creates a new XRD::Parser object and returns it.
-
-        The $content variable may contain an XML string, or a
-        XML::LibXML::Document. If a string, the document is parsed using
-        XML::LibXML::Parser, which may throw an exception. XRD::Parser does
-        not catch the exception.
-
-        $uri the base URI of the content; it is used to resolve any relative
-        URIs found in the XRD document.
-
-        Options [default in brackets]:
-
-        *       default_subject - If no <Subject> element. [undef]
-
-        *       link_prop - How to handle <Property> in <Link>? 0=skip,
-                1=reify, 2=subproperty, 3=both. [0]
-
-        *       loose_mime - Accept text/plain, text/html and
-                application/octet-stream media types. [0]
-
-        *       tdb_service - Use thing-described-by.org when possible. [0]
-
-        $storage is an RDF::Trine::Storage object. If undef, then a new
-        temporary store is created.
-
-    "$p = XRD::Parser->new_from_url($url, [\%options], [$storage])"
-        $url is a URL to fetch and parse.
-
-        This function can also be called as "new_from_uri". Same thing.
-
-    "$p = XRD::Parser->hostmeta($uri)"
-        This method creates a new XRD::Parser object and returns it.
-
-        The parameter may be a URI (from which the hostname will be
-        extracted) or just a bare host name (e.g. "example.com"). The
-        resource "/.well-known/host-meta" will then be fetched from that
-        host using an appropriate HTTP Accept header, and the parser object
-        returned.
-
-  Public Methods
-    "$p->uri($uri)"
-        Returns the base URI of the document being parsed. This will usually
-        be the same as the base URI provided to the constructor.
-
-        Optionally it may be passed a parameter - an absolute or relative
-        URI - in which case it returns the same URI which it was passed as a
-        parameter, but as an absolute URI, resolved relative to the
-        document's base URI.
-
-        This seems like two unrelated functions, but if you consider the
-        consequence of passing a relative URI consisting of a zero-length
-        string, it in fact makes sense.
-
-    "$p->dom"
-        Returns the parsed XML::LibXML::Document.
-
-    "$p->graph"
-        This method will return an RDF::Trine::Model object with all
-        statements of the full graph.
-
-        This method will automatically call "consume" first, if it has not
-        already been called.
-
-    $p->set_callbacks(\%callbacks)
-        Set callback functions for the parser to call on certain events.
-        These are only necessary if you want to do something especially
-        unusual.
-
-          $p->set_callbacks({
-            'pretriple_resource' => sub { ... } ,
-            'pretriple_literal'  => sub { ... } ,
-            'ontriple'           => undef ,
-            });
-
-        Either of the two pretriple callbacks can be set to the string
-        'print' instead of a coderef. This enables built-in callbacks for
-        printing Turtle to STDOUT.
-
-        For details of the callback functions, see the section CALLBACKS.
-        "set_callbacks" must be used *before* "consume". "set_callbacks"
-        itself returns a reference to the parser object itself.
-
-        *NOTE:* the behaviour of this function was changed in version 0.05.
-
-    "$p->consume"
-        This method processes the input DOM and sends the resulting triples
-        to the callback functions (if any).
-
-        It called again, does nothing.
-
-        Returns the parser object itself.
-
-  Utility Functions
-    "$host_uri = XRD::Parser::host_uri($uri)"
-        Returns a URI representing the host. These crop up often in graphs
-        gleaned from host-meta files.
-
-        $uri can be an absolute URI like 'http://example.net/foo#bar' or a
-        host name like 'example.com'.
-
-    "$uri = XRD::Parser::template_uri($relationship_uri)"
-        Returns a URI representing not a normal relationship, but the
-        relationship between a host and a template URI literal.
-
-    "$hostmeta_uri = XRD::Parser::hostmeta_location($host)"
-        The parameter may be a URI (from which the hostname will be
-        extracted) or just a bare host name (e.g. "example.com"). The
-        location for a host-meta file relevant to the host of that URI will
-        be calculated.
-
-        If called in list context, returns an 'https' URI and an 'http' URI
-        as a list.
-
-CALLBACKS
-    Several callback functions are provided. These may be set using the
-    "set_callbacks" function, which taskes a hashref of keys pointing to
-    coderefs. The keys are named for the event to fire the callback on.
-
-  pretriple_resource
-    This is called when a triple has been found, but before preparing the
-    triple for adding to the model. It is only called for triples with a
-    non-literal object value.
-
-    The parameters passed to the callback function are:
-
-    *   A reference to the "XRD::Parser" object
-
-    *   A reference to the "XML::LibXML::Element" being parsed
-
-    *   Subject URI or bnode (string)
-
-    *   Predicate URI (string)
-
-    *   Object URI or bnode (string)
-
-    The callback should return 1 to tell the parser to skip this triple (not
-    add it to the graph); return 0 otherwise.
-
-  pretriple_literal
-    This is the equivalent of pretriple_resource, but is only called for
-    triples with a literal object value.
-
-    The parameters passed to the callback function are:
-
-    *   A reference to the "XRD::Parser" object
-
-    *   A reference to the "XML::LibXML::Element" being parsed
-
-    *   Subject URI or bnode (string)
-
-    *   Predicate URI (string)
-
-    *   Object literal (string)
-
-    *   Datatype URI (string or undef)
-
-    *   Language (string or undef)
-
-    The callback should return 1 to tell the parser to skip this triple (not
-    add it to the graph); return 0 otherwise.
-
-  ontriple
-    This is called once a triple is ready to be added to the graph. (After
-    the pretriple callbacks.) The parameters passed to the callback function
-    are:
-
-    *   A reference to the "XRD::Parser" object
-
-    *   A reference to the "XML::LibXML::Element" being parsed
-
-    *   An RDF::Trine::Statement object.
-
-    The callback should return 1 to tell the parser to skip this triple (not
-    add it to the graph); return 0 otherwise. The callback may modify the
-    RDF::Trine::Statement object.
-
-SEE ALSO
-    RDF::Trine, RDF::Query, RDF::RDFa::Parser.
-
-    <http://www.perlrdf.org/>.
-
-AUTHOR
-    Toby Inkster, <tobyink@cpan.org>
-
-COPYRIGHT AND LICENSE
-    Copyright (C) 2009-2010 by Toby Inkster
-
-    This library is free software; you can redistribute it and/or modify it
-    under the same terms as Perl itself, either Perl version 5.8 or, at your
-    option, any later version of Perl 5 you may have available.
-

TODO

-TODO:
-* Add some more items to this list.
-* Add keywords to Makefile.PL

example.pl

-use lib "lib";
-use XRD::Parser;
-use RDF::Trine::Serializer::NTriples;
-
-my $xrd = <<XRD;
-<foo xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0" 
-  xmlns:h="http://host-meta.net/ns/1.0">
-<XRD>
-  <Expires>1970-01-01T00:00:00Z</Expires>
-  <h:Host>example.com</h:Host>
-  <h:Host>www.example.com</h:Host>
-  <Link rel="profile" template="http://services.example.com/profile?uri={uri}">
-    <Property type="http://property.example.net/1">Foo</Property>
-    <Property type="http://property.example.net/2">Bar</Property>
-  </Link>
-  <Property type="http://property.example.net/3">Baz</Property>
-  <Link rel="another" href="/target" type="text/plain">
-    <Title>Another</Title>
-    <Property type="http://property.example.net/4">Quux</Property>
-  </Link>
-</XRD>
-<XRD>
-  <Subject>http://example.net/</Subject>
-  <Expires>1970-02-01T00:00:00Z</Expires>
-</XRD>
-</foo>
-XRD
-
-my $parser = XRD::Parser->new($xrd, "http://example.org/");
-$parser->consume;
-
-my $ser = RDF::Trine::Serializer::NTriples->new;
-print $ser->serialize_model_to_string($parser->graph);

example2.pl

-use lib "lib";
-use XRD::Parser;
-
-my $parser = XRD::Parser->hostmeta('gmail.com');
-$parser->consume;
-my $data = $parser->graph->as_stream;
-while (my $st = $data->next)
-{
-	print $st->as_string . "\n";
-}

examples/basic.pl

+use XRD::Parser;
+use RDF::Trine::Serializer::NTriples;
+
+my $xrd = <<XRD;
+<foo xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0" 
+  xmlns:h="http://host-meta.net/ns/1.0">
+<XRD>
+  <Expires>1970-01-01T00:00:00Z</Expires>
+  <h:Host>example.com</h:Host>
+  <h:Host>www.example.com</h:Host>
+  <Link rel="profile" template="http://services.example.com/profile?uri={uri}">
+    <Property type="http://property.example.net/1">Foo</Property>
+    <Property type="http://property.example.net/2">Bar</Property>
+  </Link>
+  <Property type="http://property.example.net/3">Baz</Property>
+  <Link rel="another" href="/target" type="text/plain">
+    <Title>Another</Title>
+    <Property type="http://property.example.net/4">Quux</Property>
+  </Link>
+</XRD>
+<XRD>
+  <Subject>http://example.net/</Subject>
+  <Expires>1970-02-01T00:00:00Z</Expires>
+</XRD>
+</foo>
+XRD
+
+my $parser = XRD::Parser->new($xrd, "http://example.org/");
+$parser->consume;
+
+my $ser = RDF::Trine::Serializer::NTriples->new;
+print $ser->serialize_model_to_string($parser->graph);

examples/hostmeta.pl

+use XRD::Parser;
+
+my $parser = XRD::Parser->hostmeta('gmail.com');
+$parser->consume;
+my $data = $parser->graph->as_stream;
+while (my $st = $data->next)
+{
+	print $st->as_string . "\n";
+}

lib/XRD/Parser.pm

-=head1 NAME
-
-XRD::Parser - parse XRD and host-meta files into RDF::Trine models
-
-=head1 SYNOPSIS
-
-  use RDF::Query;
-  use XRD::Parser;
-  
-  my $parser = XRD::Parser->new(undef, "http://example.com/foo.xrd");
-  my $results = RDF::Query->new(
-    "SELECT * WHERE {?who <http://spec.example.net/auth/1.0> ?auth.}")
-    ->execute($parser->graph);
-	
-  while (my $result = $results->next)
-  {
-    print $result->{'auth'}->uri . "\n";
-  }
-
-or maybe:
-
-  my $data = XRD::Parser->hostmeta('gmail.com')
-                          ->graph
-                            ->as_hashref;
-
-=cut
-
 package XRD::Parser;
 
-use 5.008;
+use 5.010;
 use strict;
 
-use Carp;
-use Digest::SHA1 qw(sha1_hex);
-use Encode qw(encode_utf8);
-use HTTP::Link::Parser;
-use LWP::UserAgent;
-use RDF::Trine;
-use Scalar::Util qw(blessed);
-use URI::Escape;
-use URI::URL;
-use XML::LibXML qw(:all);
+use Carp 0;
+use Digest::SHA1 0 qw(sha1_hex);
+use Encode 0 qw(encode_utf8);
+use HTTP::Link::Parser 0.102;
+use LWP::UserAgent 0;
+use RDF::Trine 0.135;
+use Scalar::Util 0 qw(blessed);
+use UNIVERSAL::AUTHORITY 0;
+use URI::Escape 0;
+use URI::URL 0;
+use XML::LibXML 1.70 qw(:all);
 
 use constant NS_HOSTMETA => 'http://host-meta.net/ns/1.0';
 use constant NS_HOSTMETX => 'http://host-meta.net/xrd/1.0';
 use constant URI_XSD     => 'http://www.w3.org/2001/XMLSchema#';
 use constant SCHEME_TMPL => 'x-xrd+template+for:';
 
-our $VERSION = '0.102';
-
-=head1 DESCRIPTION
-
-While XRD has a rather different history, it turns out it can mostly
-be thought of as a serialisation format for a limited subset of
-RDF.
-
-This package ignores the order of <Link> elements, as RDF is a graph
-format with no concept of statements coming in an "order". The XRD spec
-says that grokking the order of <Link> elements is only a SHOULD. That
-said, if you're concerned about the order of <Link> elements, the
-callback routines allowed by this package may be of use.
-
-This package aims to be roughly compatible with RDF::RDFa::Parser's
-interface.
-
-=head2 Constructors
-
-=over 4
-
-=item C<< $p = XRD::Parser->new($content, $uri, [\%options], [$store]) >>
-
-This method creates a new XRD::Parser object and returns it.
-
-The $content variable may contain an XML string, or a XML::LibXML::Document.
-If a string, the document is parsed using XML::LibXML::Parser, which may throw an
-exception. XRD::Parser does not catch the exception.
-
-$uri the base URI of the content; it is used to resolve any relative URIs found
-in the XRD document. 
-
-Options [default in brackets]:
-
-=over 8
-
-=item * B<default_subject> - If no <Subject> element. [undef]
-
-=item * B<link_prop> - How to handle <Property> in <Link>?
-0=skip, 1=reify, 2=subproperty, 3=both. [0] 
-
-=item * B<loose_mime> - Accept text/plain, text/html and
-application/octet-stream media types. [0]
-
-=item * B<tdb_service> - Use thing-described-by.org when possible. [0]
-
-=back
-
-$storage is an RDF::Trine::Storage object. If undef, then a new
-temporary store is created.
-
-=cut
+BEGIN {
+	$XRD::Parser::AUTHORITY  = 'cpan:TOBYINK';
+	$XRD::Parser::VERSION    = '0.102';
+}
 
 sub new
 {
 	return $self;
 }
 
-=item C<< $p = XRD::Parser->new_from_url($url, [\%options], [$storage]) >>
-
-$url is a URL to fetch and parse.
-
-This function can also be called as C<new_from_uri>. Same thing.
-
-=cut
-
 sub new_from_url
 {
 	my ($class, $url, $options, $store)= @_;
 		{ $options = {}; }
 
 	my $ua = LWP::UserAgent->new;
-	$ua->agent(sprintf('%s/%s ', __PACKAGE__, $VERSION));
+	$ua->agent(sprintf('%s/%s (%s) ', __PACKAGE__, __PACKAGE__->VERSION, __PACKAGE__->AUTHORITY));
 	$ua->default_header("Accept" => "application/xrd+xml, application/xml;q=0.1, text/xml;q=0.1");
 	my $response;
-	my $timeout = $options->{timeout} || 60;
+	my $timeout = $options->{timeout} // 60;
 	eval {
 		local $SIG{ALRM} = sub { die "Request timed out\n"; };
 		alarm $timeout;
 
 *new_from_uri = \&new_from_url;
 
-=item C<< $p = XRD::Parser->hostmeta($uri) >>
-
-This method creates a new XRD::Parser object and returns it.
-
-The parameter may be a URI (from which the hostname will be extracted) or
-just a bare host name (e.g. "example.com"). The resource
-"/.well-known/host-meta" will then be fetched from that host using an
-appropriate HTTP Accept header, and the parser object returned.
-
-=cut
-
 sub hostmeta
 {
 	my $class = shift;
 	return;
 }
 
-=back
-
-=head2 Public Methods
-
-=over 4
-
-=item C<< $p->uri($uri) >>
-
-Returns the base URI of the document being parsed. This will usually be the
-same as the base URI provided to the constructor.
-
-Optionally it may be passed a parameter - an absolute or relative URI - in
-which case it returns the same URI which it was passed as a parameter, but
-as an absolute URI, resolved relative to the document's base URI.
-
-This seems like two unrelated functions, but if you consider the consequence
-of passing a relative URI consisting of a zero-length string, it in fact makes
-sense.
-
-=cut
-
 sub uri
 {
 	my $this  = shift;
-	my $param = shift || '';
-	my $opts  = shift || {};
+	my $param = shift // '';
+	my $opts  = shift // {};
 	
 	if ((ref $opts) =~ /^XML::LibXML/)
 	{
 	my $base = $this->{baseuri};
 	if ($this->{'options'}->{'xml_base'})
 	{
-		$base = $opts->{'xml_base'} || $this->{baseuri};
+		$base = $opts->{'xml_base'} // $this->{baseuri};
 	}
 	
 	my $url = url $param, $base;
 	return $rv;
 }
 
-=item C<< $p->dom >>
-
-Returns the parsed XML::LibXML::Document.
-
-=cut
-
 sub dom
 {
 	my $this = shift;
 	return $this->{DOM};
 }
 
-=item C<< $p->graph >>
-
-This method will return an RDF::Trine::Model object with all
-statements of the full graph.
-
-This method will automatically call C<consume> first, if it has not
-already been called.
-
-=cut
-
 sub graph
 {
 	my $this = shift;
 	return { $this->{'baseuri'} => $this->{RESULTS} };
 }
 
-=item $p->set_callbacks(\%callbacks)
-
-Set callback functions for the parser to call on certain events. These are only necessary if
-you want to do something especially unusual.
-
-  $p->set_callbacks({
-    'pretriple_resource' => sub { ... } ,
-    'pretriple_literal'  => sub { ... } ,
-    'ontriple'           => undef ,
-    });
-
-Either of the two pretriple callbacks can be set to the string 'print' instead of a coderef.
-This enables built-in callbacks for printing Turtle to STDOUT.
-
-For details of the callback functions, see the section CALLBACKS. C<set_callbacks> must
-be used I<before> C<consume>. C<set_callbacks> itself returns a reference to the parser
-object itself.
-
-I<NOTE:> the behaviour of this function was changed in version 0.05.
-
-=cut
-
 sub set_callbacks
 # Set callback functions for handling RDF triples.
 {
 	return undef;
 }
 
-=item C<< $p->consume >>
-
-This method processes the input DOM and sends the resulting triples to 
-the callback functions (if any).
-
-It called again, does nothing.
-
-Returns the parser object itself.
-
-=cut
-
 sub consume
 {
 	my $this = shift;
 {
 	my $this  = shift;
 	my $xrd   = shift;
-	my $first = shift || 0;
-	my $only  = shift || 0;
+	my $first = shift // 0;
+	my $only  = shift // 0;
 	
 	my $description_uri;
 	if ($xrd->hasAttributeNS(NS_XML, 'id'))
 		$element->getAttributeNS(NS_XML, 'id'))
 		if ($this->{options}->{tdb_service} && $element && length $element->getAttributeNS(NS_XML, 'id'));
 
-	return sprintf('_:RDFaAutoNode%03d', $this->{bnodes}++);
+	$this->{bnode_prefix} //= do {
+		my $uuid = Data::UUID->new->create_str;
+		$uuid =~ s/[^A-Za-z0-9]//g;
+		$uuid;
+		};
+	
+	return sprintf('_:x%sx%03d', $this->{bnode_prefix}, $this->{bnodes}++);
 }
 
 sub valid_lang
 	return $r;
 }
 
-=back
-
-=head2 Utility Functions
-
-=over 4
-
-=item C<< $host_uri = XRD::Parser::host_uri($uri) >>
-
-Returns a URI representing the host. These crop up often in graphs gleaned
-from host-meta files.
-
-$uri can be an absolute URI like 'http://example.net/foo#bar' or a host
-name like 'example.com'.
-
-=cut
-
 sub host_uri
 {
 	my $uri = shift;
 	return undef;
 }
 
-=item C<< $uri = XRD::Parser::template_uri($relationship_uri) >>
-
-Returns a URI representing not a normal relationship, but the
-relationship between a host and a template URI literal.
-
-=cut
-
 sub template_uri
 {
 	my $uri = shift;
 }
 
 
-=item C<< $hostmeta_uri = XRD::Parser::hostmeta_location($host) >>
-
-The parameter may be a URI (from which the hostname will be extracted) or
-just a bare host name (e.g. "example.com"). The location for a host-meta file
-relevant to the host of that URI will be calculated.
-
-If called in list context, returns an 'https' URI and an 'http' URI as a list.
-
-=cut
-
 sub hostmeta_location
 {
 	my $host  = shift;
 
 __END__
 
+=head1 NAME
+
+XRD::Parser - parse XRD and host-meta files into RDF::Trine models
+
+=head1 SYNOPSIS
+
+  use RDF::Query;
+  use XRD::Parser;
+  
+  my $parser = XRD::Parser->new(undef, "http://example.com/foo.xrd");
+  my $results = RDF::Query->new(
+    "SELECT * WHERE {?who <http://spec.example.net/auth/1.0> ?auth.}")
+    ->execute($parser->graph);
+	
+  while (my $result = $results->next)
+  {
+    print $result->{'auth'}->uri . "\n";
+  }
+
+or maybe:
+
+  my $data = XRD::Parser->hostmeta('gmail.com')
+                          ->graph
+                            ->as_hashref;
+
+=head1 DESCRIPTION
+
+While XRD has a rather different history, it turns out it can mostly
+be thought of as a serialisation format for a limited subset of
+RDF.
+
+This package ignores the order of <Link> elements, as RDF is a graph
+format with no concept of statements coming in an "order". The XRD spec
+says that grokking the order of <Link> elements is only a SHOULD. That
+said, if you're concerned about the order of <Link> elements, the
+callback routines allowed by this package may be of use.
+
+This package aims to be roughly compatible with RDF::RDFa::Parser's
+interface.
+
+=head2 Constructors
+
+=over 4
+
+=item C<< $p = XRD::Parser->new($content, $uri, [\%options], [$store]) >>
+
+This method creates a new XRD::Parser object and returns it.
+
+The $content variable may contain an XML string, or a XML::LibXML::Document.
+If a string, the document is parsed using XML::LibXML::Parser, which may throw an
+exception. XRD::Parser does not catch the exception.
+
+$uri the base URI of the content; it is used to resolve any relative URIs found
+in the XRD document. 
+
+Options [default in brackets]:
+
+=over 8
+
+=item * B<default_subject> - If no <Subject> element. [undef]
+
+=item * B<link_prop> - How to handle <Property> in <Link>?
+0=skip, 1=reify, 2=subproperty, 3=both. [0] 
+
+=item * B<loose_mime> - Accept text/plain, text/html and
+application/octet-stream media types. [0]
+
+=item * B<tdb_service> - Use thing-described-by.org when possible. [0]
+
+=back
+
+$storage is an RDF::Trine::Storage object. If undef, then a new
+temporary store is created.
+
+=item C<< $p = XRD::Parser->new_from_url($url, [\%options], [$storage]) >>
+
+$url is a URL to fetch and parse.
+
+This function can also be called as C<new_from_uri>. Same thing.
+
+=item C<< $p = XRD::Parser->hostmeta($uri) >>
+
+This method creates a new XRD::Parser object and returns it.
+
+The parameter may be a URI (from which the hostname will be extracted) or
+just a bare host name (e.g. "example.com"). The resource
+"/.well-known/host-meta" will then be fetched from that host using an
+appropriate HTTP Accept header, and the parser object returned.
+
+=back
+
+=head2 Public Methods
+
+=over 4
+
+=item C<< $p->uri($uri) >>
+
+Returns the base URI of the document being parsed. This will usually be the
+same as the base URI provided to the constructor.
+
+Optionally it may be passed a parameter - an absolute or relative URI - in
+which case it returns the same URI which it was passed as a parameter, but
+as an absolute URI, resolved relative to the document's base URI.
+
+This seems like two unrelated functions, but if you consider the consequence
+of passing a relative URI consisting of a zero-length string, it in fact makes
+sense.
+
+=item C<< $p->dom >>
+
+Returns the parsed XML::LibXML::Document.
+
+=item C<< $p->graph >>
+
+This method will return an RDF::Trine::Model object with all
+statements of the full graph.
+
+This method will automatically call C<consume> first, if it has not
+already been called.
+
+=item $p->set_callbacks(\%callbacks)
+
+Set callback functions for the parser to call on certain events. These are only necessary if
+you want to do something especially unusual.
+
+  $p->set_callbacks({
+    'pretriple_resource' => sub { ... } ,
+    'pretriple_literal'  => sub { ... } ,
+    'ontriple'           => undef ,
+    });
+
+Either of the two pretriple callbacks can be set to the string 'print' instead of a coderef.
+This enables built-in callbacks for printing Turtle to STDOUT.
+
+For details of the callback functions, see the section CALLBACKS. C<set_callbacks> must
+be used I<before> C<consume>. C<set_callbacks> itself returns a reference to the parser
+object itself.
+
+I<NOTE:> the behaviour of this function was changed in version 0.05.
+
+=item C<< $p->consume >>
+
+This method processes the input DOM and sends the resulting triples to 
+the callback functions (if any).
+
+It called again, does nothing.
+
+Returns the parser object itself.
+
+=back
+
+=head2 Utility Functions
+
+=over 4
+
+=item C<< $host_uri = XRD::Parser::host_uri($uri) >>
+
+Returns a URI representing the host. These crop up often in graphs gleaned
+from host-meta files.
+
+$uri can be an absolute URI like 'http://example.net/foo#bar' or a host
+name like 'example.com'.
+
+=item C<< $uri = XRD::Parser::template_uri($relationship_uri) >>
+
+Returns a URI representing not a normal relationship, but the
+relationship between a host and a template URI literal.
+
+=item C<< $hostmeta_uri = XRD::Parser::hostmeta_location($host) >>
+
+The parameter may be a URI (from which the hostname will be extracted) or
+just a bare host name (e.g. "example.com"). The location for a host-meta file
+relevant to the host of that URI will be calculated.
+
+If called in list context, returns an 'https' URI and an 'http' URI as a list.
+
 =back
 
 =head1 CALLBACKS
 the graph); return 0 otherwise. The callback may modify the RDF::Trine::Statement
 object.
 
+=head1 WHY RDF?
+
+It abstracts away the structure of the XRD file, exposing just the meaning
+of its contents. Two XRD files with the same meaning should end up producing
+more or less the same RDF data, even if they differ significantly at the
+syntactic level.
+
+If you care about the syntax of an XRD file, then use L<XML::LibXML>.
+
 =head1 SEE ALSO
 
 L<RDF::Trine>, L<RDF::Query>, L<RDF::RDFa::Parser>.
 
 Toby Inkster, E<lt>tobyink@cpan.orgE<gt>
 
-=head1 COPYRIGHT AND LICENSE
+=head1 COPYRIGHT AND LICENCE
 
-Copyright (C) 2009-2010 by Toby Inkster
+Copyright (C) 2009-2011 by Toby Inkster
 
 This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself, either Perl version 5.8 or,
-at your option, any later version of Perl 5 you may have available.
+it under the same terms as Perl itself.
 
+=head1 DISCLAIMER OF WARRANTIES
+
+THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
 =cut
+@prefix :        <http://usefulinc.com/ns/doap#> .
+@prefix dcs:     <http://ontologi.es/doap-changeset#> .
+@prefix dc:      <http://purl.org/dc/terms/> .
+@prefix foaf:    <http://xmlns.com/foaf/0.1/> .
+@prefix my:      <http://purl.org/NET/cpan-uri/dist/XRD-Parser/> .
+@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix toby:    <http://tobyinkster.co.uk/#> .
+@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
+
+my:project :release my:v_0-01 .
+my:v_0-01
+	a               :Version ;
+	:revision       "0.01"^^xsd:string ;
+	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.01.tar.gz> ;
+	rdfs:label      "First release"@en .
+
+my:project :release my:v_0-02 .
+my:v_0-02
+	a               :Version ;
+	:revision       "0.02"^^xsd:string ;
+	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.02.tar.gz> ;
+	dcs:changeset [
+		dcs:versus my:v_0-01 ;
+		dcs:item
+			[ rdfs:label "Support for host-meta's <hm:Host/> element as a way to set subjects."@en ; a dcs:Addition ] ,
+			[ rdfs:label "Implement <Alias/> element as an owl:sameAs-like predicate rather than simply duplicating data."@en ] ,
+			[ rdfs:label "Support <Link template/> attribute via a special datatype and special predicate URI scheme."@en ; a dcs:Addition ] ,
+			[ rdfs:label "Support for IANA keywords in <Link rel/> attribute."@en ; a dcs:Addition ] ,
+			[ rdfs:label "Map XRD <Expires/> element to the RDF URI <http://ontologi.es/xrd#expires>."@en ]
+		] .
+
+my:project :release my:v_0-03 .
+my:v_0-03
+	a               :Version ;
+	:revision       "0.03"^^xsd:string ;
+	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.03.tar.gz> ;
+	dcs:changeset [
+		dcs:versus my:v_0-02 ;
+		dcs:item
+			[ rdfs:label "Provide an XRD::Parser->hostmeta($uri) shortcut constructor."@en ; a dcs:Addition ] ,
+			[ rdfs:label "Send proper HTTP Accept header when requesting XRD files."@en ] ,
+			[ rdfs:label "Prefer namespace-aware DOM functions."@en ]
+		] .
+		
+my:project :release my:v_0-04 .
+my:v_0-04
+	a               :Version ;
+	dc:issued       "2009-12-16"^^xsd:date ;
+	:revision       "0.04"^^xsd:string ;
+	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.04.tar.gz> ;
+	dcs:changeset [
+		dcs:versus my:v_0-03 ;
+		dcs:item 
+			[ rdfs:label "Support http://host-meta.net/xrd/1.0 and http://host-meta.net/ns/1.0 as alternatives."@en ] ,
+			[ rdfs:label "Don't reify <Link> elements multiple times for multiple <Property> children."@en ] ,
+			[ rdfs:label "Parse <Property> children of <Link template> elements."@en ] ;
+		rdfs:comment "And other minor bugfixes."@en 
+		] .
+		
+my:project :release my:v_0-05 .
+my:v_0-05
+	a               :Version ;
+	dc:issued       "2010-02-02"^^xsd:date ;
+	:revision       "0.05"^^xsd:string ;
+	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.05.tar.gz> ;
+	dcs:changeset [
+		dcs:versus my:v_0-04 ;
+		dcs:item
+			[ rdfs:label "Provide an alternative method of handling <Property> within <Link>: RDFS subproperties."@en ] ,
+			[ rdfs:label "Allow both methods of handling <Property> within <Link> to be toggled independently."@en ] ,
+			[ rdfs:label "host_uri and template_uri utility functions."@en ; a dcs:Addition ] ,
+			[ rdfs:label "Switch to my new build system."@en ; a dcs:Update ] ,
+			[ rdfs:label "Synchronise callback functionality with RDF::RDFa::Parser 0.30."@en ; a dcs:Update ] ,
+			[ rdfs:label "Copyright 2010."@en ; a dcs:Update ]
+		] .
+
+my:project :release my:v_0-06 .
+my:v_0-06
+	a               :Version ;
+	dc:issued       "2010-04-26"^^xsd:date ;
+	:revision       "0.06"^^xsd:string ;
+	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.06.tar.gz> ;
+	dcs:changeset [
+		dcs:versus my:v_0-05 ;
+		dcs:item
+			[ rdfs:label "Add reasonable timeouts for hostmeta constructor."@en ]
+		] .
+
+my:project :release my:v_0-100 .
+my:v_0-100
+	a               :Version ;
+	dc:issued       "2010-06-30"^^xsd:date ;
+	:revision       "0.100"^^xsd:string ;
+	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.100.tar.gz> ;
+	dcs:changeset [
+		dcs:versus my:v_0-06 ;
+		dcs:item
+			[ rdfs:label "Improvements to method for extracting host names from URIs."@en ] ,
+			[ rdfs:label "Tracked changes to host-meta spec."@en ; a dcs:Update ] 
+		] .
+
+my:project :release my:v_0-101 .
+my:v_0-101
+	a               :Version ;
+	dc:issued       "2010-07-07"^^xsd:date ;
+	:revision       "0.101"^^xsd:string ;
+	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.101.tar.gz> ;
+	dcs:changeset [
+		dcs:versus my:v_0-100 ;
+		dcs:item
+			[ rdfs:label "Split hostmeta_location function out from hostmeta construtor."@en ; rdfs:comment "The hostmeta_location function is useful in its own right to modules like HTTP::LRDD."@en ]
+		] .
+
+my:project :release my:v_0-102 .
+my:v_0-102
+	a               :Version ;
+	dc:issued       "2010-08-11"^^xsd:date ;
+	:revision       "0.102"^^xsd:string ;
+	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.102.tar.gz> ;
+	dcs:changeset [
+		dcs:versus my:v_0-101 ;
+		dcs:item
+			[ rdfs:label "new() constructor no longer accepts undef content - use new_from_url() instead."@en ; a dcs:Removal ] ,
+			[ rdfs:label "new_from_url() constructor."@en ; a dcs:Addition ] 
+		] .
+
+my:project :release my:v_0-103 .
+my:v_0-103
+	a               :Version ;
+	dc:issued       "2011-11-27"^^xsd:date ;
+	:revision       "0.103"^^xsd:string ;
+	:file-release   <http://backpan.cpan.org/authors/id/T/TO/TOBYINK/XRD-Parser-0.103.tar.gz> ;
+	dcs:changeset [
+		dcs:versus my:v_0-102 ;
+		dcs:item   [ rdfs:label "use 5.010"@en ; a dcs:Update ] ;
+		dcs:item   [ rdfs:label "Minor tidy"@en ] ;
+		dcs:item   [ rdfs:label "Module::Package::RDF"@en ; a dcs:Packaging ] ;
+		dcs:item   [ rdfs:label "Generate more randomised bnode identifiers." ; a dcs:Bugfix ]
+		] .
+
+@prefix :        <http://usefulinc.com/ns/doap#> .
+@prefix dcs:     <http://ontologi.es/doap-changeset#> .
+@prefix dc:      <http://purl.org/dc/terms/> .
+@prefix foaf:    <http://xmlns.com/foaf/0.1/> .
+@prefix my:      <http://purl.org/NET/cpan-uri/dist/XRD-Parser/> .
+@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix toby:    <http://tobyinkster.co.uk/#> .
+@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
+
+my:project
+	a               :Project ;
+	:name           "XRD-Parser" ;
+	:shortdesc      "parse XRD and host-meta files into RDF::Trine models"@en ;
+	:programming-language  "Perl" ;
+	:homepage       <https://metacpan.org/release/XRD-Parser> ;
+	:download-page  <https://metacpan.org/release/XRD-Parser> ;
+	:bug-database   <http://rt.cpan.org/Dist/Display.html?Queue=XRD-Parser> ;
+	:repository     [ a :HgRepository ; :browse <https://bitbucket.org/tobyink/p5-xrd-parser> ] ;
+	:maintainer     toby:i ;
+	:developer      toby:i ;
+	:documenter     toby:i ;
+	:tester         toby:i ;
+	:created        "2009-12-04"^^xsd:date ;
+	:license        <http://dev.perl.org/licenses/> .
+
+toby:i
+	a               foaf:Person ;
+	foaf:name       "Toby Inkster" ;
+	foaf:homepage   <http://tobyinkster.co.uk/> ;
+	foaf:page       <https://metacpan.org/author/TOBYINK> ;
+	foaf:mbox       <mailto:tobyink@cpan.org> ;
+	<http://www.w3.org/2002/07/owl#sameAs> <http://purl.org/NET/cpan-uri/person/tobyink> .

meta/makefile.ttl

+# This file provides instructions for packaging.
+
+@prefix : <http://purl.org/NET/cpan-uri/terms#> .
+
+<http://purl.org/NET/cpan-uri/dist/XRD-Parser/project>
+	:perl_version_from _:main ;
+	:version_from _:main ;
+	:readme_from _:main ;
+	:test_requires "Test::More 0.61" ;
+	:requires
+		"Carp 0",
+		"Data::UUID 0",
+		"Digest::SHA1 0",
+		"Encode 0",
+		"HTTP::Link::Parser 0.102",
+		"LWP::UserAgent 0",
+		"RDF::Trine 0.135",
+		"Scalar::Util 0",
+		"UNIVERSAL::AUTHORITY 0",
+		"URI::Escape 0",
+		"URI::URL",
+		"XML::LibXML 1.70".
+
+_:main <http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#fileName> "lib/XRD/Parser.pm" .
+
+use Test::More;
+eval "use Test::Pod 1.00";
+plan skip_all => "Test::Pod 1.00 required for testing POD" if $@;
+all_pod_files_ok();
+

xt/02pod_coverage.t

+use Test::More skip_all => 'Need better documentation';
+use Test::Pod::Coverage;
+
+my @modules = qw(XRD::Parser);
+pod_coverage_ok($_, "$_ is covered")
+	foreach @modules;
+done_testing(scalar @modules);
+

xt/03meta_uptodate.t

+use Test::More tests => 1;
+use Test::RDF::DOAP::Version;
+doap_version_ok('XRD-Parser', 'XRD::Parser');
+
+use Test::EOL;
+all_perl_files_ok();