LogoUser Manual

Contents

Getting started

Log in

To log in to Graphologi you will need to first register by signing up.

Once you are logged in then you will see a set of applications that you can use, similar to the following image. What you see depends upon the permissions you have been given for the subscription. Permissions control access to different parts of the system and are controlled by administrators of a subscription.

Image

To start using the Vocabulary Manager or Ontology Manager click on the appropriate card.

Feedback

Your feedback is vital to us so that we can fix issues and improve the application.

At all points in the application you will be able to submit feedback by clicking on the green user icon at the top right of the screen. You should see something similar to the following image.

Image

You can enter text and can also attach a screenshot if that helps.

Of course we still welcome feedback sent by other means such as email if that is more convenient.

Subscriptions

Within Graphologi everything happens within the scope of a subscription. A subscription may be created by a single individual or a person within an organisation. Different subscriptions permit different numbers of users.

A subscription is created by one user but they can invite additional users up to the limit of the subscription. An invitation can be withdrawn at any time. Invited users are free to accept or reject an invitation and will be notified on logging in about any pending invites.

Each subscription allows an unlimited number of projects to be created.

Subscription management

Invites and selecting an active subscription

When you log in one of two things may happen. If you have a subscription or have accepted an invite and there are no pending invites you will be taken directly to the dashboard.

However, if you have multiple subscriptions or pending invites you will see a screen similar to that in the following image.

Image
Pending invites

If there are pending invites you have the option to accept or reject them. Simply click on your preferred choice. If you accept an invite there will be a short wait whilst that acceptance is processed, at which point the invite becomes available for selection.

Selecting a subscription

You need to decide which subscription you will work on at any one time. Click on the subscription or invite that you wish to use.

You can change the active subscription within the application via the Account option during any point in a session.

When you select a subscription you will be taken the applications page, which will look similar to the following image.

Image
Proceed without selecting

If you select this option then there is no active subscription and you are limited to access to your account and the user manual. You can select a subscription from within the Account option.

Cancelling a subscription

Subscription cancellation can be done in the Account option.

A subscription will be terminated at the end of the billing period. For trial subscriptions of a month or less there is an automatic expiration and therefore no cancellation is necessary.

Note that cancellation of a subscription will remove all the data for that subscription at some point after the expiration period.

Managing users and groups

To manage users and groups within a subscription select the Dashboard option. This option will only be available if you have permissions. You should see a screen similar to the following image.

Image

Managing users within a subscription essentially means managing invitations. To invite a user they must be registered on the system, which is something that the user has to do.

Groups are used to control access to application functions. Each group can be set up with a subset of the overall entitlements, allowing you to fine tune how you let users access the applications. A user can be assigned to zero or more groups.

Users

When a subscription is first created there will be no additional users. To add a user click Invite User. This should present a form as follows.

Image

Enter the username of the user that you wish to invite and click Invite. The screen should update to look similar to the following image.

Image

You can now invite further users if required.

If you come back to this screen at a later point you will then see a screen similar to the following image.

Image

You can now select a user and start to edit the groups that they belong to. Groups are used by projects to select subsets of users for a project. Each project can control its own list of groups.

If a user has still not answered the invitation it will say 'Pending' against their name. If they have answered it will say either 'Accepted' or 'Rejected'. You can withdraw an invitation at any time by clicking the Image icon on the right of the screen. Note that this will not take effect until the next time a user logs in.

Groups

By default three groups are made available for each subscription - Administrators, Editors and Viewers. You will see a screen similar to the following image.

Image

The default groups have preset entitlements. Administrators can do everything and this group cannot be changed. A subscription owner is always an administrator. The Editors and Viewers groups can be deleted if desired.

You can create as many additional groups as you require. A group will generally perform a 'role' within the system and be given a set of entitlements to perform that role. To add a group click Add Group. You will see a form similar to the following image.

Image

Enter a name for the group and click Add. If you want to create a bunch of groups in one go click Multiple , which will add the group but keep the form open to allow another to be added.

Integration

Ultimately you will probably want to use any taxonomies in another system. One option that Graphologi provides to achieve this is via webhooks. Webhooks allow data to be pushed from Graphologi to an endpoint on a target system.

When thinking about integration it is worth considering whether a 'push' or 'pull' is the best approach. Pulling data via the Graphologi API is another option. However, that requires careful consideration as to when to pull any data. For instance, if a taxonomist is performing a set of changes and a scheduled pull of the data happens, that pull may happen when only some of those changes are applied. Webhooks give control to a person to decide the right time to synchronise data.

Webhooks use public/private keys to ensure that the target system can validate that any data has been sent by Graphologi.

The number of integrations that can be set up is dependent upon the subscription.

Setting up an integration

Integrations are set up via the dashboard. Click on the Integrations card as shown in the following image:

Image

You will need the appropriate entitlement to access this part of the application, which is Manage integration.

Click on the Add Integration button as shown in the following image:

Image

This will display a dialog similar to the following image.

Image

Enter a name for the integration, the target endpoint and the format to send to the target when synchronisation is done. If you do not know the full endpoint at this point you can always edit it later on.

When sending data there are two options - send entire taxonomies, collections and ontologies, or, send just the changes (delta) since the previous send. Which is the best option will depend upon how you want to process the data. For very large taxonomies and ontologies it may be more efficient to just sent the delta. If you want to use the delta option select the 'Changes Only' option. Note that there is a 100MB limit for integration payloads.

Click Add.

You should see a screen similar to the following image. The Public Key field contains the key that you can use in the target system to validate requests.

Image

When data is synchronised a list of when the synchronisation was run will be available for each integration.

Integration with EasyGraph

It takes just a few simple steps to be able to push data from Graphologi to EasyGraph once you have a dataset configured in EasyGraph.

Create an integration as above using a holding URL such as the following EasyGraph sandbox URL, filling in the relevant values for InstanceID and Dataset from your EasyGraph set up and using '12345' for what will be the UUID value for egSignatureKeyUUID

/{InstanceID}/{Dataset}/administration/data/import?profile=graphologi&egSignatureKeyUUID=12345

Copy the public key generated by Graphologi and then in EasyGraph create a new key pair for the required user. Do this by clicking on the icon to upload a public key, as in the following image.

Image

Give the key pair a sensible description and paste the key into the 'Public Key' field.

You then need to copy the UUID part of the 'Key ID' in EasyGraph as highlighted in red in the following example image:

Image

Back in Graphologi in the endpoint field replace the holding value 12345 with the key UUID.

That's it. You should be ready to send data from Graphologi to EasyGraph.

Synchronisation

Once your integrations are set up you are ready to try them out (if you have permissions). Synchronisation is done via the project page. Click on the Export icon to get started. You then need to select which integration you wish to use from the list on the left. Once you have selected an integration the display will change to show you which components of the project have changed since the last time this integration was run for this project, in a similar way to the following image.

Important! Note that imports will not be indicated as changes. This is also the case for integrations set for deltas. If you are doing imports and need to synchronise those, but, under normal circumstances, want to sent just deltas, you can set up another integration to push the entire payload and use that after an import to ensure the imported data is sent. Of course, this may require additional logic at the target endpoint. Another option is just to load the imported taxonomy directly into the target system.

Image

By default all components are selected for synchronisation. Deselect any that you do not want to send. You can deselect all components by clicking the Deselect All button. Note that any deleted resources will automatically be sent.

Note that, if you do not send all components that have changed, there is a danger that the target system will not be fully coordinated (for example, if a concept is edited and used in multiple taxonomies). This is, of course, dependent upon the behaviour the target system implements.

Expected payload

The payload that Graphologi sends will include the resources from the components that you choose to send and minimal information for deleted resources. Note that, in some circumstances, you may get notified of a deletion more than once.

An example is given below for a trival taxonomy, where there is a deletion included. You can see that for a deletion there will be the id of the deleted reources as well as a deletionTime property, which is a milliseconds since epoch timestamp.

{
    "graph": [
    {
        "id": "https://ex.com/integration/First",
        "created": "2023-02-17T13:21:56.561Z",
        "prefLabel": {"en": "First"},
        "topConceptOf": ["https://ex.com/integration"],
        "inScheme": ["https://ex.com/integration"],
        "revisionNo": 1,
        "modified": "2023-02-17T13:21:56.908Z",
        "type": "Concept"
    },
    {
        "id": "https://ex.com/integration",
        "useXL": false,
        "created": "2023-02-17T13:21:50.943Z",
        "title": {"en": "Integration"},
        "modified": "2023-02-17T13:22:16.925Z",
        "hasTopConcept": ["https://ex.com/integration/First"],
        "type": "ConceptScheme",
        "useSlashIRI": true,
        "revisionNo": 5,
        "useUuidIRI": false
    },
    {
        "id": "https://ex.com/integration/Second",
        "deletionTime": 1676640220961
    }]
}
            

Validating a request

You should almost certainly validate that the requests are coming from Graphologi. Use the public key associated with an integration to do this. Below is a Javascript example for how to validate a payload using Crypto. You should set a window of a few seconds for the timestamp. Beyond this window you should reject the request. This should NOT be used in production and simply serves as an example.

async function validatePayload(headers, payload, publicKey) {
    // Expecting an authorization header with parameters:
    // Algorithm="RSA-SHA256";Timestamp="{epoch string}";Signature="{string}"
    const payloadString = headers["Content-Type"] === "application/ld+json" ?
        JSON.stringify(payload)
        :
        payload;
    const payloadHash = crypto.createHash('sha256').update(payloadString).digest('hex');
    const params = headers.Authorization.split(";").map(param => {
        const value = param.substring(param.indexOf("=") + 1);
        return value.substring(1, value.length - 1);
    });
    const timestamp = params[1];
    const signature = params[2];                
    // Use timestamp and signature to verify payload string
    const payloadForVerification = timestamp + "\n" + payloadHash;
    const verify = crypto.createVerify('RSA-SHA256');
    verify.write(payloadForVerification);    
    verify.end();
    const result = verify.verify(publicKey, signature, 'base64');
    return result;
}

Project snapshots

Sometimes mistakes happen and project snapshots are one way to recover from those mistakes. Snapshots make copies of projects at defined periods. They can be restored at any time, replacing the data that is in place.

You can set up snapshots for both Vocabulary Manager and Ontology Manager projects. The number of projects that you can set up for snapshots is dependent upon your subscription type.

Setting up a snapshot

Snapshots are set up via the dashboard. Click on the Snapshots card as shown in the following image:

Image

You will need the appropriate entitlement to access this part of the application, which is Manage snapshots.

Click on the Add Project button as shown in the following image:

Image

This will display a dialog similar to the following image.

Image

Select the project you wish to set up. You can start to type the name of the project to filter the list. As projects can have different default languages you can change the language you are searching in.

You should see a screen similar to the following image.

Image

Taking a snapshot

You can set the automatic snapshot period and the maximum number of snapshots to retain. Note that the snapshot period is approximate. Also, when the system starts up (i.e. after an update for instance) a snapshot will be taken soon after regardless of the period.

You can manually trigger a snapshot be clicking on the Image icon. This may be a sensible thing to do if you are about to make major changes to a project, such as importing.

When you click on the snapshot icon a dialog will appear as in the following image:

Image

You can optionally enter a name and comment for the snapshot. If you wish the snapshot to also be created as a project version check 'Set as Version'.

To actually generate the snapshot click on the Execute button. It will take a small amount of time to process.

Snapshots will appear in the list in a similar way to the following image.

Image

Restoring a snapshot

To restore a project into the existing project click on the Image icon on the right of the snapshot that you wish to use for the restore.

Once you confirm the action it will take a small amount of time to restore the data. The project will be locked whilst this happens.

Using SPARQL

It is possible to query the data in your subscription using SPARQL. This can be accessed via the dashboard. Click on the SPARQL card as shown in the following image:

Image

You will need the appropriate entitlement to access this part of the application, which is Can run SPARQL queries. Note this entitlement gives access to all the data in a subscription.

Selecting a project

You will automatically be asked to select which project you want to use as the base project. As projects can have different default languages you can change the language you are searching in. You can select from taxonomy or ontology projects.

Once a project is selected Graphologi will load class and property information from that project for autocompletion in the query editor. For very large projects this may take a little time so you can skip this be clicking the Skip button.

Once this is complete you should see a screen similar to the following image.

Image

Running and saving queries

Note that saved queries are only available in Enterprise subscriptions and above.

To manage saved queries you need the Manage saved query entitlement. To just view saved queries and run them you need the entitlement View saved query.

You can use SELECT, ASK and DESCRIBE queries. Enter your query and then click the Run Query button. The results will be displayed in the bottom section of the screen. It is also possible to preview how query results will look in a report by selecting the Preview report icon.

You can save a query by clicking the Save Query button. This will display a dialog similar to the following image:

Image

Enter a title for the query and, if required, a description. You can also select whether the query should be made available for reporting. See the section Reports for more details on reports.

To retrieve a particular saved query select it from the drop-down list on the right of the screen. This will display the detail in a similar way to the following image:

Image

The details of the query can be edited if desired, including updating the query itself by clicking on the Update button.

If you change the query in the editor but want to set it back to the value in the saved query click the Reset button.

The value in the 'IRI' field is that needed to run saved queries in the API.

Querying multiple projects

By default only the selected base project can be queried (including its history named graph). However, you may want to be able to query across additional projects. You can add additional projects using the Add Additional Project button. A maximum of four additional projects can be added.

Once you add an additional project you will see a screen similar to the following image.

Image

You can use the Image icon to copy the graph IRI to the clipboard.

Note that once additional projects are added any SPARQL query will need to use GRAPH clauses.

You can update any saved query to include added projects.

Note that, for any query used as a report that includes additional projects, a user will only be able to run the report if they have permisisons for all the projects listed.

Additional settings

Prefix management

When you export data out of Graphologi certain serialisations use prefixes to shorten IRIs. This can reduce file size and improve readability.

Graphologi will process any prefixes used when importing files and they will then be used on exports. You can also add additional prefixes. This facility can be accessed via the dashboard. Click on the API card as shown in the following image:

Image

You will then see a screen displaying a set of information about various aspects of the subscription. Most of the detail relates to making API calls.

Image

To access this part of the application you need the relevant permission, which is Manage integrations.

The 'Prefixes' panel will list existing prefixes and their associated IRIs. To add another prefix click on the Add icon. This will display a dialog box as shown below.

Image

Enter a prefix and an IRI. The prefix can only contain the characters a-z, A-Z, digits and hyphens and can be at most twenty characters long. Click the Add button to add the prefix to the list.

Important note: It is not possible to remove a prefix once added so please be careful to ensure that any prefix and IRI you enter are correct before adding.

Account management

Account management (choose Account on the dashboard) allows you to manage subscriptions and invites as well as your personal details.

Subscriptions and invites work the same way as described in the section on Subscriptions. The only difference is that here you can choose (or change) the active subscription that you want to work with.

Under the My Details option you can manage your personal details and password. You can also delete your account. Note that deleting your account will cancel all subscriptions and delete your data at some point shortly afterwards.

Projects

Projects within Graphologi are the basis of managing a set of data (within your knowledge graph). It is also the level at which you define the user groups that can work on your data.

A project also manages 'components'. With Vocabulary Manager, for instance, the components that make up a project are taxonomies (SKOS concept schemes), collections (SKOS ordered collections) and, optionally, labels (SKOS-XL labels). (We do not get into the detail of exactly what a taxonomy is compared to a thesaurus, etc - we simply use taxonomy as a term in its loosest sense, and you may see the phrase 'concept scheme' used too.)

When you are in the Vocabulary Manager you should be seeing a screen similar to the image below. Projects in the Ontology Manager have a similar look.

Image

Create a project

Creating projects is very similar whether it is a Vocabulary Manager or Ontology Manager project. You will be guided through a set of steps to set up the project. The steps as described in the following sections are for the Vocabulary Manager as it has one additional step (SKOS-XL) compared to the Ontology Manager. To get started click on Create Project

Selecting the default project language

The application will be configured with a set of available languages. The first step in creating a project is to select the default language. The selected value will control certain aspects of the Vocabulary Manager in terms of expectations for things such as labels for concepts.

Image

Entering project detail

The next step is to enter a project title and, if required, a project description. The language for these will be the default language selected in the previous step.

Image

Selecting additional languages

A project can have as many additional languages as required. These can be chosen from the overall set of languages the application is configured for. Additional languages will be used for things such as preferred labels or notes, where the Vocabulary Manager will allow you to enter data in any of the selected additional languages.

Image

Enabling SKOS-XL

Vocabulary Manager works with SKOS-XL out of the box. SKOS-XL extends the standard SKOS vocabulary to provide the ability to define labels as first class resources, which then allows more information to be stated for each label. All versions include this functionality. To enable it simply toggle the SKOS-XL option as in the image below:

Image

Selecting user groups

The final step is to select the user groups for a project. By default these will be the groups that you are in. Select as many as you need for the project. Note that user groups may span more than one project and this is something to keep in mind if you wish to use ontology features within your taxonomy project.

Image

When the final step is done you should see your new project presented in a similar manner to that in the image below:

Image

Edit project setup

Once a project exists you may need to update its set up. You can do this by using the sidebar options on the left of the screen. The sidebar is collapsed by default but can be expanded by clicking on Edit. This will display the options in expanded form, which will look similar to the following:

Image

Project information

This allows you to edit the basic project details. It will look similar to the following image.

Image

You can do the following on this screen:

  • Edit the project title and description and add more language translations for both if required.
  • Add more languages to the project. Note that the default language for a project is fixed at the time the project is created and cannot be altered.
  • For taxonomy projects you can enable SKOS-XL. Once enabled this cannot be disabled.
  • For ontology projects you can exclude from import association. This can be important if you have multiple copies of ontologies in different projects. When this happens importing taxonomy projects referencing those ontology projects can cause ambiguity and Graphologi is not able to determine which project to associate. By excluding projects you can remove any ambiguity.
  • Add custom datatypes for use with SKOS notation values.
  • Change the project colour. By default a random colour will have been selected from the palette.

Permissions

Permissions allows you to change the user groups that have access to a project.

Image

Note that the administrator group is always associated with a project.

Importing data into a project

Please note that this option is for adding data to an existing project. If you want to import an entire project please see the relevant section of the manual.

