diff --git a/neologism.info b/neologism.info
index c81862b..38e4434 100644
--- a/neologism.info
+++ b/neologism.info
@@ -1,4 +1,11 @@
 name = Neologism
 description = "Allows users to create and publish RDF Schema vocabularies."
-core = 7.x
 package = RDF
+core = 7.x
+
+dependencies[] = references
+dependencies[] = rdfx
+
+files[] = neologism.info 
+files[] = neologism.install
+files[] = neologism.module
\ No newline at end of file
diff --git a/neologism.install b/neologism.install
new file mode 100644
index 0000000..11af1a8
--- /dev/null
+++ b/neologism.install
@@ -0,0 +1,1255 @@
+<?php
+
+/************************************************************************************************************
+ * @file
+ * Install file for Neologism module. Registers three bundles : Vocabulary, Class and Property
+ *************************************************************************************************************/
+
+
+// url('<front>', array('absolute' => TRUE))
+
+
+/**************************************************************************************************************
+ * Implements hook_install().
+ *
+ * reference for taking 'base' => 'node_content' : http://drupal.org/node/224333
+ *************************************************************************************************************/ 
+
+function neologism_install() {
+
+  // use get_t() to get the name of our localization function for translation
+  // during install, when t() is not available.
+
+
+  $t = get_t();
+
+  // Define the bundles.
+  $neologism_entities = array(
+    array(
+      'type' => 'property',
+      'name' => $t('Property'),
+      'base' => 'node_content',
+      'description' => $t('Create predicates for your Vocabulary.'),
+      'help' => 'Create predicates for your Vocabulary.',
+      'custom' => 0, 
+      'modified' => 1,        
+      'locked' => 0,
+      'has_title' => 1,
+      'title_label' => 'Property URI',
+      ),
+    array(
+      'type' => 'class',
+      'name' => $t('Class'),
+      'base' => 'node_content',
+      'description' => $t('Create Classes for your Vocabulary.'),
+      'help' => 'Create Classes for your Vocabulary.',
+      'custom' => 0, 
+      'modified' => 1,        
+      'locked' => 0,
+      'has_title' => 1,
+      'title_label' => 'Class URI',
+      ),
+    array(
+      'type' => 'vocabulary',
+      'name' => $t('Vocabulary'),
+      'base' => 'node_content',
+      'description' => $t('Create an RDF Vocabulary.'),
+      'help' => 'Create an RDF Vocabulary.',
+      'custom' => 0, 
+      'modified' => 1,        
+      'locked' => 0,
+      'has_title' => 1,
+      'title_label' => 'Vocabulary ID',
+      ),        
+    array(
+      'type' => 'project',
+      'name' => $t('Project'),
+      'base' => 'node_content',
+      'description' => $t('Create an RDF Project consisting of multiple vocabularies and a main vocabulary.'),
+      'help' => 'Create an RDF Project consisting of multiple vocabularies and a main vocabulary.',
+      'custom' => 0, 
+      'modified' => 1,        
+      'locked' => 0,
+      'has_title' => 1,
+      'title_label' => 'Project Name',
+      ),
+  );
+
+
+  foreach ($neologism_entities as $node){
+    // Complete the node type definition by setting any defaults not explicitly
+    // declared above.
+    // http://api.drupal.org/api/function/node_type_set_defaults/7
+    $content_type = node_type_set_defaults($node);
+    
+    //  node_add_body_field($content_type, $label = 'Details'); // Create a custom field instead
+  
+    // Save the content type
+    node_type_save($content_type);
+  }
+
+
+  // Create all the fields we are adding to our content type.
+  // http://api.drupal.org/api/function/field_create_field/7
+  foreach (_neologism_installed_fields() as $field) {
+    //field_delete_field($field); // for installation errors during development
+    field_create_field($field);
+  }
+
+  // Create all the instances for our fields.
+  // http://api.drupal.org/api/function/field_create_instance/7
+  foreach (_neologism_installed_instances() as $instance) {
+    field_create_instance($instance);
+  }
+  
+
+  // Set Additional Details for content types
+  
+   variable_set('node_options_vocabulary', array('status')); // promote to front page disabled by default
+   variable_set('node_options_class', array('status')); // promote to front page disabled by default
+   variable_set('node_options_property', array('status')); // promote to front page disabled by default
+   variable_set('node_options_project', array('status')); // promote to front page disabled by default
+
+   variable_set('comment_vocabulary', '1'); // (0 - comments default open) (1 - comments default closed) (2 - hidden) 
+   variable_set('comment_class', '1'); // (0 - comments default open) (1 - comments default closed) (2 - hidden)
+   variable_set('comment_property', '1'); // (0 - comments default open) (1 - comments default closed) (2 - hidden)
+   variable_set('comment_project', '1'); // (0 - comments default open) (1 - comments default closed) (2 - hidden)
+
+   variable_set('node_preview_vocabulary', 1); // preview before submitting optional
+   variable_set('node_preview_class', 1); // preview before submitting optional
+   variable_set('node_preview_property', 1); // preview before submitting optional
+   variable_set('node_preview_project', 1); // preview before submitting optional
+
+}
+
+
+
+  
+ /**************************************************************************************************************
+ * Implements hook_enable().
+ * Need this since it is called after hook_install()
+ *************************************************************************************************************/ 
+
+function neologism_enable(){
+// content removed
+  
+}
+
+
+
+
+/**************************************************************************************************************
+ * Return a structured array defining the fields created by this content type.
+ *
+ * This is packaged in a function so it can be used in both
+ * neologism_install() and neologism_uninstall().
+ *************************************************************************************************************/
+ 
+function _neologism_installed_fields() {
+  $t = get_t();
+  return array(  
+    'property_related_vocabulary' => array(
+       'field_name' => 'property_related_vocabulary',
+       'type' => 'node_reference',
+       'settings' => array(
+           'referenceable_types' => array('vocabulary',),
+       ),
+       'cardinality' => 1,
+       'default_formatter' => 'node_reference_default',
+    ),
+    'property_label' => array(
+      'field_name' => 'property_label',
+      'cardinality' => 1,
+      'type'        => 'text',
+      'settings'    => array(
+        'max_length' => 60,
+      ),
+    ),
+    'property_comment' => array(
+      'field_name'  => 'property_comment',
+      'cardinality' => 1,
+      'type'        => 'text_long',
+    ),
+    'property_details' => array(
+      'field_name' => 'property_details',
+      'type'       => 'text_with_summary',
+      'cardinality' => 1,
+    ),
+    'property_functional_property' => array(
+      'field_name' => 'property_functional_property',
+      'type' => 'list_boolean',
+      'settings' => array(
+        'allowed_values' => array(0 => 0, 1 => 'Functional Property'),
+        'allowed_values_function' => '',
+      ),
+      'cardinality' => 1,
+    ), 
+    'property_inv_func' => array(
+      'field_name' => 'property_inv_func',
+      'type' => 'list_boolean',
+      'settings' => array(
+        'allowed_values' => array(0 => 0, 1 => 'Inverse Functional Property'),
+        'allowed_values_function' => '',
+      ),   
+      'cardinality' => 1,
+    ),
+    'property_domain' => array(
+       'field_name' => 'property_domain',
+       'type' => 'node_reference',
+       'settings' => array(
+           'referenceable_types' => array('class',),
+       ),
+       'cardinality' => FIELD_CARDINALITY_UNLIMITED,
+       'default_formatter' => 'node_reference_default',
+    ),
+    'property_range' => array(
+       'field_name' => 'property_range',
+       'type' => 'node_reference',
+       'settings' => array(
+           'referenceable_types' => array('class',),
+       ),
+       'cardinality' => FIELD_CARDINALITY_UNLIMITED,
+       'default_formatter' => 'node_reference_default',
+    ),
+    'property_superproperty' => array(
+       'field_name' => 'property_superproperty',
+       'type' => 'node_reference',
+       'settings' => array(
+           'referenceable_types' => array('property',),
+       ),
+       'cardinality' => FIELD_CARDINALITY_UNLIMITED,
+       'default_formatter' => 'node_reference_default',
+    ),
+    'property_inverse' => array(
+       'field_name' => 'property_inverse',
+       'type' => 'node_reference',
+       'settings' => array(
+           'referenceable_types' => array('property',),
+       ),
+       'cardinality' => FIELD_CARDINALITY_UNLIMITED,
+       'default_formatter' => 'node_reference_default',
+    ),
+
+
+    'class_related_vocabulary' => array(
+       'field_name' => 'class_related_vocabulary',
+       'type' => 'node_reference',
+       'settings' => array(
+           'referenceable_types' => array('vocabulary',),
+       ),
+       'cardinality' => 1,
+       'default_formatter' => 'node_reference_default',
+    ),  
+    'class_label' => array(
+      'field_name' => 'class_label',
+      'cardinality' => 1,
+      'type'        => 'text',
+      'settings'    => array(
+        'max_length' => 60,
+      ),
+    ),
+    'class_comment' => array(
+      'field_name'  => 'class_comment',
+      'cardinality' => 1,
+      'type'        => 'text_long',
+    ),
+    'class_details' => array(
+      'field_name' => 'class_details',
+      'type'       => 'text_with_summary',
+      'cardinality' => 1,
+    ),
+    'class_superclass' => array(
+       'field_name' => 'class_superclass',
+       'type' => 'node_reference',
+       'settings' => array(
+           'referenceable_types' => array('class',),
+       ),
+       'cardinality' => FIELD_CARDINALITY_UNLIMITED,
+       'default_formatter' => 'node_reference_default',
+    ),
+    'class_disjoint_with' => array(
+       'field_name' => 'class_disjoint_with',
+       'type' => 'node_reference',
+       'settings' => array(
+           'referenceable_types' => array('class',),
+       ),
+       'cardinality' => FIELD_CARDINALITY_UNLIMITED,
+       'default_formatter' => 'node_reference_default',
+    ),
+    
+
+    
+    'vocabulary_project' => array(
+       'field_name' => 'vocabulary_project',
+       'type' => 'node_reference',
+       'settings' => array(
+           'referenceable_types' => array('project',),
+       ),
+       'cardinality' => 1,
+       'default_formatter' => 'node_reference_default',
+    ),
+    'vocabulary_namespace_uri' => array(
+      'field_name' => 'vocabulary_namespace_uri',
+      'cardinality' => 1,
+      'type'        => 'list_text',
+      'settings'    => array(
+        'allowed_values' => array('0' => t('Default') . ': ' . url('<front>', array('absolute' => TRUE)) . '<span id="neologism-default-ns"><em>' . t('vocabulary-id') . '</em></span>#', '1'=> "Custom"),
+        'allowed_values_function' => '',
+      ),
+    ),
+    'vocabulary_title' => array(
+      'field_name'  => 'vocabulary_title',
+      'cardinality' => 1,
+      'type'        => 'text',
+      'settings'    => array(
+        'max_length' => 60,
+      ),
+    ),
+    'vocabulary_abstract' => array(
+      'field_name' => 'vocabulary_abstract',
+      'cardinality' => 1,
+      'type'        => 'text_long',
+    ),
+    'vocabulary_body' => array(
+      'field_name' => 'vocabulary_body',
+      'type'       => 'text_with_summary',
+      'cardinality' => 1,
+    ),
+    'vocabulary_additional_rdf' => array(
+      'field_name' => 'vocabulary_additional_rdf',
+      'type'       => 'text_long',
+      'cardinality' => 1,
+    ),
+
+
+    'project_main_vocabulary' => array(
+       'field_name' => 'project_main_vocabulary',
+       'type' => 'node_reference',
+       'settings' => array(
+           'referenceable_types' => array('vocabulary',),
+       ),
+       'cardinality' => 1,
+       'default_formatter' => 'node_reference_default',
+    ),
+    'project_authors' => array(
+      'field_name' => 'project_authors',
+      'type'        => 'user_reference',
+      'settings' => array(
+        'referenceable_roles' => array('2'=>'2','3'=>'3'),
+        'referenceable_status' => array('1'=>'1','0'=>'0'),
+      ),
+      'default_widget' => 'user_reference_autocomplete', 
+      'default_formatter' => 'user_reference_default',
+      'cardinality' => FIELD_CARDINALITY_UNLIMITED,      
+    ),
+    'project_layout' => array(
+      'field_name' => 'project_layout',
+      'type'       => 'text_long',
+      'cardinality' => 1,
+    ),
+
+
+  
+  );
+}
+
+
+
+/**************************************************************************************************************
+ * Return a structured array defining the instances for this content type.
+ *
+ * The instance lets Drupal know which widget to use to allow the user to enter
+ * data and how to react in different view modes.
+ *
+ * This is provided as a function so that it can be used in both hook_install()
+ * and hook_uninstall().
+ *************************************************************************************************************/
+function _neologism_installed_instances() {
+  $t = get_t();
+  return array(
+  
+    'property_related_vocabulary' => array(
+      'field_name'  => 'property_related_vocabulary',
+      'label'       => $t('Related Vocabulary'),
+      'bundle' => 'property',
+      'entity_type' => 'node',
+      'required'    => TRUE,
+      'description' => 'The vocabulary to which this property is related.',
+      'widget' => array(
+        'weight' => -6, 
+        'type'    => 'node_reference_autocomplete', // options_select , node_reference_select
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'inline',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'hidden',
+           'type' => 'hidden',
+         ),
+      ),
+    ),
+    'property_label' => array(
+      'field_name' => 'property_label',
+      'label'       => $t('Label'),
+      'bundle' => 'property',
+      'entity_type' => 'node',
+      'required'    => TRUE,
+      'description' => 'A human-readable name for the property.',
+      'widget'      => array(
+        'type'    => 'text_textfield',
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'inline',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'inline',
+           'type' => 'default',
+         ),
+      ),
+    ),
+    'property_comment' => array(
+      'field_name'  => 'property_comment',
+      'label' => $t('Comment'),
+      'bundle' => 'property',
+      'entity_type' => 'node',
+      'description' => 'A plain text description of the property.',
+      'required'    => FALSE,
+      'widget'      => array(
+        'type'    => 'text_textarea',
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label' => 'above',
+           'type' => 'default',
+         ),
+      ),
+    ),
+    'property_details' => array(
+      'field_name'  => 'property_details',
+      'label'       => $t('Details'),
+      'bundle' => 'property',
+      'entity_type' => 'node',
+      'description' => 'Will only show in HTML views.<br /><br /><br />',
+      'required'    => FALSE,
+      'widget' => array(
+        'type'    => 'text_textarea_with_summary',
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'hidden',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'hidden',
+           'type' => 'trimmed',
+         ),
+      ),
+    ),
+    'property_functional_property' => array(
+      'field_name'  => 'property_functional_property',
+      'label'       => $t('Functional Property ? '),
+      'bundle' => 'property',
+      'entity_type' => 'node',
+      'description' => 'Check this box, if your property is an FP, i.e. when you use this property in a statement, then the subject of the statement uniquely determines its object.',
+      'widget' => array(
+        'type' => 'options_onoff',
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'inline',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'hidden',
+           'type' => 'hidden',
+         ),
+      ),
+    ),
+    'property_inv_func' => array(
+      'field_name'  => 'property_inv_func',
+      'label'       => $t('Inverse Functional Property ?'),
+      'bundle' => 'property',
+      'entity_type' => 'node',
+      'description' => 'Check this box, if your property is an IFP, i.e. the object of a statment that uses your property uniquely determines its subject.',
+      'widget' => array(
+        'type'    => 'options_onoff',
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'inline',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'hidden',
+           'type' => 'hidden',
+         ),
+      ),
+    ),
+    'property_domain' => array(
+      'field_name'  => 'property_domain',
+      'label'       => $t(' Domain'),
+      'bundle' => 'property',
+      'entity_type' => 'node',
+      'description' => 'If having this property makes something belong to a certain class, then the class should be selected here.',
+      'widget' => array(
+        'type'    => 'node_reference_autocomplete', // options_select , node_reference_select
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'hidden',
+           'type' => 'hidden',
+         ),
+      ),
+    ),
+    'property_range' => array(
+      'field_name'  => 'property_range',
+      'label'       => $t(' Range'),
+      'bundle' => 'property',
+      'entity_type' => 'node',
+      'description' => 'If all possible values of this property are members of a certain class, then the class should be selected here.',
+      'widget' => array(
+        'type'    => 'node_reference_autocomplete', // options_select , node_reference_select
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'hidden',
+           'type' => 'hidden',
+         ),
+      ),
+    ),
+    'property_superproperty' => array(
+      'field_name'  => 'property_superproperty',
+      'label'       => $t(' Superproperty'),
+      'bundle' => 'property',
+      'entity_type' => 'node',
+      'description' => '',
+      'widget' => array(
+        'type'    => 'node_reference_autocomplete', // options_select , node_reference_select
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'hidden',
+           'type' => 'hidden',
+         ),
+      ),
+    ),
+    'property_inverse' => array(
+      'field_name'  => 'property_inverse',
+      'label'       => $t(' Inverse'),
+      'bundle' => 'property',
+      'entity_type' => 'node',
+      'description' => '',
+      'widget' => array(
+        'type'    => 'node_reference_autocomplete', // options_select , node_reference_select
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'hidden',
+           'type' => 'hidden',
+         ),
+      ),
+    ),
+    
+
+    'class_related_vocabulary' => array(
+      'field_name'  => 'class_related_vocabulary',
+      'label'       => $t('Related Vocabulary'),
+      'bundle' => 'class',
+      'entity_type' => 'node',
+      'required'    => TRUE,
+      'description' => 'The vocabulary to which this class is related.',
+      'widget' => array(
+        'weight' => -6,       
+        'type'    => 'node_reference_autocomplete', // options_select , node_reference_select
+      ),
+      'display' => array(
+         'default' =>
+         array (
+           'label' => 'inline',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'hidden',
+           'type' => 'hidden',
+         ),
+      ),
+    ),
+    'class_label' => array(
+      'field_name' => 'class_label',
+      'label'       => $t('Label'),
+      'bundle' => 'class',
+      'entity_type' => 'node',
+      'required'    => TRUE,
+      'description' => 'A human-readable name for the class.',
+      'widget'      => array(
+        'type'    => 'text_textfield',
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'inline',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'inline',
+           'type' => 'default',
+         ),
+      ),
+    ),
+    'class_comment' => array(
+      'field_name'  => 'class_comment',
+      'label' => $t('Comment'),
+      'bundle' => 'class',
+      'entity_type' => 'node',
+      'description' => 'A plain text description of the class.',
+      'required'    => FALSE,
+      'widget'      => array(
+        'type'    => 'text_textarea',
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'above',
+           'type' => 'trimmed',
+         ),
+      ),
+    ),
+    'class_superclass' => array(
+      'field_name'  => 'class_superclass',
+      'label'       => $t(' Superclass'),
+      'bundle' => 'class',
+      'entity_type' => 'node',
+      'description' => 'If every member of this class is also a member of another class, then that other class should be selected here.',
+      'widget' => array(
+        'type'    => 'node_reference_autocomplete', // options_select , node_reference_select
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'hidden',
+           'type' => 'hidden',
+         ),
+      ),
+    ),
+    'class_disjoint_with' => array(
+      'field_name'  => 'class_disjoint_with',
+      'label'       => $t(' Disjoint with'),
+      'bundle' => 'class',
+      'entity_type' => 'node',
+      'description' => 'If members of this class cannot logically also be members of another class, then that other class should be selected here.',
+      'widget' => array(
+        'type'    => 'node_reference_autocomplete', // options_select , node_reference_select
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'hidden',
+           'type' => 'hidden',
+         ),
+      ),
+    ),
+    'class_details' => array(
+      'field_name'  => 'class_details',
+      'label'       => $t('Details'),
+      'bundle' => 'class',
+      'entity_type' => 'node',
+      'description' => 'Will only show in HTML views.<br /><br /><br />',
+      'required'    => FALSE,
+      'widget' => array(
+        'type'    => 'text_textarea_with_summary',
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'hidden',
+           'type' => 'hidden',
+         ),
+      ),
+    ),
+    
+    
+    'vocabulary_project' => array(
+      'field_name'  => 'vocabulary_project',
+      'label'       => $t(' Project'),
+      'bundle' => 'vocabulary',
+      'entity_type' => 'node',
+      'description' => 'Project with which this vocabulary is related.',
+      'widget' => array(
+        'type'    => 'node_reference_autocomplete', // options_select , node_reference_select
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'above',
+           'type' => 'default',
+         ),
+      ),
+    ),
+    'vocabulary_title' => array(
+      'field_name'  => 'vocabulary_title',
+      'label' => $t('Title'),
+      'bundle' => 'vocabulary',
+      'entity_type' => 'node',
+      'description' => 'A human-readable title for the vocabulary.',
+      'required'    => TRUE,
+      'widget'      => array(
+        'type'    => 'text_textfield',
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'inline',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'hidden',
+           'type' => 'default',
+         ),
+      ),
+   ),
+    'vocabulary_namespace_uri' => array(
+      'field_name'  => 'vocabulary_namespace_uri',
+      'label'       => $t('Namespace URI'),
+      'bundle' => 'vocabulary',
+      'entity_type' => 'node',
+      'description' => 'URIs of classes and properties in the vocabulary will start with this.',
+      'required'    => TRUE,
+      'default_value' => array(array('value' => '0')),
+      'widget' => array(
+        'type'    => 'options_buttons',
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'inline',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'inline',
+           'type' => 'default',
+         ),
+      ),
+    ),
+    'vocabulary_abstract' => array(
+      'field_name'  => 'vocabulary_abstract',
+      'label' => $t('Abstract'),
+      'bundle' => 'vocabulary',
+      'entity_type' => 'node',
+      'description' => '',
+      'required'    => FALSE,
+      'widget'      => array(
+        'type'    => 'text_textarea',
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'above',
+           'type' => 'default',
+         ),
+      ),
+    ),
+    'vocabulary_body' => array(
+      'field_name'  => 'vocabulary_body',
+      'label'       => $t('Body'),
+      'bundle' => 'vocabulary',
+      'entity_type' => 'node',
+      'description' => '',
+      'required'    => FALSE,
+      'widget' => array(
+        'type'    => 'text_textarea_with_summary',
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label'=>'hidden',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'hidden',
+           'type' => 'hidden',
+         ),
+      ),
+    ),
+    'vocabulary_additional_rdf' => array(
+      'field_name'  => 'vocabulary_additional_rdf',
+      'label'       => $t('Additional Custom RDF'),
+      'bundle' => 'vocabulary',
+      'entity_type' => 'node',
+      'description' => $t('Additional RDF in Turtle syntax for inclusion in the vocabulary\'s RDF description.'),
+      'required'    => FALSE,
+      'widget' => array(
+        'type'    => 'text_textarea',
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label'=>'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label' => 'hidden',
+           'type' => 'hidden',
+         ),
+      ),
+    ),
+    
+
+    'project_main_vocabulary' => array(
+      'field_name'  => 'project_main_vocabulary',
+      'label'       => $t(' Main Vocabulary'),
+      'bundle' => 'project',
+      'entity_type' => 'node',
+      'description' => 'The main vocabulary of the Project.',
+      'widget' => array(
+        'type'    => 'node_reference_autocomplete', // options_select , node_reference_select
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'above',
+           'type' => 'default',
+         ),
+      ),
+    ),
+    'project_authors' => array(
+      'field_name'  => 'project_authors',
+      'label'       => $t(' Authors'),
+      'bundle' => 'project',
+      'entity_type' => 'node',
+      'description' => 'Users working in the Project.',
+      'required'    => 0,
+      'widget' => array(
+        'weight' => -2, 
+        'type'    => 'user_reference_autocomplete',
+        'module' => 'user_reference',
+        'active' => 1,
+        'settings' => array(
+         'autocomplete_match' => 'starts_with',
+        ),
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label' => 'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label'=>'inline',
+           'type' => 'default',
+         ),
+      ),      
+    ),
+    'project_layout' => array(
+      'field_name'  => 'project_layout',
+      'label'       => $t('Project Layout'),
+      'bundle' => 'project',
+      'entity_type' => 'node',
+      'description' => $t('The XML layout information stored by the diagram widget.'),
+      'required'    => FALSE,
+      'widget' => array(
+        'type'    => 'text_textarea',
+      ),
+      'display' => array(
+         'default' => 
+         array (
+           'label'=>'above',
+           'format' => 'default',
+         ),
+         'teaser' => 
+         array (
+           'label' => 'hidden',
+           'type' => 'hidden',
+         ),
+      ),
+    ),
+    
+  );
+}
+
+
+
+
+
+/**************************************************************************************************************
+ * Implements hook_schema().
+ * Install the following tables :
+ *  1. neologism_vocabulary_details_extra [ nsid vocabulary_body additional_custom_rdf]
+ *  2. neologism_vocabulary_authors [ nsid author]
+ *  3. neologism_disjoint_with [ tid disjoint_with]
+ *  4. neologism_term_detail_extra [tid details]
+ *  5. neologism_term_property_details [tid fp ifp]
+ *
+ * TODO : Add foreign key and other constrains.
+ *
+ * Note : use 'type' => 'serial' for auto-increment int primary key.
+ *************************************************************************************************************/
+ 
+function neologism_schema() {
+
+ $schema['neologism_vocabulary_details_extra'] = array(
+  'description' => 'Table that contains extra details about RDF Vocabularies not covered in evoc/rdfx tables.',
+  'fields' => array(
+    'nsid' => array(
+      'description' => 'Primary Key',
+      'type' => 'int',
+      'not null' => TRUE,
+    ),
+    'body' => array(
+      'description' => 'Vocabulary body field',
+      'type' => 'varchar',
+      'length' => '4096',
+    ),
+    'additional_custom_rdf' => array(
+      'description' => 'Vocabulary additional custom RDF field',
+      'type' => 'varchar',
+      'length' => '4096',
+    ),
+   ),
+  'primary key' => array('nsid'),
+ );
+
+
+ $schema['neologism_disjoint_with'] = array(
+  'description' => 'RDF Vocabulary term attribute.',
+  'fields' => array(
+    'tid' => array(
+      'description' => 'Primary Key',
+      'type' => 'int',
+      'not null' => TRUE,
+    ),
+    'disjoint_with' => array(
+      'description' => 'disjoint with',
+      'type' => 'varchar',
+      'length' => '255',
+    ),
+   ),
+  'primary key' => array('tid'),
+ );
+
+
+
+ $schema['neologism_term_detail_extra'] = array(
+  'description' => 'Table that contains additional information about rdf vocabulary terms not contained in evoc/rdfx tables.',
+  'fields' => array(
+    'tid' => array(
+      'description' => 'Primary Key',
+      'type' => 'int',
+      'not null' => TRUE,
+    ),
+    'details' => array(
+      'description' => 'Vocabulary term details.',
+      'type' => 'varchar',
+      'length' => '4096',
+    ),
+   ), 
+  'primary key' => array('tid'),
+ );
+
+
+
+ $schema['neologism_term_property_details'] = array(
+  'description' => 'RDF Vocabulary Property attributes.',
+  'fields' => array(
+    'tid' => array(
+      'description' => 'Primary Key',
+      'type' => 'int',
+      'not null' => TRUE,
+    ),
+    'functional_property' => array(
+      'description' => 'is the property a functional property',
+      'type' => 'varchar',
+      'length' => '255',
+    ),
+    'inverse_functional_property' => array(
+      'description' => 'is the property an inverse functional property',
+      'type' => 'varchar',
+      'length' => '255',
+    ),
+   ),
+  'primary key' => array('tid'),
+ );
+
+
+ $schema['neologism_project_details'] = array(
+  'description' => 'Table containing details of Projects.',
+  'fields' => array(
+    'project_id' => array(
+      'description' => 'Primary Key',
+      'type' => 'serial',
+      'not null' => TRUE,
+    ),
+    'project_name' => array(
+     'type' => 'varchar',
+      'length' => '255',
+     ),
+    'project_main_vocab_id' => array(
+      'description' => 'The user-id of authors for a vocabulary.',
+      'type' => 'int',
+    ),
+    'project_layout' => array(
+      'description' => 'The user-id of authors for a vocabulary.',
+     'type' => 'varchar',
+      'length' => '4096',
+     ),
+   ),
+  'primary key' => array('project_id'),
+ );
+
+ $schema['neologism_project_authors'] = array(
+  'description' => 'Table that contains RDF Vocabularies authors information.',
+  'fields' => array(
+    'idx' => array(
+      'description' => 'Primary Key',
+      'type' => 'serial',
+      'not null' => TRUE,
+    ),
+    'project_id' => array(
+      'description' => 'The id of the project.',
+      'type' => 'int',
+    ),
+    'uid' => array(
+      'description' => 'The user-id of authors for a project.',
+      'type' => 'int',
+    ),
+   ),
+  'primary key' => array('idx'),
+ );
+ 
+ $schema['neologism_project_vocabulary'] = array(
+  'description' => 'Table that contains RDF Vocabularies authors information.',
+  'fields' => array(
+    'idx' => array(
+      'description' => 'Primary Key',
+      'type' => 'serial',
+      'not null' => TRUE,
+    ),
+    'project_id' => array(
+      'type' => 'int',
+    ),
+    'project_main_nsid' => array(
+      'description' => 'The nsid of main vocabulary of a project.',
+      'type' => 'int',
+    ),
+   ),
+  'primary key' => array('idx'),
+ ); 
+
+ return $schema;
+}
+
+
+
+
+/**********************************************************************************************************
+ * Implements hook_uninstall().
+ *
+ *********************************************************************************************************/
+function neologism_uninstall() {  
+  
+  // Gather all the vocabulary content that might have been created while this
+  // module was enabled.
+  // http://api.drupal.org/api/function/db_query/7
+  $sql = 'SELECT nid FROM {node} n WHERE n.type = :type';
+  $result = db_query($sql, array(':type' => 'vocabulary'));
+  $nids = array();
+  foreach ($result as $row) {
+    $nids[] = $row->nid;
+  }
+  // Delete all the nodes at once
+  // http://api.drupal.org/api/function/node_delete_multiple/7
+  node_delete_multiple($nids);
+
+
+// Deleting all class content
+  $sql = 'SELECT nid FROM {node} n WHERE n.type = :type';
+  $result = db_query($sql, array(':type' => 'class'));
+  $nids = array();
+  foreach ($result as $row) {
+    $nids[] = $row->nid;
+  }
+  node_delete_multiple($nids);
+
+
+// Deleting all property content
+  $sql = 'SELECT nid FROM {node} n WHERE n.type = :type';
+  $result = db_query($sql, array(':type' => 'property'));
+  $nids = array();
+  foreach ($result as $row) {
+    $nids[] = $row->nid;
+  }
+  node_delete_multiple($nids);
+
+
+// Deleting all project content
+  $sql = 'SELECT nid FROM {node} n WHERE n.type = :type';
+  $result = db_query($sql, array(':type' => 'project'));
+  $nids = array();
+  foreach ($result as $row) {
+    $nids[] = $row->nid;
+  }
+  node_delete_multiple($nids);
+
+
+  // Loop over each of the fields defined by this module and delete
+  // all instances of the field, their data, and the field itself.
+  // http://api.drupal.org/api/function/field_delete_field/7
+  foreach (array_keys(_neologism_installed_fields()) as $field) {
+    field_delete_field($field);
+  }
+
+
+  // Loop over any remaining field instances attached to the content types
+  // content type (such as the body field) and delete them individually.
+  // http://api.drupal.org/api/function/field_delete_field/7
+  //  Comment module shows a warning here in some cases
+  $instances = field_info_instances('node', 'property');
+  foreach ($instances as $instance_name => $instance) {
+    field_delete_instance($instance);
+  }
+  $instances = field_info_instances('node', 'class');
+  foreach ($instances as $instance_name => $instance) {
+    field_delete_instance($instance);
+  }
+  $instances = field_info_instances('node', 'vocabulary');
+  foreach ($instances as $instance_name => $instance) {
+    field_delete_instance($instance);
+   }
+  $instances = field_info_instances('node', 'project');
+  foreach ($instances as $instance_name => $instance) {
+    field_delete_instance($instance);
+        
+  }
+
+
+  // Delete our content types
+  // http://api.drupal.org/api/function/node_type_delete/7
+  node_type_delete('property');
+  node_type_delete('class');
+  node_type_delete('vocabulary');
+  node_type_delete('project');
+  
+
+  // Purge all field infromation
+  // http://api.drupal.org/api/function/field_purge_batch/7
+  field_purge_batch(1000);
+  
+  // Delete menu entries for project
+    db_delete('menu_links')
+     ->condition('link_path', 'node/add/project')
+     ->execute();
+    db_delete('menu_router')
+     ->condition('path', 'node/add/project')
+     ->execute();
+
+  // Delete menu entries for vocabulary
+    db_delete('menu_links')
+     ->condition('link_path', 'node/add/vocabulary')
+     ->execute();
+    db_delete('menu_router')
+     ->condition('path', 'node/add/vocabulary')
+     ->execute();
+
+  // Delete menu entries for class
+    db_delete('menu_links')
+     ->condition('link_path', 'node/add/class')
+     ->execute();
+    db_delete('menu_router')
+     ->condition('path', 'node/add/class')
+     ->execute();
+
+  // Delete menu entries for property
+    db_delete('menu_links')
+     ->condition('link_path', 'node/add/property')
+     ->execute();
+    db_delete('menu_router')
+     ->condition('path', 'node/add/property')
+     ->execute();
+  
+}
+
diff --git a/neologism.js b/neologism.js
new file mode 100755
index 0000000..a8504b0
--- /dev/null
+++ b/neologism.js
@@ -0,0 +1,83 @@
+
+jQuery.noConflict();
+  
+  jQuery(document).ready( function() {
+
+
+    // dynamically change the value of default namespace URI option in vocabulary form as the vocabulary id changes
+    jQuery('#edit-title').bind('keyup', function() {
+        if(jQuery("#edit-title").val() != '') {
+          jQuery("#neologism-default-ns").html(jQuery("#edit-title").val());
+        }else {
+          jQuery("#neologism-default-ns").html('vocabulary-id');
+        }
+      }
+    );
+  
+
+    // when custom option is selected in namespace URI, create textbox if not present else set visibility to show in vocabulary form
+    jQuery('#edit-vocabulary-namespace-uri-und-1').change(function() {
+    // this is called when radio button is pressed, i.e., document.getElementById('edit-vocabulary-namespace-uri-und-1').value ==1
+          if( ! document.getElementById('form-item form-type-radio form-item-vocabulary-namespace-uri-und custom-textbox')){
+            jQuery('#edit-vocabulary-namespace-uri-und').append('<p><input style = "width:300px" type="text" class = "text-full form-text" id="form-item form-type-radio form-item-vocabulary-namespace-uri-und custom-textbox" name="form-item form-type-radio form-item-vocabulary-namespace-uri-und custom-textbox" value="http://'+ window.location.href.split( '/' )[2] + '/" style="display:block" /></p>');
+          }else{
+            document.getElementById('form-item form-type-radio form-item-vocabulary-namespace-uri-und custom-textbox').style.display="";
+          }
+        }          
+    );  
+
+
+  // when default option is selected in namespace URI, hide textbox in vocabulary form
+  jQuery('#edit-vocabulary-namespace-uri-und-0').change(function() {
+    // this is called when radio button is pressed.
+          if( document.getElementById('form-item form-type-radio form-item-vocabulary-namespace-uri-und custom-textbox')){
+            document.getElementById('form-item form-type-radio form-item-vocabulary-namespace-uri-und custom-textbox').style.display="none";
+            }
+        }
+    );
+
+
+// create vocabulary field for class and property forms
+//    jQuery('#class-node-form div:eq(0)').before('<br /><div id ="related-to-vocabulary"><span>Related Vocabulary Id&nbsp;&nbsp;&nbsp;</span> <input style = "width:300px" type="text" class = "text-full form-text" id="form-item-class-vocabulary-related-textbox" name="form-item-class-vocabulary-related-textbox" style="display:block" /></div><br />');
+//    jQuery('#property-node-form div:eq(0)').before('<br /><div id ="related-to-vocabulary"><span>Related Vocabulary Id&nbsp;&nbsp;&nbsp;</span><input style = "width:300px" type="text" class = "text-full form-text" id="form-item-property-vocabulary-related-textbox" name="form-item-property-vocabulary-related-textbox" style="display:block" /><br /></div>');
+
+
+
+// for class form : dynamically change the value of the prefix of the class title as per vocabulary id
+    jQuery('#edit-class-related-vocabulary-und-0-nid').bind('keyup', function() {
+        if(jQuery('#form-item-class-vocabulary-related-textbox').val() != ''){ 
+          jQuery('#class-related-vocabulary-id-value').html(jQuery('#edit-class-related-vocabulary-und-0-nid').val().split(' ')[0] ) ;
+        }else {
+          jQuery('#class-related-vocabulary-id-value').html("vocabulary-id") ;
+        }
+      }
+    );
+    jQuery('#edit-title').bind('keyup', function() {
+        if(jQuery('#form-item-class-vocabulary-related-textbox').val() != ''){ 
+          jQuery('#class-related-vocabulary-id-value').html(jQuery('#edit-class-related-vocabulary-und-0-nid').val().split(' ')[0] ) ;
+        }else {
+          jQuery('#class-related-vocabulary-id-value').html("vocabulary-id") ;
+        }
+      }
+    );
+    
+    
+// for property form : dynamically change the value of the prefix of the property title as per vocabulary id
+    jQuery('#edit-property-related-vocabulary-und-0-nid').bind('keyup', function() {
+        if(jQuery('#form-item-property-vocabulary-related-textbox').val() != ''){ 
+          jQuery('#property-related-vocabulary-id-value').html(jQuery('#edit-class-related-vocabulary-und-0-nid').val().split(' ')[0] ) ;
+        }else {
+          jQuery('#property-related-vocabulary-id-value').html("vocabulary-id") ;
+        }
+      }
+    );
+    jQuery('#edit-title').bind('keyup', function() {
+        if(jQuery('#form-item-property-vocabulary-related-textbox').val() != ''){ 
+          jQuery('#property-related-vocabulary-id-value').html(jQuery('#edit-class-related-vocabulary-und-0-nid').val().split(' ')[0] ) ;
+        }else {
+          jQuery('#property-related-vocabulary-id-value').html("vocabulary-id") ;
+        }
+      }
+    );
+
+  } );
\ No newline at end of file
diff --git a/neologism.module b/neologism.module
new file mode 100644
index 0000000..4be4f19
--- /dev/null
+++ b/neologism.module
@@ -0,0 +1,561 @@
+<?php
+
+/****************************************************************************************************
+  * @file
+  * Allows users to create and publish RDF Schema vocabularies.
+  *
+  ***************************************************************************************************/
+
+
+/******************************************************************************************************
+ * Implementation of hook_init().
+ *****************************************************************************************************/
+function neologism_init() {
+//  drupal_add_css(drupal_get_path('module', "neologism") .'/neologism.css');
+  drupal_add_js(drupal_get_path('module', 'neologism') . '/neologism.js');
+ 
+
+// hide the menu links for class and property from navigation menu --> add content
+// (this code will be used when add class and add property links are added to the vocabulary hosting page.)
+
+//  $nid = db_update('menu_links')
+//  ->fields(array(
+//    'hidden' => 1,
+//  ))
+//  ->condition('link_path', "node/add/class", '=')
+//  ->execute();  
+ 
+//  $nid = db_update('menu_links')
+//  ->fields(array(
+//    'hidden' => 1,
+//  ))
+//  ->condition('link_path', "node/add/property", '=')
+//  ->execute();
+
+}
+
+
+
+/******************************************************************************************************
+ * Implementation of hook_menu().
+ *****************************************************************************************************/
+
+function neologism_menu() {
+  $items = array();
+ 
+    $items["neologism"] = array(
+	'title' => 'Neologism Vocabularies',
+	'description' => "Show a list of vocabularies.",
+        'page callback' => 'neologism_view_index',
+        'access arguments' => array('access content'),
+    );
+  return $items;
+}
+
+
+/******************************************************************************************************
+ * Autocomplete callback functions for various fields in the entities
+ * $result = db_query("SELECT nid, title FROM {node} WHERE status = 1 AND type='my_type' AND title LIKE LOWER ('%s%%')", $string) ;
+ *
+ * $result = mysql_query(" SELECT rdfx_terms.local_name FROM rdfx_terms, rdfx_term_types WHERE rdfx_term_types.tid = rdfx_terms.tid AND rdfx_term_types.type = 'rdfs_class'");
+ *
+ * // Removed
+ *****************************************************************************************************/
+
+
+
+/******************************************************************************************************
+ * Output a list of all the vocabularies present on the site.
+ *
+ *
+ * Custom callback that builds our content and returns it to the browser.
+ *
+ * @return
+ *   a build array
+ *
+ *****************************************************************************************************/
+
+function neologism_view_index() {
+  $build = array();
+  $sql = 'SELECT nid FROM {node} n WHERE n.type = :type AND n.status = :status ORDER BY n.sticky DESC, n.created DESC';
+  $result = db_query($sql,
+    array(
+      ':type' => 'vocabulary',
+      ':status' => 1,
+    )
+  );
+
+  // Loop through each of our node_example nodes and instruct node_view
+  // to use our custom "example_node_list" view.
+  // http://api.drupal.org/api/function/node_load/7
+  // http://api.drupal.org/api/function/node_view/7
+  foreach ($result as $row) {
+    $node = node_load($row->nid);
+    $build['node_list'][]= node_view($node, 'teaser'); // default is the view mode ... we can create a specific view mode (though another function) if needed and use it here.
+  }
+
+  return $build;
+}
+
+
+
+
+// Project .................
+
+
+/****************************************************************************************************
+ * function hook_form_FORM_ID_alter(&$form, &$form_state, $form_id) for Project entity
+ ****************************************************************************************************/ 
+function neologism_form_project_node_form_alter(&$form, &$form_state, $form_id) {
+  
+  
+    $form['title']['#description'] = 'Name of the Project.';
+    $form['#submit'] = array();
+    $form['#submit'][] = '_neologism_form_project_node_form_submit_alter';
+    $form['#validate'] = array();
+    $form['#validate'][] = '_neologism_form_project_node_form_validate_alter';
+    
+}
+
+
+
+/****************************************************************************************************
+ * Custom project form validation handler 'without' supressing the original handler
+ *****************************************************************************************************/
+function _neologism_form_project_node_form_validate_alter(&$form, &$form_state){
+    $title = $form_state['values']['title']; // vocabulary id
+
+    //Creating URL Alias
+    $form_state['values']['path']['alias'] =  "project/" . $title ;
+    
+}
+
+
+
+/****************************************************************************************************
+ * Custom project form submit handler 'without' supressing the original handler
+ *****************************************************************************************************/
+function _neologism_form_project_node_form_submit_alter(&$form, &$form_state) { 
+    
+  $title = $form_state['values']['title']; // project name
+  $project_layout = $form_state['values']['project_layout']['und'][0]['value'];
+
+
+   $nid = db_insert('neologism_project_details') 
+		->fields(array( 
+			'project_name' => $title, 
+			'project_main_vocab_id' => $form_state['values']['project_main_vocabulary']['und']['0']['nid'], 
+			'project_layout' => $project_layout,
+			 )) 
+		->execute(); 
+
+    $query = "SELECT neologism_project_details.project_id FROM neologism_project_details WHERE neologism_project_details.project_name ='" . $title . "';";
+    $table_attribute_value_array = db_query($query)->fetchCol();
+    $project_id_current = $table_attribute_value_array[0];
+
+
+    foreach($form_state['values']['project_authors']['und'] as $author){
+ 
+            if( is_numeric($author['uid']) ){
+              $nid = db_insert('neologism_project_authors') 
+                         ->fields(array( 
+                                 'project_id' => $project_id_current, 
+                                 'uid' => $author['uid'],
+                                  ))
+                         ->execute();
+            }            
+    }
+    
+  drupal_set_message(t('Data successfully submitted to Neologism!!')); 
+}
+
+
+
+
+// Vocabulary ............
+
+/****************************************************************************************************
+ * function hook_form_FORM_ID_alter(&$form, &$form_state, $form_id) for Vocabulary entity
+ ****************************************************************************************************/ 
+function neologism_form_vocabulary_node_form_alter(&$form, &$form_state, $form_id) {
+  
+  
+//  dd(field_info_instance("node","vocabulary_body","vocabulary"));
+    $form['title']['#description'] = 'Will be used as the namespace prefix. Only lowercase letters, numbers, dashes. Max 10 characters.';
+    $form['#submit'] = array();
+    $form['#submit'][] = '_neologism_form_vocabulary_node_form_submit_alter';
+    $form['#validate'] = array();
+    $form['#validate'][] = '_neologism_form_vocabulary_node_form_validate_alter';
+    
+}
+
+
+
+/****************************************************************************************************
+ * Custom vocabulary form validation handler 'without' supressing the original handler
+ *****************************************************************************************************/
+function _neologism_form_vocabulary_node_form_validate_alter(&$form, &$form_state){
+    $title = $form_state['values']['title']; // vocabulary id
+
+    //Creating URL Alias
+    $form_state['values']['path']['alias'] = ( $form_state['values']['vocabulary_namespace_uri']['und'][0]['value'] == 0 ?  $title :  substr( ($form_state['input']['form-item_form-type-radio_form-item-vocabulary-namespace-uri-und_custom-textbox']) ,0,-1) ) ;
+    
+    $form_state['values']['vocabulary_namespace_uri']['und'][0]['value'] = ( $form_state['values']['vocabulary_namespace_uri']['und'][0]['value'] == 0 ?  url('<front>', array('absolute' => TRUE)).$title."#" : $form_state['input']['form-item_form-type-radio_form-item-vocabulary-namespace-uri-und_custom-textbox']);
+    
+    $form_state['values']['vocabulary_namespace_uri']['und'][0]['value'] = "<a href='" . $form_state['values']['vocabulary_namespace_uri']['und'][0]['value'] ."'>" . $form_state['values']['vocabulary_namespace_uri']['und'][0]['value'] . "</a>";
+    
+}
+
+
+
+/****************************************************************************************************
+ * Custom vocabulary form submit handler 'without' supressing the original handler
+ *****************************************************************************************************/
+function _neologism_form_vocabulary_node_form_submit_alter(&$form, &$form_state) { 
+    
+  $title = $form_state['values']['title']; // vocabulary id
+  $vocabulary_namespace_uri = $form_state['values']['vocabulary_namespace_uri']['und'][0]['value'];
+  $vocabulary_title = $form_state['values']['vocabulary_title']['und'][0]['value']; 
+  $vocabulary_abstract = $form_state['values']['vocabulary_abstract']['und'][0]['value'];
+  $vocabulary_body = $form_state['values']['vocabulary_body']['und'][0]['value'];
+  $vocabulary_additional_rdf = $form_state['values']['vocabulary_additional_rdf']['und'][0]['value'];
+    
+
+   $max_gid = db_query("SELECT MAX(rdfx_vocabulary_graphs.gid) from rdfx_vocabulary_graphs")->fetchField();
+
+   $nid = db_insert('rdfx_namespaces') 
+		->fields(array( 
+			'gid' => $max_gid +1, 
+			'prefix' => $title, 
+			'uri' => $vocabulary_namespace_uri,
+			 )) 
+		->execute(); 
+
+    $query = "SELECT rdfx_namespaces.nsid FROM rdfx_namespaces WHERE rdfx_namespaces.gid ='" . ($max_gid + 1) .	"' AND rdfx_namespaces.prefix ='" . $title . "';";
+    $table_attribute_value_array = db_query($query)->fetchCol();
+    $nsid_current = $table_attribute_value_array[0];
+
+   $nid = db_insert('rdfx_vocabulary_graphs') 
+		->fields(array( 
+			'main_ns' => $nsid_current, 
+			'date_created' => time(), 
+			'date_updated' => time(),
+			 )) 
+		->execute(); 
+
+   $nid = db_insert('rdfx_vocabulary_details') 
+		->fields(array( 
+			'gid' => $max_gid +1, 
+			'language' => "en", 
+			'label' => $vocabulary_title, 
+			'description' => $vocabulary_abstract,
+			 )) 
+		->execute(); 
+
+   
+   $nid = db_insert('neologism_vocabulary_details_extra') 
+		->fields(array( 
+			'nsid' => $nsid_current, 
+			'body' => $vocabulary_body, 
+			'additional_custom_rdf' => $vocabulary_additional_rdf, 
+			 )) 
+		->execute(); 
+
+
+    
+    $project_id_current = $form_state['values']['vocabulary_project']['und']['0']['nid'];
+
+   $nid = db_insert('neologism_project_vocabulary') 
+		->fields(array(
+			'project_id' => $project_id_current, 
+			'project_main_nsid' => $nsid_current, 
+			 ))
+		->execute();
+
+    
+  drupal_set_message(t('Data successfully submitted to Neologism!!')); 
+}
+
+
+
+
+
+// Class ............
+
+/****************************************************************************************************
+ *function hook_form_FORM_ID_alter(&$form, &$form_state, $form_id) for Class entity
+ *****************************************************************************************************/
+function neologism_form_class_node_form_alter(&$form, &$form_state, $form_id) {
+    
+//    $result = mysql_query(" SELECT rdfx_terms.local_name FROM rdfx_terms, rdfx_term_types WHERE rdfx_term_types.tid = rdfx_terms.tid AND rdfx_term_types.type = 'rdfs_class'");
+                             
+    $form['title']['#field_prefix'] = url('<front>', array('absolute' => TRUE)) . '<span id= "class-related-vocabulary-id-value">vocabulary-id</span>' . '#';
+    $form['title']['#description'] = 'Class URI should include only letters, numbers, dashes, and underscores, and should start with an uppercase letter and use CamelCase capitalization.';
+    
+    $form['#submit'] = array();
+    $form['#submit'][] = '_neologism_form_class_node_form_submit_alter';
+    $form['#validate'] = array();
+    $form['#validate'][] = '_neologism_form_class_node_form_validate_alter';
+
+//    dd($form['class_superclass']);
+//    $form['class_superclass']['und'][0]['nid']['#autocomplete_path'] = 'autocomplete/example/textfield'
+     
+}
+
+
+
+
+/****************************************************************************************************
+ * Custom class form validation handler 'without' supressing the original handler
+ *****************************************************************************************************/
+function _neologism_form_class_node_form_validate_alter(&$form, &$form_state){
+
+//Creating URL Alias
+    $related_vocabulary_id =  $form_state['values']['class_related_vocabulary']['und']['0']['nid'];
+    
+    $query = "SELECT node.title FROM node WHERE node.type = 'vocabulary' AND node.nid =" . $related_vocabulary_id . ";";
+    $table_attribute_value_array = db_query($query)->fetchCol();
+    $related_vocabulary = $table_attribute_value_array[0];
+    
+    $form_state['values']['path']['alias'] = $related_vocabulary . '/' . $form_state['values']['title'];
+    
+
+}
+
+
+/****************************************************************************************************
+ * Custom class form submit handler 'without' supressing the original handler
+ *****************************************************************************************************/
+function _neologism_form_class_node_form_submit_alter(&$form, &$form_state) {
+    
+//  dd($form_state['values']);
+    $related_vocabulary_id =  $form_state['values']['class_related_vocabulary']['und']['0']['nid'];
+    
+    $query = "SELECT node.title FROM node WHERE node.type = 'vocabulary' AND node.nid =" . $related_vocabulary_id . ";";
+    $table_attribute_value_array = db_query($query)->fetchCol();
+    $related_vocabulary = $table_attribute_value_array[0];
+    
+  $title = $form_state['values']['title']; // class id
+  $label = $form_state['values']['class_label']['und']['0']['value'];
+  $class_comment = $form_state['values']['class_comment']['und']['0']['value'];
+  $class_details = $form_state['values']['class_details']['und']['0']['value'];
+  
+    $query = "SELECT rdfx_namespaces.nsid FROM rdfx_namespaces WHERE rdfx_namespaces.prefix ='" . $related_vocabulary . "';";
+    $table_attribute_value_array = db_query($query)->fetchCol();
+    $nsid_current = $table_attribute_value_array[0];
+
+   $nid = db_insert('rdfx_terms')
+		->fields(array( 
+			'nsid' => $nsid_current, 
+			'local_name' => $title,
+			 )) 
+		->execute();
+
+
+   $tid_current = db_query("SELECT MAX(rdfx_terms.tid) from rdfx_terms")->fetchField();
+
+   $nid = db_insert('rdfx_term_details')
+		->fields(array(
+			'tid' => $tid_current, 
+			'language' => 'en',
+			'label' => $label,
+                      'comment' => $class_comment,
+			 ))
+		->execute(); 
+
+   $nid = db_insert('neologism_term_detail_extra')
+		->fields(array(
+			'tid' => $tid_current, 
+			'details' => $class_details,
+			 ))
+		->execute();
+
+   $nid = db_insert('rdfx_term_types')
+		->fields(array(
+			'tid' => $tid_current, 
+			'type' => 'rdfs_class',
+			 ))
+		->execute();
+
+
+    foreach($form_state['values']['class_superclass']['und'] as $superclass){
+
+            if( is_numeric($superclass['nid']) ){
+              $nid = db_insert('rdfx_term_superclasses') 
+                         ->fields(array( 
+                                 'tid' => $tid_current, 
+                                 'superclass_tid' => $superclass['nid'],
+                                  ))
+                         ->execute();
+            }            
+    }
+
+
+    foreach($form_state['values']['class_disjoint_with']['und'] as $disjoint_with){
+
+            if( is_numeric($disjoint_with['nid']) ){
+              $nid = db_insert('neologism_disjoint_with') 
+                         ->fields(array( 
+                                 'tid' => $tid_current, 
+                                 'disjoint_with' => $disjoint_with['nid'],
+                                  ))
+                         ->execute();
+            }
+    }
+    
+  drupal_set_message(t('Data successfully submitted to Neologism!!')); 
+
+}
+
+
+
+
+// Property ........
+
+
+/****************************************************************************************************
+ *function hook_form_FORM_ID_alter(&$form, &$form_state, $form_id) for Property entity
+ *****************************************************************************************************/
+function neologism_form_property_node_form_alter(&$form, &$form_state, $form_id) {
+
+    $form['title']['#field_prefix'] = url('<front>', array('absolute' => TRUE)) . '<span id= "property-related-vocabulary-id-value">vocabulary-id</span>' . '#';;
+    $form['title']['#description'] = 'Property URI should include only letters, numbers, dashes, and underscores, and should start with a lowercase letter and use CamelCase capitalization.';
+
+    $form['#submit'] = array();
+    $form['#submit'][] = '_neologism_form_property_node_form_submit_alter';
+    $form['#validate'] = array();
+    $form['#validate'][] = '_neologism_form_property_node_form_validate_alter';
+
+}
+
+/****************************************************************************************************
+ * Custom property form validation handler 'without' supressing the original handler
+ *****************************************************************************************************/
+function _neologism_form_property_node_form_validate_alter(&$form, &$form_state){
+
+    //Creating URL Alias
+    $related_vocabulary_id =  $form_state['values']['property_related_vocabulary']['und']['0']['nid'];
+    
+    $query = "SELECT node.title FROM node WHERE node.type = 'vocabulary' AND node.nid =" . $related_vocabulary_id . ";";
+    $table_attribute_value_array = db_query($query)->fetchCol();
+    $related_vocabulary = $table_attribute_value_array[0];
+    
+    $form_state['values']['path']['alias'] = $related_vocabulary . '/' . $form_state['values']['title'];
+}
+
+/****************************************************************************************************
+ * Custom property form submit handler 'without' supressing the original handler
+ *****************************************************************************************************/
+function _neologism_form_property_node_form_submit_alter(&$form, &$form_state) { 
+  
+    $related_vocabulary_id =  $form_state['values']['property_related_vocabulary']['und']['0']['nid'];
+    
+    $query = "SELECT node.title FROM node WHERE node.type = 'vocabulary' AND node.nid =" . $related_vocabulary_id . ";";
+    $table_attribute_value_array = db_query($query)->fetchCol();
+    $related_vocabulary = $table_attribute_value_array[0];
+
+  $title = $form_state['values']['title']; // property id
+  $label = $form_state['values']['property_label']['und']['0']['value'];
+  $property_comment = $form_state['values']['property_comment']['und']['0']['value'];
+  $property_details = $form_state['values']['property_details']['und']['0']['value'];
+  $property_functional_property = $form_state['values']['property_functional_property']['und']['0']['value'];
+  $property_inv_func = $form_state['values']['property_inv_func']['und']['0']['value'];
+
+    $query = "SELECT rdfx_namespaces.nsid FROM rdfx_namespaces WHERE rdfx_namespaces.prefix ='" . $related_vocabulary . "';";
+    $table_attribute_value_array = db_query($query)->fetchCol();
+    $nsid_current = $table_attribute_value_array[0];
+
+   $nid = db_insert('rdfx_terms') 
+		->fields(array( 
+			'nsid' => $nsid_current, 
+			'local_name' => $title,
+			 )) 
+		->execute();
+
+   $tid_current = db_query("SELECT MAX(rdfx_terms.tid) from rdfx_terms")->fetchField();
+
+   $nid = db_insert('rdfx_term_details')
+		->fields(array(
+			'tid' => $tid_current, 
+			'language' => 'en',
+			'label' => $label,
+                        'comment' => $property_comment,
+			 ))
+		->execute();
+
+   $nid = db_insert('rdfx_term_types')
+		->fields(array(
+			'tid' => $tid_current, 
+			'type' => 'rdf_property',
+			 ))
+		->execute();
+
+   $nid = db_insert('neologism_term_detail_extra')
+		->fields(array(
+			'tid' => $tid_current, 
+			'details' => $property_details,
+			 ))
+		->execute();
+
+   $nid = db_insert('neologism_term_property_details')
+		->fields(array(
+			'tid' => $tid_current, 
+			'functional_property' => $property_functional_property,
+			'inverse_functional_property' => $property_inv_func,
+			 ))
+		->execute();
+                
+
+
+    foreach($form_state['values']['property_domain']['und'] as $domain){
+
+            if( is_numeric($domain['nid']) ){
+              $nid = db_insert('rdfx_term_domains') 
+                         ->fields(array( 
+                                 'tid' => $tid_current, 
+                                 'domain_tid' => $domain['nid'],
+                                  ))
+                         ->execute();
+            }            
+    }
+
+    foreach($form_state['values']['property_range']['und'] as $range){
+
+            if( is_numeric($range['nid']) ){
+              $nid = db_insert('rdfx_term_ranges') 
+                         ->fields(array( 
+                                 'tid' => $tid_current, 
+                                 'range_tid' => $range['nid'],
+                                  ))
+                         ->execute();
+            }            
+    }
+
+    foreach($form_state['values']['property_inverse']['und'] as $inverse){
+
+            if( is_numeric($inverse['nid']) ){
+              $nid = db_insert('rdfx_term_inverses') 
+                         ->fields(array( 
+                                 'tid' => $tid_current, 
+                                 'inverse_tid' => $inverse['nid'],
+                                  ))
+                         ->execute();
+            }            
+    }
+
+
+    foreach($form_state['values']['property_superproperty']['und'] as $superproperty){
+
+            if( is_numeric($superproperty['nid']) ){
+              $nid = db_insert('rdfx_term_superproperties') 
+                         ->fields(array( 
+                                 'tid' => $tid_current, 
+                                 'superproperty_tid' => $superproperty['nid'],
+                                  ))
+                         ->execute();
+            }
+    }
+    
+  drupal_set_message(t('Data successfully submitted to Neologism!!')); 
+
+}
