Show facet stack if query string is empty LEX2004211354

If there is no drilldown/faceting specified, then a search button click/enter with an empty query string will provide a rough domain explanation.

Superclass abstraction LEX2004212013

When explaining a knowledge domain it is helpful to extract an abstraction layer from assertions. E.g. if it is asserted that the software "dataspectsd" can be installed on server "Tesseract One", then we can derive the abstract layer that "software can be installed on servers". This provides an insight into the knowledge domain that facilitates understanding.

Search Engine Modes LEX2004291036
Consecutive knowledge finder LEX2004281216
Predicate inversion LEX2004281416

Bookmark* any composed knowledge facet including aspects design and discovered consecutive knowledge.

Indexing refers to managing knowledge entities in Neo4j and Elasticsearch.

Indexing comprises these steps:

  1. obtain annotated entities from SIGINT,
  2. load entities into the Entity struct placing annotations into Annotations,
  3. adding an Entity node to Neo4j,
  4. adding Entity Annotations to Neo4j as Entity node properties or relationships,
  5. querying Neo4j for entities and populating a new Entity struct placing Annotations into ES doc nestings in accordance with the corresponding predicate's AnnotationsAnalysisType,
  6. sending the Entity struct to an Elasticsearch index.

A node N's nested ES doc is updated whenever:

  • the node is created/updated (properties)
  • a relationship created updated whose subject is N

SIGINT is specified per ResourceSilo:

  • in a Golang package and/or
  • in a sigint.yml file

and performs the following steps:

  • Entitization on Resources
  • Annotation on Entities

Annotations Analysis Typing



An Elasticsearch's index mapping specifies analyzers for text fields (and their multi-fields). Essentially an analyzer's constitution must satisfy a field value's content nature analysis needs with regard to relevant search, which might require analyzing content in multiple ways by the use of multi-fields.

This is easy to do for an ES doc's root-level fields. However, in order to avoid special index mappings, root-level fields shall remain domain/resourceSilo/customer-agnostic, which means that an entity's domain/resourceSilo/customer-specific annotations must go into nested fields, which is problematic as analyzers for an annotation's predicate and object values cannot be comfortably made predicate-specific.

This is why each analysis type required gets its own nested field named /AAT[A-Z]+/ (specifying its predicate's and object's analyzers and multi-fields) and annotations are assigned in accordance with their analysis needs by specifying ESAnalysisType when adding Entity Annotations.

Mapping issues
  1. mappings.properties.<AnnotationPredicate>.fielddata: true
  2. mappings.properties.<AnnotationPredicate>.analyzer: annotationobjecttokens
  3. settings.index.analysis.analyzer.annotationobjecttokens.filter: [ "wd" ]
  4. settings.index.analysis.filter.wd: { "type" : "word_delimiter", "preserve_original": "true" }

Predicate Scope


Predicates connect things.

Types of predicates
ScopeExplanationES docComment
damDomain-agnostic meta predicatesroot-level LEX2005141620e.g. OriginatedFromResourceSiloLabel, HasEntityType
dsmDomain-specific meta predicatesannotations
rssmResourceSilo-specific meta predicatesannotationsWikitext
rsmResource-specific meta predicatesannotationsWikitext
csmCustomer-specific meta predicatesannotations
-Customer-specific predicatesannotations
Where are predicate scopes set?
manually by the Customer Ontology Manager
by the SIGINT process

EPPO Mapping


In accordance with the characteristics of EPPO topics SIGINT must provide the following predicates:

  • HasEntityType
  • HasEntityTitle
  • HasEntityBlurb
  • (HasEntityAudience)

Below flowchart explains a recommended way of emerging a business domain model on a Semantic MediaWiki.

  • Where do we specify that an entity's tile (HasEntityTitle) should be assigned the value of a resource's HasEntityTitle annotation? LEX2004171210
  • Where is the domain agnostic HasEntityTitle handled? LEX2004171214
  • Where do we specify a predicate's analysis type regarding its object value(s)? LEX2004171331
  • How do we specify which of an entity's properties/relationships end up in SERs/aspects by default? LEX2004180655 predicatesShowPolicy
  • How do we create and use predicate characteristics encodings? LEX2004180722
  • How do we normalize annotation object values to represent an object's URL rather than just its name? (E.g. a MediaWiki page name *MyPage* to *https://myMediaWiki.com/wiki/MyPage*) LEX2004291938
  • What is the format of Neo4j node/relationship properties?
    MATCH (s)-[r]->(o) RETURN s.name, keys(s), type(r), keys(r), o.name LIMIT 5
  • How do we reveal consecutive drilldown dimensions (predicates) and options (object tokens) along drilldown steps? LEX200560942