System Requirements

Code Base Questions

  • 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 **) LEX2004291938
  • What is the format of Neo4j node/relationship properties?
    MATCH (s)-[r]->(o) RETURN, keys(s), type(r), keys(r), LIMIT 5
  • How do we reveal consecutive drilldown dimensions (predicates) and options (object tokens) along drilldown steps? LEX200560942
  • Show facet stack if query string is empty: if there is no drilldown/faceting specified, then a search button click/enter with an empty query string will provide a rough domain explanation. LEX2004211354
  • Superclass abstraction: 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. LEX2004212013
  • Search Engine Modes: bookmark* any composed knowledge facet including aspects design and discovered consecutive knowledge. LEX2004291036
  • Consecutive knowledge finder LEX2004281216
  • Predicate inversion LEX2004281416

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

dataspects' Signals Intelligence DomainSpecific Language 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

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.