eu.fbk.knowledgestore.package-info Maven / Gradle / Ivy
Show all versions of ks-core Show documentation
// TODO: revise documentation
/**
* KnowledgeStore core API ({@code ks-core}).
*
* Data model
*
* A total ordering relation is defined on nodes, allowing to compare any node against any other
* node. This relation generalizes the single ordering relation that can be naturally defined for
* specific types of nodes, and is provided for ease of use (e.g., to provide a canonical way to
* order nodes) and for simplifying the definition of conditions on nodes. More in details, scalar
* nodes are different and are sorted before record nodes, while specific rules are applied for
* ordering among scalars and among records (see, respectively, the documentation for
* {@link Record} and {@link Scalar}).
*
*
* Resources. A resource is a self-contained piece of unstructured content, such as a news
* article or a multimedia object, having some descriptive metadata (e.g., from
* {@link org.openrdf.model.vocabulary.DCTERMS} vocabulary), a binary representation (
* {@link eu.fbk.knowledgestore.vocabulary.KS#STORED_AS}) and zero or more mentions contained
* within it ({@link eu.fbk.knowledgestore.vocabulary.KS#HAS_MENTION} ). Note that (1)
* representation metadata is generated automatically by the system based on the uploaded content,
* so there is no need to manually set it; and (2) the actual binary data is not available through
* the resource record object, but must be instead accessed using other API methods of the
* KnowledgeStore.
*
*
* Representations. A digital representation is possibly stored for each resource in the
* KnowledgeStore. A {@code Representation} record contains the metadata of such a representation,
* while its actual binary content can be accessed via the {@code Representation} class using
* specific methods of the KnowledgeStore API. The representation metadata stored by this kind of
* record comprise the filename ({@link eu.fbk.knowledgestore.vocabulary.NFO#FILE_NAME}), the size
* in bytes ( {@link eu.fbk.knowledgestore.vocabulary.NFO#FILE_SIZE} ), the date and time the
* representation was created ({@link eu.fbk.knowledgestore.vocabulary.NFO#FILE_CREATED}) and the
* MIME type (see {@link eu.fbk.knowledgestore.vocabulary.NIE#MIME_TYPE}). Representation records
* are automatically created by the system for stored resources.
*
*
* Mentions. A mention is a snippet of a resource (
* {@link eu.fbk.knowledgestore.vocabulary.KS#MENTION_OF}), such as some characters in a text
* document or some pixels in an image, that may refer to some entity of interest (
* {@link eu.fbk.knowledgestore.vocabulary.KS#REFERS_TO}). Mentions can be automatically extracted
* by natural language and multimedia processing tools, that can enrich them with additional
* attributes about how they denote their referent (e.g., name, qualifiers, 'sentiment').
* Therefore, mentions present both unstructured and structured facets not available in resources
* and entities layers alone, and are thus a valuable source of information on their own. A number
* of axioms ( {@link eu.fbk.knowledgestore.vocabulary.KS#EXPRESSES}) may be expressed by the
* mention, i.e., can be extracted from its snippet and attributes.
*
*
* Entities. An entity is described by a (possibly empty) set of axioms (
* {@link eu.fbk.knowledgestore.vocabulary.KS#DESCRIBED_BY}) and is referred by a (possibly empty)
* set of mentions ( {@link eu.fbk.knowledgestore.vocabulary.KS#REFERRED_BY}).
*
*
* Axioms. Axioms describe entities of the KnowledgeStore. An axiom is encoded by a set of
* RDF statements ({@link eu.fbk.knowledgestore.vocabulary.KS#ENCODED_BY}) that relate one or more
* entities and its validity may be restricted to a specific context (
* {@link eu.fbk.knowledgestore.vocabulary.KS#HOLDS_IN}); an axiom may be annotated with
* additional metadata and can be expressed by a number of mentions (
* {@link eu.fbk.knowledgestore.vocabulary.KS#EXPRESSED_BY}). Note that a null context is used in
* case of axioms holding universally and not in a specific context. An axiom may be simple
* or complex, with the first consisting of exactly one RDF statement (possibly
* contextualized and associated to additional metadata); simple axioms are generally used for
* ABox assertions, while complex axioms are associated mainly to TBox declarations. Axioms IDs
* should be assigned based on RDF statements and context.
*
*
* Contexts A context defines the circumstances under which a certain axiom holds; each
* axiom is associated exactly to a context in the KnowledgeStore (which may be shared by multiple
* axioms) via the {@link eu.fbk.knowledgestore.vocabulary.KS#HOLDS_IN} property (if null, the
* axiom holds universally). A context is identified by a set of attributes or contextual
* dimensions, which are the properties of the context record. IDs of context records should
* be assigned based on all the values of all the contextual dimensions.
*
*/
@javax.annotation.ParametersAreNonnullByDefault
package eu.fbk.knowledgestore;
import eu.fbk.knowledgestore.data.Record;
// NOTES ON AXIOMS
// - may add enum Axiom.Kind and method Kind getKind() for retrieving the type of ABox/TBox
// axiom.
// Types would be
// SUB_CLASS rdfs:subClassOf
// EQUIVALENT_CLASSES owl:equivalentClass // also for DatatypeDefinition
// DISJOINT_CLASSES owl:disjointWith, owl:AllDisjointClasses**** (type)
// DISJOINT_UNION owl:disjointUnionOf***
// SUB_PROPERTY rdfs:subPropertyOf
// PROPERTY_CHAIN owl:propertyChainAxiom***
// EQUIVALENT_PROPERTIES owl:equivalentProperty
// DISJOINT_PROPERTIES owl:propertyDisjointWith, owl:AllDisjointProperties*** (type)
// PROPERTY_DOMAIN rdfs:domain
// PROPERTY_RANGE rdfs:range
// INVERSE_PROPERTIES owl:inverseOf
// FUNCTIONAL_PROPERTY owl:FunctionalProperty
// INVERSE_FUNCTIONAL_PROPERTY owl:InverseFunctionalProperty
// REFLEXIVE_PROPERTY owl:ReflexiveProperty
// IRREFLEXIVE_PROPERTY owl:IrreflexiveProperty
// SYMMETRIC_PROPERTY owl:SymmetricProperty
// ASYMMETRIC_PROPERTY owl:AsymmetricProperty
// TRANSITIVE_PROPERTY owl:TransitiveProperty
// KEY owl:hasKey***
// SAME_AS owl:sameAs
// DIFFERENT_FROM owl:differentFrom, owl:AllDifferent***
// CLASS_ASSERTION rdf:type
// PROPERTY_ASSERTION ???
// NEGATIVE_PROPERTY_ASSERTION owl:NegativePropertyAssertion