#!/usr/bin/perl -w use HTML::Microformats; use RDF::TrineShortcuts; use File::Slurp; my $markup = read_file( $ARGV[0] ); my $base_uri = $ARGV[1]; # hint: locate common abbreviations at http://prefix.cc/ # my $NAMESPACES= { rdfs => 'http://www.w3.org/2000/01/rdf-schema#', dc => 'http://purl.org/dc/terms/', foaf => 'http://xmlns.com/foaf/0.1/', xhtml => 'http://www.w3.org/1999/xhtml/vocab#', vcard => 'http://www.w3.org/2006/vcard/ns#', vcardx => 'http://buzzword.org.uk/rdf/vcardx#', hcterms => 'http://purl.org/uF/hCard/terms/', ical => 'http://www.w3.org/2002/12/cal/icaltzd#', cv => 'http://purl.org/captsolo/resume-rdf/0.2/cv#', hresume => 'http://ontologi.es/hresume#', }; my $doc = HTML::Microformats ->new_document($markup, $base_uri) # ->assume_profile(qw(hResume hCard hCalendar)) ->assume_all_profiles ; $doc->parse_microformats; #print $doc->serialise_model(as => 'RDFXML'); my $model = $doc->model; my $output = rdf_string($model,'RDFXML', namespaces => { %$NAMESPACES }, ); # TODO: somehow make RDF::Trine generate stable IDs $output =~ s/(?<=rdf:nodeID="B)[a-f0-9]{32}(?=0[0-9]{3}")//g; print $output;