Nlevel_logo | Help Content | Home
Log in | Sign up | Help

Basic usage | Performing searches | Understanding schema

For more help: email help@nlevels.com
Other resources: nlevels.blogspot.com

How to use N Levels

To be able to create and manipulate information in N Levels, you need to register for an account (if you don't already have one) and log in. If you don't have an account or aren't logged in, you will only be able to browse information that others have created.

Once you are logged in, you can create information by following the steps below:

  1. Create an object...
    ...which represents the information that you want to capture. There are many types of objects that you can create - you can search the existing object types to find the one that is appropriate. If you don't find what you're looking for, you can define your own object type.

    Once you have selected the desired object type, you create the object by specifying its name (which must be unique across all objects of that type) and mandatory properties (screenshot). You can add / change the properties for an existing object via the "edit" page (screenshot), which can only be accessed by the user who originally created it.

  2. Connect your object to others via relationships.
    If the object type for your object includes a relationship type, then you can use this to "link" to other objects to indicate that a relationship exists between them. The linked-to object must be of the appropriate target object type, and the relationship can either be "single" (can have at most one target object) or "multiple" (can have more than one target objects). The target object type and single/multiple nature of the relationship type are defined by the object type.

    You can modify a relationship from the "show" or "edit" page for the object. Each relationship is displayed along with its current target objects. To add a target object, click the "add" link which will then let you select from all available objects of the target object type (screenshot). Note that not all target objects can necessarily be selected - see below for a discussion of object "target modes" (screenshot).

    Relationship modes
    You can control who has the ability to add relationships for any object that you create. Every object has a relationship mode for each of its relationships, which can be one of three values: "open", "requires approval", and "closed". "Open" means that anyone can add a target object to the relationship. "Requires approval" means that anyone can propose a target object for the relationship, but it must be approved by the object owner before it is added. "Closed" means that no one other than the object owner can add a target object. The default relationship mode is "requires approval", and it can be modified at any time (screenshot).

    Approving relationships
    If you are the object owner, you may be requested to approve or reject the addition of a new target object to a relationship, based upon the relationship mode you have specified. You can do this via the "show" or "edit" page for the object (screenshot). While the proposed target object is in this "pending" state awaiting approval, the target object owner and relationship requestor will see a message indicating this (screenshot).

    Remove existing relationships
    Once a target object has been added to a relationship, the only users who can remove it are the object owner, the target object owner, or the user who added the target object in the first place. This can be done from the "show" or "edit" page for the object (screenshot)

    Customizing the relationship UI
    There are situations where you may want to customize the UI that is displayed when a user wants to view or modify a relationship for your object, in order to provide additional information and context. You do this by creating a custom relationship UI which takes you to page that provides detailed instructions and UI to do the customization (screenshot). You can also preview what the custom relationship UI looks like - if you do not do any customization then a default UI is generated (screenshot).

  3. Enable others to connect their objects to yours.
    Any object has the potential to be a target object for another object's relationships. You can this behavior via the object's target mode, which similar to the relationship mode described above has one of three value: "open", "requires approval", and "closed". "Open" means that anyone can use the object as a target object of a relationship. "Requires approval" means that anyone can propose using the object as a target object, but it must be approved by the object owner before it is added. "Closed" means that no one other than the object owner can add it as a target object of a relationship. The target mode can be set when the object is created or modified later via the "edit" page - its default value is "open" (screenshot).

    When you select a target object to add to a relationship, the target mode is displayed for all objects and also determines whether or not a given object can be selected (screenshot).

    Note that with the relationship mode and target mode, it is possible for a given relationship to be in one of three "pending" states: (1) relationship must be approved by the object owner (this object is also referred to as the "source" object), (2) relationship must be approved by the target object owner, (3) relationship must be approved by both the source and target object owners. (screenshot). While a relationship is in a pending state, it is only visible to the source object owner, target object owner, or "relationship owner" (the user who originally added the target object).

    Approving target objects
    If you are the target object owner, you may be requested to approve or reject the addition of this object to a relationship, based upon its target mode. You can do this via the "show" or "edit" page for the source object (screenshot).

    Reverse relationships
    A reverse relationship exists for an object when it is the target object of a relationship. The reverse relationships for an object can be viewed from the "show" or "edit" page, and also approved (if pending) or removed if the user has the appropriate permissions (screenshot).

  4. Embed information about an object in a web site
    You can embed information about an N Levels object into any web site by creating a "widget". A widget can be inserted into any web page - it does not rely on any server-side integration and simply requires the additional of some basic HTML into the desired web page. As long as the viewer's browser supports Javascript then the widget will render correctly.

    You can create a widget for an object by going to its "create widget" page (screenshot), which provides detailed instructions. You can also extensively customize the widget - the object information that is shown as well as display formatting.

  5. Manage your objects and schema items
    When you are logged in, you can go to the home page to view and manage all of the objects and schema items that you have created, as well as create new ones (screenshot).

    You can view your complete list of objects or organized by object type. You can also search for objects by name or ID number. If an object has a "pending" relationship, either as a source or target object, this is indicated on the page. In addition you can filter the list of displayed objects to just show ones with a pending relationship. The total number of relationships where the object is the source object or target object is shown as well. (screenshot).

    You can view your schema items, organized by object types, property types, and relationship types. You can also search for schema items by name and ID number. For object types, the total number of objects of that type (across all users) is displayed. For property types and relationship types, the total number of object types which use that type is displayed. (screenshot).


Performing Searches

An important feature of N Levels is the ability to perform searches across objects of a given object type. This is particularly valuable when there are a very large number of objects and you want to find the handful that match a desired criteria (screenshot).

Search criteria

You can search based on the following criteria: All of the search criteria described above are AND'ed together when performing the search. After performing the search, you can update your criteria and search again, or clear your search criteria altogether and return to full list of objects (screenshot). If there are no objects that match the search criteria, this is indicated as well (screenshot).

Creating a search widget

You can create a widget that will display the results of a search. Once you have performed a search, you can click on the "create widget..." link (screenshot) that will take you to "Create search widget" page, which provides detailed instructions on how to embed the widget in a web page (screenshot). Just like the object widget described above, a search widget can be inserted into any web page as standard HTML tag and does not require any special server integration. You can also extensively customize the search widget, including the set of properties, relationship, and reverse relationships that are displayed.


The N Levels Schema

An object in N Levels consists of properties and relationships, which are defined by its object type.

Property Types

Properties are simple name, value pairs which are defined by property types. A property type specifies the name, value type, and description for the property. The currently supported value types are integer, number, string, text, URL, and date/time.

Relationship Types

Relationships represent connections (or links) between objects and are defined by relationship types. Technically speaking, relationships enable the creation of a directed graph of objects with labelled arcs. A relationship type specifies a relationship name and description, as well as a "reverse name" and "reverse description". For example, the "parent" relationship, with a description of "represents an object's immediate ancestor", could have a "reverse name" of "child of" and "reverse description" of "represents an object's immediate descendant".

Object Types

Object types consist of collections of property types and relationship types. When a property type is added to an object type, you can specify whether it is mandatory or optional - mandatory property types must be specified an object of that type to be created. When a relationship type is added to an object type, there are two pieces of information that are specified - the target object type and whether the relationship is single or multiple (in the UI this is indicated as "Allow multiple" set to false or true). For example, the "father" relationship type added to the "cat" object type would have "cat" as its target object type and be a "single" relationship (presumably a cat can only have one father who should be a cat!). On the other hand, the "dog friend" relationship type added to the "cat" object type would be defined to have "dog" as its target object type and be a "multiple" relationship (since a cat should be able to have more than one dog friend!).

Creating new schema items

Any registered user can update the N Levels schema by creating new property types, new relationship types, and new object types. All schema items are publicly visible and accessible by anyone, so when you create a new object type, you can add any property type and relationship type, including those created by other users. Likewise, when you specify a target object type for a relationship type, you can select from all of the existing object types.

Modifying existing schema items

The creator of a schema item automatically becomes its owner, and only the owner can modify it once created. Please note that schema modifications are restricted if they would in any way "break" existing objects. For example, deleting an object type is blocked if there are existing objects of that type. Likewise, changing the target object type of a relationship type (for a given object type) is only permitted if there are no instances of this relationship for any existing objects of the object type.


Send feedback | Visit blog