Screen Reference Index
Plato Documentation  version 0.9, 2014.02.14
 Documentation Index    Creating and Managing Cross References
General Notes on Cross Referencing
The purpose of cross references is to link objects together in ways that show meaningful relationships. In some cases the meaning of the relationship is self-explanitory: a bookmark's relation to its parent note for instance, or an object's relation to its parent folder. But the relationship may not be obvious, so the cross references should be named in ways that explain the relationship. For this reason Plato requires cross references to have named types.

While it's convenient to use cross references in an ad-hoc way,

Elements of a Cross Reference
Plato data structures
Figure 1: Relationship Between Cross Reference List and Objects
Each cross reference has three elements:
  • Pointer to the parent object
  • Pointer to the child objects
  • Name of the cross reference type
Each cross reference must be unique, and a cross reference is unique when these three elements, taken together, form a unique combination. In this way the same parent-child object pair may have more than one cross reference when they have more than one named relation.
About Cross Reference Types
Plato data structures
Figure 2: Editing Xref Types from the Xref Edit Pane
Plato allows you to create any number of cross reference types. However, there are a few types that are reserved by Plato that you may not change or delete. Here are the reserved cross reference types:
  • General cross references This is default, catch-all type. When you create an ad-hoc cross reference it will be of this type unless you specifically choose another named type.
  • External hyperlink This type is reserved for hyperlinks--links to objects that reference files external to Plato.
  • Bookmarks This type is reserved for bookmarks, and describes the relationship between a bookmark and its parent note.
  • Intra-category links This type is reserved for links between categories with a family of categories. When you link categories to each other to form hierarchies they are given intra-category links.
  • Nested word references This type is reserved for objects connected to each other via nested word determinations
  • Folder heirarchy This type is reserved for describing folder heirarchies withing the folder view pane. When you assing a folder to a parent folder it is given a folder-hierarchy link.
Outside of this list of reserved links, you may create any number of your own link types and assign them to cross references.
Cross Referencing Via Object Attributes
Plato data structures
Figure 3:
Cross referencing via attributes means to put cross reference attributes in your object class; this way when you enter your data into the object's attribute fields, you will automatically create cross references. There are some advantages to creating cross references this way:
  • Thinking the Design of your Object Through Creating and adding cross reference attributes will force you to think about what you are trying to do. This will aid you in planning your research strategy.
  • Documenting Your Thoughts About Relationships in your Data Adding cross reference attributes to an object documents what you initially think about the relations in your data, and provides a clear benchmark for you to see what you missed or what you didn't need at a later time as your research progresses.
  • Ease of Use You don't have to think about creating the cross reference--it's done automatically when you enter data in the field.
Cross Referencing Via Categories
Plato data structures
Figure 4: Creating Category Cross References
When you open the category and select a family of categories, you can use the category pop-up menu to link or un-link categories to objects in the folder list pane. If the menu entry says "link category to selected object" click the entry to create the link. If the menu entry says "detach category from selected object" a link already exists and clicking the entry will detach it. Linking objects to categories will create a "category" link.

Ad-hoc Cross Referencing
Ad-hoc cross referencing means to create a cross reference on the fly between two objects that are not related through their attributes. The 'loosest' way to do this is to create a general cross reference using the cross reference pane. This will create a cross reference but will say nothing about what type of cross reference it is--you are capturing a quick thought, essentially. A slightly more structured method would be to create a set of cross reference types that reflect the sorts of relationships you intend to look at, then use the appropriate type when you make a cross reference.

For more instructions on how to make ad-hoc cross references, see the section below on the cross reference pane.

Using the Cross Reference Editing Pane
Plato data structures
Figure 5: Elements of the Cross Reference Editing Pane
The cross reference editing pane allows you to make cross references and perform a few cross reference related chores.