Once a project exists you may want to import data into it. In the Vocabulary Manager you can import SKOS concept schemes and in the Ontology Manager you can import OWL ontologies. Files for import must be in one of RDF/XML, RDF Turtle, N-Triples, JSON-LD, TSV (Tab Separated Values) or CSV (Comma Separated Values) formats. The maximum size of file that can be imported will depend upon the type of subscription. For ontologies .owl files can also be imported. Also, for ontologies, there is special import support for OBO ontologies.

When you select the Import option you will see a screen similar to the following image.

Image

Select a file and click Next.

RDF import

If you are importing an RDF format you will then see import options as in the following image.

Image

If importing an ontology you will also get an option to ignore minor errors. This can help with many ontologies as unfortunately it is not uncommon for errors to exist.

The options control whether the imported taxonomy/ontology will use slash or hash IRIs and whether IRIs generated by the system use UUIDs or labels.

Spreadsheet (XLSX), TSV or CSV import

If you are importing a spreadsheet (an XLSX file), a TSV, or a CSV file, you will see a screen similar to the following image.

Image

You need to select the base language of the text within the file. In general it would be expected that this is the same as the default project language. It is used as the basis for computing the hierarchy of the data. If your data does not have labels in the default project language that will still work, but when displayed in Graphologi the concepts will indicate that no label is available for the default.

You can optionally enter a title for the taxonomy.

You must also enter a base IRI for the taxonomy (e.g. 'https://example.com/vehicle'). This will form the first part of the IRIs that Graphologi will generate for your taxonomy.

In the same manner as creating a new taxonomy you can choose whether the taxonomy will use slash or hash IRIs and whether UUIDs or labels will be used for IRIs.

Further to that, you can set advanced IRI options for the taxonomy by clicking on the Image icon. These options are the same as when creating a taxonomy. The additional SKOS-XL label options are activated if you choose to import labels as SKOS-XL labels.

The next step is to map the data in your file. If you have a header row in your file select 'Ignore Header Row'. If your project is SKOS-XL enabled you will also have the choice to generate labels as SKOS-XL. This will apply to any preferred, alternative or hidden labels.

By default the first five rows or your data are displayed for preview. You can increase this by changing the value on the right of the screen.

Note that the limits for import are 100 columns with the number of rows depending upon the subscription type. Also, you cannot import files that have non-text content.

The next step is to map the columns in the file to properties in Graphologi. You only need to map the columns that you want to import. There must be at least one column that is a preferred label in the language as selected above.

For the hierarchy the columns would generally be next to each other in the file, as in the following example.

Image

Select all the columns that make up the hierarchy (assuming you want to import all the levels). So, for the example above, select both columns as Preferred Label and set the language as English. This is shown in the following image.

Image

Continue to map other columns for other properties.

The following are points to keep in mind:

  • If the same preferred label is found in more than one row it will be assumed to be the same concept.
  • You can have multiple columns for the same property in the same language. For example, if you have two columns of alternative labels in English this will work fine.
  • You can have multiple values over multiple rows. This is the approach that Graphologi TSV export takes. So, for example, if a single preferred label has three alternative labels over three rows that will also work.
  • You can have newline characters in the SKOS note properties such as Definition or Scope Note, but not in the label columns.
  • The limit for label columns is 500 characters for each label. For the other properties it is 5000.
  • It is valid to not map all the columns.
  • Notations are currently only supported as strings (with no datatype).

Completing the import

Once you have chosen the options click Upload. The import will start. The process may take some time and the screen should update as various steps are completed. These include uploading the file, validating it and then normalising the data, which is a step to ensure consistency within the data.

On successful completion you should see a Finish button, which, on clicking, will display the project home page.

If errors occur on import you will need to fix the data before attempting to import again.

Import notes

For SKOS notation, where the notation is a language string, the value will be converted to a non-language form. Graphologi does not support language tagged notations as it is highly unusual to do this.

XML literals will also be converted into strings.

Exporting a project

This option allows you to export an entire project. It is available in both Vocabulary Manager and Ontology Manager.

Click on the Image icon on the left. This will display a screen similar to the following image.

Image

You can select from JSON-LD, RDF/XML or Turtle formats for the exported data.

Importing a project

This option allows you to re-import a project that has been exported from Graphologi.

Click on the Image icon on the left in Vocabulary Manager. This will display a screen similar to the following image.

Image

Note that the project type being imported has to be correct for the application. That is, only projects exported from Vocabulary Manager can be imported and the same applies to Ontology Manager. If a taxonomy project has associated ontology projects they must either already exist or the associated projects must be imported first. If there are multiple ontology projects containing referenced ontologies this can cause ambiguity and Graphologi might not be able to work out which to associate. If this is the case you will need to exclude projects from association. This can be done on the ontology details screen.

Select a file and click Next. You then get the chance to override the project title and description if wanted (note that all existing titles and descriptions in all languages will be replaced). This will look like the following image:

Image

Then click Upload. The import will start. The process may take some time and the screen should update as various steps are completed. These include uploading the file, validating it and then normalising the data, which is a step to ensure consistency within the data.

On successful completion you should see a Finish button, which, on clicking, will display the projects page.

If errors occur on import you will need to fix the data before attempting to import again.

Taxonomy projects

A taxonomy project allows you to manage taxonomies using the W3 SKOS and SKOS-XL specifications.

A taxonomy project has certain features that apply specifically to this type of project, including the ability to associate ontology projects with taxonomy projects and allowing you to view resources within a taxonomy project not associated with any concept scheme - free-floating resources.

Associated ontology projects

To access this feature click on the Associated project icon on the left of the screen.

This allows you to connect ontology projects to a taxonomy project. It is only available in the Vocabulary Manager. For each associated ontology project you can select the classes and properties that you want to be made available to your taxonomy project. Note that if you subsequently remove classes or properties any concepts or labels that have used them will still display the information.

Image

Editor

To access this feature click on the Editor icon on the left of the screen. This will display a screen similar to the following image.

Image

The editor allows you to do bulk editing operations on concepts. The display looks similar to that for Advanced Search and all of the display options and filtering capabilities available there can also be used in the editor.

Selecting concepts

You need to select the concepts you want to bulk edit. To do this click on the checkboxes on the left of the screen. The 'Select All' checkbox will select all concepts on the page of results being shown. You can select concepts from multiple results pages. The limit is 1000 concepts.

To make an edit click on the Bulk edit icon. This will display a dialog box similar to the following image.

Image

You can choose the type of edit that you want to apply. The options are add a value/relationship, remove a value/relationship, remove all values/relationships for a particular property and replace all values/relationships for a property with a new value.

Next, select an action from the drop-down list. Depending upon the action you may be presented with additional panels to select a property and/or to enter the data you want to apply. For example, in the following screenshot it shows adding a change note.

Image

You can see a a preview of what Graphologi will attempt to do by click on the Preview button.

When you are happy with the settings click on the Execute button. Bulk edits are batch operations so that means that the project will be locked whilst processing happens.

Please consider taking a snapshot before applying a bulk edit.

Finding a resource by its IRI

If you need to find a resource within a taxonomy project by its IRI you can do so from the project home page. Click on the Find by IRI icon on the right of the project screen. This will display a dialog similar to the following image.

Image

Enter an IRI and click the Find button.

If a resource is found you will see a result similar to the following image:

Image

You can click on the chip to go to the resource.

Free-floating resources

To access this feature click on the Floating icon on the left of the screen.

Due to the nature of the SKOS specification concepts and SKOS-XL labels can exist without being associated with any particular SKOS concept scheme. This can present issues for managing those concepts and labels in this state (and it is perfectly possible to remove an 'in scheme' relationship in Graphologi which would cause a concept or label to appear in this view).

Graphologi provides a view of the project that lists concepts and labels that are free-floating. They are still available for use and searches will list them, allowing you to select and include them in a concept scheme.

Image

This view of a project is, for the most part, only for viewing purposes. The only edits you can make is to delete or deprecate a concept or delete a label (if you have permissions).

It may be that you want to get rid of any free floating concepts. You can do this through a purge on the project page. Note that this will remove all floating concepts and labels not used in taxonomies (a concept can be used in a taxonomy but not in the scheme) or in any collections.

The purge button is available on the project page as in the following image. Note that this may take some time and the project will be locked while the purge is happening.

Image

Ontology projects

An ontology project is used to manage ontologies using the W3 OWL specification.

Reports

Reports will generally fall into one of two categories - those used for statistical reporting and those used for additional validation. All reports are created and managed in the same way.

For many organisations there are business rules that need to be adhered to for taxonomies or ontologies. For taxonomies, Graphologi provides quality checks to ensure data conforms to the SKOS standard, but many organisations have needs over and above these constraints, such as limiting the length of preferred labels. Reports allow users to create custom outputs to provide the necessary information to do this. Reports are based on saved SPARQL queries and therefore have a powerful language underneath them to query the data. See the section Using SPARQL for more details.

Graphologi provides some project level predefined reports and you can create as many custom reports as you need. Note that reporting is only available in Enterprise subscriptions and above.

To access reporting click on the Image icon on the left in Vocabulary Manager or Ontology Manager. This will display a screen similar to the following image.

Image

You will need the appropriate entitlement to access this part of the application, which is Can query project.

You can either run one of the predefined reports by clicking on the appropriate report card or, if set up, run a custom report by selecting it from the drop-down list on the right of the screen.

The exact looks of each report will vary depending upon the data it presents. The image below is the output for one of the predefined reports.

Image

To view the SPARQL behind the report, click on the Image icon.

To view the datatypes for appropriate fields, click on the Image icon.

You can copy the reports results as TSV (tab separated values) by clicking on the Image icon. TSV text can be pasted into a spreadsheet application.

You can print the report results by clicking on the Image icon.

Where reports include IRIs you can click on them. Graphologi will look for these IRIs within the project and present information according to whether they exist or not. If they do exist and can be linked to you will have the option to click through to that resource, or, if it is not within the project, to open the link in a new browser tab. Even if the link is within the project you can open it in a new tab by doing Ctrl+click.

You can also download the report results as a TSV (tab separated values) file. Click on the Download button and select 'Download TSV' or 'Download TSV including Header Row' if you want column headers to be included.

Versions

As part of the lifecycle of managing projects it can sometimes be useful to have previous versions of a project available to access and query. Whilst snapshots create backups of projects, versions are 'live' copies of a project created from a snapshot. Whilst snapshots may eventually be removed due to the limited number allowed per project, a version will exist for as long as you want it to.

To create versions for a project, the project must first be configured in the Snapshot manager. Please see the section on Project snapshots for more detail about snapshot management.

Note that versions are only available in Premium and above subscriptions.

Creating a version

To access or create versions click on the Image icon on the left in Vocabulary Manager or Ontology Manager. This will display a screen similar to the following image.

Image

To create a version click on the Create Version button. You will need the appropriate entitlement to create versions, which is Manage snapshots.

This will display a dialog similar to the following image.

Image

You can optionally enter a name and comment for your version.

To generate the version click on the Execute button. It will take a small amount of time to process.

Versions will appear in the list in a similar way to the following image.

Image

You can view the history for a version by clicking on the Image icon. For versions that are not the first version it is possible to select the option to show 'Only Changes in This Version', which will restrict the history to only show changes since the previous version.

You can download a version (as a project) by clicking on the Image icon.

A version can be deleted by clicking on the Image icon. Whilst there is no project level limit for the number of versions, a subscription will have an overall limit across all projects.

Notes about versions

Versions are NOT read only. Versions are simply special projects connected to the original project. All groups for a version will still be there as at the time of creating the version. Version projects only show in the versions screen within the Graphologi application.

Graph references within the version history will be to the original project graph. This ensures that the information stays the same for each version.

The IRI of the actual project resource in the version will change for each version to match the graph in which the version exists. All other information about the project resource remains the same.

Taxonomies

The Vocabulary Manager gives you the ability to create taxonomies and thesauri compliant with the SKOS and SKOS-XL W3 standards. If you also wish to use the Ontology Manager then you can also further enhance your taxonomies with additional relationships and classes, creating an even more semantically rich knowledge graph.

A taxonomy in Vocabulary Manager can consist of any number of concepts in a hierarchy with as many levels as you need.

Multiple languages are supported. The languages available to a taxonomy are controlled by the project setup.

Create a taxonomy

When creating a new taxonomy you will be presented with a dialog box as below:

Image

A new taxonomy requires various pieces of data to be completed. Enter a title for your taxonomy. The language for the title will be the default project language. Languages in Vocabulary Manager are generally indicated as follows, Image with a circle containing a BCP-47 language code.

A taxonomy needs an IRI (Internationalised Resource Identifier). For those not familiar with IRIs they are essentially the same as URIs, which are similar to URLs. IRIs can contain characters from Unicode that are not available to use in URIs.

The IRI for a taxonomy must be unique within all the data stored in a project. If the IRI you have entered is unique you will see a confirmatory tick.

IRIs for taxonomies tend to be in one of two forms - called slash or hash. Slash IRIs are those such as http://example.com/cars/bugattichiron whilst hash IRIs are those such as http://example.com/cars#bugattichiron. Whichever you pick this will generally mean the taxonomy IRI would be one of the following forms: http://example.com/cars or http://example.com/cars/ or http://example.com/cars#. There is no right or wrong decision whichever option you choose.

Each IRI for a concept or label will be generated by the application. However, the form of those IRIs can be controlled in part by selecting either UUID or label forms. Both have their own benefits. UUIDs are free from any language implications and can also remain applicable if, say, the preferred label needs to change. However, label forms tend to be more readable, at least in the default language. The examples above are of the label form.

Once a taxonomy is created there are further IRI options available. See the section Detail for more information.

Finally, you can optionally add a description for your taxonomy.

Click Add to create the taxonomy. You will see your taxonomy added to the list similarly to the image below:

Image

Delete a taxonomy

When a taxonomy is no longer needed you can delete it. This is not always quite as simple as it sounds from a data perspective. If a taxonomy is simply a hierarchy it is obvious what needs to be deleted. However, if there are multiple taxonomies and collections in a project then concepts can be used in multiple places.

To delete a taxonomy click on the Image icon for it as in the image below.

Image

You will be presented with the following dialog.

Image

The 'Full Delete' option will delete the concept scheme resource and any concepts and labels that are not used by another taxonomy or collection. If a resource is the object of any skos:member relationship it will not be deleted (so please be aware of importing data that contains this relationship where it is used other than in a collection).

The 'Taxonomy Only' option will only delete the concept scheme resource. Any concepts and labels that are not used by another taxonomy or collection will become floating resources.

Whilst deletion is happening the project will be locked to stop other activity by other users. This is necessary due to the possible interconnections between data. For very large taxonomies this process may take some time.

Taxonomy editor overview

When you first create a taxonomy and start to edit it you will be presented with a screen as below:

Image

Let us start by explaining the various parts of the screen.

Hierarchy

Hierarchy shows the concepts in the taxonomy in a tree view. Note that multiple levels of hierarchy is optional and your taxonomy may be a flat list of concepts. For a complex taxonomy the tree may get very deep. As an example, the following image shows concepts from Agrovoc - a very large and deeply hierarchical taxonomy.

Image

The number of narrower (child) concepts is shown in parentheses. For example, in the image above 'programmes' has six narrower concepts.

As taxonomies get deep in terms of levels it can be difficult to remember the context of the broader concepts. To aid with understanding the context a summary of the hierarchy is displaed when you hover over any concept that is below a top concept.

It may also be useful to adjust the display panels and there are various options to do this, which are accessed at the top of the hierarchy.

If you have expanded the hierarchy in multiple places and want to collapse it, you can do this by clicking on the Image icon.

For deep taxonomies you may want to use more screen space to display the hierarchy. The width can be altered by clicking on the Image icon. You can adjust the width up to three levels, after which the next click will return it to normal width.

Sometimes it is easier to work with just the hierarchy in view to simplify the display. To do this click on the Image icon. To return to the normal view click the icon again.

Concepts

Concepts shows a filtered set of the concepts in the taxonomy. This view can be very useful if you just want to look at particular concepts that have labels that match a string of text, or simply want to quickly look at some concepts.

Image

As concepts can be removed from the hierarchy of a taxonomy this potentially leaves them disconnected from that hierarchy. That is, the concepts are still in a concept scheme but not 'positioned' as such. You can still find and view these concepts. However, if you want to explicitly see which concepts are not positioned you can select the 'Unused Concepts Only' option.

Labels

Labels is the list of SKOS-XL labels available within your taxonomy. The number of labels can get extremely large. For instance, the Agrovoc project has over seven hundred thousand labels across dozens of languages. Below is an example image of Agrovoc labels. Labels are language specific and the language filter allows you to select which language you want to choose from.

Image

Controlling the language you are viewing

For projects using multiple languages it can be useful to switch the viewing language. This can be done using the language selector at the top right of the screen.

This controls various aspects of the editor. The hierarchy will reflect the language, as will the search and for certain dialog boxes the language will default to the viewing language.

If text in the viewing language is not available the view will try and use the default project language. Where the viewing language is not available the screen will highlight items in orange to indicate this information is not available.

Changing the IRI of a concept or label

IRIs should be persistent if at all possible. Changing IRIs can cause problems because they are unique identifiers for resources and changing a unique identifier can break any connection to it. You should do whatever you can to avoid needing to change IRIs.

However, it may be that you do need to change an IRI, possibly because a legacy IRI has been imported, or that the IRI generated by Graphologi isn't exactly as you would like.

You can change the IRI of both concepts and SKOS-XL labels. The approach is the same for either. Click the Image on the right hand side of the screen. This will display a dialog box as in the following image.

Image

Update the IRI in the 'New IRI' field to that value that you want. This must not clash with any existing IRI that the system has and a check will be run.

Most IRIs will probably use the base IRI of the taxonomy. To copy this value click the Image and then add the additional part of the IRI for the concept or label.

There are two approaches to applying changes to IRIs within Graphologi. The original method simply recorded a change and in many parts of the application automatically displayed or exported the change even though the underlying IRI for the resource did not physically change (meaning that SPARQL queries and some API calls did not 'see' the new IRIs easily). This option is still available. However, the default is now to apply the change permanently. The 'Make All Changes Permanent' option is selected by default. If you leave this checked then the system will physically update this IRI and any other IRIs not permanently changed. This operation is a batch operation and so the project will be locked whilst this happens.

When applying IRIs permanently there are several points to keep in mind:

  • Any history for resources with updated IRIs will be wiped. Essentially the new IRIs are treated as new resources from a history perspective.
  • There are potential impacts for linked taxonomy projects. Please see the section below for more information.

