Ontology (Onto Root Gazetteer)


My text/json


    "openapi": "3.0.0",

    "info": {

        "title": "Sea tracking ",

        "description": "Sea tracking is an API that provides location data for a particular cargo such     as the current position of the cargo, departure and arrival seaports and the route between seaports",

        "termsOfService": "",

        "contact": {

            "name": "API Support",

            "url": "",

            "email": "support@..."


        "license": {

            "name": "Apache 2.0",

            "url": "http://www.apache.org/licenses/LICENSE-2.0.html"


        "version": "1.0.0"




I annotated the above text using Onto Root Gazetteer and an ontology and got the following result:

Guys, how do I get for example all properties and values of the info class using a Jape Rule?


I tried doing the following, but it didn't work:



Input: Lookup Token Sentence 

Options: control = appelt


Rule: populationDescription

( {Sentence contains {Lookup.URI == "http://www.w3.org/ns/shacl#Info"}}|

   ({Sentence contains {Lookup.URI == "http://www.intelligence.tuc.gr/ns/open-api#description"}}):sentences



:sentences.getSentences = {rule= "populationDescription"}

And then the idea is to populate the ontology with property values using the following Jape Rule :


Rule: FindEntities




  //find the annotation matched by LHS

  //we know the annotation set returned

  //will always contain a single annotation

  Annotation mentionAnn = mentionAnnots.iterator().next();


  //find the class of the mention

  String className = (String)mentionAnn.getFeatures().


  // should normalize class name and avoid invalid class names here!

  OClass aClass = ontology.getOClass(ontology.createOURIForName(className));

  if(aClass == null) {

    System.err.println("Error class \"" + className + "\" does not exist!");




  //find the text covered by the annotation

  String theMentionText = gate.Utils.stringFor(doc, mentionAnn);


  // when creating a URI from text that came from a document you must take care

  // to ensure that the name does not contain any characters that are illegal

  // in a URI.  The following method does this nicely for English but you may

  // want to do your own normalization instead if you have non-English text.

  String mentionName = OUtils.toResourceName(theMentionText);


  // get the property to store mention texts for mention instances

  DatatypeProperty prop =



  OURI mentionURI = ontology.createOURIForName(mentionName);

  // if that mention instance does not already exist, add it

  if (!ontology.containsOInstance(mentionURI)) {

    OInstance inst = ontology.addOInstance(mentionURI, aClass);

    // add the actual mention text to the instance

    try {


        new Literal(theMentionText, OConstants.ENGLISH));


    catch(InvalidValueException e) {

      throw new JapeException(e);