package perfSONAR_PS::DataModels::Sonar_Model; =head1 NAME perfSONAR_PS::DataModels::Sonar_Model - perfSONAR schemas expressed in perl, used to build binding perl objects collection =head1 DESCRIPTION 'sonar' extension of the perfSONAR_PS RelaxNG Compact schema for the perfSONAR services metadata ( perfsonar NS) see: http://anonsvn.internet2.edu/svn/nmwg/trunk/nmwg/schema/rnc/sonar.rnc =head1 SYNOPSIS ### use perfSONAR_PS::DataModels::Sonar_Model qw($message); #### ### thats it, next step is to build API =head1 Exported Variables $message =cut use strict; use warnings; use version; our $VERSION = '2.0'; use Exporter (); use base 'Exporter'; our @EXPORT = qw(); our @EXPORT_OK = qw($message); use perfSONAR_PS::DataModels::Base_Model 2.0 qw($endPointPair $interfaceL3 $endPointL4 $service_parameter $service_subject $parameter $service_parameters $metadata $data $message $service_datum $event_datum $endPointPairL4); our ($service_element); $service_datum->($event_datum); $service_parameters->({ attrs => {id => 'scalar', xmlns => 'psservice'}, elements => [ [parameter => $service_parameter->()], ], }); $service_element = { attrs => {id => 'scalar', xmlns => 'psservice'}, elements => [ [ serviceName => 'text'], [ accessPoint => 'text'], [ serviceType => 'text'], [ serviceDescription => 'text'], ], }; $service_subject->({ attrs => { id => 'scalar', xmlns => 'psservice'}, elements => [ [service => $service_element], ], text => 'unless:service', }); foreach my $subj (qw/xpath sql xquery/) { $service_subject->({ attrs => {id => 'scalar', xmlns => $subj}, elements => [], text => 'scalar', }); $service_parameters->({ attrs => {id => 'scalar', xmlns => $subj }, elements => [ [parameter => [$parameter]], ], }); } $service_subject->({ attrs => {id => 'scalar', metadataIdRef => 'scalar',xmlns => 'perfsonar'}, elements => [ [interface => $interfaceL3], [endPointPair => [$endPointPair , $endPointPairL4], 'unless:interface'], [service => $service_element], ], }); 1;