You can view any old IRIs in the 'IRI History' panel of the concept.

Linked taxonomy projects

By default it is only possible to make links within a single project. However, it may be desirable to allow connections to other projects.

For details on how to link projects please see: Viewing and managing information about a taxonomy.

When there are linked projects it then becomes possible to use them for the SKOS match properties and ontology relationships. An additional tab will be available on certain dialogs with the title 'Linked projects', similar to the image below.

Image

There are certain important constraints to keep in mind when using linked projects:

  • A user must have access to the linked projects to be able to make connections to it. If they do not and there are connections to it they will simply see IRIs in the display and these will be treated as external links for that user.
  • If a linked project contains any SKOS-XL based concepts these will only be found if the project you are linking from is SKOS-XL enabled.
  • If a resource in a linked project is deleted that will not remove the connection in the source project. It is a manual task to remove these connections. Note that we recommend deprecating resources rather than deleting them because this ensures the persistence of IRIs, which can be helpful in situations such as this.
  • If a linked resource has its IRI edited in a non-permanent fashion the application will display the edited IRI. However, if IRI changes are made permanent, which is the default setting for Graphologi, then connections to those resources will not be updated. It is a manual task to do this. You can use the SPARQL console to find out any connections that may be impacted by an IRI change.
  • If a linked project is subsequently removed any connections to it will remain and be treated as external links.

Linked data

There are many useful linked data sources available on the web. One of the most popular is DBpedia, which contains a wealth of information. It is possible to make connections to DBpedia (English version) within Graphologi by selecting the DBpedia option for a taxonomy. For details on how to do this see: Viewing and managing information about a taxonomy.

When this option is selected it then becomes possible to use DBpedia for the SKOS match properties and ontology relationships. An additional tab will be available on certain dialogs with the title 'DBpedia', similar to the image below.

Image

Please note that DBpedia search is not range aware.

Once you have made connections to DBpedia resources you can see more information about them by clicking on the chip. This will display a dialog similar to the following image:

Image

Viewing and managing information about a taxonomy

When you click on the down arrow next to the taxonomy title the management view will be available in a similar way to the following image.

Image

The various tabs allow you to do the following:

  • Edit details about the taxonomy. The submenus here are 'Core', for the standard metadata and settings and 'Advanced Metadata', which will display any properties configured via property templates.
  • View the RDF triples for the taxonomy.
  • View statistics about the taxonomy such as concept count.
  • Run quality checks on the taxonomy.
  • Export the taxonomy.
  • View a list of deprecated concepts.
  • View suggestions for the taxonomy.

Detail

You can edit the title and description of the taxonomy. You can add additional titles and descriptions in any of the project languages. The title in the default language cannot be removed.

Note the IRI of the taxonomy, the slash/hash pattern option and the IRI format option are fixed once a taxonomy is created and cannot be edited.

Depending upon the project setup you may see additional options as in the following image:

Image

If workflow is available for your subscription you will see an option to activate for the taxonomy.

If SKOS-XL is enabled there will be an option to use XL labels as the default for new concepts.

If there are associated ontology projects you can set the default classes for new concepts (including those created via suggestions) by clicking on the Add icon in the 'Classes for New Concepts' panel. Start typing the name of the class you want to add. A list of matching classes will be displayed. You can only select from classes that are associated. For more information on associating ontologies with taxonomies please see the section Configuring ontologies for taxonomy projects

By default all the SKOS properties are displayed for a concept. This can sometimes cause unnecessary screen clutter if the properties are not used for a taxonomy. If you want to hide certain properties from the view you can do this in the 'Hide Properties from View' panel by selecting those that you do not want to be visible. Note that this option is also available for collections.

By default it is only possible to make relationships within a project. However, in some circumstances it is useful to be able to make connections to other projects. You can add a linked project by clicking on the Add icon in the 'Linked Taxonomy Projects' panel.

You may want to create links to an external repository. Currently you can link to DBpedia, which is like a semantic version of Wikipedia. To allow links to DBpedia check that option.

Graphologi will set the default IRI options for a taxonomy when you create it. However, sometimes you may want more control over the creation of IRIs.

In the 'IRI Options' panel you can adjust the following for label based IRIs:

  • Whether or not the IRI editing box should appear by default when creating concepts or SKOS-XL labels. By default if will be hidden and there will be a toggle that users can use.
  • It is not always desirable to have spaces in IRIs. Graphologi will escape them by default, but if you want them removed check the 'Remove Spaces' option.
  • Alternatively, rather than remove spaces it may be desirable to replace them. If you check the 'Replace Spaces' option then spaces will be replaced with hyphens. Note that the removing spaces takes priority over replacing spaces.
  • In a similar way it is not always desirable to have 'special' characters in IRIs. You have options to remove or replace these by checking the appropriate options.
  • Certain characters need to be escaped in IRIs in order to not cause issues with reserved characters. By default Graphologi minimises encoding to only those essential characters. If you wish to encode a wider range of characters uncheck this option.

If SKOS-XL is enabled then further options are available:

  • By default Graphologi will prepend SKOS-XL labels IRIs with 'label-'. You have the option to stop this happening or to change the prepended text. (Note that Graphologi will still insert a hyphen if text is used).
  • Also, by default Graphologi will append SKOS-XL label IRIs with a hyphen and the language code of the label. You can stop this happening by unchecking the applicable option.

The default behaviours for SKOS-XL labels are there to try and avoid unnecessary IRI clashes. For instance, if the default SKOS-XL label behaviour was not in place then a concept and its label would potentially generate the same IRI. If you turn off the prepend or append options clashes will be more likely.

You can tell Graphologi to handle IRI clashes for SKOS-XL labels automatically by checking the appropriate option. This will append a random sequence of characters to the generated IRI to ensure it is unique. Using this options still allows a user to edit the IRI if they want to.

Triples

Display all of the triples that exist for the resource. Note that for imported data there may be additional data that shows up here that is not editable in the application. If there is data which is not editable there will be a Image icon for each row, allowing you to remove those triples.

Image

History

This allows you to view all changes made to the taxonomy (concept scheme). (Note that history for each concept can also be viewed separately in the detail view for a concept.)

Within this view you can control the scope of history to show only changes to the concept scheme resource itself, or for all changes to resources related to the concept scheme.

Image

You can refine the details of what is shown by a date range and by a user. To filter by date simply select the start and end dates that you wish to see using the 'Date Range' filter. To view history only for a particular user select that user.

The history view contains a lot of detail, which can make it difficult to view easily on smaller screens. You can reduce the number of columns displayed by clicking on the Image icon and selecting those columns that you wish to view.

History can also be downloaded in either TSV or JSON format by clicking on the Download button and selecting the required format. The filters on date range and user also apply to any downloads.

Statistics

This displays concept and SKOS-XL label counts and individual language counts for preferred and alternative labels. A typical example output is shown below.

Image

Quality

This runs a set of checks that cover various aspects that are generally accepted as SKOS mandated guidelines for taxonomies, plus some further checks. Note that, in general, Graphologi will not permit actions that cause quality violations. However, the quality checks are there as a fallback to reinforce that.

Where there are quality issues they will be presented similarly to the following image.

Image

Export

Please note that this option is for exporting a particular component of a project. If you want to export an entire project please see the relevant section of the manual.

There are two different methods available for exporting data - export as RDF or generate a TSV (tab-separated values) file. By default you are shown the 'Download Data' option, which is for exporting RDF. If you wish to generate a TSV click on 'Generate TSV'.

Image

'Concept Scheme' is a full RDF download of the data for the concept scheme (taxonomy). If the project has SKOS-XL enabled you will be able to select whether to include XL labels. Simply select the RDF format in which you require your data and click the Download button.

The 'Generate TSV' option allows you to completely customise the output by selecting which columns you want and in which order. You can also, if required, add a header row. As export is something you may want to do more than once you can also save a configuration as a template to use again at a later date.

When you first go into the TSV option you will see the template selection screen. Click on the blank template to begin.

Image

You can now start to add columns for your export. Select the property you want in the column. The special value 'Hierarchy' will include the hierarchy of the taxonomy. Note that although this only displays as one column (to avoid the display getting too complicated) in the actual TSV output multiple columns will be generated to reflect the actual levels in the taxonomy. If the property is language based you can select the language you want for that column. For example, you may want to add a preferred label column in English and another in French.

If you want to include a header row check the 'Include Header Row' option.

Image

Once you have added a few columns your screen will look similar to the following.

Image

Where possible the display will give you examples from the actual data to help show you what will be in the output.

If you need to change the order of the columns you can drag them around or, to switch any two columns, click on the Image icon.

When you are happy with your setup click the Generate button to create and download your TSV file. Note for very large amounts of data this may take a little time.

To save your setup click on the Save as Template button. You can give your template a name. The template will then be displayed on the template selection screen.

To throw away any setup and go back to the template screen click on the Discard button.

Lifecycle

What appears on the Lifecycle tab will depend upon whether workflow is activated or not. The 'Deprecated' tab will always appear. If workflow is activated additional tabs will be displayed. See Viewing concepts and labels with particular statuses for more details.

The 'Deprecated' tab displays a list of all deprecated concepts, which you can filter by label name and language. Note that links to concepts will show in orange. You can click on the concept to go to the detailed view for it.

Image

Suggestions

This displays a summary of all the suggestions across the taxonomy as a whole. The source concept for each suggestion will be shown and you can click on this to go to the detailed view for that concept. There you can see the full details of the suggestions including any discussion.

Managing concepts

Within Vocabulary Manager concepts play a central role. A concept is a SKOS Concept and all of the SKOS properties for a concept are supported, along with SKOS-XL as well.

When viewing a concept you will see a screen similar to that below (where the example is from the UNESCO thesaurus).

Image

There are a few notable things to point out.

  • Each concept has a unique IRI. Within Vocabulary Manager IRI generation is currently based on either the label used when a concept is created or an automatically generated unique identifier.
  • There can be multiple languages for a concept's data. All language based properties support this, such as preferred or alternative labels, notes and definitions.
  • A concept will have at least one class - skos:Concept. If the Ontology Manager is being used you will potentially have access to additional classes.
  • In most places within the application you can click on concept links/labels to navigate to that concept or label. In the screenshot above clicking on one of the narrower concepts will take you to the detail view for that concept.

Add a top level concept

To add a top level concept click on the Image icon on the left of the screen (or use the keyboard shortcut Alt+N). This will display the following dialog box:

Image

Enter a preferred label. The language for the label will be the default project language. You can add additional labels in other languages, if configured, once the concept is created.

The preferred label must be unique within the concept scheme (taxonomy). You will see a prompt if it is not.

If SKOS-XL is enabled for the project you can select the option to create the label as a SKOS-XL label. Additionally, if your entered label matches an existing unused SKOS-XL label you will be prompted as to whether you wish to use that unused label rather than create a new label.

If you wish to edit the automatically generated IRI for a concept (and its SKOS-XL label if appropriate) you can do so by selecting the 'View/Edit IRI' option (it may already be selected if set at the taxonomy level). The edited IRI must be unique within the project. Graphologi will not allow you to proceed until a unique IRI is entered.

To add the concept click Add. If you are entering a large amount of concepts you can click Multiple (or use the keyboard shortcut Ctrl+Enter), which will add the concept and keep the dialog box open ready for you to add another concept.

If you have selected to create or use a SKOS-XL label for your concept this will appear in a different way to a standard label, as in the example image below:

Image

You can click on the label to jump to its detailed view page.

If you wish to convert the SKOS-XL label to a normal SKOS label click on the Image icon. This will replace the SKOS-XL label with a label property, but does not delete the SKOS-XL label. If you wish to remove the label for the concept click on the Image icon, which again does not delete the label but merely removes it from the concept.

Reuse an existing concept

The approach is similar to above but, as you type, suggested concepts will appear similarly to the following image. If you have multiple taxonomies in your project you will have access to the concepts in the other taxonomies when adding a top concept. Further, you will also be able to make use of any free-floating concepts within the project.

Image

If you wish to use an existing concept click on it. You may already see that some concepts have been detected as conflicting and these will be highlighted red.

Even though suggestions may appear you can ignore them and create a new concept. There is the choice to reuse an existing concept (by clicking on it) or create a new concept by clicking Add.

Concept schemes (inScheme)

Where a concept is reused from another taxonomy (concept scheme) it will be added to the current taxonomy. This will mean that the concept is in two concept schemes. You will see information similar to the below example for Egyptology, where the 'In Scheme' panel shows the two concept schemes.

Image

It also means that a concept is potentially narrower to multiple concepts across multiple concept schemes. This is perfectly fine. However, it is possible that you include a concept from another scheme that itself has narrower concepts. These will not be added to the current concept scheme, but will be displayed with a grey background. For example, in the screenshot below 'Adult education institutions' has been added to the current concept scheme but its narrower concept has not been added to the scheme (i.e. no skos:inScheme property is created for it).

Image

It is possible to add these free-floating concepts to the scheme. If you hover over the concept you will see an image similar to the following image.

Image

Click on the Add to scheme icon to add it to the concept scheme.

It is also possible to add all concepts in the hierarchy to the concept scheme in a single operation. This can be done by clicking on the Bulk add to scheme icon on the taxonomy home page, located towards the right-hand side of the screen.

Polyhierarchy vs monohierarchy

By default Graphologi is in polyhierarchy editing mode, allowing a concept to have multiple broader concepts. The mode can be changed to monohierarchy by clicking on the Add icon. The mode icons are on the left-hand side of the screen as in the following image.

Image

When in polyhierarchy mode adding narrower or broader relations creates an additional relationship. Any existing relationships will remain. In monohierarchy mode adding a broader relationship will replace any existing broader relationships.

It is also possible to set the editing mode for the taxonomy as a whole. This is done in the taxonomy detail view, as shown in the example image below. In that view you will see a panel called 'Editing Mode'. By default it is set to Flexible, meaning that the user can adjust the mode as described above. If the mode is set to Polyhierarchy or Monohierarchy then the mode is set for the entire taxonomy and the buttons above will not be available.

Image

If in Monohierarchy mode an additional quality check is also run.

Add a narrower concept

Adding a narrower concept can be done in one of three ways. The first is by hovering over the concept label in the hierarchy view. This will display icons for breaking the link to the parent concept and adding a new narrower concept as shown in the following image. Click on the Confirm icon. You will see the same dialog box as above.

Image

Alternatively, you can drag existing concepts from the hierarchy on to relations on the right of the screen or within the hierarchy itself.

Finally, you can click on the Add icon in the 'Narrower' panel. This will allow you to search for concepts within the taxonomy. Click on the desired search result to add it.

Image

In the same way as for top concepts, it is also possible to reuse existing concepts. The approach is the same.

Remove a top or narrower concept

To remove a concept, either at the top level or a lower level, click on the Image icon. You will be asked to confirm the action. A quick way to do this is to use Alt+click which bypasses the confirmation. Alternatively, for narrower concepts, you can click on the cross in a concept's label such as Image in the 'Narrower' panel.

Note that breaking the link does not delete the concept, even if not used anywhere else - it simply removes it as a narrower concept of the parent concept. The concept will still be available to use.

Deprecate a concept

It may be that over time certain concepts become obsolete. However, if these concepts have been used then their identifiers - IRIs - may need retaining. Deprecating a concept allows you to indicate that a concept should no longer be updated or used without removing it from a concept scheme.

To deprecate a concept click on the Image icon on the right of the screen.

Deprecated concepts can no longer be edited and new relationships to them can no longer be formed.

If you realise that a concept has been deprecated by mistake you can simply undeprecate it by clicking on the Image icon on the right of the screen.

Delete a concept

To delete a concept click on the Image icon on the right of the screen. Note that once a concept is deleted it cannot be reused.

Editing a concept's labels

To change a label click into the text and start editing. You will be shown any matching labels as you type in a similar way to the following image. If your label is acceptable (that is, does not clash with other labels), a Confirm icon will be shown on the right of the field. Click to confirm the change.

Image

To abandon a change simply click away from the field.

Add preferred, alternative and hidden labels

To add additional labels click on the Image icon in the appropriate label panel.

This will display a dialog box where you can select the language you want for the label and a field to type the label text. For preferred labels only languages that do not already have a label will be available to choose from as SKOS only permits one label per language for preferred labels.

Image

Options for creating or reusing existing SKOS-XL labels are available in the same way as for adding concepts.

Labels must be unique within a concept for preferred, alternative and hidden labels. If you enter text that clashes with an existing label of one of these types you will see a warning.

Alternative label promotion and conversion

Sometimes existing data might need to be reorganised. Graphologi provides you with some features that work specifically with alternative labels

The first feature is promotion of alternative labels to preferred labels. You can do this by simply dragging an alternative label into the 'Preferred Labels' panel. If a preferred label exists in the same language it will be demoted to an alternative label. Note that you cannot promote an alternative label where it will cause a clash with a preferred label on another concept.

The second feature is the ability to convert alternative labels into narrower concepts. This only applies to labels in the default project language as all concept creation within a taxonomy must have a preferred label in the default language in Graphologi. To do this simply drag the label into the 'Narrower' panel. As long as no other concept has a preferred label that matches the alternative label a concept will be created.

Finally, where multiple languages are used in a project, it is common to also have alternative labels in those languages. If, for instance, you have made a default language alternative label into a narrower concept you may want to put the translations on to that concept. Simply drag the label onto the concept and it will be added as an alternative label. In a later release the option as to whether it becomes a preferred or alternative label will be made available. For now, to promote them to preferred labels you will need to click through to the concept and promote them as mentioned above.

Add broader, narrower or related relationships

To add relationships click on the Image icon in the appropriate relationship panel.

This will display a dialog box where you can start to type the name of the concept label that you wish to add. Potential matching labels from within the same taxonomy (concept scheme) will be displayed in a similar fashion to the image below. Click on the label that you wish to add.

Image

Add broader, narrower, close, exact or related match relationships

These relationships are used to connect together concepts from different taxonomies (concept schemes).

To add matches click on the Image icon in the appropriate relationship panel. This will display a dialog box where you can start to type the name of the concept label that you wish to add. Potentially matching labels will be displayed. Click on the label that you wish to add.

You can also type an IRI directly into the field, which allows you to make connections to resources outside of Graphologi.

Adding definitions, examples and notes

To add a definition, example or note, click on the Image icon in the appropriate panel.

This will display a dialog box where you can select the language and a field to enter the actual text. This will look similar to the image below.

Image