The make cross references, select the object(s) you want to cross reference from the folder list and open the cross reference pane (right click the folder list and select "cross references..." from the pop-up menu). You'll see that the pane is organized into two major portions: the top half contains a list of the objects you just selected; the bottom half contains (clockwise from left):
  • Object class filters This is where you select the object class to display. Note that the object class filters are used in conjunction with the cross reference type drop down and the parent/child option buttons. Objects and cross references displayed in the object checklist will change when any of these parameters change.
    • Object Classes Double-click on an object class to display all objects of the class in the checklist. To display all objects currently cross referenced to the selected object regardless of object class, select the filter named "current xrefs."
    • Drop down list to select cross reference types Contains a list of valid cross reference types to select from.
    • Option buttons to select parent or child relations Selection will determine whether cross references will be parents or children of the selected object.
  • Object checklist (for selecting objects to cross reference) This list will display objects and show whether they are cross referenced to the selected object from the folder. The cross reference will be indicated by a check in the box. You may make or break cross references here by checking or unchecking the appropriate boxes. But note that to actually make the cross reference you must press the cross reference button at the top right of the pane.
  • Change existing cross reference types Checking this box will allow you to select a new xref type. Displayed cross references of the type displayed in the object class filters will be changed to the new type when you press the cross reference button.
Clearing and Flipping Cross References
Plato data structures
Figure 6: Xref Pane 'Clear' and 'Flip' Actions
The 'clear' and 'flip' actions in the cross reference pane allow you to make blanket actions on xrefs:
  • Clear xrefs This action will clear all xrefs currently displayed. If you want to clear all of an object's xrefs, you may have to issue the command several times. First select "current xrefs" from the object class filter. Then for each of the following selections, press "clear:"
    • Child xrefs--each xref type for which xrefs are displayed
    • Parent xrefs--each xref type for which xrefs are displayed
  • Flip xrefs This action will flip the direction of all xrefs currently displayed. If child xrefs are displayed, they will become parents. If parents, they'll become children.
These actions can't be undone so give it some thought before performing them.
Cross Referencing During Import
Plato data structures
Figure 7: Cross Reference Selection in File Operations Window
Cross references can be created during import but it requires some preparatory thinking and setup that could take anywhere from a few mintes to a few hours. This preparation is most worth the effort when you are importing a lot of data from a spreadsheet that is set up with:
  • rows that could correspond to objects, and
  • columns that contain a limited set of repeated values that could correspond to categories.
For a large spreadsheet with several category columns, this could result in tens of thousands of cross references that would take far longer to make by hand than to do the setup outlined below.

The general method is as follows:
  1. Identify the spreadsheet columns that will become categories and create new object classes for them. These new object classes should each be of the "family of categories" action type.
  2. One by one, select and copy the spreadsheet columns you've chosen to a text editor and remove all duplicate entries
  3. Select each edited set of entries from the text editor and copy it to the clipboard, and import it to Plato using the import pane as follows:
    • Select 'clipboard' as the "Import From" source
    • Select the appropriate new object class as the "Import as Object Class" selection.
    • Select "import as list" from the parsing options drop down menu.
    • import
  4. Create a new object class for the spreadsheet rows. Include cross reference attributes for each of the category classes you just created.
  5. Save the spreadsheet to CSV format
  6. Create an import script to import each CSV row into the object class you created in step 4
  7. Open the file management view pane and select the CSV spreadsheet file. Right click the selection and select "import to database" from the pop-up menu.
  8. Refer to Figure 7, above, for the following:
    • For "object class for imported objects", select the object class you created in step 4.
    • For "markup to apply to import", select the import script you created in step 6.
    • For "target folder", select a folder to accept the imported objects. You may want to create a special folder for this in advance.
    • Check the box, "automatically build cross references".
    • Press the import button to start the import. A spreadsheet with thousands or rows and several columns might take several minutes (or longer) to import and cross reference.

Cross Reference Behavior When Objects Are Deleted or Moved
What happens to cross references when objects are deleted, duplicated, or copied or moved to another database? It depends.
  • Deleted objects Cross references to deleted objects are destroyed when an object is deleted and cannot be recovered if the deleted object is restored through 'undo'.
  • Duplicated objects If an object has cross reference attributes, those cross references will be inherited by the new object if the object is duplicated. But ad-hoc cross references will not be inherited by the new object.
  • Objects Transferred to Other Databases In general, cross references will not accompany objects transfered (copied or moved) to other databases. There are two exceptions to this:
    • Folders and their contents Folders are linked to their contents by cross references, and if 'include contents of folders' is checked when a folder is copied or moved to another database, all the cross references linking the folder to its contents will be preserved. Of course, all the objects referenced by the folder will be copied or moved to the new database as well.
    • Bookmarks Bookmarks are objects linked to their parent note by cross references. If 'include bookmarks' is checked when an object is copied or moved to another database, all of the bookmarks attached to the object and their cross references will transfer to the new database.
This page last updated on 2014.04.30