@prefix amt: <http://academic-meta-tool.xyz/vocab#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix fw: <http://w3id.org/fw_ontology/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

fw: a owl:Ontology ;
    dcterms:description "Classes and properties for modelling uncertain, vague and fuzzy/wobbly data in RDF, by the NFDI4Objects TWG FuzzyWobblySW (Community-Standards for modelling fuzziness and wobbliness in research data using Semantic Web technologies and formalisms)."@en ;
    dcterms:license <https://creativecommons.org/publicdomain/zero/1.0/> ;
    dcterms:title "FW Ontology: classes and properties for fuzzy and wobbly data"@en ;
    rdfs:seeAlso <https://zenodo.org/records/14893827>,
        <https://zenodo.org/records/19877825> .

fw:AFEAssignment a fw:AssignmentMethod ;
    rdfs:label "AFE assignment"@en ;
    rdfs:comment "The degree is entered by the person recording the data in AFE, or assigned by AFE from the flag the person sets (a fixed value, or a value derived from the number of options, e.g. two options with 0.5 each). AFE keeps no source text. The exact rule is not fixed yet (work in progress). Not the same as fw:EqualShareRule, which reads the source strings of the Samian data."@en .

fw:Certainty a fw:FW_Type ;
    rdfs:label "certainty"@en ;
    rdfs:comment "The statement is certain: it is neither vague nor uncertain nor fuzzy/wobbly. Its degree of connection is 1.0. The term exists so that certain statements can be told from statements whose type is not given, and so that they take part in reasoning. It stands beside fw:Vagueness and fw:Uncertainty, not below fw:FuzzinessWobbliness. Not to be confused with the property fw:hasCertainty."@en .

fw:ClassicalProbability a fw:ProbabilityMethod ;
    rdfs:label "classical probability"@en ;
    fw:formula "P(A) = favourable cases / possible cases" .

fw:EqualShareRule a fw:RuleBasedMethod ;
    rdfs:label "equal share rule"@en ;
    fw:formula "(1 / n_possibilities) * (1/2 if n_question else 1)" ;
    rdfs:comment "Reads the AND / OR / '?' form of a source string. The alternatives of an OR share the weight equally, AND keeps the full weight for every entity, and a question mark halves the weight of every entity of the string (decided with Allard Mees on 2026-11-04; before that day a question mark counted as one more share, 1 / (n_question + n_possibilities), which gave one third each for 'A or B ?' and now gives 0.25). Examples: 'A or B or C' 0.33 each, 'A or B ?' 0.25 each, 'A and B ?' 0.5 each, 'A ?' 0.5. Rounded to two decimals. A string that mixes AND and OR is not covered."@en .

fw:ExpertAssessment a owl:Class ;
    rdfs:label "expert assessment"@en ;
    rdfs:comment "A degree set by a person from judgement."@en ;
    rdfs:subClassOf fw:AssignmentMethod .

fw:FrequencyShare a fw:ProbabilityMethod ;
    rdfs:label "Wahrscheinlichkeit basierend auf dem Häufigkeitsanteil"@de,
        "probability based on frequency share"@en ;
    fw:formula "share_i = n_i / (n_1 + ... + n_k), n = number of vessels with the form in the database" ;
    rdfs:comment "The share of an alternative of an OR among the vessels of all alternatives in the database (for the string '31 or 31R': 9,070 of 11,302 = 0.8025 and 2,232 of 11,302 = 0.1975). Additional information for the archaeologist, who can check an existing uncertainty against the distribution in the database; it does not replace the degree of the statement (fw:EqualShareRule), does not enter reasoning, and a question mark in the string does not change it. Level A is the whole database; the potter's repertoire (smoothed) and the stamp are planned levels. Agreed with Allard Mees on 2026-11-04."@en .

fw:FuzzinessWobblinessResourceValue a owl:Class ;
    rdfs:subClassOf fw:FuzzinessWobblinessValue .

fw:ModelConfidenceScore a fw:MachineLearningMethod ;
    rdfs:label "model confidence score"@en ;
    rdfs:comment "The score a model reports for its own prediction. It is not a calibrated probability unless the model is calibrated."@en .

fw:PearsonCorrelation a fw:CorrelationMethod ;
    rdfs:label "Pearson correlation"@en ;
    fw:formula "r = cov(X, Y) / (sd(X) * sd(Y))" .

fw:PropagationMethod a owl:Class ;
    rdfs:label "propagation method"@en ;
    rdfs:comment "Combines the degrees along a chain of statements into the degree of a derived statement."@en ;
    rdfs:subClassOf fw:Method .