Note that you can enter multiple lines for these properties. Simply hit the Enter key to add a new line.

View the underlying RDF triples

To view the underlying triples for a concept click on the Image icon. This will display a table of triples similar to the following image.

Image

The history of changes

To view or download the details about the changes for a concept click on the Image icon. This will display a table of history similar to the following image. You can filter by a date range and/or by a particular user.

Image

Import (Merge data)

To import a subtree (a subtree is a hierarchy of narrower concepts) into a concept click on the Image icon. This can be done at the top level of the taxonomy on the taxonomy home page, where the icon is on the right of the screen, or, for a concept, where the icon is displayed to the left of the concept details.

Select a spreadsheet, TSV or CSV file and then click Next.

The base language of the text within the file will be assumed to be the same as the default project language. It is used as the basis for computing the hierarchy of the data.

The base IRI is assumed to be that of the taxonomy being imported in to. This will form the first part of the IRIs that Graphologi will generate for your taxonomy.

The taxonomy being imported into will also be used as the basis for whether to use slash or hash IRIs and whether UUIDs or labels will be used for IRIs.

The next step is to map the data in your file. If you have a header row in your file select 'Ignore Header Row'. If your project is SKOS-XL enabled you will also have the choice to generate labels as SKOS-XL. This will apply to any preferred, alternative or hidden labels.

By default the first five rows or your data are displayed for preview. You can increase this by changing the value on the right of the screen. Note that the limit on the number of rows you can import depends upon the subscription type.

The next step is to map the columns in the file to properties in Graphologi. You only need to map the columns that you want to import. There must be at least one column that is a preferred label in the default language. A simple example is given in the following screenshot:

Image

You can map concepts to each other using the SKOS related property. If a project has associated ontology projects then it will be possible to map classes and properties from that association. This includes both object (relationship) properties and datatype properties. For those properties that are relationships you need to select the cross-reference. This can be either a preferred label or a particular column. There is also the option to cross-reference a preferred label in another taxonomy within the project, allowing you to make links across taxonomies. The labels for this must be in the default project language. Also, note that cross-referencing across taxonomies is range aware, meaning that, if a range is on the property, then for the relationship to be created the target concept must have an appropriate class.

For example, if you have a column in your spreadsheet that you want to map to an associated 'Connected to' property and the values in that column are the preferred labels of the target concepts, select 'Preferred Label' as the cross-reference. In the example below column 3 is being mapped to the 'Connected to' property. The cross-reference is using preferred labels. In this example it means that 'Burger' would be connected to 'Steak' and 'Chicken burger' would be connected to 'Chicken'.

Image

If a column contains values from another column such as unique identifiers select that column as the cross-reference. In the example below column 4 is being mapped to the SKOS related property. The cross-reference is using the unique values in column 1. In this example it means 'Burger' would be related to 'Steak' and 'Chicken burger' would be related to 'Chicken'.

Image

Cross-reference columns do not have to be included in the import.

If a value in a cross-reference column does not exist in the spreadsheet Graphologi will try to find a matching value in the existing concepts of the taxonomy. This allows you to create relationships to concepts not in the spreadsheet.

Points to note:

  • For boolean properties the acceptable cell values are 'true', 'false', 'yes' and 'no'. These are case-insensitive.
  • For other datatype properties the cell value must be acceptable for that datatype.
  • For mapping to classes the cell value must exactly match the label of the class.
  • Cross-reference values must exist or an error will be reported.

The import is actually a merge. If there are rows in the spreadsheet that match with existing concepts then any cells with values will be added to any existing values. No existing data is removed.

Once you have done the mapping click Upload. The import will start. On successful completion you should see a Finish button, which, on clicking, will update the screen. If errors occur on import you will need to fix the data before attempting to import again.

Import is case insensitive for preferred labels. That is, if 'car' is in the spreadsheet and an existing concept has the label 'Car' the existing concept will be used. It is also possible to import cyclical references if they exist in the data, which will be reported via quality checks.

For more details on importing spreadsheets see the section on Importing data into a project.

Export

To export a concept or its subtree click on the Image icon. This will display options to download a concept, and if it has narrower concepts, its subtree. A subtree includes all the narrower concepts for a concept.

If a project is SKOS-XL enabled you will be able to select whether to include XL labels. Simply select which download you require and the RDF format in which you require your data and click the Download button.

Positioning

To view how a concept fits into the hierarchical structure of the project click on the Positioning icon. This displays the paths down to a concept as well as some statistics about the position of the concept. For polyhierarchical taxonomies this can be very useful to see the different locations of a concept.

Image

You can 'jump' to a particular location in the hierarchy on the left by clicking the corresponding chip in the positioning view.

Visualising concepts

There are situations where it is much simpler to see data in a visual manner. This is especially true when looking at connections across a graph, such as concepts related to other concepts. Graphologi provides a visualisation feature to help you understand how your data is connected.

Visualisation can be accessed for a concept by clicking on the Show visualisation icon. This should display something like the following image:

Image

On the left are the SKOS properties (the connections) that will be displayed by default. You can deselect those that you are not interested in, which can help simplify the image when there are many relationships. If there are additional relationships other than SKOS, such as those from an ontology, those will be displayed below the SKOS properties similarly to the following image:

Image

You can zoom in to the visualisation by clicking on the Zoom In icon and zoom out by clicking on the Zoom out icon. Zoom in has four further levels from the default. Zoom out has just one level from the default. You can also drag the image around.

To hide the properties panel click on the Hide props icon. Click on it again to show the panel.

To reset the visualisation click on the Reset icon.

To expand the visualisation to include more concepts click on a concept that you would like to include. You can click it again to exclude it. The layout of the visualisation will manage itself to a certain degree. However, for complex data you may want to adjust it yourself. You can do this by dragging concept icons around.

To add inbound links to a node use Ctrl+Click.

Note that there is a limit of 100 connections per relationship. Beyond this you will be notified that this is the case.

Managing labels

Vocabulary Manager provides support for SKOS-XL. A concept is a SKOS Concept and concepts have labels. Labels may be direct properties on a concept such as a preferred label. However this restricts the ability to state information about the label, such as its origin, the date it was added or its relationship to other labels. SKOS-XL labels are first class resources in their own right which means that additional information can be stated about them. However, out of the box SKOS-XL itself does not provide much in the way of relations to do this. It only has skos:labelRelation as a generic relationship. Currently Vocabulary Manager does not support this because its generic semantics makes it of little use.

To get full use of SKOS-XL labels will generally mean using the Ontology Manager functionality. The Ontology Manager allows relationships to be created that can then be used on SKOS-XL labels.

To view the labels for a taxonomy click on the Labels tab. This will display a list of labels with an initial filter applied. Click on a label to view its detail. An example of how this will look is given in the following image.

Image

Filtering labels

A project may contain many labels. For example, Agrovoc has over 700,000 labels in multiple languages. This generally makes it impracticable to display all labels for a project. Therefore, a filter box is provided where you can type a few letters for labels you are looking for. You can also select the language. Hit enter after typing some text to apply the filter.

Add a label

To add a label click on the Add icon on the left of the screen (or use the keyboard shortcut Alt+N). This will display the following dialog box:

Image

Select a language for the label and enter the text for the label. A label only has one 'literal form' (skos:literalForm).

If you wish to edit the automatically generated IRI for a label you can do so by selecting the 'View/Edit IRI' option (it may already be selected if set at the taxonomy level). The edited IRI must be unique within the project. Graphologi will not allow you to proceed until a unique IRI is entered.

To add the label click Add. If you are entering a large amount of labels you can click Multiple (or use the keyboard shortcut Ctrl+Enter), which will add the label and keep the dialog box open ready for you to add another label.

Delete a label

To delete a label click on the Delete icon on the right of the screen.

Editing a label's literal form

To change the literal form of a label click into the text and start editing. You will be shown any similar labels as you type in a similar way to the image below, and, if your label is acceptable, a Confirm icon will be shown on the right of the field. Click to confirm the change.

Image

To abandon a change simply click away from the field.

Free-floating labels

It is possible that a label used on a concept is not in any concept scheme, even if the concept to which it is related is. If this is the case you will see something similar to the following image.

Image

To add the label into the current concept scheme click the Add to scheme icon.

Additional features

Similarly to a concept you can also view the underlying label triples or its history of changes by clicking on the appropriate icon.

Collections

Collections in Vocabulary Manager give you the ability to create ordered or unordered collections of concepts compliant with the SKOS standard.

A collection in Vocabulary Manager can consist of any number of concepts from any of the taxonomies available within the same project as the collection.

Create a collection

When creating a new ordered collection you will be presented with a dialog box as below:

Image

A new collection requires various pieces of data to be completed. Enter a title for your collection. The language for the title will be the default project language. Languages in Vocabulary Manager are generally indicated as follows, Image with a circle containing a BCP-47 language code.

A collection needs an IRI (Internationalised Resource Identifier). For those not familiar with IRIs they are essentially the same as URIs, which are similar to URLs. IRIs can contain characters from Unicode that are not available to use in URIs.

The IRI for a collection must be unique within all the data stored in a project. If the IRI you have entered is unique you will see a confirmatory tick.

You can choose whether the collection is ordered or unordered.

Finally, you can optionally add a description for your collection.

Click Add to create the collection. You will see your collection added to the list similarly to the following image.

Image

Collection editor overview

When you first create a collection and start to edit it you will be presented with a screen as below:

Image
Collection

The Collection tab, on the left of the screen, shows the concepts in the collection in a flat ordered view.

Image
Viewing and managing information about a collection

When you click on the down arrow next to the collection title the management view will be available in a similar way to taxonomies.

Managing collections

Add a concept

To add a concept to a collection click on the Image icon on the left of the screen (or use the keyboard shortcut Alt+Ctrl+F). This will display a dialog box similar to the following image. Start typing text to search for concepts. As they are found the dialog will display them similarly to the image below.

Image

Select the concept that you want to add. The concept will be added to the end of the collection.

Add a concept from taxonomy view

To add a concept to a collection when in the taxonomy editor, click on the Image icon on the right of the screen. This will display the following dialog box, from which you can select the collection to add the concept to.

Image

The concept will be added to the end of the collection.

Move a concept within a collection

If the collection is ordered you can reorder the concepts within it. To move a concept drag it from its position in the list on the left to the new desired location.

Remove a concept from a collection

To remove a concept click on the Image icon.

Identifying which collections a concept is a member of

When a concept is in a collection you will see a collection link in the detailed view for the concept. This shows each collection and the position of the concept in that collection in a similar way to the following image.

Image
View only

Note that when in the collection view concept data is view only. Only within the context of a particular taxonomy can the data be edited.

Suggestions

The ability to make suggestions for a taxonomy can be an important part of its lifecycle and governance. To support that the Vocabulary Manager provides the means for users on a project to contribute via creating suggestions and commenting on them.

Image

Various types of suggestion can be made:

  • Add a new top level concept.
  • Add a new narrower concept for an existing concept.
  • Move a concept.
  • Remove a concept from a particular location in the hierarchy.
  • Deprecate a concept.
  • Fix the spelling of a concept.
  • Adjust the terminology of a concept.
  • Split a concept.

To add a suggestion click Add Suggestion. You will be presented with a dialog box similar to the following image:

Image

Select the type of suggestion you want. The options will be similar to the following image if making a suggestion on a concept. For the taxonomy home page only new concepts can be suggested.

Image

If you want to assign a suggestion to a particular user you can select the user from the 'Assign To' panel. Note that assignment is only available in Premium and above subscriptions.

To add the suggestion click the Add button, or the Add and Notify button if you wish to notify the assigned user. In the latter case the user will be sent an email with a link to the concept the suggestion is for.

When a suggestion is first made it is in the 'open' workflow state. On concepts you can see how many open suggestions a concept has on the suggestion icon, as in the following image.

Image

By default only open suggestions are displayed. You can view suggestions with other statuses by selecting the appropriate status from the drop-down menu.

Users with permissions will be able to add comments and those with permissions will be able to accept or reject suggestions. Suggestions are always displayed, even after acceptance or rejection, allowing you to review past decisions. By default the 'Reviewer' role has been configured to allow a user to only view most data but to make suggestions and add comments to suggestions.

When a user accepts or rejects a suggestion they have the opportunity to add a note justifying the decision, as shown in the following image.

Image

If you don't want to add a note you can skip this step. At this point, if the project is XL enabled and the suggestion is for a new concept, it is also possible to decide whether the concept should be added using an XL label or a plain label. Note that, if workflow is activated, any new concept will be created with a draft status.

Further, if the suggestion is for a new concept and you want to edit the automatically computed IRIs that will be used you will have the option to do so.

If a note is added you can see it by expanding the suggestion which will show something similar to the following image.

Image

It is possible that, in the time between a suggestion being made and the suggestion being actioned, the taxonomy may have changed. Graphologi makes a series of checks at various points to make sure that suggestions are still valid.

A summary of all suggestions can be seen by in the taxonomy management view (see the following section for more details: Viewing and managing information about a taxonomy), where it is possible to filter suggestions by their type, by the user making it, or its workflow state (open, accepted or rejected).

Additionally, if there are suggestions assigned to you these can be viewed in the Jobs Manager.

Add a new top level concept

If you are on the taxonomy home page you can suggest a new top level concept. (You can get back to the taxonomy home page by clicking on the taxonomy name in the breadcrumb near the top of the screen.)

Add a new narrower concept for an existing concept

This suggestion type allows you to propose the addition of a new concept as a narrower concept to that on which the suggestion is made.

Move a concept

A concept may be better positioned in a different location in the hierarchy. This suggestion type allows you to propose a new broader parent as in the following image. Note that the following is what you would see when suggesting a move on a top level concept as there are no broader concepts to choose from.

Image

Note that, if the suggested new broader parent is in multiple locations in the hierarchy, the move would result in the moved concept being narrower to that concept in all locations. If you attempt to move a concept that has existing broader relationships you will be asked to select which broader parent it should be moved from.

Remove a concept from a particular location in the hierarchy

A concept may be in an incorrect location in the hierarchy. This suggestion type allows a user to propose the removal from that location. This is equivalent to removing a concept from the hierarchy by clicking on the Image icon. If you attempt to remove a concept that has multiple broader relationships you will be asked to select which broader parent it should be removed from.

Deprecate a concept

If a concept has reached the end of its useful life a suggestion to deprecate it can be made. On acceptance of this type of suggestion Graphologi will actually deprecate the concept. This is equivalent to deprecating a concept by clicking on the Image icon.

Fix the spelling, adjust the terminology or split a concept

These suggestion types are free text suggestions, where the action is left to the taxonomist to apply.

Spelling suggestions are hopefully self-explanatory. They should be used to suggest corrections to labels.

Image

An example of a terminology suggestion might be something like `Change “Sexual Equality between Men and Women” to "gender equity"`.

A split, for example, might be something like `"Social Problems and Offences” should be split into "social issues", and "social crimes"`.

Workflow

Governance is important in managing a taxonomy and part of governance concerns the workflow around the lifecycle of creating and maintaining taxonomies.

Graphologi's workflow feature allows you to have control over the management of the state of taxonomies and the tasks needed to update them.

There are various parts to workflow within Graphologi:

  • activating workflow.
  • being able to batch update the status of all concepts and/or labels in a taxonomy to a particular value.
  • managing the status of concepts (and SKOS-XL labels is applicable) and assigning them to a user to oversee any work.
  • creating, managing and completing tasks associated with concepts and labels.
  • monitoring and completing assignments.
  • reviewing any work that has been done.
  • marking concepts as approved (or rejected).
  • reports on various aspects of workflow.
  • being able to see a summary of which concepts and labels have a particular status.

Activating workflow

Workflow can be activated per taxonomy. This can be done at any time by checking 'Is Activated' in the workflow panel within the taxonomy details screen as shown in the following image. See the section Detail for more information.

Image

Workflow can be deactivated by unchecking the 'Is activated' box. If workflow is deactivated any workflow data is not removed, but will not be visible other than in triples view.

Batch updating of status

There are times when it can be useful to batch update the status of all concepts and/or labels in a taxonomy. For example, after import, or potentially when starting a new cycle of work. There are various batch operations that can be run:

  • Set all concepts to 'draft' status.
  • Set all SKOS-XL labels to 'draft' status.
  • Set all uncategorised resources to 'draft' status. This can be very useful after importing a taxonomy.
  • Approve all concepts and SKOS-XL labels. Note that concepts and labels with outstanding tasks will not be approved.

You can access the operations in the taxonomy details section as shown in the following image.

Image

Managing status and assigning concepts and SKOS-XL to users

A key part of workflow is managing the status of concepts and labels (from here forward assume everything applies to both).

When workflow is activated concepts and SKOS-XL labels will have a workflow bar available, similar to the following image.

Image

Concepts and labels can be in one of four states: 'uncategorised', 'draft', 'approved' or 'rejected'. Graphologi does not enforce any opinion of what these states mean - that is for you to decide.

If a concept is 'uncategorised' the first step is to set it to draft. This is done by clicking on the Image icon. Note that you can, if wanted, immediately set it to 'approved' or 'rejected' instead. To approve a concept or label click on the Image icon. To reject a concept or label click on the Image icon.

Approved concepts and labels cannot be edited. Note that edits to other resources may still update them - for example the use of inverse or symmetric relationships can do this. Rejected concepts and labels are not treated in any special manner, but rejected concepts would most likely either subsequently be marked as deprecated, or they would be deleted.

When a concept or label is in draft mode the workflow bar will look similar to the following image.

Image

Concepts and labels that are in a draft state can be assigned to a user to oversee any work to be done on them. To assign a concept or label click on the Image icon. This will display a dialog box similar to the following image.

Image

You can select from any user that has access to the project. If you leave it as 'Unassigned' then it is essentially available for anyone to pick up. Note that you need to make sure that any assigned users have the necessary permissions to complete their work.

You can include some instructions when assigning to let a user know what you expect them to do.

Click the Assign button to make the assignment. Once a concept is assigned the workflow bar will look similar to the following image.

Image

Creating and managing tasks

It may be that simply assigning a status to concepts and labels provides the necessary control. However, if you need to go further and manage individual tasks for each concept or label, you can do so using tasks. Example tasks might be asking somebody to add synonyms, or creating a definition for a concept.

To view and create tasks click on the Image icon. This will display the Tasks area similar to the following image.

Image

If you have permissions you will be able to create new tasks and, optionally, assign them to users. To add a task click on the Image icon in the Tasks area. This will display a dialog box similar to the following image.

