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 (<kba@cpan.org>)
    Toby Inkster (<tobyink@cpan.org>)

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.

