quantity (E12)

From MaRDI portal
EntitySchema:E12
language codelabeldescriptionaliasesedit
enquantityschema for quantityamount | number | quantulum | qtyedit
# Schema for quantities in the MaRDI portal (EntitySchema:E12)
PREFIX rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:     <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl:      <http://www.w3.org/2002/07/owl#>
PREFIX skos:     <http://www.w3.org/2004/02/skos/core#>
PREFIX schema:   <http://schema.org/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX wd:       <https://portal.mardi4nfdi.de/entity/>
PREFIX wdt:      <https://portal.mardi4nfdi.de/prop/direct/>
PREFIX p:        <https://portal.mardi4nfdi.de/prop/>
PREFIX ps:       <https://portal.mardi4nfdi.de/prop/statement/>
PREFIX pq:       <https://portal.mardi4nfdi.de/prop/qualifier/>

# import quantity kind
IMPORT <https://portal.mardi4nfdi.de/wiki/Special:EntitySchemaText/E17>

start = @<quantity>

# A quantity must be an instance of Q6534237 (quantity)
# AND belong to the MathModDB community (P1495 = Q6534265).
<quantity> EXTRA wdt:P31 wdt:P1495
                 rdfs:label skos:altLabel skos:prefLabel
                 schema:name schema:description
                 schema:version schema:dateModified
                 owl:sameAs wikibase:statements wikibase:sitelinks wikibase:identifiers {
  # instance of: quantity
  wdt:P31    [ wd:Q6534237 ] ;
  # community: MathModDB
  wdt:P1495  [ wd:Q6534265 ] ;
  # approximated by: another quantity (optional, with qualifier validation)
  p:P1655    @<approximatedByStatement> * ;
  # contains: another quantity or a quantity kind (direct, optional)
  wdt:P1560  (@<quantityRef> OR @<quantityKindRef>) * ;
  # contains: full statement node for qualifier validation
  p:P1560    @<containsStatement> * ;
  # described by source (optional, with possible qualifier)
  p:P286     @<describedBySourceStatement> * ;
  # linearized by: another quantity (optional)
  p:P1657    @<linearizedByStatement> * ;
  # nondimensionalized by: quantity or quantity kind (direct, optional)
  wdt:P1658  (@<quantityRef> OR @<quantityKindRef>) * ;
  # nondimensionalized by: full statement node for qualifier validation
  p:P1658    @<nondimensionalizedByStatement> * ;
  # specialized by: quantity or quantity kind (direct, optional)
  wdt:P1684  (@<quantityRef> OR @<quantityKindRef>) * ;
  # specialized by: full statement node for qualifier validation
  p:P1684    @<specializedByStatement> * ;
}

# Statement node for P1655.
# Uses <quantityRef> instead of <quantity> to avoid
# circular negative dependencies caused by mutual EXTRA recursion.
<approximatedByStatement> EXTRA ps:P1655 {
  ps:P1655   @<quantityRef> ;              # statement value: another quantity
}

# Entry point: statement node is either a quantity or a quantity kind
<containsStatement> (
  @<containsQuantityStatement>
  OR
  @<containsQuantityKindStatement>
)

# Branch 1 — value is another quantity
<containsQuantityStatement> EXTRA ps:P1560 {
  # statement value: another quantity
  ps:P1560   @<quantityRef> ;
  # qualifier: object has role = analytical solution, constant, input,
  # objective function, output, parameter (optional)
  pq:P560    [ wd:Q6775641 wd:Q6480317 wd:Q6480299
                     wd:Q6534255 wd:Q6480295 wd:Q6480341 ] *
}

# Branch 2 — value is a quantity kind
<containsQuantityKindStatement> EXTRA ps:P1560 {
  # statement value: a quantity kind
  ps:P1560   @<quantityKindRef> ;
  # qualifier: object has role = analytical solution, constant, input,
  # objective function, output, parameter (optional)
  pq:P560    [ wd:Q6775641 wd:Q6480317 wd:Q6480299
                    wd:Q6534255 wd:Q6480295 wd:Q6480341 ] *
}

<describedBySourceStatement> EXTRA ps:P286 pq:P560 {
  ps:P286    @<publication> ;
  # qualifier: object has role = review, use, invention, documentation, or science project, analysis, application (optional)
  pq:P560    [ wd:Q6672366 wd:Q6480405 wd:Q6672344 wd:Q6672349 wd:Q6775621 wd:Q6825292 wd:Q6825298 ] *
}

<publication> EXTRA wdt:P31
                    rdfs:label skos:altLabel schema:description
                    schema:version schema:dateModified owl:sameAs
                    wikibase:statements wikibase:sitelinks wikibase:identifiers {
  # instance of: scholarly article, conference paper, chapter, monograph, thesis, dissertation,
  # book, report, scientific journal, (version, edition, or translation), ISO standard edition, YouTube channel
  # written work, volume, reference work, encyclopedic dictionary, Jewish encyclopedia, universal encyclopedia
  # literary work, controlled vocabulary, explanatory dictionary
  wdt:P31    [ wd:Q56887 wd:Q56888 wd:Q56552 wd:Q56763  wd:Q57010 wd:Q56927
                     wd:Q56401 wd:Q57006 wd:Q56973 wd:Q56536 wd:Q7268923 wd:Q7270076
                     wd:Q56538 wd:Q56449 wd:Q7274954 wd:Q7284804  wd:Q7284810 wd:Q7284813
                     wd:Q56811 wd:Q7284835 wd:Q7284945] ;
}

<linearizedByStatement> EXTRA ps:P1657 {
  # statement value: another quantity
  ps:P1657   @<quantityRef> ;
}

# Entry point: statement node is either a quantity or a quantity kind
<nondimensionalizedByStatement> (
  @<nondimensionalizedByQuantityStatement>
  OR
  @<nondimensionalizedByQuantityKindStatement>
)

# Branch 1 — value is another quantity
<nondimensionalizedByQuantityStatement> EXTRA ps:P1658 {
  # statement value: another quantity
  ps:P1658   @<quantityRef> ;
}

# Branch 2 — value is a quantity kind
<nondimensionalizedByQuantityKindStatement> EXTRA ps:P1658 {
  # statement value: a quantity kind
  ps:P1658   @<quantityKindRef> ;
}

# Entry point: statement node is either a quantity or a quantity kind
<specializedByStatement> (
  @<specializedByQuantityStatement>
  OR
  @<specializedByQuantityKindStatement>
)

# Branch 1 — value is another quantity
<specializedByQuantityStatement> EXTRA ps:P1684 {
  # statement value: another quantity
  ps:P1684   @<quantityRef> ;
}

# Branch 2 — value is a quantity kind
<specializedByQuantityKindStatement> EXTRA ps:P1684 {
  # statement value: a quantity kind
  ps:P1684   @<quantityKindRef> ;
}

# Lightweight reference shape for quantities — no recursion beyond
# instance-of + community.
<quantityRef> EXTRA wdt:P31 wdt:P1495 {
  # instance of: quantity
  wdt:P31    [ wd:Q6534237 ] ;
  # community: MathModDB
  wdt:P1495  [ wd:Q6534265 ]
}

# Lightweight reference shape for quantity kinds — no recursion beyond
# instance-of + community. Full validation is handled by the imported E17 schema.
<quantityKindRef> EXTRA wdt:P31 wdt:P1495 {
  # instance of: quantity kind
  wdt:P31    [ wd:Q6534245 ] ;
  # community: MathModDB
  wdt:P1495  [ wd:Q6534265 ]
}