Image

Select a user to assign the task to if wanted. You can always assign a task later on. Enter a description of the task. Click the Create button to complete the creation of the task. The Tasks area will now look similar to the following image.

Image

It is possible that there might need to be a discussion about the task. You can add and view comments for a task by clicking on the Image icon.

When a task is completed click on the Image icon. Alternatively, to reject a task click on the Image. If you want to reassign the task to another user click on the Image icon, which will display a dialog box allowing you to select the appropriate user.

If a task is assigned to a user only they can mark it as done or, alternatively, reject it, if they think the task is inappropriate for whatever reason.

Concepts and labels with tasks can only be approved when all tasks are marked as done (or are rejected). These actions are available to anybody with permission to approve and reject (not just the assignee if there is one).

When a concept or label has been through the approval lifecycle more than once it might be useful to see a list of any previous tasks. You can view (and hide) these by clicking on the Image icon.

History since last status change

As part of the review process it might be useful to see what changes have been made to a concept or label. A summary of the history since the last status change is available by clicking on the Image icon.

Status change history

A summary of status changes for a concept or label can be viewed by clicking on the Image icon.

Viewing concepts and labels with particular statuses

It is possible to view a summary list of concepts and labels in particular statuses using the 'Lifecycle' tab in taxonomy details. Within the lifecycle tab select the lifecycle state that you want to view - 'Deprecated', 'Uncategorised', 'Draft' or 'Rejected'. The view will be similar to the following image, which shows some uncategorised concepts

Image

Monitoring assignments

To keep track of work that is assigned to you and to view work assigned to others you can use the Jobs Manager. This can be accessed by clicking on the Image icon on the left of the screen. This will display a screen similar to the following image.

Image

There are tabs for 'workflow', 'tasks' and 'suggestions'.

By default the view shows assignments for you across all taxonomies within a project. You can filter the results using the filters at the top of the screen.

On the 'Workflow' tab you have the option to view concept or SKOS-XL labels (if applicable). You can filter these by using the available filters. You also have the option to approve a concept or label if there are no outstanding tasks for it. If there are tasks these are displayed, with counts, as a coloured bar as shown in the screenshot above, where orange is outstanding tasks, green is completed and red is rejected. There is also the option to reassign a concept or label to another user.

On the 'Tasks' tab any outstanding tasks are listed (those that are still pending), which will look similar to the following image.

Image

You have the option to reassign tasks to other users.

Although suggestions are not directly connected to workflow being activated it is useful to be able to see which suggestions are assigned to users. Select the 'Suggestions' tab to do this. You should see a screen similar to the following image.

Image

You have the option to reassign suggestions to other users.

Workflow reports

There are some predefined reports available to help with analysing workflow. These are:

  • 'Taxonomies with Unapproved Resources' - taxonomies with workflow activated and that have unapproved concepts or XL labels.
  • 'Workflow Assignments' - the assignment of draft workflow tasks across project users. This might be useful to work out whether there is too much assigned to particular users.
  • 'Taxonomies with Open Suggestions' - taxonomies that have suggestions that have an open status.
  • 'Approved Concepts with Unapproved XL Labels' - approved concepts in taxonomies with workflow activated and that have unapproved XL labels. This is only applicable if SKOS-XL is enabled for a project.

Permissions

There are multiple entitlements available for workflow and you will need certain entitlements for particular actions.

Entitlement Description

Activate workflow

Allows you to activate or deactivate workflow for a taxonomy.

Initialise workflow

Allows a user to set a concept or SKOS-XL label to a 'draft' status.

Manage workflow

Allows a user to set the status for workflow.

Assign workflow

Allows a user to assign concepts or labels to users.

Batch change workflow status

Allows a user to execute batch workflow changes.

Create task

Allows a user to create tasks (and edit them).

Edit task

Allows a user to edit existing tasks.

View task

Allows a user to view tasks.

Discuss

Allows a user to add comments.

View discussion

Allows a user to view comments.

Ontologies

The Ontology Manager gives you the ability to create ontologies compliant with the OWL2 W3 standard. An ontology can consist of any number of classes and subclasses and properties (object, datatype and annotation).

Multiple languages are supported. The languages available to an ontology are controlled by the project setup.

Create an ontology

To create an ontology you first need to create an ontology project as described in the section on projects.

A new ontology project will look similar to the following image.

Image

At this point you have two options - create an ontology within the application or import an existing ontology.

When creating a new ontology you will be presented with a dialog box as below:

Image

A new ontology requires various pieces of data to be completed. Enter a title for your ontology. The language for the title will be the default project language. Languages in Ontology Manager are generally indicated as follows, Image with a circle containing a BCP-47 language code.

An ontology needs an IRI (Internationalised Resource Identifier). For those not familiar with IRIs they are essentially the same as URIs, which are similar to URLs. IRIs can contain characters from Unicode that are not available to use in URIs.

The IRI for an ontology must be unique within all the data stored in a project. If the IRI you have entered is unique you will see a confirmatory tick.

IRIs for ontologies tend to be in one of two forms - called slash or hash. Slash IRIs are those such as http://example.com/cars/bugattichiron whilst hash IRIs are those such as http://example.com/cars#bugattichiron. Whichever you pick this will generally mean the ontology IRI would be one of the following forms: http://example.com/cars or http://example.com/cars/ or http://example.com/cars#. There is no right or wrong decision whichever option you choose.

Each IRI for a class or property will be generated by the application. However, the form of those IRIs can be controlled in part by selecting either UUID or label forms. Both have their own benefits. UUIDs are free from any language implications and can also remain applicable if, say, the label needs to change. However, label forms tend to be more readable, at least in the default language. The examples above are of the label form.

Once an ontology is created there are further IRI options available. See the section Detail for more details.

Finally, you can optionally add a description for your ontology.

Click Add to create the ontology. You will see your ontology added to the list similarly to the following image.

Image

Delete an ontology

When an ontology is no longer needed you can delete it. This is not always quite as simple as it sounds from a data perspective. If an ontology has been used by taxonomy projects you need to consider the implications of deleting the ontology. The taxonomy project will still work but any ontology classes or properties from the deleted ontology will be highlighted or disabled.

To delete an ontology hover over the entry and then click on the Image icon.

Ontology editor overview

When you first create an ontology and start to edit it you will be presented with a screen as below:

Image

Let us start by explaining the various parts of the screen.

Class/property tree

The class and property tree is displayed on the left of the screen. For a large ontology the tree may get very deep. An example of how a deep ontology looks is shown in the following image.

Image

As ontologies get deep in terms of levels it can be difficult to remember the context of a node in the tree. To aid with understanding the context a summary of the hierarchy is shown when you hover over any node that is below a top node.

It may also be useful to adjust the display panels and there are various options to do this, which are accessed at the top of the tree.

If you have expanded the tree in multiple places and want to collapse it, you can do this by clicking on the Image icon.

For deep ontologies you may want to use more screen space to display the tree. The width can be altered by clicking on the Image icon. You can adjust the width up to three levels, after which the next click will return it to normal width.

Sometimes it is easier to work with just the tree in view to simplify the display. To do this click on the Image icon. To return to the normal view click the icon again.

For situations where an ontology has a large number of classes or properties at any level in the tree Graphologi will start paging these parts of the tree to help keep the user interface responsive. You can navigate between the pages by using the page number or the previous and next page icons.

Class, object, datatype and annotation

These tabs are Classes, Object Properties, Datatype Properties and Annotation Properties.

The Classes tab allows you to manage the ontology classes, whilst the other property tabs allow you to manage the relevant properties of that type.

Controlling the language you are viewing

For projects using multiple languages it can be useful to switch the viewing language. This can be done using the language selector at the top right of the screen.

This controls various aspects of the editor. The hierarchy will reflect the language, as will the search and for certain dialog boxes the language will default to the viewing language.

If text in the viewing language is not available the view will try and use the default project language. Where the viewing language is not available the screen will highlight items in orange to indicate this information is not available.

Viewing and managing information about an ontology

When you click on the down arrow next to the ontology title the management view will be available in a similar way to the following image.

Image

The various tabs allow you to do the following:

  • Edit details about the ontology and manage settings.
  • View the RDF triples for the ontology.
  • View statistics about the ontology such as class count.
  • Run quality checks on the ontology.
  • Export the ontology.

Detail

You can edit the title and description of the ontology. You can add additional titles and descriptions in any of the project languages. The title in the default language cannot be removed.

You can also add additional information, such as version information, comments and notes.

For more information on using annotation properties with an ontology please see Selecting annotation properties.

If you wish to display (or hide) additional properties, such as comments, see also, or SKOS annotations, you can control the display by checking or unchecking values in the 'Hide Properties from View' panel.

Some ontologies may have a lot of top level deprecated resources (e.g. OBO ontologies). This may lead to unwanted numbers of classes or properties being displayed and can slow down the display. You can hide top level deprecated resources by checking 'Hide Deprecated Resources (Top Level Only)' in the 'Viewing Options' panel. Note that for imported OBO ontologies this is set by default.

Note the IRI of the ontology, the slash/hash pattern option and the IRI format option are fixed once an ontology is created and cannot be edited.

Graphologi will set the default IRI options for an ontology when you create it. However, sometimes you may want more control over the creation of IRIs.

In the 'IRI Options' panel you can adjust the following for label based IRIs:

  • By default, when using the label option for IRIs, Graphologi will encode the label using the case of the label. However, in ontologies there is often a pattern of using a lowercase letter to start property names. You can get Graphologi to do this be checking the 'Properties Have Lower Case First Letter' option.
  • It is not always desirable to have spaces in IRIs. Graphologi will escape them by default, but if you want them removed check the 'Remove Spaces' option.
  • Alternatively, rather than remove spaces it may be desirable to replace them. If you check the 'Replace Spaces' option then spaces will be replaced with hyphens. Note that the removing spaces takes priority over replacing spaces.
  • In a similar way it is not always desirable to have 'special' characters in IRIs. You have options to remove or replace these by checking the appropriate options.
  • Certain characters need to be escaped in IRIs in order to not cause issues with reserved characters. By default Graphologi minimises encoding to only those essential characters. If you wish to encode a wider range of characters uncheck this option.

Triples

Display all of the triples that exist for the resource. Note that for imported data there may be additional data that shows up here that is not editable in the application.

Image

History

This allows you to view all changes made to the ontology. (Note that history for each class and property can also be viewed separately in the detail view for that resource.)

Within this view you can control the scope of history to show only changes to the ontology resource itself, or for all changes to resources related to the ontology.

Image

You can refine the details of what is shown by a date range and by a user. To filter by date simply select the start and end dates that you wish to see using the 'Date Range' filter. To view history only for a particular user select that user.

The history view contains a lot of detail, which can make it difficult to view easily on smaller screens. You can reduce the number of columns displayed by clicking on the Image icon and selecting those columns that you wish to view.

History can also be downloaded in either TSV or JSON format by clicking on the Download button and selecting the required format. The filters on date range and user also apply to any downloads.

Statistics

This displays class and property counts. A typical example output is shown below.

Image

Quality

This runs a set of checks that cover various aspects that are generally accepted as not desirable in an ontology. Note that, in general, Graphologi will attempt to not permit actions that cause quality violations. However, the quality checks are there as a fallback to reinforce that.

Where there are quality issues they will be presented similarly to the following image.

Image

Export

Please note that this option is for exporting a particular component of a project. If you want to export an entire project please see the relevant section of the manual.

The export allows you to choose from various RDF serialisations.

Deprecated

This displays a list of all deprecated classes and properties, which you can filter by label name, language and resource type. Note that links to resources will show in orange. You can click on a resource to go to the detailed view for it.

Image

Managing classes

Within Ontology Manager a class is an OWL Class. When viewing a class you will see a screen similar to that below.

Image

There are a few notable things to point out.

  • Each class has a unique IRI. Within Ontology Manager IRI generation is currently based on either the label used when a class or property is created or an automatically generated unique identifier.
  • There can be multiple languages for a class's data. All language based properties support this, such as comments.
  • In most places within the application you can click on class links to navigate to that class.

Add a top level class

To add a top level class click on the Image icon on the left of the screen (or use the keyboard shortcut Alt+N). This will display the following dialog box:

Image

Enter a label. The language for the label will be the default project language. You can add additional labels in other languages, if configured, once the class is created.

If you wish to edit the automatically generated IRI for a class you can do so. The edited IRI must be unique within the project. Graphologi will not allow you to proceed until a unique IRI is entered.

To add the class click Add. If you are entering a large number of classes you can click Multiple (or use the keyboard shortcut Ctrl+Enter), which will add the button and keep the dialog box open ready for you to add another class.

Add a subclass

Adding a subclass can be done in one of three ways. The first is by hovering over the class label in the hierarchy view. This will display icons for breaking a link to the ontology or superclass and adding a subclass as in the following image. Click on the Image icon. You will see the same dialog box as above.

Image

Alternatively, you can drag classes from the hierarchy on to the 'Is Subclass Of' panel on the right of the screen.

Finally, you can add subclasses via the Image icon in the 'Is subclass of' panel or the 'Subclasses' panel, depending upon which direction the subclass relationship is in. This is shown in the following image.

Image

If you have multiple ontologies in your project you can include classes from any of those ontologies as a subclass.

You can also directly enter external IRIs for subclasses. Simply type in the IRI and if it is valid you can add it.

Remove a class from the hierarchy

To remove a class, either at the top level or a lower level, click on the Image icon. Alternatively, for subclasses, you can click on the cross in a class's label in the appropriate panel on the right. Note that breaking the link does not delete the class, even if not used anywhere else. The class will still be available to use.

Deprecate a class

It may be that over time certain classes become obsolete. However, if these classes have been used then their identifiers - IRIs - may need retaining. Deprecating a class allows you to indicate that it should no longer be updated or used without actually removing it from an ontology.

To deprecate a class click on the Image icon on the right of the screen.

Deprecated classes can no longer be edited and new relationships to them can no longer be formed.

If you realise that a class has been deprecated by mistake you can simply undeprecate it by clicking on the Image icon on the right of the screen.

Delete a class

To delete a class click on the Image icon on the right of the screen.

Editing a class's labels

To change a label click into the text and start editing. If your label is acceptable, a Confirm icon will be shown on the right of the field. Click to confirm the change.

Image

To abandon a change simply click away from the field.

Disjoint classes

You can define a class as disjoint with other classes. Click on the Image icon in the 'Disjoint With' panel.

Adding a disjoint class can be done in two ways. You can drag classes from the hierarchy on to the 'Disjoint With' panel on the right of the screen. Alternatively, you can add classes via the Image icon in the 'Disjoint With' panel.

Please note that although you can add disjoint classes Graphologi does not guarantee the consistency and checks will only catch issues in certain scenarios. We will look at adding additional consistency checks in future versions. We recommend running the quality checks as an additional validation if required.

You can also directly enter external IRIs for disjoint classes. Simply type in the IRI and if it is valid you can add it.

Equivalent classes

You can define a class as equivalent to other classes. Click on the Image icon in the 'Equivalent Class' panel.

Adding an equivalent class can be done in two ways. You can drag classes from the hierarchy on to the 'Equivalent Class' panel on the right of the screen. Alternatively, you can add classes via the Image icon in the 'Equivalent Class' panel.

You can also directly enter external IRIs for equivalent classes. Simply type in the IRI and if it is valid you can add it.

Positioning

To view how a class fits into the hierarchical structure of the project click on the Positioning icon. This displays the paths down to a class as well as some statistics about the position of the class. For polyhierarchical class structures this can be very useful to see the different locations of a class.

Image

You can 'jump' to a particular location in the hierarchy on the left by clicking the corresponding chip in the positioning view.

Inbound relationships

It can be useful to see which properties and connected to a class via certain relationships. This is especially true for domain and range, which are relationships that are inbound to a class (i.e. from the property to the class). To view this information click on the Inbound relationships icon.

Image

Additional features

Similarly to a concept you can also view the underlying class triples or its history of changes by clicking on the appropriate icon.

Managing properties

Information applicable to all property types

There are a few notable things to point out.

  • Each property has a unique IRI. Within Ontology Manager IRI generation is currently based on the label used when a property is created.
  • There can be multiple languages for a property's data. All language based properties support this, such as comments.
  • In most places within the application you can click on class links to navigate to that property.

Add a top level property

To add a top level property select the appropriate property tab for the type of property you want to add click the Add icon on the left of the screen (or use the keyboard shortcut Alt+N). This will display the following dialog box:

Image

Enter a label. The language for the label will be the default project language. You can add additional labels in other languages, if configured, once the property is created.

If you wish to edit the automatically generated IRI for a property you can do so. The edited IRI must be unique within the project. Graphologi will not allow you to proceed until a unique IRI is entered.

To add the property click Add. If you are entering a large amount of properties you can click Multiple (or use the keyboard shortcut Ctrl+Enter), which will add the button and keep the dialog box open ready for you to add another property.

Add a subproperty

Object and datatype properties allow subproperties. Adding a subproperty can be done in one of two ways. The first is by hovering over the property label in the hierarchy view. This will display icons for breaking a link and adding a subproperty as in the following image. Click on the Add icon. You will see the same dialog box as above.

Image

Alternatively you can drag properties from the hierarchy on to the 'Is Subproperty Of' or 'Subproperties' panel on the right of the screen, depending on which direction the subproperty relation holds.

If you have multiple ontologies in your project you can include properties from any of those ontologies as a subproperty.

Remove a property from the hierarchy

To remove a property, either at the top level or a lower level, click on the Image icon. Alternatively, for subproperties you can click on the cross in a label in the 'Is Subproperty Of' panel. Note that breaking the link does not delete the property, even if not used anywhere else. The property will still be available to use.

Deprecate a property

It may be that over time certain properties become obsolete. However, if these properties have been used then their identifiers - IRIs - may need retaining. Deprecating a property allows you to indicate that it should no longer be updated or used without actually removing it from an ontology.

To deprecate a property click on the Image icon on the right of the screen.

Deprecated properties can no longer be edited and new relationships to them can no longer be formed.

If you realise that a property has been deprecated by mistake you can simply undeprecate it by clicking on the Image icon on the right of the screen.

Delete a property

To delete a property click on the Image icon on the right of the screen.

Managing object properties

Within Ontology Manager an object property is an OWL ObjectProperty.

Add inverses