fw:UncertainResourceValue a owl:Class ;
    rdfs:subClassOf fw:UncertainValue .

fw:VagueResourceValue a owl:Class ;
    rdfs:subClassOf fw:VagueValue .

fw:derivedFrom a owl:ObjectProperty ;
    rdfs:label "derived from"@en ;
    rdfs:comment "Optional. Links a statement to what its degree rests on: the evidence it was derived from (source string, image, embedding) or, for a derived statement, the statements it was derived from. Several statements may share one evidence node, which keeps them together (e.g. the alternatives of an OR)."@en ;
    rdfs:subPropertyOf prov:wasDerivedFrom .

fw:embeddingModel a owl:DatatypeProperty ;
    rdfs:label "embedding model"@en ;
    rdfs:comment "Name and version of the model that produced the embedding."@en ;
    rdfs:domain fw:EmbeddingEvidence ;
    rdfs:range xsd:string .

fw:formula a owl:DatatypeProperty ;
    rdfs:label "formula"@en ;
    rdfs:comment "The calculation rule of a method as plain text, e.g. (1 / n_possibilities) * (1/2 if n_question else 1)."@en ;
    rdfs:domain fw:Method ;
    rdfs:range xsd:string .

fw:hasCertainty a owl:ObjectProperty ;
    rdfs:comment """To indicate a quantitative statement about the certainty of a given statement. 
Could for example be used with: https://fuzzy-sl.wikibase.cloud/wiki/Main_Page - Prefix: fuzzy-sl - URL: https://fuzzy-sl.wikibase.cloud/entity/"""@en .

fw:hasEmbedding a owl:ObjectProperty ;
    rdfs:label "has embedding"@en ;
    rdfs:comment "Resolvable IRI of the vector (a file or an entry in a vector store). The vector itself is not written into the graph."@en ;
    rdfs:domain fw:EmbeddingEvidence .

fw:hasMediaLink a owl:ObjectProperty ;
    rdfs:label "has media link"@en ;
    rdfs:comment "Resolvable IRI of the media object (image, scan, audio)."@en ;
    rdfs:domain fw:MediaEvidence .

fw:hasMethod a owl:ObjectProperty ;
    rdfs:label "has method"@en ;
    rdfs:comment "The method by which a degree (or another fuzziness or uncertainty value) was obtained."@en ;
    rdfs:range fw:Method .

fw:hasType a owl:ObjectProperty ;
    rdfs:label "has type"@en ;
    rdfs:comment "The kind of fuzziness/wobbliness a statement or value is affected by: vagueness, uncertainty, or the two together; or fw:Certainty for a statement that is not affected by any of them. The value is a term (an individual of fw:FW_Type), not a value class such as fw:VagueValue. A statement without fw:hasType is read as fw:Vagueness by AMT.engine (also at degree 1.0); a tool that wants to say that a statement is certain writes fw:Certainty together with a degree of 1.0."@en ;
    rdfs:range fw:FW_Type .

fw:hasValue a owl:DatatypeProperty ;
    rdfs:comment "For non resource values: numerical, years, ..."@en .

fw:implementedBy a owl:ObjectProperty ;
    rdfs:label "implemented by"@en ;
    rdfs:comment "Resolvable IRI of the code that implements the method (repository file, release or software DOI)."@en ;
    rdfs:domain fw:Method .

fw:sourceString a owl:DatatypeProperty ;
    rdfs:label "source string"@en ;
    rdfs:comment "The text exactly as given in the source."@en ;
    rdfs:domain fw:TextEvidence ;
    rdfs:range xsd:string .

fw:CorrelationMethod a owl:Class ;
    rdfs:label "correlation method"@en ;
    rdfs:comment "A degree taken from the strength of a correlation between two series, e.g. Pearson."@en ;
    rdfs:subClassOf fw:StatisticalMethod .

fw:MachineLearningMethod a owl:Class ;
    rdfs:label "machine learning method"@en ;
    rdfs:comment "A degree reported by a trained model, e.g. a classifier confidence."@en ;
    rdfs:subClassOf fw:AssignmentMethod .

fw:MediaEvidence a owl:Class ;
    rdfs:label "media evidence"@en ;
    rdfs:comment "An image, scan, audio or other media object, given by a link; e.g. the image an AI detection was run on."@en ;
    rdfs:subClassOf fw:Evidence .

fw:RuleBasedMethod a owl:Class ;
    rdfs:label "rule-based method"@en ;
    rdfs:comment "A fixed rule applied to the form of the source statement."@en ;
    rdfs:subClassOf fw:AssignmentMethod .

