# $Id: Constants.pm,v 1.23 2001/02/26 10:02:12 aigan Exp $ -*-perl-*- package RDF::Service::Constants; #===================================================================== # # DESCRIPTION # Export the constants used in Resource objects # # AUTHOR # Jonas Liljegren # # COPYRIGHT # Copyright (C) 2000-2001 Jonas Liljegren. All Rights Reserved. # # This module is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. # #===================================================================== use strict; use base 'Exporter'; use vars qw( @EXPORT_OK %EXPORT_TAGS ); # The constant list should be orderd by frequency, in order to shorten # the average array lenght. # Resouce use constant IDS => 1; #Interface Domain Signature use constant URISTR => 2; use constant ID => 3; use constant TYPE => 4; #hash of type_id => { model_id => 1 } use constant TYPE_ALL => 5; #1 = yes, 2=yes ands solid use constant REV_TYPE => 6; #hash of res_id => { model_id => 1 } use constant REV_TYPE_ALL => 7; #rev type solid use constant JUMPTABLE => 8; #{function=>[[coderef,interface]]} use constant DYNTABLE => 9; #{function=>[[coderef,interface]]} use constant NS => 10; #node use constant NAME => 11; #string use constant PRIVATE => 13; #hash of interface_id => {%data} use constant MODEL => 14; #$model_node use constant ALIASFOR => 15; #node use constant REV_PRED => 16; #array of $arc_node use constant REV_PRED_ALL => 17; # use constant REV_SUBJ => 18; #(props) hash of prop_id=>[$arc_node] use constant REV_SUBJ_ALL => 19; #rev subj solid use constant REV_OBJ => 20; #(rev_props) use constant REV_OBJ_ALL => 21; # rev obj solid use constant JTK => 22; #Jumptable key (just for debugging) use constant MULTI => 24; # Multipple models for the implicit arcs use constant SOLID => 25; # Is it retrievable from a interface? use constant LOCAL => 26; # 1 = does not exist in interfaces use constant RUNLEVEL => 27; # 0 = startup # Resource li use constant MEMBER => 31; # Resource Statement use constant PRED => 36; #node use constant SUBJ => 37; #node use constant OBJ => 38; #node # Resource Literal use constant VALUE => 41; #ref to string use constant LANG => 42; #node # Resource Model / container ## REV_MODEL implicit arc belongs to base_model use constant REV_MODEL => 46; # hash of res_id => node use constant SELECTION => 47; # Digest content use constant CONTENT => 48; # Expanded content use constant CONTENT_ALL => 49; # content solid use constant READONLY => 50; # TODO: To be used? # Resource Interface use constant PREFIX => 51; use constant MODULE_NAME => 52; use constant MODULE_REG => 53; #hash of prefix => {typeURI => JUMPTABLE} # Resource Service use constant INTERFACES => 56; # node use constant ABBREV => 57; # abbrevations for predicates # Namespaces use constant NS_RDF => "http://www.w3.org/1999/02/22-rdf-syntax-ns#"; use constant NS_RDFS => "http://www.w3.org/2000/01/rdf-schema#"; use constant NS_LS => "http://uxn.nu/rdf/2000/09/19/local-schema"; use constant NS_LD => "http://uxn.nu/rdf/2000/09/19/local-data"; use constant NS_XML => "xml:"; # TODO: Fix me! # Context use constant CONTEXT => 1; use constant NODE => 2; use constant WMODEL => 3; # The working model (Context) use constant MEMORY => 4; # Same as PRIVATE use constant HISTORY => 5; # call history. Hash of "@_"=>1 use constant SESSION => 6; # Ref to service node my @RESOURCE = qw( IDS URISTR ID TYPE TYPE_ALL REV_TYPE REV_TYPE_ALL JUMPTABLE DYNTABLE NS NAME PRIVATE ALIASFOR MODEL REV_SUBJ REV_SUBJ_ALL REV_PRED REV_PRED_ALL REV_OBJ REV_OBJ_ALL JTK MULTI SOLID LOCAL RUNLEVEL ); my @INTERFACE = qw( PREFIX MODULE_NAME MODULE_REG ); my @LITERAL = qw( VALUE LANG ); my @CONTAINER = qw( REV_MODEL SELECTION CONTENT CONTENT_ALL READONLY ); my @STATEMENT = qw( SUBJ PRED OBJ ); my @LI = qw( MEMBER ); my @RDF = qw( INTERFACES ABBREV ); my @NAMESPACE = qw( NS_RDF NS_RDFS NS_LS NS_LD ); my @CONTEXT = qw( CONTEXT NODE WMODEL MEMORY HISTORY SESSION ); my @DEPENDS = qw( DPROPS DREVPROPS ); my @ALL = (@INTERFACE, @RESOURCE, @LITERAL, @CONTAINER, @STATEMENT, @LI, @RDF, @NAMESPACE, @CONTEXT, '$Schema' ); @EXPORT_OK = ( @ALL ); %EXPORT_TAGS = ( 'all' => [@ALL], 'resource' => [@RESOURCE], 'interface' => [@RESOURCE,@INTERFACE], 'literal' => [@RESOURCE,@LITERAL], 'container' => [@RESOURCE,@CONTAINER], 'statement' => [@RESOURCE,@STATEMENT], 'li' => [@RESOURCE,@LI], 'rdf' => [@RESOURCE, @RDF, @CONTAINER], 'namespace' => [@NAMESPACE], 'context' => [@CONTEXT], ); ##### DATA # Type ref is used by type_orderd_list8) in Context. # # NS_RDF.'type' => \(NS_RDFS.'Class'), our $Schema = { NS_LS.'#name' => { NS_LS.'#name' => 'name', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_RDFS.'Resource'), NS_RDFS.'range' => \(NS_RDFS.'Literal'), }, NS_LS.'#level' => { NS_LS.'#name' => 'level', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_RDFS.'Class'), NS_RDFS.'range' => \(NS_RDFS.'Literal'), }, NS_LS.'#size' => { NS_LS.'#name' => 'size', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_RDFS.'Container'), NS_RDFS.'range' => \(NS_RDFS.'Literal'), }, NS_LS.'#updated' => { NS_LS.'#name' => 'updated', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_LS.'Model'), NS_RDFS.'range' => \(NS_RDFS.'Literal'), }, NS_LS.'#agent' => { NS_LS.'#name' => 'agent', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_LS.'Model'), NS_RDFS.'range' => \(NS_RDFS.'Literal'), }, NS_LS.'#Interface' => { NS_LS.'#ns' => \(NS_LS), NS_LS.'#name' => 'Interface', NS_LS.'#level' => '1', NS_RDF.'type' => \(NS_RDFS.'Class'), }, NS_LS.'#interface' => { NS_LS.'#name' => 'interface', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_RDFS.'Resource'), NS_RDFS.'range' => \(NS_LS.'#Interface'), }, NS_LS.'#Selection' => { NS_LS.'#name' => 'Selection', NS_LS.'#level' => '2', NS_RDF.'type' => \(NS_RDFS.'Class'), NS_RDFS.'subClassOf' => \(NS_RDFS.'Container'), }, NS_LS.'#Model' => { NS_LS.'#name' => 'Model', NS_LS.'#level' => '2', NS_RDF.'type' => \(NS_RDFS.'Class'), NS_RDFS.'subClassOf' => \(NS_RDFS.'Container'), }, NS_LS.'#model' => { NS_LS.'#name' => 'model', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_RDFS.'Resource'), NS_RDFS.'range' => \(NS_LS.'#Model'), }, NS_LS.'#Service' => { NS_LS.'#name' => 'Service', NS_LS.'#level' => '2', NS_RDF.'type' => \(NS_RDFS.'Class'), NS_RDFS.'subClassOf' => \(NS_LS.'#Model'), }, NS_RDFS.'Resource' => { NS_LS.'#name' => 'Resource', NS_LS.'#level' => '0', NS_RDF.'type' => \ (NS_RDFS.'Class'), NS_RDFS.'label' => 'Resource', NS_RDFS.'comment' => 'The most general class', }, NS_RDF.'type' => { NS_LS.'#name' => 'type', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'range' => \(NS_RDFS.'Class'), }, NS_RDFS.'comment' => { NS_LS.'#name' => 'comment', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_RDFS.'Resource'), NS_RDFS.'range' => \(NS_RDFS.'Literal'), }, NS_RDFS.'label' => { NS_LS.'#name' => 'label', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_RDFS.'Resource'), NS_RDFS.'range' => \(NS_RDFS.'Literal'), }, NS_RDFS.'Class' => { NS_LS.'#name' => 'Class', NS_LS.'#level' => '1', NS_RDF.'type' => \(NS_RDFS.'Class'), NS_RDFS.'subClassOf' => \(NS_RDFS.'Resource'), }, NS_RDFS.'subClassOf' => { NS_LS.'#name' => 'subClassOf', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_RDFS.'Class'), NS_RDFS.'range' => \(NS_RDFS.'Class'), }, NS_RDFS.'subPropertyOf' => { NS_LS.'#name' => 'subPropertyOf', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_RDF.'Property'), NS_RDFS.'range' => \(NS_RDF.'Property'), }, NS_RDFS.'seeAlso' => { NS_LS.'#name' => 'seeAlso', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_RDFS.'Resource'), NS_RDFS.'range' => \(NS_RDFS.'Resource'), }, NS_RDFS.'isDefinedBy' => { NS_LS.'#name' => 'isDefinedBy', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_RDFS.'Resource'), NS_RDFS.'range' => \(NS_RDFS.'Resource'), }, NS_RDFS.'ConstraintResource' => { NS_LS.'#name' => 'ConstraintResource', NS_LS.'#level' => '1', NS_RDF.'type' => \(NS_RDFS.'Class'), }, NS_RDFS.'ConstraintProperty' => { NS_LS.'#name' => 'ConstraintProperty', NS_LS.'#level' => '2', NS_RDF.'type' => \(NS_RDFS.'Class'), NS_RDFS.'subClassOf' => [ \(NS_RDF.'Property'), \(NS_RDFS.'ConstraintResource'), ], }, NS_RDFS.'domain' => { NS_LS.'#name' => 'domain', NS_RDF.'type' => \(NS_RDFS.'ConstraintProperty'), NS_RDFS.'domain' => \(NS_RDF.'Property'), NS_RDFS.'range' => \(NS_RDFS.'Class'), }, NS_RDFS.'range' => { NS_LS.'#name' => 'range', NS_RDF.'type' => \(NS_RDFS.'ConstraintProperty'), NS_RDFS.'domain' => \(NS_RDF.'Property'), NS_RDFS.'range' => \(NS_RDFS.'Class'), }, NS_RDF.'Property' => { NS_LS.'#name' => 'Property', NS_LS.'#level' => '1', NS_RDF.'type' => \(NS_RDFS.'Class'), }, NS_RDFS.'Literal' => { NS_LS.'#name' => 'Literal', NS_LS.'#level' => '1', NS_RDF.'type' => \(NS_RDFS.'Class'), }, NS_RDF.'Statement' => { NS_LS.'#name' => 'Statement', NS_LS.'#level' => '1', NS_RDF.'type' => \(NS_RDFS.'Class'), }, NS_RDF.'subject' => { NS_LS.'#name' => 'subject', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_RDF.'Statement'), NS_RDFS.'range' => \(NS_RDFS.'Resource'), }, NS_RDF.'predicate' => { NS_LS.'#name' => 'predicate', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_RDF.'Statement'), NS_RDFS.'range' => \(NS_RDF.'Property'), }, NS_RDF.'object' => { NS_LS.'#name' => 'object', NS_RDF.'type' => \(NS_RDF.'Property'), NS_RDFS.'domain' => \(NS_RDF.'Statement'), }, NS_RDFS.'Container' => { NS_LS.'#name' => 'Container', NS_RDF.'type' => \(NS_RDFS.'Class'), NS_LS.'#level' => '1', }, NS_RDF.'Bag' => { NS_LS.'#name' => 'Bag', NS_LS.'#level' => '2', NS_RDF.'type' => \(NS_RDFS.'Class'), NS_RDFS.'subClassOf' => \(NS_RDFS.'Container'), }, NS_RDF.'Seq' => { NS_LS.'#name' => 'Seq', NS_LS.'#level' => '2', NS_RDF.'type' => \(NS_RDFS.'Class'), NS_RDFS.'subClassOf' => \(NS_RDFS.'Container'), }, NS_RDF.'Alt' => { NS_LS.'#name' => 'Alt', NS_LS.'#level' => '2', NS_RDF.'type' => \(NS_RDFS.'Class'), NS_RDFS.'subClassOf' => \(NS_RDFS.'Container'), }, NS_RDFS.'ContainerMembershipProperty' => { NS_LS.'#name' => 'ContainerMembershipProperty', NS_LS.'#level' => '2', NS_RDF.'type' => \(NS_RDFS.'Class'), NS_RDFS.'subClassOf' => \(NS_RDF.'Property'), }, NS_RDF.'value' => { NS_LS.'#name' => 'value', NS_RDF.'type' => \(NS_RDF.'Property'), }, }; 1;