To add an inverse click on the Image icon in the 'Inverses' panel. This will display a dialog box where you can start to type the label of the inverse property that you wish to add. A list of matching properties will be displayed. Click on the one that you want to add.

Image

Note that Graphologi automatically computes inverse relationships. By adding the inverse statement to one object property the inverse property will also be given an inverse statement in the opposite direction. Also, by defining an inverse, whenever that property is used in Graphologi (i.e. on a concept) it will automatically compute the inverse in the other direction.

Add domain and range

To add a domain or range click on the Image icon in the appropriate panel.

This will display a dialog box where you can start to type the label of the class that you wish to add. A list of matching classes will be displayed. Click on the one that you want to add.

Characteristics

To state that a property is functional select the Functional option in the 'Characteristics' panel. Functional properties can only have one value for the property. In an OWL ontology, where reasoning occurs, if there are multiple values they will be inferred to be the same value. However, in Graphologi, functional properties are used in taxonomies to constrain a property to only allow one value in the first place. Examples of functional properties would be 'has mother' or 'has place of birth', where it is definitely the case there can only be value for each.

If it is the case that a value of a property implies that the subject of the property is always the same resource then that is an Inverse Functional relationship. Select this option if that applies. Note that Graphologi does not put any constraint on reusing a value for an inverse functional property.

To state that a property is symmetric select the Symmetric option in the 'Characteristics' panel. Symmetric relationships work in both directions. For instance, if you have a property 'knows' then if Person A knows Person B it is intuitive that Person B knows Person A. By defining a property as symmetric, whenever that property is used in Graphologi (i.e. on a concept) it will automatically compute the result in both directions.

The opposite of symmetric is asymmetric. Choose the Asymmetric option if it is always that case that, if the property exists in one direction, then it should not exist in the other direction. For example 'has child' is a good example of an asymmetric property. Graphologi is aware of asymmetry when selecting values for concept properties.

Transitive properties are those where the chain of connections can be inferred to apply for all hops of that property. For instance 'has ancestor' is a good example of a transitive property. If A 'has ancestor' B and B 'has ancestor C' it is intuitive that A 'has ancestor' C. Note that Graphologi does not compute/display transitivity in the user interface.

If a relationship is such that the value always applies to the subject of the relationship that is a Reflexive relationship. Note that this does not stop a property taking other values too. Graphologi does not generate reflexive output.

If it is the case that the value of a relationship can never be the same as the subject that is an Irreflexive relationship. A good example would be 'has child' (you can never be your own child). By default Graphologi treats all properties as irreflexive.

Managing datatype properties

Within Ontology Manager a datatype property is an OWL DatatypeProperty.

Add domain

To add a domain click on the Image icon in the 'Domain' panel.

This will display a dialog box where you can start to type the label of the class that you wish to add. A list of matching classes will be displayed. Click on the one that you want to add.

Add range

To add a range click on the Image icon in the 'Range' panel.

This will display a dialog box where you can select from one of a fixed set of datatypes. Click on the one that you want to add.

Image
Characteristics

To state that a property is functional select the Functional option in the 'Characteristics' panel. Functional properties can only have one value for the property. In an OWL ontology, where reasoning occurs, if there are multiple values they will be inferred to be the same value. However, in Graphologi, functional properties are used in taxonomies to constrain a property to only allow one value in the first place. Examples of functional properties would be 'date of birth' (as a date) or 'can fly' (as a boolean), where it is definitely the case there can only be value for each.

Managing annotation properties

Within Ontology Manager an annotation property is an OWL AnnotationProperty.

Add domain and range

To add a domain or range click on the Image icon in the appropriate box.

This will display a dialog box where you can select from one of a fixed set of datatypes. Click on the one that you want to select.

Characteristics

To state that a property is functional select the Functional option in the 'Characteristics' panel. Functional properties can only have one value for the property. In an OWL ontology, where reasoning occurs, if there are multiple values they will be inferred to be the same value. However, in Graphologi, functional properties are used in taxonomies to constrain a property to only allow one value in the first place. An example of a functional property might be 'systemId', where the value is from a legacy system and was the unique identifier in that system.

Annotating classes and properties

Sometimes it can be useful to add additional information to classes and properties. In ontologies this is done using annotation properties, which are themselves defined in ontologies. It is common forontologies to use SKOS annotation properties and these are available as built-in annotations.

Selecting annotation properties

For annotation properties to display on classes and properties you need to select which you wish to use for a particular ontology. This is done in the ontology details page, which looks as in the following image.

Image

For SKOS annotations to show simply uncheck the relevant properties in the 'Hide Properties From View' panel.

To add other annotations in the 'Annotation Properties' panel click on the Image icon. All annotation properties from any ontologies within the same project will be listed. Select those that you wish to use.

If you wish to see the usage statistics of annotation properties defined in ontologies loaded within the project, you can click on the Compute Suggestions to Add button. This will compute statistics for each property and you can then choose whether to add them.

One selected the properties should appear on classes and properties. Note that the view is domain aware, so, if an annotation property has a domain that is not applicable, it will not display. You should see something similar to the following image. Note, if the values already exist they will appear once the properties are selected for the ontology.

Image

Adding values to annotation properties

For SKOS annotations simply click on the Image icon and enter the value in the dialog.

For other annotations, depending upon whether an annotation property has a range or not, the controls to add values will differ. If a range is defined there will simply be an Image icon in that property panel and you wil be restricted to adding values suitable for the defined range.

If a range is not defined you will see multiple icons for adding different types of data.

  • The Image icon allows you to add links to resources (including external resources by simply typing in the IRI you want to add).
  • The Image icon allows you to add a boolean value. Note you can only have true or false.
  • The Image icon allows you to add language tagged strings using the languages set up for the project.
  • The Image icon allows you to add date time values.
  • The Image icon is used to add all other datatypes. This will display a dialog from which you can select a particular datatype and enter a value.

Note that it is highly unusual for a property to contain a mix of datatypes, but because there is no range defined you do have that option.

Visualising ontologies

There are situations where it is much simpler to see data in a visual manner. This is especially true when looking at connections across a graph, such as how properties and classes are related in an ontology. Graphologi provides a visualisation feature to help you understand how your data is connected.

Visualisation can be accessed for a class or property by clicking on the Show visualisation icon. This should display something like the following image:

Image

On the left are the ontology properties (the connections) that will be displayed by default. You can deselect those that you are not interested in, which can help simplify the image when there are many relationships. If there are additional relationships, those will be displayed below the standard properties.

You can zoom in to the visualisation by clicking on the Zoom In icon and zoom out by clicking on the Zoom out icon. Zoom in has four further levels from the default. Zoom out has just one level from the default. You can also drag the image around.

To hide the properties panel click on the Hide props icon. Click on it again to show the panel.

To reset the visualisation click on the Reset icon.

To expand the visualisation to include more concepts click on a concept that you would like to include. You can click it again to exclude it. The layout of the visualisation will manage itself to a certain degree. However, for complex data you may want to adjust it yourself. You can do this by dragging nodes around.

To add inbound links to a node use Ctrl+Click.

Note that there is a limit of 100 connections per relationship. Beyond this you will be notified that this is the case.

Using ontologies with taxonomy projects

Configuring ontologies for taxonomy projects

Using an ontology in the Vocabulary Manager provides the opportunity to create a more enriched knowledge graph. Classes can be added to concepts and SKOS-XL labels, while properties can be used to connect concepts, labels, taxonomies and collections together, as well as to add additional information in the form of data.

Adding the configuration

Within the project sidebar for a taxonomy project you will see an 'Associated Ontology Projects' option. This allows you to find and associate one or more ontology projects with the taxonomy project. Click on the Add Project button on the right of the screen. Start typing the name of the ontology project you are looking for and select it when it appears. The ontology project will be added similarly to the following image.

Image

For each associated ontology project you can select the set of classes that you wish to make available in your taxonomy project.

You can also select which properties you want to be made available globally throughout your project.

Finally, you can create templates, which allow you to customise which properties will appear at a taxonomy or collection level, giving you more control and allowing you to tune the user interface to only display appropriate properties. Each template can be associated with as many taxonomies and collections as required.

Adding classes

To add classes click on the Add icon in the 'Classes to Make Available for Taxonomies' panel. A dialog box will be displayed. This will look similar to the following image:

Image

Note that if the ontology you want to search uses a language other than the default for the taxonomy project you may need to select the language from the list. This list reflects the langauges available to the taxonomy project.

Up to 100 classes will be listed. Select the classes that you want to add. To filter the list start typing the label of the class that you want to add.

Adding global properties

To add properties of any type click on the Add icon in the 'Global Properties to Make Available for Taxonomies' panel. A dialog box will be displayed. This will look similar to the following image.

Image

Up to 100 properties will be listed. Domain and range information for each property will also be listed, if available, to help you decide whether it is the property that you are looking for. Select the properties that you want to add. To filter the list start typing the label of the property that you want to add.

Note that, even for global properties, the domain will control which concepts or labels the property appears on. If a domain exists on the property the concept must have that class in order for the property to appear.

If a property is both global and in a template that applies to a concept or label, the property will only appear under the global properties list. It will not be displayed more than once.

Adding templates

To add a template click on the Add icon in the templates panel. This will display a dialog box similar to the following image.

Image

Enter the title for your template and click Add. This will add a template panel to the screen similar to the following image:

Image

Each template allows you to select one or more classes for which the template should be used. If you do not choose any classes the template will apply to all concepts or labels where it is used. If the project has SKOS-XL enabled you will have the option to check a box to use the template on SKOS-XL labels. You can also include taxonomies and collections as target classes by checking the appropriate boxes. For taxonomies and collections property templates will appear in the 'Advanced Metadata' submenu. If you check these boxes you can still select other classes.

You can then select the properties that you want to be associated with the template. Your templates should eventually look similar to the following image:

Image

If you have more than one template you can filter them using the filter box. Additionally you can 'jump' to a particular template by clicking on the panel for it in the summary list at the top of the templates area. To scroll back to this area you can use Alt+t, or, alternatively, if you have jumped to a template, click on the icon in the bottom right of the screen.

Note that property selection is not constrained by the class selection, but you will see warnings if there is a disconnect between the two. This is not necessarily an error, which is why Graphologi does not stop you doing so, but in most situations it would be expected that the classes and domains would match up.

You can have as many templates as you want. A good approach may be to group together properties based on a particular purpose or group of users that might want to edit the properties.

Sometimes the default label from the ontology for a property isn't ideal or suitable. You can override the name that will be displayed by adding a value using the Add icon in the name placeholder. Similarly, it can be useful to give users a bit of information about what they are expected to do, or what the property is for, and you can do this by adding a description, again using the Add icon in the description placeholder.

It may be that you want to further restrict the use of properties used in templates. You can set various constraints and options:

  • The minimum number of times a property must be used.
  • The maximum number of times a property may be used (note for functional properties this is automatically set to 1).
  • For text properties, the maximum length of text.
  • For text properties, a regular expression defining tha pattern the text must comply with.
  • For relationships, an option to select the target from which the values must be selected, which can be any taxonomy or collection within the project. An example might be, say, an 'isInCountry' property that can only take values from a 'Country' taxonomy. To select a target click the Add button.

For each constraint Graphologi will indicate on a concept if that constraint is not being met. Graphologi will limit the input for a property to ensure that it complies with the constraints.

Please note the following important points:

  • That having a cardinality constraint (minimum or maximum number of times a property may be used) does not 100% guarantee that the constraint cannot be broken. There are various possibilities where this might happen. For example, through import or through concurrent edits made by users. However, these will be rare situations.
  • Due to the fact that properties can appear in more than one template and multiple templates may be used on a taxonomy, constraints may conflict. Within a concept scheme (taxonomy) Graphologi will display information about any conflict on the property as it is displayed for a concept. We would recommend restricting the use of a property to a single template if the use case permits this.
  • Care should be taken when using constraints on properties that appear in multiple templates, used on separate concept schemes and where concepts are used in those multiple concept schemes. It may be that a property is then 'valid' in one concept scheme but not in another.
  • Constraints do not apply to global properties, so, as mentioned above, if a property is both global and in a template it will be treated as global and the constraints will not be applied.

Using ontologies with taxonomy projects

Enriching concepts and labels

The ontology classes can be used on any concept or SKOS-XL label, whilst properties can be used on concepts, SKOS-XL labels, taxonomies and collections. The following sections describe adding classes and properties to a concept, but apply equally well to SKOS-XL labels, taxonomies and collections. The following image shows additional global properties being available for a label as an example.

Image

The screen will display any global properties first, then the properties applicable for templates. All properties for all applicable templates will be grouped together. If properties are in templates and also global they will only appear in the global list.

Assigning a template

Templates can be assigned for taxonomies and collections. The approach is the same for both. To add a taxonomy go to the taxonomy details page (by clicking on the down arrow next to the taxonomy title). Scroll down to find the panel title 'Property Templates. Click on the Add icon and select the templates that you wish to assign. Once selected it will look similar to the following image:

Image

Adding a class to a concept or SKOS-XL label

To add an ontology class to a concept or label, click on the Add icon in the 'Classes' panel. This will display a dialog. If you are adding to a concept on which there are narrower concepts and you want the class to be added to those concepts as well check the 'Add Class to Narrower Concepts' option (but note this will only apply to concepts that are in the same scheme). Start typing the name of the class you want to add. A list of matching classes will be displayed. This will look similar to the image below.

Image

Select the class you want to add. The class will be added to the 'Classes' panel.

Image

Adding default classes to all concepts

To add any default classes for a taxonomy to all concepts in the hierarchy of the taxonomy (that are in the scheme) click on the Add classes icon on the taxonomy home page, located towards the right-hand side of the screen. This operation is a batch operation and may take a little time to run for very large taxonomies.

Property display

Each ontology property configured for use, and for which the concept has the correct domain if the ontology property has a defined domain, or for properties that have no domain, will be listed in an area at the bottom of the concept details, similarly to the following image.

Image

Adding a value to a concept

To add a value for a property click on the Add icon in the appropriate property panel. This will display a dialog similar to the following (if an integer range is defined on the property):

Image

Enter a value and click Add.

For different range values different dialog boxes will be presented. The entered value must comply with the datatype.

Adding a relationship to a concept

Constraints on range also apply to object properties. That is, to make a relationship for an object property with a defined range, a concept must have the appropriate class associated with it.

To add a concept for an object property click on the Add icon in the appropriate property panel. This will display a dialog box. Start typing the label for the concept you wish to make the relationship to.

Image

Select the desired value to add it. Once added it will display similarly to the image below:

Image

Inverse and symmetric relationships

Graphologi will automatically manage inverse and symmetric relationships. However, if you have created data before making a property symmetric, or adding an inverse, you may end up with situations where the information does not exist in both directions. Graphologi will handle edits to these relationships and it will not cause any errors.

However, you may want to consider synchronising the relationships for consistency. To do this click on the Syncrhonise materialisation icon on the taxonomy home page, located towards the right-hand side of the screen. This operation is a batch operation and may take a little time to run for very large taxonomies.

If the relationships in a taxonomy reference other taxonomies within the project you will need to run the synchronisation on each taxonomy.

Hints and tips

The following gives a few ideas on how to make working with Graphologi even easier and more efficient.

  • It is perfectly fine to work using multiple tabs open at the same time. As Graphologi updates in real-time any edits you make in one tab will be reflected in others.
  • Many links (blue chips) can be opened in a new tab by using Ctrl+click.
  • When moving around the application, and especially when clicking on links, it is worth noting that the browser back button works as you would expect for most parts of Graphologi. This can make navigating around far more efficient.

Querying data

For the most part you will not need to worry about the internal models used within Graphologi. However, there are situations, such as querying with SPARQL, when it might be beneficial to have a little bit more knowledge. This section gives you information about how the internal data is structured.

For details on RDF, RDFS, SKOS, SKOS-XL and OWL please see the relevant specifications. Graphologi is fully standards compliant so the details in the specifications will apply when querying data within Graphologi.

Projects

There are two types of project within Graphologi - taxonomy and ontology. These have the following classes:

Class IRI Description

https://grafsync.graphifi.com/schema/gs/TaxonomyProject

A taxonomy project.

https://grafsync.graphifi.com/schema/gs/OntologyProject

An ontology project.

General

There are some properties that are commonly used throughout Graphologi:

Property IRI Description

http://purl.org/dc/terms/created

The created date/time of a resource. This has a datatype of http://www.w3.org/2001/XMLSchema#dateTime.

https://grafsync.graphifi.com/schema/gs/pendingDeletion

If set to true indicates that the resource is scheduled to be removed. For a resource in this situation all links to it from other resources will have already been removed.

History

The history model within Graphologi is designed so that each change made to data is recorded as an individual resource within the graph. Generally speaking, the only time you will need to use the history properties is to compute the latest time a resource is changed. For retrieving actual changes it may be easier to use the history API as the details of the change are returned in an easily processable form.

Each history entry has its own IRI using the pattern: https://grafsync.graphifi.com/graph/history/{uuid}

There are various properties that may be useful for discovering history resources:

Property IRI Description

https://grafsync.graphifi.com/schema/gs/changedTime

An ISO date time recording the time at which the edit has been recorded.

https://grafsync.graphifi.com/schema/gs/changeOperation

The type of change. The possible values are: "Noop", "Add", "Delete", "Update", "Replace", "InsertResource", "DeleteResource", "LDupdateList". Note that this is only available for changes from 1.20 onwards.

https://grafsync.graphifi.com/schema/gs/changePredicate

The predicate used in the change, if applicable. Note that this is only available for changes from 1.20 onwards.

https://grafsync.graphifi.com/schema/gs/isHistoryOf

The resource to which this history entry applies.

https://grafsync.graphifi.com/schema/gs/isRevision

The revision number of the resource. This is an incremental integer value.

Ontologies

Graphologi uses a few additional internal properties for managing ontologies, most of which simply control options such as hiding properties and are not particularly relevant to querying the data for most use cases. The following table details those properties which may be useful:

Property IRI Description

https://grafsync.graphifi.com/schema/gs/visibility

When ontologies are imported into Graphologi it tries to compute which of the resources in the file belong to an ontology. Ontology files frequently contain resources from namespaces different to that of the owl:Ontology definition. Graphologi will use rdfs:isDefinedBy for stating which ontology a resource belongs to internally. However, where this is not present in imported files, Graphologi computes and records the ontology to which a resource belongs and stores the IRI of that ontology using this property.

Workflow