fw:TextEvidence a owl:Class ;
    rdfs:label "text evidence"@en ;
    rdfs:comment "A text as given in the source, e.g. the string 'Lezoux or Vichy ?'."@en ;
    rdfs:subClassOf fw:Evidence .

fw:UncertainValue a owl:Class ;
    rdfs:comment "Represents the most likely value, although it may also be a different value. It holds exactly one value; several candidate values are a fw:VagueValue or a fw:FuzzinessWobblinessValue."@en ;
    rdfs:seeAlso fw:Uncertainty ;
    rdfs:subClassOf fw:FuzzinessWobblinessValue .

fw:Uncertainty a fw:FW_Type ;
    rdfs:label "uncertainty"@en ;
    skos:broader fw:FuzzinessWobbliness .

fw:VagueValue a owl:Class ;
    rdfs:comment "Valuable object with unclear but limited references or ranges."@en ;
    rdfs:seeAlso fw:Vagueness ;
    rdfs:subClassOf fw:FuzzinessWobblinessValue .

fw:Vagueness a fw:FW_Type ;
    rdfs:label "vagueness"@en ;
    skos:broader fw:FuzzinessWobbliness .

fw:hasConfidence a owl:DatatypeProperty ;
    rdfs:comment "Indicates the confidence level [0–1] assigned by the contributor or the system. The closer the value is to 1, the higher the confidence. A value of 1.0 would correspond to a certain statement. A confidence is one kind of degree of connection (fw:hasDegreeOfConnection); the degree itself may describe something other than a confidence. Work in progress: how far the two coincide is still being discussed with the AFE data model."@en ;
    rdfs:subPropertyOf fw:hasDegreeOfConnection,
        owl:topDataProperty .

fw:hasDegreeOfConnection a owl:DatatypeProperty ;
    rdfs:label "has degree of connection"@en ;
    rdfs:comment "Degree [0-1] to which a connection (statement, edge) holds. Same meaning as amt:weight. The degree can describe anything that is measured between 0 and 1; fw:hasConfidence, an assessment by a contributor or a system, is a sub-property of it, not the other way round."@en ;
    rdfs:range xsd:decimal ;
    rdfs:seeAlso fw:hasConfidence ;
    owl:equivalentProperty amt:weight .

fw:EmbeddingEvidence a owl:Class ;
    rdfs:label "embedding evidence"@en ;
    rdfs:comment "A semantic embedding (vector) of a text, image or other object, given by a link to the vector and the model that produced it."@en ;
    rdfs:subClassOf fw:Evidence .

fw:ProbabilityMethod a owl:Class ;
    rdfs:label "probability method"@en ;
    rdfs:comment "A degree taken from a probability, classical or estimated."@en ;
    rdfs:subClassOf fw:StatisticalMethod .

fw:StatisticalMethod a owl:Class ;
    rdfs:label "statistical method"@en ;
    rdfs:comment "A degree computed from observed data by a statistical procedure."@en ;
    rdfs:subClassOf fw:AssignmentMethod .

fw:Evidence a owl:Class ;
    rdfs:label "Evidence"@en ;
    rdfs:comment "What a degree or another fuzziness value is based on, as found in the source."@en .

fw:FuzzinessWobbliness a fw:FW_Type ;
    rdfs:label "fuzziness/wobbliness"@en ;
    rdfs:comment "Umbrella term; used when vagueness and uncertainty cannot be told apart."@en .

fw:FuzzinessWobblinessValue a owl:Class ;
    rdfs:comment "An object representing a set of vague and uncertain values or ranges. The provided values or ranges represent the current best values. It might be further qualified by the hasConfidence property."@en ;
    rdfs:seeAlso fw:FuzzinessWobbliness .

fw:AssignmentMethod a owl:Class ;
    rdfs:label "assignment method"@en ;
    rdfs:comment "Obtains a degree for a single statement from its source."@en ;
    rdfs:subClassOf fw:Method .

fw:FW_Type a owl:Class ;
    rdfs:label "FW type"@en ;
    rdfs:comment "Kind of fuzziness/wobbliness. The terms are individuals, so that fw:hasType points to a term, not to a class. Type and value class are two different things: the type (fw:Vagueness) says what kind of fuzziness a statement has; the value class (fw:VagueValue) is the container in which a value is stored. Each value class points to its type with rdfs:seeAlso. When a statement is derived from several others, AMT.engine gives it the common type of the antecedents; fw:Certainty does not count as long as another type is present, and different types give fw:FuzzinessWobbliness."@en .

fw:Method a owl:Class ;
    rdfs:label "Method"@en ;
    rdfs:comment "A procedure that produces or combines degrees of connection, confidences or other fuzziness values. Concrete methods are individuals and are resolvable by their IRI."@en .

