NAME
FAIR::Profile - the base class representing a FAIR Profile. Everything else is attached to this
VERSION
version 0.3
SYNOPSIS
use FAIR;
use FAIR::Profile::Parser;
use FAIR::Profile;
my $parser = FAIR::Profile::Parser->new(filename => "./ProfileSchema.rdf");
my $Profile = $parser->parse; # A DCAT::Profile from a file
my $Profile2 = FAIR::Profile->new(
label => 'UBC Thesis Submission Profile',
title => 'UBC Thesis Submission Profile'
description => 'the metadata that must be associated with thesis deposition',
modified => 'May 21, 2014',
license => 'CC',
issued => 'May 21, 2014,
organization => 'University of British Columbia',
identifier => 'doi:123.123.123',
URI => 'http://ubc.ca/library/thesis/metadataprofile.rdf'
)
my $ProfileClass = FAIR::Profile::Class->new(
class_type => FAIR."dataset", # DCAT is an exported constant
URI => "http://datafairport.org/examples/ProfileSchemas/DCATDatasetExample.rdf",
);
my $TitleProperty = FAIR::Profile::Property->new(
property_type => DCT.'title', # DCT is an exported constant
allow_multiple => "false",
);
$TitleProperty->set_RequirementStatus('required');
$TitleProperty->add_ValueRange(XSD."string");
$ProfileClass->add_Property($TitleProperty);
my $DescrProperty = FAIR::Profile::Property->new(
property_type => DCT.'description',
allow_multiple => "false",
);
$DescrProperty->set_RequirementStatus('required');
$DescrProperty->add_ValueRange(XSD."string"); # XSD is an exported constant
$ProfileClass->add_Property($DescrProperty);
$Profile2->add_Class($DCATDatasetClass);
my $profileRDF = $Profile2->serialize;
open(OUT, ">ProfileSchema.rdf") or die "$!\n";
print OUT $schema;
close OUT;
DESCRIPTION
DCAT Profiles describe the metadata elements, and constrained values, that should be associated with a given information entity. They ARE NOT containers for this metadata, they only describe what that metadata should look like (meta-meta-data :-) )
This module represents a DCAT Profile, and can be serialized into RDF. The objects it contains (classes and properties) will tell you what metadata fields are required/optional, and what possible values they are allowed to contain.
DCAT Profiles are not part of the official DCAT specification, but the idea was raised by the DCAT working group as something that might be useful... it certainly is!
NAME
FAIR::Profile - a module representing a FAIR Profile.
AUTHORS
Mark Wilkinson (markw at illuminae dot com)
METHODS
new
Title : new
Usage : my $ProfileParser = DCAT::Profile->new();
Function: Builds a new DCAT::Profile
Returns : DCAT::Profile
Args : label => $string
title => $string
description => $string
modified => $date
license => $string
issued => $date
organization => $string
identifier => $string
URI => $URI (optional - a unique URI will be auto-generated)
label
Title : label
Usage : $label = $Profile->label($label);
Function: get/set the RDF label for this object when serialized
Returns : string
Args : string
title
Title : title
Usage : $title = $Profile->title($title);
Function: get/set the title of this Profile
Returns : string
Args : string
description
Title : description
Usage : $desc = $Profile->description($desc);
Function: get/set the description of this Profile
Returns : string
Args : string
modified
Title : modified
Usage : $date = $Profile->modified($date);
Function: get/set the modified date of this Profile
Returns : string (one day this will be more rigorous!)
Args : string (one day this will be more rigorous!)
issued
Title : issued
Usage : $date = $Profile->issued($date);
Function: get/set the created/issued date of this Profile
Returns : string (one day this will be more rigorous!)
Args : string (one day this will be more rigorous!)
organization
Title : organization
Usage : $name = $Profile->organization($name);
Function: get/set the organization who created this Profile
Returns : string (should probably be a URI... one day)
Args : string (should probably be a URI... one day)
identifier
Title : identifier
Usage : $id = $Profile->identifier($id);
Function: get/set the unique identifier for this Profile
Returns : string (should be a URI or a DOI if available)
Args : string (should be a URI or a DOI if available)
URI
Title : URI
Usage : $uri = $Profile->URI($uri);
Function: get/set the URI for this Profile - the root URI in the RDF
Returns : string (should be a URI)
Args : string (should be a URI)
notes: if this is not supplied, a unique URI will be automatically generated
add_Class
Title : add_Class
Usage : $Profile->add_Class($Class);
Function: add a new DCAT::Profile::Class to the Profile
Returns : boolean (1 for success)
Args : DCAT::Profile::Class
has_class
Title : has_class
Usage : $Profile->has_class();
Function: retrieve all Classes for the profile
Returns : listref of DCAT::Profile::Class objects
Args : none
Note: the capitalization of the method name
matches the capitalization of the RDF predicate...
AUTHOR
Mark Denis Wilkinson (markw [at] illuminae [dot] com)
COPYRIGHT AND LICENSE
This software is Copyright (c) 2015 by Mark Denis Wilkinson.
This is free software, licensed under:
The Apache License, Version 2.0, January 2004