#!/usr/bin/perl use strict; use warnings; use lib qw(/home/greg/data/prog/lib); use CGI (); use File::Spec; use RDF::Redland; use RDF::Redland::Query; use Kasei::RDF::Common qw(mysql_model parse_statement parse_node); use Kasei::RDF::Export qw(export_leafck); my $q = new CGI; my $model = mysql_model(); my $storage = new RDF::Redland::Storage("hashes", "test", "new='yes',hash-type='memory'"); my $tmodel = new RDF::Redland::Model($storage, ""); my $text = $q->param('node'); my $url = $q->param('url'); my $node = $text ? parse_node( $text ) : $url ? RDF::Redland::Node->new_from_uri( $url ) : undef; # my @ifppreds = $model->sources(map { RDF::Redland::Node->new_from_uri($_) } (q[http://www.w3.org/1999/02/22-rdf-syntax-ns#type], q[http://www.w3.org/2002/07/owl#InverseFunctionalProperty])); my $leaft; $leaft = sub { my $model = shift; my $cnode = shift; return 0 if ($node->equals($cnode)); return 1 if ($cnode->is_resource); return 0 if ($cnode->is_blank); # return [ # $leaft, sub { # my $pred = shift; # my $args = shift; # my $model = $args->{model}; # warn $pred->as_string; # foreach my $p (@ifppreds) { # return 1 if ($pred->equals( $p )); # } # return 0; # } # ] if ($node->is_blank); # return 1 if ($cnode->is_resource and $cnode->uri->as_string =~ m(^http://kasei.us/about/foaf.xrdf#)); # return 1 if ($cnode->is_resource and $cnode->uri->as_string =~ m(^http://www.daml.ri.cmu.edu)); # return 1 if ($cnode->is_resource and $cnode->uri->as_string =~ m(^http://purl.org/rss/1.0/)); return 0; }; my $predt; $predt = sub { my $pred = shift; my $args = shift; my $model = $args->{model}; return 0 if ($pred->uri->as_string =~ m<^http://kasei.us/ns/dao#>); return 1; }; # print $q->header( -type => 'application/rdf+xml', -charset => 'utf-8' ); if ($q->param('source')) { print $q->header( -type => 'text/plain', -charset => 'utf-8' ); } else { print $q->header( -type => 'text/xml', -charset => 'utf-8' ); } my @defaults = qw(rdf album p foaf wn geo cyc dc dcterms oexif usrs contact book likes visit exif); my %nspaces = map { $_ => $Kasei::RDF::Export::defaults{ $_ } } @defaults; print Kasei::RDF::Export::rdf_header(\@defaults); if ($node) { Kasei::RDF::Export::export_rdf_node( $model, $node, \%nspaces, 0, $leaft, $predt ); # Kasei::RDF::Export::export_rdf_node( $model, $node, 1, $leaft ); # foreach my $stmt (RDF::Redland::Statement->new( undef, undef, $node )) { # my (@stmts) = $model->find_statements( $stmt ); # foreach my $st (@stmts) { # Kasei::RDF::Export::export_rdf_statement( $model, $st, 1 ); # } # } } print "\n"; __END__