The workflow model within Graphologi is very simple. There are a few properties that are stored on concepts and SKOS-XL labels and there are 'tasks', which can, optionally, be used to define things that users need to do.

Tasks have a type of https://grafsync.graphifi.com/schema/gs/Task. When created they automatically have a status of https://grafsync.graphifi.com/schema/gs/pending.

Property IRI Description

https://grafsync.graphifi.com/schema/gs/activateWorkflow

Indicates if workflow is activated on a concept scheme. This takes a boolean value.

https://grafsync.graphifi.com/schema/gs/assignedNote

Allows for instructions to be given to the assigned user.

https://grafsync.graphifi.com/schema/gs/assignedUser

A user assigned to a concept, SKOS-XL label or task. Each user has an IRI and it is that IRI which is used on this property. A user can find our their IRI in the 'My Details' area of Graphologi.

https://grafsync.graphifi.com/schema/gs/hasTask

Connects concept or SKOS-XL label to a task.

When a concept or SKOS-XL label is approved or rejected any hasTask properties are removed from it automatically. However, the inverse property, isTaskFor, is not removed, allowing you to find all previous tasks that related to a concept or SKOS-XL label.

https://grafsync.graphifi.com/schema/gs/isTaskFor

Connects a task to a concept or SKOS-XL label.

https://grafsync.graphifi.com/schema/gs/status

Describes the status of a resource. In workflow terms, concepts and labels are (if categorised) in one of 'draft', 'accepted' or 'rejected' states. Tasks are in one of 'pending', 'accepted', or 'rejected'.

API

Introduction

The Graphologi API allows you to make requests to read data. This covers search, resources and the history of changes.

Calls to the Graphologi API must include an Authorization header with a value: Bearer {{token}}, where {{token}} is that returned by authentication. They should also include a Graphologi-Target header. The value you need to use for this is displayed in the API section of the dashboard at:

https://graphologi.graphifi.com/gs/dashboard/api

If an API call needs a project graph IRI the information for this can be found on the Project Information screen. See Project information for more details.

For each request set Content-Type and Accept (response format) headers as documented below.

We have put together some examples as a Postman collection and a corresponding Postman environment file, where you will need to set appropriate values.

Postman examples

Postman environment

Tips

  • If resources are not being returned in searches or resource requests make sure that the user has permissions for any project being used. This might mean adding the user group to the project.
  • Restrict any request to a single graph where possible to improve performance.
  • Only ask for predicates you need to reduce payload size and improve performance.

List of endpoints

POST /authenticate

Authenticate against the Graphologi API.

Content type:application/json

Response formats:application/json

Payload

password*

Password of user.

Type: string

Format: String

username*

Username of user.

Type: string

Format: String

GET /context

Retrieve the JSON-LD context.

Response formats:application/ld+json

POST /data?project={project IRI}&subscription={subscription IRI}

Merge some RDF data.

This will merge data onto existing concepts. Note that this is a blocking operation and users will be suspended from editing whilst this upload is happening.

It is an asynchronous operation. You can get the status of the upload by doing a GET to {path}?subscription={subscription} where {path} is included in the original POST response. The response from the status request will include a transfer property which will have a value of true or false once the upload is finished. A value of true indicates a successful upload.

Note that there is a limit of 5000 triples per update.

Note that merges do not update the status of resources that have workflow activated.

Content type:This data should be sent as form data

Response formats:application/json

Payload

file*

The file to merge.

importContext*

Define the type of merge.

Type: string

Format: String

Values: {"situation":"FullMerge"}

POST /history

Retrieve history for a resource.

Content type:application/json

Response formats:application/json | text/tab-separated-values

Payload

endDate

End date for history. The form of the date should be 'yyyy-mm-dd'.

Type: date

Format: String

graph*

The project graph IRI to use. This information is available on the Project Information screen for the project.

Type: string

Format: IRI

iri*

Resource to retrieve history for.

Type: string

Format: IRI

isReversed

Indicates if any path should be reversed.

Type: boolean

Format: String

maxItems

Number of history items to return.

Type: integer

Format: String

offset

Offset into history items.

Type: integer

Format: String

path

SPARQL property to use to retrieve history for associated resources. For example to get all the resources in a concept scheme pass the concept scheme IRI in the iri property and http://www.w3.org/2004/02/skos/core#inScheme in the path property.

Type: string

Format: IRI

startDate

Start date for history. The form of the date should be 'yyyy-mm-dd'.

Type: date

Format: String

subscription*

Subscription to use.

Type: string

Format: IRI

users

List of user IRIs to retrieve history for (max 5). If omitted all users are included.

Type: array

Format: IRI

Example payloads

Retrieve the first ten history items for a resource resource1 from project graph projectGraph between a start and end date.

{
    "subscription": "{{subscription}}",
    "iri": "{{resource1}}",
    "graph": "{{projectGraph}}",
    "startDate": "{{ISO date}}",
    "endDate":"{{ISO date}}",
    "maxItems": 10,
    "offset": 0
}

Retrieve the first ten history items for a concept scheme including resources in the scheme for scheme1 from project graph projectGraph between a start and end date. In this example the path is used to define which connected resources are required.

{
    "subscription": "{{subscription}}",
    "iri": "{{scheme1}}",
    "graph": "{{projectGraph}}",
    "startDate": "{{ISO date}}",
    "endDate":"{{ISO date}}",
    "path": "http://www.w3.org/2004/02/skos/core#inScheme",
    "maxItems": 10,
    "offset": 0
}

PATCH /instance

Edits to resources.

Additions and updates can be done for resources of the following types: concepts, concept schemes, SKOS-XL labels, tasks and suggestions.

Changes are done using the Graphologi patch format. This is very similar to using N-triples - see the examples below.

Note that carriage returns and tabs should be stripped as these are not permitted. Newlines are only permitted on certain properties and must be escaped correctly. To escape double quotes use the text: \\u0022

Note that the workflow status does not impact the ability to update resources - it it still possible to update.

The API will automatically handle any changes to inverse or symmetric properties and materialise (or remove) the relationship in the opposite direction.

Note that these are asynchronous endpoints. The status of the request can be found at /instance/status. If running a sequence of write operations we highly recommend ensuring that the previous request is complete as checks are performed on update requests, and, if there is a dependency on previous requests, you need to ensure that the previous request has completed.

The following operations are possible for 'built-in' properties - those defined by the standards and Graphologi. You can also update ontology properties associated with resources.

The actions are AU - add, update and delete.

Concept scheme

Actions Property IRI Alias Description

AD

http://www.w3.org/2004/02/skos/core#hasTopConcept

hasTopConcept

This should be used to add or remove top concepts for a concept scheme. This takes an IRI.

Concept

For concepts all of the main SKOS properties can be added or updated (bar narrower - use broader). To associate SKOS-XL labels with concepts you can use http://www.w3.org/2008/05/skos-xl#prefLabel, http://www.w3.org/2008/05/skos-xl#altLabel and http://www.w3.org/2008/05/skos-xl#hiddenLabel.

Actions Property IRI Alias Description

AUD

http://www.w3.org/2002/07/owl#deprecated

deprecated

Indicates if deprecated. Takes boolean literal values.

AUD

http://www.w3.org/2004/02/skos/core#altLabel

altLabel

Alternative labels. Takes string literals or language tagged literals.

AD

http://www.w3.org/2004/02/skos/core#broader

broader

Broader relationships. This takes an IRI.

AD

http://www.w3.org/2004/02/skos/core#broadMatch

broadMatch

Broader related concepts in other concept schemes.

AUD

http://www.w3.org/2004/02/skos/core#changeNote

changeNote

A change note. Takes string literals or language tagged literals.

AD

http://www.w3.org/2004/02/skos/core#closeMatch

closeMatch

Closely related concepts in other concept schemes. This takes an IRI.

AUD

http://www.w3.org/2004/02/skos/core#definition

definition

A definition. Takes string literals or language tagged literals.

AUD

http://www.w3.org/2004/02/skos/core#editorialNote

editorialNote

An editorial note. Takes string literals or language tagged literals.

AD

http://www.w3.org/2004/02/skos/core#exactMatch

exactMatch

Exact match concepts in other concept schemes. This takes an IRI.

AUD

http://www.w3.org/2004/02/skos/core#example

example

An example. Takes string literals or language tagged literals.

AUD

http://www.w3.org/2004/02/skos/core#hiddenLabel

hiddenLabel

Hidden labels. Takes string literals or language tagged literals.

AUD

http://www.w3.org/2004/02/skos/core#historyNote

historyNote

A history note. Takes string literals or language tagged literals.

AD

http://www.w3.org/2004/02/skos/core#inScheme

inScheme

Associate a concept with a scheme. This takes an IRI.

AD

http://www.w3.org/2004/02/skos/core#narrowMatch

narrowMatch

Narrower related concepts in other concept schemes. This takes an IRI.

AUD

http://www.w3.org/2004/02/skos/core#notation

notation

A notation. Takes string literals.

AUD

http://www.w3.org/2004/02/skos/core#prefLabel

prefLabel

Preferred labels. Takes string literals or language tagged literals.

AD

http://www.w3.org/2004/02/skos/core#related

related

Related concepts. This must be concepts in the same concept scheme. This takes an IRI.

AD

http://www.w3.org/2004/02/skos/core#relatedMatch

relatedMatch

Related concepts in other concept schemes. This takes an IRI.

AUD

http://www.w3.org/2004/02/skos/core#scopeNote

scopeNote

A scope note. Takes string literals or language tagged literals.

AD

http://www.w3.org/2004/02/skos/core#topConceptOf

topConceptOf

Make a concept a top concept of a concept scheme. This takes an IRI.

AD

http://www.w3.org/2008/05/skos-xl#prefLabel

xlPrefLabel

Link to an XL preferred label. This takes an IRI.

AD

http://www.w3.org/2008/05/skos-xl#altLabel

xlAltLabel

Link to an XL alternative label. This takes an IRI.

AD

http://www.w3.org/2008/05/skos-xl#hiddenLabel

xlHiddenLabel

Link to an XL hidden label. This takes an IRI.

AUD

https://grafsync.graphifi.com/schema/gs/assignedNote

assignedNote

Instructions for the assignee. Takes a string literal or language tagged literal.

AUD

https://grafsync.graphifi.com/schema/gs/assignedUser

assignedUser

The IRI of the user assigned to the concept.

AU

https://grafsync.graphifi.com/schema/gs/status

status

The status of the workflow for the concept. This takes an IRI.

Permitted values are https://grafsync.graphifi.com/schema/gs/draft, https://grafsync.graphifi.com/schema/gs/accepted or https://grafsync.graphifi.com/schema/gs/rejected.

SKOS-XL label

By definition of the standard SKOS-XL labels can only have one literal form.

Actions Property IRI Alias Description

AD

http://www.w3.org/2004/02/skos/core#inScheme

inScheme

Associate a label with a scheme. Maximum cardinality is one. This takes an IRI.

U

http://www.w3.org/2008/05/skos-xl#literalForm

literalForm

The literal form of the XL label. Takes a string literal or language tagged literal.

AUD

https://grafsync.graphifi.com/schema/gs/assignedNote

assignedNote

Instructions for the assignee. Takes a string literal or language tagged literal.

AUD

https://grafsync.graphifi.com/schema/gs/assignedUser

assignedUser

The IRI of the user assigned to the label.

AU

https://grafsync.graphifi.com/schema/gs/status

status

The status of the workflow for the label. This takes an IRI.

Permitted values are https://grafsync.graphifi.com/schema/gs/draft, https://grafsync.graphifi.com/schema/gs/accepted or https://grafsync.graphifi.com/schema/gs/rejected.

New concept suggestions

Actions Property IRI Alias Description

A

https://grafsync.graphifi.com/schema/vm/suggestionSourceConcept

suggestionSourceConcept

Associate a suggestion with either a concept or concept scheme. This controls where it is displayed in Graphologi. This takes an IRI.

AUD

https://grafsync.graphifi.com/schema/gs/assignedUser

assignedUser

The IRI of the user assigned to the suggestion.

U

https://grafsync.graphifi.com/schema/gs/status

status

The status of the suggestion. This takes an IRI. This will automatically be set to https://grafsync.graphifi.com/schema/gs/pending on creation of a suggestion.

Permitted values are https://grafsync.graphifi.com/schema/gs/accepted or https://grafsync.graphifi.com/schema/gs/rejected.

Tasks

Actions Property IRI Alias Description

AUD

https://grafsync.graphifi.com/schema/gs/assignedUser

assignedUser

The IRI of the user assigned to the task.

U

https://grafsync.graphifi.com/schema/gs/status

status

The status of the task. This takes an IRI. A status of https://grafsync.graphifi.com/schema/gs/pending is automatically assigned on creation of a task.

Permitted values are https://grafsync.graphifi.com/schema/gs/accepted or https://grafsync.graphifi.com/schema/gs/rejected.

Content type:application/json

Response formats:application/json

Payload

action*

The action to be performed.

Type: string

Format: String

Values: Add | Delete | Update

data*

The data to use to update the resource. This should be Graphologi patch format.

graph*

The graph in which the resource will be updated.

Type: string

Format: IRI

propertyGraph

If updating a property from an associated ontology project you can include this property to explicitly state which graph it comes from. If you do not include it Graphologi will attempt to work out the appropriate graph and generally this will work unless there is any ambiguity.

Type: string

Format: IRI

subscription*

Subscription to use.

Type: string

Format: IRI

Example payloads

Adding or deleting an object property. The action should be changed accordingly.

{
    "subscription": "{{subscription}}",
    "data": "<{{subjectIRI}}> <{{propertyIRI}}> <{{objectIRI}}> .",
    "graph": "{{projectGraph}}",
    "action": "Add"
}

Adding or deleting a language literal property (with English language). The action should be changed accordingly.

{
    "subscription": "{{subscription}}",
    "data": "<{{subjectIRI}}> <{{propertyIRI}}> \"{{text}}\"@en .",
    "graph": "{{projectGraph}}",
    "action": "Delete"
}

Adding or deleting a typed literal property. The action should be changed accordingly.

{
    "subscription": "{{subscription}}",
    "data": "<{{subjectIRI}}> <{{propertyIRI}}> \"{{text}}\"^^<{{datatypeIRI}}> .",
    "graph": "{{projectGraph}}",
    "action": "Add"
}

Updating a property requires including a fourth value. The third value should be that to replace and the fourth that to replace with. This example shows updating a typed literal.

{
    "subscription": "{{subscription}}",
    "data": "<{{subjectIRI}}> <{{propertyIRI}}> \"{{existingText}}\"^^<{{datatypeIRI}}> \"{{updatedText}}\"^^<{{datatypeIRI}}> .",
    "graph": "{{projectGraph}}",
    "action": "Update"
}

Updating a property requires including a fourth value. The third value should be that to replace and the fourth that to replace with. This example shows updating a language tagged literal.

{
    "subscription": "{{subscription}}",
    "data": "<{{subjectIRI}}> <{{propertyIRI}}> \"{{existingText}}\"@{{langCode}} \"{{updatedText}}\"@{{langCode}} .",
    "graph": "{{projectGraph}}",
    "action": "Update"
}

POST /instance

Create resources.

Create resources for the following types: concepts, SKOS-XL labels, suggestions, tasks and discussions.

There are two different ways to include the data for a new resource - JSON (or to be precise a snippet of embedded JSON-LD), or as N-triples. Using JSON tends to be easier in most situations. Note that carriage returns and tabs should be stripped as these are not permitted. Newlines are only permitted on certain properties and must be escaped correctly.

Note that this is an asynchronous endpoint. The status of the request can be found at /instance/status. If running a sequence of write operations we highly recommend ensuring that the previous request is complete as checks are performed on create requests, and, if there is a dependency on previous requests, you need to ensure that the previous request has completed.

For certain types of resources the general pattern is to first create the resource, then use the update instance endpoint to attach the resource to other resources. For others the created resource is expected to be 'connected' to another resource at the time of creation, in which case any reverse relationship will be materialised.

Note that disjointness on object properties (i.e. broader, narrower, related, etc) is only checked on the resource being updated. SKOS rules are more restrictive than this.

Content type:application/json

Response formats:application/json

Payload

data*

The data to use to create the resource. This can be a JSON-LD object or N-triples.

graph*

The graph into which the resource will be inserted.

Type: string

Format: IRI

subscription*

Subscription to use.

Type: string

Format: IRI

Example payloads

Create a concept using JSON (with English and French preferred labels).

The following SKOS properties are allowed when creating a concept:

IRIAliasMandatoryNotes
https://grafsync.graphifi.com/schema/gs/assignedNoteassignedNotefalse

Instructions for the assigned user. Takes string literals or language tagged literals. Only applicable if workflow activated.

https://grafsync.graphifi.com/schema/gs/assignedUserassignedUserfalse

The user IRI to assign the concept to. Only applicable if workflow activated.

https://grafsync.graphifi.com/schema/gs/statusstatusfalse

The status of the concept. The only permitted value on resource creation is https://grafsync.graphifi.com/schema/gs/status. Only applicable if workflow activated.

http://www.w3.org/2004/02/skos/core#altLabelaltLabelfalse

See SKOS specification. Takes string literals or language tagged literals

http://www.w3.org/2004/02/skos/core#changeNotechangeNotefalse

See SKOS specification. Takes string literals or language tagged literals

http://www.w3.org/2004/02/skos/core#definitiondefinitionfalse

See SKOS specification. Takes string literals or language tagged literals.

http://www.w3.org/2004/02/skos/core#editorialNoteeditorialNotefalse

See SKOS specification. Takes string literals or language tagged literals.

http://www.w3.org/2004/02/skos/core#exampleexamplefalse

See SKOS specification. Takes string literals or language tagged literals.

http://www.w3.org/2004/02/skos/core#hiddenLabelhiddenLabelfalse

See SKOS specification. Takes string literals or language tagged literals.

http://www.w3.org/2004/02/skos/core#historyNotehistoryNotefalse

See SKOS specification. Takes string literals or language tagged literals.

http://www.w3.org/2004/02/skos/core#inSchemeinSchemetrue

The taxonomy with which the concept should be associated. This takes an IRI.

http://www.w3.org/2004/02/skos/core#notationnotationfalse

See SKOS specification. Takes string literals .

http://www.w3.org/2004/02/skos/core#prefLabelprefLabelfalse

See SKOS specification. Takes string literals or language tagged literals.

http://www.w3.org/2004/02/skos/core#scopeNotescopeNotefalse

