This is an automated email from the git hooks/post-receive script.

js pushed a commit to annotated tag debian/0.106-1
in repository librdf-rdfa-generator-perl.

commit 1f015c49fa2d5200e631f164dd67023914734090
Author: Toby Inkster <m...@tobyinkster.co.uk>
Date:   Wed May 5 21:32:51 2010 +0000

    Beginnings of RDFa output stuff. R:R:G::HTML::Hidden and R:R:G::HTML::Head 
already work as
    methods of embedding XHTML invisibly into the <body> or <head> elements 
respectively.
    
    --HG--
    branch : RDF-RDFa-Generator
    extra : convert_revision : 
svn%3A3fe8e991-6959-4966-b76d-b07eca2b6e37/RDF-RDFa-Generator%40329
---
 Changes.ttl                           |  61 +++++++++
 MANIFEST                              |  12 ++
 MANIFEST.SKIP                         |   8 ++
 Makefile.PL                           |  41 ++++++
 example1.pl                           |  28 +++++
 lib/RDF/RDFa/Generator.pm             |   0
 lib/RDF/RDFa/Generator/HTML/Head.pm   | 229 ++++++++++++++++++++++++++++++++++
 lib/RDF/RDFa/Generator/HTML/Hidden.pm |  90 +++++++++++++
 lib/RDF/RDFa/Generator/HTML/Pretty.pm |   0
 t/00sig.t                             |   4 +
 t/01basic.t                           |   3 +
 11 files changed, 476 insertions(+)

