NAME
   MooseX::Semantic - Adding RDF semantics to the Moose framework

DESCRIPTION
   MooseX::Semantic is a set of modules that adds a semantic layer to
   Moose-powered objects. Moose classes that consume the various roles
   MooseX::Semantic offers are interoperable with the RDF::Trine RDF
   framework.

DOCUMENTATION OVERVIEW
   MooseX::Semantic can be used on multiple levels of integration into RDF.

 Basic semantics
   For basic semantic additions, the following roles are necessary:

   MooseX::Semantic::Meta::Attribute::Trait
       Add URIs, datatype and language to your attributes, turning them
       into RDF properties.

   MooseX::Semantic::Role::WithRdfType
       Adds a class attribute `rdf_type' representing the RDF is-a
       relationship.

   MooseX::Semantic::Role::Resource
       Adds an 'rdf_about' attribute to Moose objects turning them into RDF
       resources.

 From Moose to RDF and back
   The following classes make round-tripping to/from RDF/Moose possible:

   MooseX::Semantic::Role::RdfExport
       Role for exporting a Moose object to RDF, including serialization
       and exporting to SPARQL/U endpoints.

   MooseX::Semantic::Role::RdfImport
       Creating instances of MooseX::Semantic-flavored Moose classes from
       RDF data.

   MooseX::Semantic::Role::RdfImportAll
       Bulk import of multiple RDF resources.

 Persistence
   These modules make MooseX::Semantic-enabled classes storable in a
   RDF::Trine::Store and handle statement obsolescence.

   MooseX::Semantic::Role::RdfBackend
       Assignment a RDF::Trine::Store object to a class, so objects of the
       class can be stored and re-imported from that store.

   MooseX::Semantic::Role::RdfObsolescence
       Role that keeps track of changes within an object's set of
       statements and helps keeping the statements accurate.

 Schema introspection
   MooseX::Semantic::Util::SchemaExport
       Extract the schema/ontology that a MooseX::Semantic class
       represents.

   MooseX::Semantic::Util::SchemaImport
       Dynamically adding MooseX::Semantic::Meta::Attribute::Trait-enabled
       attributes to existing classes or creating MooseX::Semantic classes
       directly from a schema such as FOAF.

 Utility Modules
   MooseX::Semantic::Types
       Defines subtypes and coercions for various RDF-related data
       structures

   MooseX::Semantic::Util::TypeConstraintWalker
       Convenient way to loop through the attributes of a Moose class with
       regards to their RDF semantics.

TODO BUGS
   Documentation is lacking, the tests would be a good starting point right
   now.

   Context isn't properly handled right now.

   Performance hasn't been considered yet.

   Schema introspection without at least RDFS reasoning can only get you so
   far.

   Recursive import is buggy.

AUTHOR
   Konstantin Baierer (<[email protected]>)
   Toby Inkster (<[email protected]>)

SEE ALSO
   RDF::Trine

LICENSE
   This module is free software; you can redistribute it and/or modify it
   under the same terms as Perl itself. See perldoc perlartistic.

   This program is distributed in the hope that it will be useful, but
   WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.