See SKOS specification. Takes string literals or language tagged literals.

The id property should be the IRI for the concept. This must be unique within the project.

Note that, if, in the extremely unlikely case that a concept is created with an IRI that does not exist at the time of the API request, but, by the time the call is actioned it does, the creation request will be a Noop (nothing will happen). This information will be available in the status request.

{
    "subscription": "{{subscription}}",
    "data": {
        "id": "{{conceptIRI}}",
        "type": "Concept",
        "inScheme": "{{scheme}}",
        "prefLabel": {
            "en": "{{labelEnglish}}",
            "fr": "{{labelFrench}}"
        }
    },
    "graph": "{{projectGraph}}"
}

Create an XL label using JSON.

The following SKOS properties are allowed when creating a label:

IRIAliasMandatoryNotes
https://grafsync.graphifi.com/schema/gs/assignedNoteassignedNotefalse

Instructions for the assigned user. Takes string literals or language tagged literals. Only applicable if workflow activated.

https://grafsync.graphifi.com/schema/gs/assignedUserassignedUserfalse

The user IRI to assign the concept to. Only applicable if workflow activated.

https://grafsync.graphifi.com/schema/gs/statusstatusfalse

The status of the concept. The only permitted value on resource creation is https://grafsync.graphifi.com/schema/gs/status. Only applicable if workflow activated.

http://www.w3.org/2004/02/skos/core#inSchemeinSchemetrue

The taxonomy with which the label should be associated.

http://www.w3.org/2008/05/skos-xl#literalFormliteralFormtrue

Only one literal form is permitted per label. Takes string literals or language tagged literals.

The id property should be the IRI for the label. This must be unique within the project.

Note that, if, in the extremely unlikely case that a label is created with an IRI that does not exist at the time of the API request, but, by the time the call is actioned it does, the creation request will be a Noop (nothing will happen). This information will be available in the status request.

{
    "subscription": "{{subscription}}",
    "data": {
        "id": "{{labelIRI}}",
        "type": "Label",
        "inScheme": "{{scheme}}",
        "literalForm": {"en": "{{labelEnglish}}"}
    },
    "graph": "{{projectGraph}}"
}

Create a suggestion using JSON with an autogenerated IRI.

The following properties are allowed when creating a suggestion:

IRIAliasMandatoryNotes
https://grafsync.graphifi.com/schema/gs/defaultClassdefaultClassfalse

Class IRIs to add to the concept as well as skos:Concept.

https://grafsync.graphifi.com/schema/gs/useXLuseXLfalse

Indicates if the label for the concept should be created as a SKOS-XL Label. Takes values of true or false.

https://grafsync.graphifi.com/schema/gs/assignedUserassignedUserfalse

The user IRI to assign the suggestion to.

https://grafsync.graphifi.com/schema/vm/suggestionInsertIRIsuggestionInsertIRItrue

The IRI that will be used to create the new concept.

https://grafsync.graphifi.com/schema/vm/suggestionLabelInsertIRIsuggestionLabelInsertIRIfalse

The IRI that will be used to create the new SKOS-XL Label if created as such.

https://grafsync.graphifi.com/schema/vm/suggestionParentConceptsuggestionParentConceptfalse

The parent concept to which to attach any new concept as a narrower concept.

http://www.w3.org/2000/01/rdf-schema#commentcommentfalse

Details about the suggestion. Takes string literals or language tagged literals.

http://www.w3.org/2004/02/skos/core#inSchemeinSchemetrue

The taxonomy with which the suggestion should be associated.

http://www.w3.org/2004/02/skos/core#prefLabelprefLabeltrue

The preferred label to use for the concept. Takes string literals or language tagged literals. Any literal should be in the default project language.

Suggestions are automatically given a status of https://grafsync.graphifi.com/schema/gs/pending on creation.

By including the type property this tells the API you want to autogenerate an IRI for a resource of this type. In this instance do not include the type in the data object.

Note that, if, in the extremely unlikely case that a suggestion is 'accepted' via a PATCH to the status of a suggestion and the checks at the time of the API request do not find an IRI conflict, but, by the time the call is actioned the same IRI does exist, then the suggestion will become a rejection.

{
    "subscription": "{{subscription}}",
    "type": "https://grafsync.graphifi.com/schema/vm/NewConceptSuggestion",
    "data": {
        "inScheme": "{{scheme}}",
        "suggestionInsertIRI": "{{conceptIRI}}",
        "comment": {"en": "{{commentEnglish}}"},
        "prefLabel": {"en": "{{labelEnglish}}"}
    },
    "graph": "{{projectGraph}}"
}

Create a task using JSON with an autogenerated IRI.

The following properties are allowed when creating a task:

IRIAliasMandatoryNotes
https://grafsync.graphifi.com/schema/gs/isTaskForisTaskFortrue

The IRI of the concept that this is a task for. Graphologi will automatically materialise the inverse property, hasTask, on the task or suggestion.

https://grafsync.graphifi.com/schema/gs/assignedNoteassignedNotetrue

A note detailing the task. Takes string literals or language tagged literals.

https://grafsync.graphifi.com/schema/gs/assignedUserassignedUserfalse

The user IRI to assign the suggestion to.

Tasks are automatically given a status of https://grafsync.graphifi.com/schema/gs/pending on creation.

By including the type property this tells the API you want to autogenerate an IRI for a resource of this type. In this instance do not include the type in the data object.

{
    "subscription": "{{subscription}}",
    "type": "https://grafsync.graphifi.com/schema/gs/Task",
    "data": {
        "isTaskFor": "{{concept}}",
        "assignedUser": "{{userIRI}}",
        "assignedNote": {"en": "{{noteEnglish}}"}
    },
    "graph": "{{projectGraph}}"
}

Create a discussion using JSON with an autogenerated IRI. Discussions allow for comments to be added to tasks and suggestion within Graphologi's UI.

The following properties are allowed when creating a discussion:

IRIAliasMandatoryNotes
https://grafsync.graphifi.com/schema/gs/isDiscussionOfisDiscussionOftrue

The IRI of the task or suggestion that this is a discussion of. Graphologi will automatically materialise the inverse property, hasDiscussion, on the concept.

By including the type property this tells the API you want to autogenerate an IRI for a resource of this type. In this instance do not include the type in the data object.

{
    "subscription": "{{subscription}}",
    "type": "https://grafsync.graphifi.com/schema/gs/Discussion",
    "data": {
        "isDiscussionOf": "{{resourceIRI}}"
    },
    "graph": "{{projectGraph}}"
}

POST /instance/status

Get the status of an API write request.

Note that, if the API call is for a resource that the user does not have permission to read, the response will be empty.

The response will include a status property. If the value is 'Processed' the request is complete.

Content type:application/json

Response formats:application/json

Payload

id*

The message to check. This value is the id property in the response from an API call to /instance.

Type: string

Format: IRI

subscription*

Subscription to use.

Type: string

Format: IRI

Example payloads

Get the status of an API write request.

{
    "subscription": "{{subscription}}",
    "id": "{{messageID}}"
}

POST /project/query

Execute a saved SPARQL query.

To access this endpoint the 'Can run saved query' entitlement is required.

Content type:application/json

Response formats:application/n-triples | application/rdf+xml | text/turtle | application/sparql-results+json

Payload

graph*

The graph of the project to use.

Type: string

Format: IRI

savedQuery*

The IRI of the saved query.

Type: string

Format: IRI

subscription*

Subscription to use.

Type: string

Format: IRI

Example payloads

All requests follow the same payload pattern, as shown in the following example.

{
    "subscription": "{{subscription}}",
    "graph": "{{projectGraph}}",
    "savedQuery": "{{savedQuery}}"
}

POST /resource

Retrieve resources from the system.

All resources are in named graphs, with each project having its own graph. The maximum is 5000 resources.

Content type:application/json

Response formats:application/ld+json

Payload

includeAuth

Controls whether authorisation information is included in response (the capabilities a user has for the resource). Generally you would want to set this to false.

Type: boolean

Format: String

language

Languages to return in the results using BCP-47 codes. If not specified all languages are returned. If you only require a particular set of languages, using this property can dramatically reduce the response size and improve performance.

Type: string

Format: String

Type: array

Format: String

predicates

Predicates to include in results. Keeping this list to the minimum required will improve performance.

Type: array

Format: IRI

resources*

A list of resources to retrieve. Note that, if a user does not have permissions, or the resource does not exist, then no error is given - only valid resources with permission to read them will be returned.

Object

graph*

The graph from which to retrieve resources. If the resources are project resources the information on the graph IRI is available on the Project Information screen for the project.

Type: array

Format: IRI

iri*

IRI of resource to retrieve.

Type: array

Format: IRI

subscription*

Subscription to use.

Type: string

Format: IRI

Example payloads

A basic example to retrieve two resources, resource1 and resource2 from the graph projectGraph in subscription subscription

{
    "subscription": "{{subscription}}",
    "resources": [
        {
            "graph": "{{projectGraph}}",
            "iri": [
                "{{resource1}}",
                "{{resource2}}"
            ]
        }
    ]
}

This example removes any authorisation information from responses and filters language values to English (en). This will improve performance.

{
    "subscription": "{{subscription}}",
    "resources": [
        {
            "graph": "{{projectGraph}}",
            "iri": [
                "{{resource1}}",
                "{{resource2}}"
            ]
        }
    ],
    "includeAuth": false,
    "language": "en"
}

This example filters responses to only include preferred label properties (as well as default properties in every response). This will help improve performance.

{
    "subscription": "{{subscription}}",
    "resources": [
        {
            "graph": "{{projectGraph}}",
            "iri": [
                "{{resource1}}",
                "{{resource2}}"
            ]
        }
    ],
    "includeAuth": false,
    "predicates": ["http://www.w3.org/2004/02/skos/core#prefLabel"]
}

POST /search

Search a subscription.

Content type:application/json

Response formats:application/ld+json

Payload

entailment

List of entailments to apply when searching for results. Currently only property chains as defined in B.3.4. Notes of the SKOS specification are available.

Type: array

Format: String

Values: PropertyChain

exclude

List of IRIs to exclude from results.

Type: array

Format: IRI

graph

The graphs to use for the search. If no graphs are specified all graphs in the subscription are searched. If the resources are project resources the information on the graph IRI is available on the Project Information screen for the project.

Type: array

Format: IRI

language

Language to return in the results. If not specified all languages are returned. If you only require a single language, using this property can dramatically reduce the response size and improve performance.

Type: string

Format: String

noCount

Controls whether the number of results is counted or not. Set to false to improve performance.

Type: boolean

Format: String

page

Page number of results to return.

Type: integer

Format: String

pageSize

Number of results to return (max 400) in a single page. The default is 20.

Type: integer

Format: String

predicates

Predicates to include in results. Keeping this list to the minimum required will improve performance.

Type: array

Format: IRI

search*

Details of the search. Items are ANDed together. If there is a predicate property but no corresponding value property the search will return resources that have the property with any value, but there must be a value.

Object

isExactMatch

If true only strings matching exactly will be found.

Type: boolean

Format: String

isText

Indicates to the search that the property should be treated as a text property, allowing you to search object properties as text. Note that, if this is used on non-compliant search using a non-indexed literal property, you will receive a 400 error.

Type: boolean

Format: String

predicate*

Predicates to search.

Note that only a limited set of literal predicates are specially indexed to enable faster searching: rdfs:label, skos:prefLabel, skos:altLabel, skos:hiddenLabel, skosxl:literalForm and dc:title. This does not mean you are limited to searching just these properties. If you wish to search other literal properties you can do this by adding 'searchMode': 'Compliant' to your search payload. This will force a SPARQL compliant search, but please be aware that, without the benefit of indexing, searches for these properties may be less performant.

Type: string

Format: IRI

Type: array

Format: IRI

value

Value to search for. Note that, if you provide a value to an object property that is not a valid URI you will receive a 400 response.

Type: string

Format: String

Type: string

Format: IRI

Type: array

Format: IRI

sort

IRIs of predicates to use for sorting (max 2).

Type: array

Format: IRI

sortOrder

The order in which to sort results if ordering is applied.

Type: string

Format: String

Values: Ascending | Descending

subscription*

Subscription to use.

Type: string

Format: IRI

Example payloads

Search for things in a scheme with a preferred label containing 'tes' using a non-exact match. The noCount property will give faster results if counting is not required. The language property will filter responses to only include English language labels. The predicate property will filter the response to only include the preferred label.

{
    "subscription": "{{subscription}}",
    "search": [
        {
            "predicate": "http://www.w3.org/2004/02/skos/core#inScheme"
        },
        {
            "predicate": "http://www.w3.org/2004/02/skos/core#prefLabel",
            "value": "tes",
            "isExactMatch": false
        }
    ],
    "noCount": true,
    "language": "en",
    "predicates": [
        "http://www.w3.org/2004/02/skos/core#prefLabel"
    ]
}

Where projects are SKOS-XL enabled it can be very useful to use entailment to find concepts that have a preferred label that is 'entailed' through the SKOS property chain rule for literal forms on SKOS-XL labels. To do this include the entailment property as in this example.

{
    "subscription": "{{subscription}}",
    "search": [
        {
            "predicate": "http://www.w3.org/2004/02/skos/core#inScheme"
        },
        {
            "predicate": "http://www.w3.org/2004/02/skos/core#prefLabel",
            "value": "tes",
            "isExactMatch": false
        }
    ],
    "pageSize": 10,
    "noCount": true,
    "language": "en",
    "entailment": [
        "propertyChain"
    ],
    "predicates": [
        "http://www.w3.org/2004/02/skos/core#prefLabel"
    ]
}

Where possible searches will be faster if restricted to a particular project graph. To do this use the graph property.

{
    "subscription": "{{subscription}}",
    "search": [
        {
            "predicate": "http://www.w3.org/2004/02/skos/core#inScheme"
        },
        {
            "predicate": "http://www.w3.org/2004/02/skos/core#prefLabel",
            "value": "tes",
            "isExactMatch": false
        }
    ],
    "graph": ["{{projectGraph}}"],
    "predicates": [
        "http://www.w3.org/2004/02/skos/core#prefLabel"
    ]
}

POST /snapshot

Take a snapshot of a project.

Note that there is a minimum delay between snapshots.

Content type:application/json

Response formats:application/json

Payload

comment

A comment about the snapshot.

Type: string

Format: String

isVersion

Indicates whether to create a version from the snapshot. Note that this is only permitted on certain subscription types.

Type: boolean

Format: String

name

A name for the snapshot.

Type: string

Format: String

snapshotConfiguration*

The snapshot configuration to use. A list of snapshot configurations can be retrieved by the snapshotconfiguration endpoint.

Type: string

Format: IRI

subscription*

Subscription to use.

Type: string

Format: IRI

Example payloads

To create a snapshot using a particular snapshot configuration and create a version from that snapshot.

{
    "subscription": "{{subscription}}",
    "snapshotConfiguration": "{{snapshot configuration IRI}}",
    "name": "{{Name for snapshot}}",
    "comment": "{{Comment for snapshot}}",
    "isVersion": true
}

GET /subscription/{{id}}/snapshotconfiguration

Get a list of snapshot configurations.

Response formats:application/ld+json

POST /subscription/{{id}}/sparql

Query subscription with SPARQL.

Permitted query types are ASK, DESCRIBE and SELECT.

Note that the acceptable format of the response will depend upon the query type.

You can include up to five named graphs.

There is a timeout on the endpoint, the value of which depends upon the subscription type.

Content type:application/x-www-form-urlencoded

Response formats:application/n-triples | application/rdf+xml | text/turtle | application/sparql-results+json

Payload

named-graph-uri*

The named graph to query.

Type: string

Format: IRI

query*

SPARQL query.

POST /view/export

Export a taxonomy.

Note that there is a 500MB limit for formats other than application/n-triples.

Content type:application/json

Response formats:application/ld+json | application/rdf+xml | application/n-triples | text/turtle

Payload

embed

If applicable, directs the API to embed a JSON-LD context in the response. Note this can bloat the response considerably, so unless processing the output as RDF it is best to omit this.

Type: boolean

Format: String

graph*

The graph of the project to use.

Type: string

Format: IRI

iri*

Taxonomy (concept scheme) to export.

Type: string

Format: IRI

subscription*

Subscription to use.

Type: string

Format: IRI

Example payloads

To export a taxonomy with IRI scheme1 use the following payload.

{
    "subscription": "{{subscription}}",
    "graph": "{{projectGraph}}",
    "iri": "{{scheme1}}"
}

POST /view/ontologyexport

Export an ontology.

Note that there is a 500MB limit for formats other than application/n-triples.

Content type:application/json

Response formats:application/ld+json | application/rdf+xml | text/turtle

Payload

embed

If applicable, directs the API to embed a JSON-LD context in the response. Note this can bloat the response considerably so unless processing the output as RDF it is best to omit this.

Type: boolean

Format: String

graph*

The graph of the project to use.

Type: string

Format: IRI

iri*

Ontology to export.

Type: string

Format: IRI

subscription*

Subscription to use.

Type: string

Format: IRI

Example payloads

To export an ontology with IRI ontology1 use the following payload.

{
    "subscription": "{{subscription}}",
    "graph": "{{projectGraph}}",
    "iri": "{{ontology1}}"
}

POST /view/ontologystatistics

Get statistics for an ontology.

Content type:application/json

Response formats:application/ld+json | application/rdf+xml | application/n-triples | text/turtle

Payload

graph*

The graph of the project to use.

Type: string

Format: IRI

iri*

Ontology to get statistics for.

Type: string

Format: IRI

subscription*

Subscription to use.

Type: string

Format: IRI

Example payloads

To get statistics for an ontology with IRI ontology1 use the following payload.

{
    "subscription": "{{subscription}}",
    "graph": "{{projectGraph}}",
    "iri": "{{ontology1}}"
}

POST /view/statistics

Get statistics for a taxonomy.

Content type:application/json

Response formats:application/ld+json | application/rdf+xml | application/n-triples | text/turtle

Payload

graph*

The graph of the project to use.

Type: string

Format: IRI

iri*

Taxonomy to get statistics for.

Type: string

Format: IRI

subscription*

Subscription to use.

Type: string

Format: IRI

Example payloads

To get statistics for a taxonomy with IRI scheme1 use the following payload.

{
    "subscription": "{{subscription}}",
    "graph": "{{projectGraph}}",
    "iri": "{{scheme1}}"
}
/