diff --git a/Changes.ttl b/Changes.ttl
new file mode 100644
index 0000000..5e7f205
--- /dev/null
+++ b/Changes.ttl
@@ -0,0 +1,61 @@
+#############################################################
+
+@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/Example-Example/> .
+@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 
Example::Example."@en ;
+       dc:subject       my:project ;
+       dc:creator       toby:i .
+
+#############################################################
+
+my:v_0-01
+
+       a               :Version ;
+       dc:issued       "2000-01-01"^^xsd:date ;
+       :revision       "0.01"^^xsd:string ;
+       :file-release   
<http://backpan.cpan.org/authors/id/T/TO/TOBYINK/Example-Example-0.01.tar.gz> ;
+       rdfs:comment    "Original version"@en .
+
+#############################################################
+
+my:project
+
+       a               :Project ;
+       :name           "Example-Example" ;
+       :shortdesc      "Example Project"@en ;
+       :programming-language  "Perl" ;
+       :homepage       <http://search.cpan.org/dist/Example-Example/> ;
+       :download-page  <http://search.cpan.org/dist/Example-Example/> ;
+       :bug-database   
<http://rt.cpan.org/Dist/Display.html?Queue=Example-Example> ;
+       :repository     [ a :SVNRepository ; :browse 
<http://goddamn.co.uk/viewvc/perlmods/Example-Example/> ] ;
+       :maintainer     toby:i ;
+       :developer      toby:i ;
+       :documenter     toby:i ;
+       :tester         toby:i ;
+       :created        "2000-01-01"^^xsd:date ;
+       :license        <http://dev.perl.org/licenses/> ;
+       :release        my:v_0-01 .
+
+#############################################################
+
+toby:i
+
+       a               foaf:Person ;
+       foaf:name       "Toby Inkster" ;
+       foaf:homepage   <http://tobyinkster.co.uk/> ;
+       foaf:page       <http://search.cpan.org/~tobyink/> ;
+       foaf:mbox       <mailto:toby...@cpan.org> .
+
+#############################################################
diff --git a/MANIFEST b/MANIFEST
new file mode 100644
index 0000000..2de9c8a
--- /dev/null
+++ b/MANIFEST
@@ -0,0 +1,12 @@
+Changes
+Changes.ttl
+Changes.xml
+Makefile.PL
+MANIFEST
+MANIFEST.SKIP
+README
+META.yml
+SIGNATURE
+
+t/00sig.t
+t/01basic.t
diff --git a/MANIFEST.SKIP b/MANIFEST.SKIP
new file mode 100644
index 0000000..1016855
--- /dev/null
+++ b/MANIFEST.SKIP
@@ -0,0 +1,8 @@
+^Makefile$
+^blib/
+^pm_to_blib
+^blibdirs
+\.svn
+^example.*\.pl$
+^[^/]+\.(tar\.gz|tar\.bz2|tgz|tbz2|tbz|zip|tar)$
+^MYMETA..yml
\ No newline at end of file
diff --git a/Makefile.PL b/Makefile.PL
new file mode 100644
index 0000000..7dba62f
--- /dev/null
+++ b/Makefile.PL
@@ -0,0 +1,41 @@
+use strict;
+use warnings;
+
+use inc::Module::Install;
+
+my $dist = 'Example-Example';
+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 <toby...@cpan.org>';
+license             'perl';
+
+test_requires       'Test::More' => '0.61';
+
+requires            'Carp'               => '1.00';
+requires            'DateTime'           => 0;
+requires            'RDF::Trine'         => '0.112';
+requires            'XML::LibXML'        => '1.60';
+requires            'URI'                => '1.30';
+
+# install_script 'fingerw';
+
+resources(
+       'homepage'   => "http://search.cpan.org/dist/$dist/";,
+       'repository' => "http://goddamn.co.uk/viewvc/perlmods/$dist/";,
+       'bugtracker' => "http://rt.cpan.org/Dist/Display.html?Queue=$dist";,
+       );
+       
+write_doap_changes;
+write_doap_changes_xml;
+
+include 'Test::Signature';
+auto_install;
+WriteAll(
+       'meta' => 1,
+       'sign' => 1,
+       );
diff --git a/example1.pl b/example1.pl
new file mode 100644
index 0000000..d1086fa
--- /dev/null
+++ b/example1.pl
@@ -0,0 +1,28 @@
+use lib "lib";
+
+use RDF::TrineShortcuts;
+use RDF::RDFa::Generator::HTML::Hidden;
+
+my $graph = rdf_parse(<<TURTLE, type=>'turtle');
+
+\@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+<http://example.net/>
+
+       a foaf:Document ;
+       <http://www.w3.org/1999/xhtml/vocab#next> <http://example.net/page2> ;
+       <http://www.w3.org/1999/xhtml/vocab#title> "About Joe"@en ;
+       foaf:primaryTopic [
+               a foaf:Person ;
+               foaf:name "Joe Bloggs" ;
+               foaf:plan "To conquer the world!"\@en
+       ] .
+
+TURTLE
+
+my $gen = RDF::RDFa::Generator::HTML::Hidden->new(base=>'http://example.net/');
+
+foreach my $n ($gen->nodes($graph))
+{
+       print $n->toString . "\n";
+}
\ No newline at end of file
diff --git a/lib/RDF/RDFa/Generator.pm b/lib/RDF/RDFa/Generator.pm
new file mode 100644
index 0000000..e69de29
diff --git a/lib/RDF/RDFa/Generator/HTML/Head.pm 
b/lib/RDF/RDFa/Generator/HTML/Head.pm
new file mode 100644
index 0000000..9ac29a3
--- /dev/null
+++ b/lib/RDF/RDFa/Generator/HTML/Head.pm
@@ -0,0 +1,229 @@
+package RDF::RDFa::Generator::HTML::Head;
+
+use 5.008;
+use common::sense;
+use XML::LibXML qw':all';
+
+sub new
+{
+       my ($class, %opts) = @_;
+       
+       while (<DATA>)
+       {
+               chomp;
+               my ($p, $u)  = split /\s+/;
+               $opts{ns}->{$u} ||= $p;
+       }
+       
+       bless \%opts, $class;
+}
+
+sub nodes
+{
+       my ($proto, $model) = @_;
+       my $self = (ref $proto) ? $proto : $proto->new;
+       
+       my $stream = $self->_get_stream($model);
+       my @nodes;
+       
+       while (my $st = $stream->next)
+       {
+               my $node = $st->object->is_literal ?
+                       XML::LibXML::Element->new('meta') :
+                       XML::LibXML::Element->new('link');
+               $node->setNamespace('http://www.w3.org/1999/xhtml', undef, 1);
+               
+               my $prefixes = {};
+               $self->_process_subject($st, $node, $prefixes)
+                    ->_process_predicate($st, $node, $prefixes)
+                    ->_process_object($st, $node, $prefixes);
+               
+               if ($self->{'version'} == 1.1
+               and $self->{'prefix_attr'})
+               {
+                       my $prefix_string = '';
+                       while (my ($u,$p) = each(%$prefixes))
+                       {
+                               $prefix_string .= sprintf("%s: %s ", $p, $u);
+                       }
+                       if (length $prefix_string)
+                       {
+                               $node->setAttribute('prefix', $prefix_string);
+                       }
+               }
+               else
+               {
+                       while (my ($u,$p) = each(%$prefixes))
+                       {
+                               $node->setNamespace($u, $p, 0);
+                       }
+               }
+               
+               push @nodes, $node;
+       }
+       
+       return @nodes if wantarray;
+       
+       my $nodelist = XML::LibXML::NodeList->new;
+       $nodelist->push(@nodes);
+       return $nodelist;
+}
+
+sub _get_stream
+{
+       my ($self, $model) = @_;
+       
+       my $data_context = undef;
+       if (defined $self->{'data_context'})
+       {
+               $data_context = ( $self->{'data_context'} =~ /^_:(.*)$/ ) ?
+                       RDF::Trine::Node::Blank->new($1) :
+                       
RDF::Trine::Node::Resource->new($self->{'data_context'});
+       }
+       
+       return $model->get_statements(undef, undef, undef, $data_context);
+}
+
+sub _process_subject
+{
+       my ($self, $st, $node, $prefixes) = @_;
+       
+       if (defined $self->{'base'} 
+       and $st->subject->is_resource
+       and $st->subject->uri eq $self->{'base'})
+       {
+               return $self;
+       }
+       
+       if ($st->subject->is_resource) 
+               { $node->setAttribute('about', $st->subject->uri); }
+       else
+               { $node->setAttribute('about', 
'_:'.$st->subject->blank_identifier); }
+       
+       return $self;
+}
+
+sub _process_predicate
+{
+       my ($self, $st, $node, $prefixes) = @_;
+
+       my $attr = $st->object->is_literal ? 'property' : 'rel';
+
+       if ($attr eq 'rel'
+       and $st->predicate->uri =~ m'^http://www\.w3\.org/1999/xhtml/vocab\#
+                                                                               
(alternate|appendix|bookmark|cite|
+                                                                               
chapter|contents|copyright|first|glossary|help|icon|
+                                                                               
index|last|license|meta|next|p3pv1|prev|role|section|
+                                                                               
stylesheet|subsection|start|top|up)$'x)
+       {
+               $node->setAttribute($attr, $1);
+               return $self;
+       }
+       elsif ($attr eq 'rel'
+       and $st->predicate->uri =~ 
m'^http://www\.w3\.org/1999/xhtml/vocab#(.*)$')
+       {
+               $node->setAttribute($attr, ':'.$1);
+               return $self;
+       }
+       elsif ($self->{'version'} == 1.1)
+       {
+               $node->setAttribute($attr, $st->predicate->uri);
+               return $self;
+       }
+       
+       my ($uri_prefix, $uri_suffix) = ($st->predicate->uri =~ 
m'^(.+?)([A-Za-z0-9_-]*)$');
+       if (length $uri_suffix and !length $uri_prefix)
+       {
+               ($uri_prefix, $uri_suffix) = ($uri_suffix, $uri_prefix);
+       }
+       
+       unless (defined $prefixes->{$uri_prefix})
+       {
+               $prefixes->{$uri_prefix} = $self->{ns}->{$uri_prefix} || 'ns' . 
(1 + scalar keys %$prefixes);
+       }
+       my $curie_prefix = $prefixes->{$uri_prefix};
+       
+       $node->setAttribute($attr, sprintf('%s:%s', $curie_prefix, 
$uri_suffix));
+       
+       return $self;
+}
+
+sub _process_object
+{
+       my ($self, $st, $node, $prefixes) = @_;
+       
+       if (defined $self->{'base'} 
+       and $st->subject->is_resource
+       and $st->subject->uri eq $self->{'base'}
+       and $st->object->is_resource)
+       {
+               $node->setAttribute('href', $st->object->uri);
+               return $self;
+       }
+       elsif (defined $self->{'base'} 
+       and $st->object->is_resource
+       and $st->object->uri eq $self->{'base'})
+       {
+               $node->setAttribute('resource', '');
+               return $self;
+       }
+       elsif ($st->object->is_resource)
+       {
+               $node->setAttribute('resource', $st->object->uri);
+               return $self;
+       }
+       elsif ($st->object->is_blank)
+       {
+               $node->setAttribute('resource', 
'_:'.$st->object->blank_identifier);
+               return $self;
+       }
+       
+       $node->setAttribute('content',  $st->object->literal_value);
+       
+       if (defined $st->object->literal_datatype)
+       {
+               my ($uri_prefix, $uri_suffix) = ($st->object->literal_datatype 
=~ m'^(.+?)([A-Za-z0-9_-]*)$');
+               if (length $uri_suffix and !length $uri_prefix)
+               {
+                       ($uri_prefix, $uri_suffix) = ($uri_suffix, $uri_prefix);
+               }
+               
+               unless (defined $prefixes->{$uri_prefix})
+               {
+                       $prefixes->{$uri_prefix} = $self->{ns}->{$uri_prefix} 
|| 'ns' . (1 + scalar keys %$prefixes);
+               }
+               my $curie_prefix = $prefixes->{$uri_prefix};
+               
+               $node->setAttribute('datatype', sprintf('%s:%s', $curie_prefix, 
$uri_suffix));
+       }
+       else
+       {
+               $node->setAttribute('xml:lang', 
''.$st->object->literal_value_language);
+       }
+       
+       return $self;
+}
+
+1;
+
+__DATA__
+cc      http://creativecommons.org/ns#
+ctag    http://commontag.org/ns#
+dc      http://purl.org/dc/terms/
+doap    http://usefulinc.com/ns/doap#
+foaf    http://xmlns.com/foaf/0.1/
+geo     http://www.w3.org/2003/01/geo/wgs84_pos#
+gr      http://purl.org/goodrelations/v1#
+owl     http://www.w3.org/2002/07/owl#
+rdf     http://www.w3.org/1999/02/22-rdf-syntax-ns#
+rdfa    http://www.w3.org/ns/rdfa#
+rdfs    http://www.w3.org/2000/01/rdf-schema#
+rel     http://purl.org/vocab/relationship/
+rev     http://purl.org/stuff/rev#
+rss     http://purl.org/rss/1.0/
+sioc    http://rdfs.org/sioc/ns#
+skos    http://www.w3.org/2004/02/skos/core#
+tag     http://www.holygoat.co.uk/owl/redwood/0.1/tags/
+xfn     http://vocab.sindice.com/xfn#
+xhv     http://www.w3.org/1999/xhtml/vocab#
+xsd     http://www.w3.org/2001/XMLSchema#
diff --git a/lib/RDF/RDFa/Generator/HTML/Hidden.pm 
b/lib/RDF/RDFa/Generator/HTML/Hidden.pm
new file mode 100644
index 0000000..c55543e
--- /dev/null
+++ b/lib/RDF/RDFa/Generator/HTML/Hidden.pm
@@ -0,0 +1,90 @@
+package RDF::RDFa::Generator::HTML::Hidden;
+
+use 5.008;
+use base qw'RDF::RDFa::Generator::HTML::Head';
+use common::sense;
+use XML::LibXML qw':all';
+
+sub nodes
+{
+       my ($proto, $model) = @_;
+       my $self = (ref $proto) ? $proto : $proto->new;
+       
+       my $stream = $self->_get_stream($model);
+       my @nodes;
+       
+       my $rootnode = XML::LibXML::Element->new('i');
+       $rootnode->setNamespace('http://www.w3.org/1999/xhtml', undef, 1);
+       $rootnode->setAttribute('style','display:none');
+       
+       my $prefixes = {};
+       my $subjects = {};
+       while (my $st = $stream->next)
+       {
+               my $s = $st->subject->is_resource ?
+                       $st->subject->uri :
+                       ('_:'.$st->subject->blank_identifier);
+               push @{ $subjects->{$s} }, $st;
+       }
+       
+       foreach my $s (keys %$subjects)
+       {
+               my $node = 
$rootnode->addNewChild('http://www.w3.org/1999/xhtml', 'i');
+               
+               $self->_process_subject($subjects->{$s}->[0], $node, $prefixes);
+               
+               foreach my $st (@{ $subjects->{$s} })
+               {
+                       my $node2 = 
$node->addNewChild('http://www.w3.org/1999/xhtml', 'i');
+                       $self->_process_predicate($st, $node2, $prefixes)
+                            ->_process_object($st, $node2, $prefixes);
+               }
+       }
+       
+       if ($self->{'version'} == 1.1
+       and $self->{'prefix_attr'})
+       {
+               my $prefix_string = '';
+               while (my ($u,$p) = each(%$prefixes))
+               {
+                       $prefix_string .= sprintf("%s: %s ", $p, $u);
+               }
+               if (length $prefix_string)
+               {
+                       $rootnode->setAttribute('prefix', $prefix_string);
+               }
+       }
+       else
+       {
+               while (my ($u,$p) = each(%$prefixes))
+               {
+                       $rootnode->setNamespace($u, $p, 0);
+               }
+       }
+       
+       push @nodes, $rootnode;
+       
+       return @nodes if wantarray;
+       
+       my $nodelist = XML::LibXML::NodeList->new;
+       $nodelist->push(@nodes);
+       return $nodelist;
+}
+
+sub _process_subject
+{
+       my ($self, $st, $node, $prefixes) = @_;
+       
+       if (defined $self->{'base'} 
+       and $st->subject->is_resource
+       and $st->subject->uri eq $self->{'base'})
+               { $node->setAttribute('src', ''); }
+       elsif ($st->subject->is_resource) 
+               { $node->setAttribute('src', $st->subject->uri); }
+       else
+               { $node->setAttribute('about', 
'_:'.$st->subject->blank_identifier); }
+       
+       return $self;
+}
+
+1;
diff --git a/lib/RDF/RDFa/Generator/HTML/Pretty.pm 
b/lib/RDF/RDFa/Generator/HTML/Pretty.pm
new file mode 100644
index 0000000..e69de29
diff --git a/t/00sig.t b/t/00sig.t
new file mode 100644
index 0000000..d899e4c
--- /dev/null
+++ b/t/00sig.t
@@ -0,0 +1,4 @@
+use lib 'inc';
+use Test::More tests => 1;
+use Test::Signature;
+signature_ok();
diff --git a/t/01basic.t b/t/01basic.t
new file mode 100644
index 0000000..efd5560
--- /dev/null
+++ b/t/01basic.t
@@ -0,0 +1,3 @@
+use Test::More tests => 1;
+BEGIN { use_ok('Example::Example') };
+

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-perl/packages/librdf-rdfa-generator-perl.git

_______________________________________________
Pkg-perl-cvs-commits mailing list
Pkg-perl-cvs-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits

Reply via email to