@prefix owl:  <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .
@prefix dct:  <http://purl.org/dc/terms/> .
@prefix ns:   <https://ontology.pflow.xyz/ns#> .

# Core module: what a Petri net is. Structure only. Behaviour (bounded, live,
# reachable) is decided by sim_verify / go-pflow, never derived here; the
# classes below name those properties so verdicts have somewhere to attach.
#
# Classes and properties that pflow.xyz/schema already minted are declared in
# generated/legacy.ttl, each owl:equivalentClass / owl:equivalentProperty to its
# old IRI. This file adds axioms to them and new terms the legacy context lacks.

<https://ontology.pflow.xyz/ns> a owl:Ontology ;
    dct:title "pflow ontology: core"@en ;
    owl:versionInfo "0.2.0" ;
    dct:license <https://creativecommons.org/publicdomain/zero/1.0/> ;
    dct:rights "Dedicated to the public domain under CC0 1.0 Universal."@en ;
    rdfs:comment "Petri-net structure, the pflow ecosystem's components, the writing and literature behind it, and sim's model kinds."@en .

# --- nodes and arcs are different kinds of thing ---------------------------

[] a owl:AllDisjointClasses ;
    owl:members ( ns:Place ns:Transition ns:Arc ns:Marking ) .

ns:InputArc a owl:Class ;
    rdfs:subClassOf ns:Arc ,
        [ a owl:Restriction ; owl:onProperty ns:arcSource ; owl:allValuesFrom ns:Place ] ,
        [ a owl:Restriction ; owl:onProperty ns:arcTarget ; owl:allValuesFrom ns:Transition ] ;
    rdfs:comment "Place to transition. Weight tokens are consumed when the transition fires."@en .

ns:OutputArc a owl:Class ;
    rdfs:subClassOf ns:Arc ,
        [ a owl:Restriction ; owl:onProperty ns:arcSource ; owl:allValuesFrom ns:Transition ] ,
        [ a owl:Restriction ; owl:onProperty ns:arcTarget ; owl:allValuesFrom ns:Place ] ;
    rdfs:comment "Transition to place. Weight tokens are produced when the transition fires."@en .

ns:InputArc owl:disjointWith ns:OutputArc .

# Contextual arcs test the marking without changing it, so they are absent from
# the incidence matrix (glossary: Contextual arc).
ns:ContextualArc a owl:Class ;
    rdfs:subClassOf ns:InputArc .
ns:ReadArc a owl:Class ;
    rdfs:subClassOf ns:ContextualArc ;
    rdfs:comment "Enables its transition only if the source place holds a token; consumes none."@en .
ns:InhibitorArc a owl:Class ;
    rdfs:subClassOf ns:ContextualArc ;
    rdfs:comment "Enables its transition only if the source place holds no token."@en .
ns:ReadArc owl:disjointWith ns:InhibitorArc .

# The wire format flags an inhibitor with a boolean on the arc, so the flag and
# the class must agree.
ns:InhibitorArc owl:equivalentClass [
    a owl:Class ;
    owl:intersectionOf ( ns:Arc [ a owl:Restriction ;
        owl:onProperty ns:inhibitTransition ;
        owl:hasValue "true"^^xsd:boolean ] ) ] .

# --- structure --------------------------------------------------------------

ns:arcSource a owl:ObjectProperty , owl:FunctionalProperty ;
    rdfs:domain ns:Arc ;
    rdfs:comment "Legacy documents write this member as `source`."@en .
ns:arcTarget a owl:ObjectProperty , owl:FunctionalProperty ;
    rdfs:domain ns:Arc ;
    rdfs:comment "Legacy documents write this member as `target`."@en .

ns:hasPlace a owl:ObjectProperty ; rdfs:domain ns:PetriNet ; rdfs:range ns:Place .
ns:hasTransition a owl:ObjectProperty ; rdfs:domain ns:PetriNet ; rdfs:range ns:Transition .
ns:hasArc a owl:ObjectProperty ; rdfs:domain ns:PetriNet ; rdfs:range ns:Arc .

ns:ContextualNet a owl:Class ;
    owl:equivalentClass [ a owl:Class ; owl:intersectionOf ( ns:PetriNet
        [ a owl:Restriction ; owl:onProperty ns:hasArc ; owl:someValuesFrom ns:ContextualArc ] ) ] ;
    rdfs:comment "A net with at least one read or inhibitor arc; not the free symmetric monoidal category of ordinary nets."@en .

# --- state ------------------------------------------------------------------

ns:Token a owl:Class .
ns:initialMarking a owl:ObjectProperty ; rdfs:domain ns:PetriNet ; rdfs:range ns:Marking .

ns:Guard a owl:Class ;
    rdfs:comment "Boolean condition on a transition, in addition to the token requirements."@en .
ns:hasGuard a owl:ObjectProperty ; rdfs:domain ns:Transition ; rdfs:range ns:Guard .

# --- legacy terms: where they attach (domains seen in real documents) -------

ns:initial  rdfs:domain ns:Place .
ns:capacity rdfs:domain ns:Place .
ns:offset   rdfs:domain ns:Place .
ns:weight   rdfs:domain ns:Arc .
ns:inhibitTransition rdfs:domain ns:Arc .
ns:rate     rdfs:domain ns:Transition .

# The legacy net-kind classes are all nets.
ns:WorkflowNet       rdfs:subClassOf ns:PetriNet .
ns:ComputationNet    rdfs:subClassOf ns:PetriNet .
ns:ResourceNet       rdfs:subClassOf ns:PetriNet .
ns:GameNet           rdfs:subClassOf ns:PetriNet .
ns:ClassificationNet rdfs:subClassOf ns:PetriNet .
ns:CompositeNet      rdfs:subClassOf ns:PetriNet .

# --- behavioural properties: named, not derived -----------------------------

ns:BoundedNet  a owl:Class ; rdfs:subClassOf ns:PetriNet ;
    rdfs:comment "Every place has a finite token maximum across reachable markings. Established by sim_verify, not inferred here."@en .
ns:LiveNet     a owl:Class ; rdfs:subClassOf ns:PetriNet ;
    rdfs:comment "Every transition can eventually fire from every reachable marking. Established by sim_verify, not inferred here."@en .
ns:DeadlockFreeNet a owl:Class ; rdfs:subClassOf ns:PetriNet ;
    rdfs:comment "No reachable marking enables no transition. Established by sim_verify, not inferred here."@en .
ns:LiveNet rdfs:subClassOf ns:DeadlockFreeNet .

# --- labels ---
ns:ContextualArc rdfs:label "ContextualArc"@en .
ns:ContextualNet rdfs:label "ContextualNet"@en .
ns:DeadlockFreeNet rdfs:label "DeadlockFreeNet"@en .
ns:Guard rdfs:label "Guard"@en .
ns:InhibitorArc rdfs:label "InhibitorArc"@en .
ns:InputArc rdfs:label "InputArc"@en .
ns:OutputArc rdfs:label "OutputArc"@en .
ns:ReadArc rdfs:label "ReadArc"@en .
ns:Token rdfs:label "Token"@en .
ns:arcSource rdfs:label "arcSource"@en .
ns:arcTarget rdfs:label "arcTarget"@en .
ns:hasArc rdfs:label "hasArc"@en .
ns:hasGuard rdfs:label "hasGuard"@en .
ns:hasPlace rdfs:label "hasPlace"@en .
ns:hasTransition rdfs:label "hasTransition"@en .
ns:initialMarking rdfs:label "initialMarking"@en .
@prefix owl:    <http://www.w3.org/2002/07/owl#> .
@prefix rdfs:   <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos:   <http://www.w3.org/2004/02/skos/core#> .
@prefix schema: <https://schema.org/> .
@prefix ns:     <https://ontology.pflow.xyz/ns#> .

# Components module: the software the ecosystem is made of. Instances come from
# generated/components.ttl (extract/components.py); this file is the vocabulary
# and its axioms. Only direct dependencies are asserted; the closure is derived.

schema:SoftwareSourceCode a owl:Class ;
    rdfs:label "SoftwareSourceCode"@en ;
    rdfs:isDefinedBy <https://schema.org/SoftwareSourceCode> .

ns:Component a owl:Class ;
    rdfs:subClassOf schema:SoftwareSourceCode ;
    rdfs:label "Component"@en ;
    rdfs:comment "A unit of source code that other code can depend on: a project, a package or a crate."@en .
ns:Project a owl:Class ; rdfs:subClassOf ns:Component ; rdfs:label "Project"@en ;
    rdfs:comment "A repository or published site. Listed in ns/projects.json by a person, and only if it is public."@en .
ns:GoPackage a owl:Class ; rdfs:subClassOf ns:Component ; rdfs:label "GoPackage"@en .
ns:RustCrate a owl:Class ; rdfs:subClassOf ns:Component ; rdfs:label "RustCrate"@en .

[] a owl:AllDisjointClasses ; owl:members ( ns:Project ns:GoPackage ns:RustCrate ) .

ns:dependsOn a owl:ObjectProperty , owl:TransitiveProperty ;
    rdfs:label "dependsOn"@en ;
    rdfs:domain ns:Component ; rdfs:range ns:Component ;
    rdfs:comment "Needs the other component to build, directly or through others. A cycle shows up after reasoning as a mutual pair (cq/05-dependency-cycles.rq). It is not an inconsistency, because OWL 2 DL does not allow irreflexivity on a transitive property, and the engine's closure omits self-loops, so X dependsOn X is never derived."@en .
ns:directDependency a owl:ObjectProperty ;
    rdfs:label "directDependency"@en ;
    rdfs:subPropertyOf ns:dependsOn ;
    rdfs:comment "Asserted from an import (Go), a path dependency (Cargo) or a go.mod requirement. Never inferred."@en .
ns:optionalDependency a owl:ObjectProperty ;
    rdfs:label "optionalDependency"@en ;
    rdfs:subPropertyOf ns:dependsOn ;
    rdfs:comment "A Cargo dependency behind a feature flag."@en .

ns:sourcePath a owl:DatatypeProperty ;
    rdfs:label "sourcePath"@en ; rdfs:domain ns:Component ;
    rdfs:comment "Path inside the project's repository."@en .

# Judgment layer (ns/links/components.ttl): a component realizes a glossary concept.
ns:implements a owl:ObjectProperty ;
    rdfs:label "implements"@en ;
    rdfs:domain ns:Component ; rdfs:range skos:Concept ;
    rdfs:comment "Proposed by the ontology-curator agent or a person, never extracted. Use only where the code visibly does what the concept says."@en .
@prefix owl:    <http://www.w3.org/2002/07/owl#> .
@prefix rdfs:   <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos:   <http://www.w3.org/2004/02/skos/core#> .
@prefix schema: <https://schema.org/> .
@prefix ns:     <https://ontology.pflow.xyz/ns#> .

# Knowledge and models modules: the published writing, the literature it cites,
# and sim's model kinds. Instances are in generated/knowledge.ttl and
# generated/models.ttl; this file is the vocabulary.

schema:CreativeWork a owl:Class ; rdfs:label "CreativeWork"@en ; rdfs:isDefinedBy <https://schema.org/CreativeWork> .
schema:BlogPosting a owl:Class ; rdfs:subClassOf schema:CreativeWork ; rdfs:label "BlogPosting"@en .
schema:Chapter a owl:Class ; rdfs:subClassOf schema:CreativeWork ; rdfs:label "Chapter"@en .
schema:Book a owl:Class ; rdfs:subClassOf schema:CreativeWork ; rdfs:label "Book"@en .
schema:Blog a owl:Class ; rdfs:subClassOf schema:CreativeWork ; rdfs:label "Blog"@en .
schema:Person a owl:Class ; rdfs:label "Person"@en ; rdfs:isDefinedBy <https://schema.org/Person> .

ns:Work a owl:Class ; rdfs:subClassOf schema:CreativeWork ; rdfs:label "Work"@en ;
    rdfs:comment "Something we published: a blog post, a book chapter, or the blog and book themselves."@en .
ns:Reference a owl:Class ; rdfs:subClassOf schema:CreativeWork ; rdfs:label "Reference"@en ;
    rdfs:comment "A paper, book or thesis, by bibliographic facts only. Cited by a Work, or added by an editor."@en .
ns:ModelKind a owl:Class ; rdfs:subClassOf skos:Concept ; rdfs:label "ModelKind"@en ;
    rdfs:comment "A kind of sim model, from the vocabulary sim publishes. Proposed, not yet applied to catalog models."@en .

[] a owl:AllDisjointClasses ; owl:members ( ns:Work ns:Reference ns:Component schema:Person ) .

ns:linksTo a owl:ObjectProperty ; rdfs:label "linksTo"@en ; rdfs:domain ns:Work ; rdfs:range ns:Work ;
    rdfs:comment "The work links to the other in its text."@en .
schema:citation a owl:ObjectProperty ; rdfs:domain ns:Work ; rdfs:range ns:Reference .
ns:collection a owl:DatatypeProperty ; rdfs:label "collection"@en ; rdfs:domain ns:Work .
ns:venue a owl:DatatypeProperty ; rdfs:label "venue"@en ; rdfs:domain ns:Reference .
ns:arxiv a owl:DatatypeProperty ; rdfs:label "arxiv"@en ; rdfs:domain ns:Reference ;
    rdfs:comment "arXiv identifier, checked against the paper."@en .
ns:addedBy a owl:DatatypeProperty ; rdfs:label "addedBy"@en ; rdfs:domain ns:Reference ;
    rdfs:comment "Present only on references an editor added; the writing does not cite them."@en .
ns:basis a owl:DatatypeProperty ; rdfs:label "basis"@en ;
    rdfs:comment "Why an editor-added statement is there."@en .
ns:status a owl:DatatypeProperty ; rdfs:label "status"@en .

# --- claims and the support for them -----------------------------------------

schema:Claim a owl:Class ; rdfs:label "Claim"@en ; rdfs:isDefinedBy <https://schema.org/Claim> .
ns:Support a owl:Class ; rdfs:label "Support"@en ;
    rdfs:comment "One piece of evidence for or against a claim: which work, where in it, what it shows, and how directly."@en .
ns:supportedBy a owl:ObjectProperty ; rdfs:label "supportedBy"@en ; rdfs:domain schema:Claim ; rdfs:range ns:Support .
ns:source a owl:ObjectProperty ; rdfs:label "source"@en ; rdfs:domain ns:Support ; rdfs:range ns:Reference .
ns:aboutConcept a owl:ObjectProperty ; rdfs:label "aboutConcept"@en ; rdfs:domain ns:Support ; rdfs:range skos:Concept .
ns:location a owl:DatatypeProperty ; rdfs:label "location"@en ; rdfs:domain ns:Support ;
    rdfs:comment "Where in the source to look."@en .
ns:evidence a owl:DatatypeProperty ; rdfs:label "evidence"@en ; rdfs:domain ns:Support ;
    rdfs:comment "What the source shows there, in the curator's words."@en .
ns:strength a owl:DatatypeProperty ; rdfs:label "strength"@en ; rdfs:domain ns:Support ;
    rdfs:comment "direct, background, general, origin, or limit (shows where the claim stops)."@en .
ns:caveat a owl:DatatypeProperty ; rdfs:label "caveat"@en ;
    rdfs:comment "What a reader must not infer."@en .
ns:assertedBy a owl:DatatypeProperty ; rdfs:label "assertedBy"@en ;
    rdfs:comment "'editor' or 'assistant-judgment'. Never an engine result."@en .
ns:authorList a owl:DatatypeProperty ; rdfs:label "authorList"@en ; rdfs:domain ns:Reference ;
    rdfs:comment "The authors in citation order, separated by semicolons. schema:author is an unordered set, so this is what a citation is built from."@en .
@prefix rdfs:   <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos:   <http://www.w3.org/2004/02/skos/core#> .
@prefix schema: <https://schema.org/> .
@prefix ns:     <https://ontology.pflow.xyz/ns#> .
@prefix term:   <https://ontology.pflow.xyz/term/> .
@prefix ref:    <https://ontology.pflow.xyz/ref/> .
@prefix claim:  <https://ontology.pflow.xyz/claim/> .

# Judgment layer: the categorical-foundations concepts and the claim that
# constructed nets are categorical gadgets, with what the literature does and
# does not support. Nothing here is extracted. Concepts and support records are
# assistant-judgment, checked against the cited texts on 2026-10-26 and pending
# the editor's acceptance; the claim itself is the editor's, in the editor's words.
# Evidence locations point into the cited work so a reader can check them.

<https://ontology.pflow.xyz/term/scheme/categorical> a skos:ConceptScheme ;
    rdfs:label "categorical foundations"@en .

term:yoneda-lemma a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/categorical> ;
    skos:prefLabel "Yoneda lemma"@en ;
    skos:definition "For a locally small category C, an object c and a functor F from C^op to Set, the natural transformations from the representable functor Hom(-, c) to F correspond bijectively to the elements of F(c), naturally in c and F."@en ;
    ns:basis "Riehl, Category Theory in Context, section 2.2." ;
    ns:assertedBy "assistant-judgment" .

term:yoneda-embedding a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/categorical> ;
    skos:prefLabel "Yoneda embedding"@en ;
    skos:definition "The functor from a locally small category C to the category of presheaves on C that sends an object c to Hom(-, c). It is fully faithful, which is a consequence of the Yoneda lemma."@en ;
    skos:broader term:yoneda-lemma ;
    ns:basis "Riehl, Category Theory in Context, section 2.2." ;
    ns:assertedBy "assistant-judgment" .

term:presheaf-category a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/categorical> ;
    skos:prefLabel "Presheaf category"@en ;
    skos:definition "The category of functors from C^op to Set, with natural transformations as morphisms. Presheaf categories are toposes."@en ;
    skos:related term:yoneda-embedding ;
    ns:basis "Standard; see Riehl, Category Theory in Context." ;
    ns:assertedBy "assistant-judgment" .

term:categorical-gadget a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/categorical> ;
    skos:prefLabel "Categorical gadget"@en ;
    skos:scopeNote "The editor's term, not a standard one. What the sources support about it is recorded on claim:nets-are-categorical-gadgets."@en ;
    ns:assertedBy "editor" .

claim:nets-are-categorical-gadgets a schema:Claim ;
    rdfs:label "Constructed nets are categorical gadgets"@en ;
    schema:text "Constructed nets are categorical gadgets."@en ;
    ns:assertedBy "editor" ;
    ns:status "thesis: the support below is what the cited texts say, not a proof" ;
    skos:related term:categorical-gadget , term:yoneda-lemma ;
    ns:caveat """No source cited here applies the Yoneda lemma to nets built with pflow's token language; that step is the editor's argument. In Baez, Genovese, Master and Shulman the presheaf property is proved for pre-nets and for Sigma-nets (nets whose tokens are individually tracked), and the paper states that the category of ordinary Petri nets is not a presheaf category. A statement of the claim should say which kind of net it means.""" ;
    ns:supportedBy claim:s1-presheaf-category , claim:s2-yoneda-embedding , claim:s3-yoneda-lemma-used ,
        claim:s4-limit-ordinary-petri-nets , claim:s5-free-monoidal-meseguer-montanari ,
        claim:s6-free-monoidal-sassone , claim:s7-open-petri-nets , claim:s8-yoneda-riehl ,
        claim:s9-yoneda-mac-lane , claim:s10-yoneda-origin .

claim:s1-presheaf-category a ns:Support ;
    ns:source ref:baez-2021-categories-of-nets ; ns:aboutConcept term:presheaf-category ;
    ns:strength "direct" ;
    ns:location "Proposition 4.3 (section 4) and Theorem 6.1 (section 6.1, 'The presheaf perspective')" ;
    ns:evidence "States that the category of pre-nets and the category of Sigma-nets are each equivalent to a presheaf category. The proof of Theorem 6.1 builds a category D so that functors from D to Set can be identified with Sigma-nets." ;
    ns:caveat "Applies to pre-nets and Sigma-nets, not to ordinary Petri nets (see claim:s4-limit-ordinary-petri-nets)." ;
    ns:assertedBy "assistant-judgment" .

claim:s2-yoneda-embedding a ns:Support ;
    ns:source ref:baez-2021-categories-of-nets ; ns:aboutConcept term:yoneda-embedding ;
    ns:strength "direct" ;
    ns:location "Section 8, 'Relation to whole-grain Petri nets', the paragraph giving another construction of the functor Z2" ;
    ns:evidence "Describes Z2 as a restricted Yoneda embedding, or nerve, and says D is the full image of the composite of the Yoneda embedding of C into [C^op, Set], which is equivalent to PreNet, with Z1." ;
    ns:assertedBy "assistant-judgment" .

claim:s3-yoneda-lemma-used a ns:Support ;
    ns:source ref:baez-2021-categories-of-nets ; ns:aboutConcept term:yoneda-lemma ;
    ns:strength "direct" ;
    ns:location "Section 7, proof of Lemma 7.11" ;
    ns:evidence "Applies the Yoneda lemma to describe monoid structures for the convolution product on a category B under the free symmetric monoidal category, as morphisms B(a,c) x B(b,d) to B(ab,cd). Used to identify the duoids of Sigma-nets with PROPs." ;
    ns:assertedBy "assistant-judgment" .

claim:s4-limit-ordinary-petri-nets a ns:Support ;
    ns:source ref:baez-2021-categories-of-nets ; ns:aboutConcept term:presheaf-category ;
    ns:strength "limit" ;
    ns:location "Section 6.1, remarks after Theorem 6.1" ;
    ns:evidence "Notes that Sigma-net is a topos, hence adhesive, and that Petri, the category of ordinary Petri nets, is not a presheaf category." ;
    ns:caveat "Marks where the Yoneda argument stops: it does not transfer to ordinary Petri nets by this route." ;
    ns:assertedBy "assistant-judgment" .

claim:s5-free-monoidal-meseguer-montanari a ns:Support ;
    ns:source ref:meseguer-1990-petri-nets-are-monoids ;
    ns:strength "background" ;
    ns:location "Whole paper (the title result)" ;
    ns:evidence "Cited in this ecosystem's Appendix E and in the posts as the result that a net's firing sequences form a free monoidal category." ;
    ns:caveat "The abstract of Baez et al. distinguishes the collective-token reading, where nets generate commutative monoidal categories, from the individual-token reading, where Sigma-nets generate symmetric strict monoidal categories. Appendix E's 'free symmetric monoidal category' belongs to the second." ;
    ns:assertedBy "assistant-judgment" .

claim:s6-free-monoidal-sassone a ns:Support ;
    ns:source ref:sassone-1995-on-the-category-of-petri-net-computation ;
    ns:strength "background" ;
    ns:location "Whole paper" ;
    ns:evidence "Cited in this ecosystem's Appendix E as refining the construction to symmetric monoidal categories." ;
    ns:assertedBy "assistant-judgment" .

claim:s7-open-petri-nets a ns:Support ;
    ns:source ref:baez-2020-open-petri-nets ;
    ns:strength "background" ;
    ns:location "Abstract (only the abstract was checked)" ;
    ns:evidence "An open Petri net has places designated as inputs and outputs via a cospan of sets, which lets nets be composed." ;
    ns:assertedBy "assistant-judgment" .

claim:s8-yoneda-riehl a ns:Support ;
    ns:source ref:riehl-2016-category-theory-in-context ; ns:aboutConcept term:yoneda-lemma ;
    ns:strength "general" ;
    ns:location "Section 2.2, 'The Yoneda lemma'" ;
    ns:evidence "Textbook statement and proof of the lemma. Says nothing about nets." ;
    ns:assertedBy "assistant-judgment" .

claim:s9-yoneda-mac-lane a ns:Support ;
    ns:source ref:mac-lane-1998-categories-for-the-working-mathematician ; ns:aboutConcept term:yoneda-lemma ;
    ns:strength "general" ;
    ns:location "Chapter III, 'Universals and Limits' (section not checked)" ;
    ns:evidence "Standard reference for the lemma. Says nothing about nets." ;
    ns:assertedBy "assistant-judgment" .

claim:s10-yoneda-origin a ns:Support ;
    ns:source ref:yoneda-1954-on-the-homology-theory-of-modules ; ns:aboutConcept term:yoneda-lemma ;
    ns:strength "origin" ;
    ns:location "Whole paper" ;
    ns:evidence "The paper associated with Yoneda's name." ;
    ns:caveat "Whether the lemma is stated in this paper was not checked; cite a textbook for the statement." ;
    ns:assertedBy "assistant-judgment" .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix ns: <https://ontology.pflow.xyz/ns#> .
@prefix old: <https://pflow.xyz/schema#> .

ns:PetriNet a owl:Class ;
    rdfs:label "PetriNet"@en ;
    owl:equivalentClass old:PetriNet .
old:PetriNet a owl:Class .

ns:Place a owl:Class ;
    rdfs:label "Place"@en ;
    owl:equivalentClass old:Place .
old:Place a owl:Class .

ns:Transition a owl:Class ;
    rdfs:label "Transition"@en ;
    owl:equivalentClass old:Transition .
old:Transition a owl:Class .

ns:Arc a owl:Class ;
    rdfs:label "Arc"@en ;
    owl:equivalentClass old:Arrow .
old:Arrow a owl:Class .

ns:PetriNetSeal a owl:Class ;
    rdfs:label "PetriNetSeal"@en ;
    owl:equivalentClass old:PetriNetSeal .
old:PetriNetSeal a owl:Class .

ns:PetriRuntime a owl:Class ;
    rdfs:label "PetriRuntime"@en ;
    owl:equivalentClass old:PetriRuntime .
old:PetriRuntime a owl:Class .

ns:InvariantClaim a owl:Class ;
    rdfs:label "InvariantClaim"@en ;
    owl:equivalentClass old:InvariantClaim .
old:InvariantClaim a owl:Class .

ns:Signature a owl:Class ;
    rdfs:label "Signature"@en ;
    owl:equivalentClass old:Signature .
old:Signature a owl:Class .

ns:TransitionFireEvent a owl:Class ;
    rdfs:label "TransitionFireEvent"@en ;
    owl:equivalentClass old:TransitionFireEvent .
old:TransitionFireEvent a owl:Class .

ns:WorkflowNet a owl:Class ;
    rdfs:label "WorkflowNet"@en ;
    owl:equivalentClass old:WorkflowNet .
old:WorkflowNet a owl:Class .

ns:ComputationNet a owl:Class ;
    rdfs:label "ComputationNet"@en ;
    owl:equivalentClass old:ComputationNet .
old:ComputationNet a owl:Class .

ns:ResourceNet a owl:Class ;
    rdfs:label "ResourceNet"@en ;
    owl:equivalentClass old:ResourceNet .
old:ResourceNet a owl:Class .

ns:GameNet a owl:Class ;
    rdfs:label "GameNet"@en ;
    owl:equivalentClass old:GameNet .
old:GameNet a owl:Class .

ns:ClassificationNet a owl:Class ;
    rdfs:label "ClassificationNet"@en ;
    owl:equivalentClass old:ClassificationNet .
old:ClassificationNet a owl:Class .

ns:CompositeNet a owl:Class ;
    rdfs:label "CompositeNet"@en ;
    owl:equivalentClass old:CompositeNet .
old:CompositeNet a owl:Class .

ns:DataLink a owl:Class ;
    rdfs:label "DataLink"@en ;
    owl:equivalentClass old:DataLink .
old:DataLink a owl:Class .

ns:EventLink a owl:Class ;
    rdfs:label "EventLink"@en ;
    owl:equivalentClass old:EventLink .
old:EventLink a owl:Class .

ns:TokenLink a owl:Class ;
    rdfs:label "TokenLink"@en ;
    owl:equivalentClass old:TokenLink .
old:TokenLink a owl:Class .

ns:GuardLink a owl:Class ;
    rdfs:label "GuardLink"@en ;
    owl:equivalentClass old:GuardLink .
old:GuardLink a owl:Class .

ns:offset a owl:DatatypeProperty ;
    rdfs:range xsd:integer ;
    rdfs:label "offset"@en ;
    owl:equivalentProperty old:offset .
old:offset a owl:DatatypeProperty .

ns:initial a owl:DatatypeProperty ;
    rdfs:range xsd:integer ;
    rdfs:label "initial"@en ;
    owl:equivalentProperty old:initial .
old:initial a owl:DatatypeProperty .

ns:capacity a owl:DatatypeProperty ;
    rdfs:range xsd:integer ;
    rdfs:label "capacity"@en ;
    owl:equivalentProperty old:capacity .
old:capacity a owl:DatatypeProperty .

ns:x a owl:DatatypeProperty ;
    rdfs:range xsd:integer ;
    rdfs:label "x"@en ;
    owl:equivalentProperty old:x .
old:x a owl:DatatypeProperty .

ns:y a owl:DatatypeProperty ;
    rdfs:range xsd:integer ;
    rdfs:label "y"@en ;
    owl:equivalentProperty old:y .
old:y a owl:DatatypeProperty .

ns:token a owl:ObjectProperty ;
    rdfs:label "token"@en ;
    owl:equivalentProperty old:token .
old:token a owl:ObjectProperty .

ns:ticker a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "ticker"@en ;
    owl:equivalentProperty old:ticker .
old:ticker a owl:DatatypeProperty .

ns:denomination a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "denomination"@en ;
    owl:equivalentProperty old:denomination .
old:denomination a owl:DatatypeProperty .

ns:inhibitTransition a owl:DatatypeProperty ;
    rdfs:range xsd:boolean ;
    rdfs:label "inhibitTransition"@en ;
    owl:equivalentProperty old:inhibitTransition .
old:inhibitTransition a owl:DatatypeProperty .

ns:weight a owl:DatatypeProperty ;
    rdfs:label "weight"@en ;
    owl:equivalentProperty old:weight .
old:weight a owl:DatatypeProperty .

ns:parents a owl:DatatypeProperty ;
    rdfs:label "parents"@en ;
    owl:equivalentProperty old:parents .
old:parents a owl:DatatypeProperty .

ns:arcType a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "arcType"@en ;
    owl:equivalentProperty old:arcType .
old:arcType a owl:DatatypeProperty .

ns:function a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "function"@en ;
    owl:equivalentProperty old:function .
old:function a owl:DatatypeProperty .

ns:priority a owl:DatatypeProperty ;
    rdfs:range xsd:integer ;
    rdfs:label "priority"@en ;
    owl:equivalentProperty old:priority .
old:priority a owl:DatatypeProperty .

ns:rate a owl:DatatypeProperty ;
    rdfs:range xsd:double ;
    rdfs:label "rate"@en ;
    owl:equivalentProperty old:rate .
old:rate a owl:DatatypeProperty .

ns:model a owl:ObjectProperty ;
    rdfs:range ns:PetriNet ;
    rdfs:label "model"@en ;
    owl:equivalentProperty old:model .
old:model a owl:ObjectProperty .

ns:modelCID a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "modelCID"@en ;
    owl:equivalentProperty old:modelCID .
old:modelCID a owl:DatatypeProperty .

ns:createdBy a owl:ObjectProperty ;
    rdfs:label "createdBy"@en ;
    owl:equivalentProperty old:createdBy .
old:createdBy a owl:ObjectProperty .

ns:createdAt a owl:DatatypeProperty ;
    rdfs:range xsd:dateTime ;
    rdfs:label "createdAt"@en ;
    owl:equivalentProperty old:createdAt .
old:createdAt a owl:DatatypeProperty .

ns:runtime a owl:ObjectProperty ;
    rdfs:range ns:PetriRuntime ;
    rdfs:label "runtime"@en ;
    owl:equivalentProperty old:runtime .
old:runtime a owl:ObjectProperty .

ns:invariants a owl:ObjectProperty ;
    rdfs:range ns:InvariantClaim ;
    rdfs:label "invariants"@en ;
    owl:equivalentProperty old:invariants .
old:invariants a owl:ObjectProperty .

ns:signature a owl:ObjectProperty ;
    rdfs:range ns:Signature ;
    rdfs:label "signature"@en ;
    owl:equivalentProperty old:signature .
old:signature a owl:ObjectProperty .

ns:impl a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "impl"@en ;
    owl:equivalentProperty old:impl .
old:impl a owl:DatatypeProperty .

ns:implHash a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "implHash"@en ;
    owl:equivalentProperty old:implHash .
old:implHash a owl:DatatypeProperty .

ns:semantics a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "semantics"@en ;
    owl:equivalentProperty old:semantics .
old:semantics a owl:DatatypeProperty .

ns:description a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "description"@en ;
    owl:equivalentProperty old:description .
old:description a owl:DatatypeProperty .

ns:places a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "places"@en ;
    owl:equivalentProperty old:places .
old:places a owl:DatatypeProperty .

ns:claim a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "claim"@en ;
    owl:equivalentProperty old:claim .
old:claim a owl:DatatypeProperty .

ns:maxTotal a owl:DatatypeProperty ;
    rdfs:range xsd:integer ;
    rdfs:label "maxTotal"@en ;
    owl:equivalentProperty old:maxTotal .
old:maxTotal a owl:DatatypeProperty .

ns:bound a owl:DatatypeProperty ;
    rdfs:range xsd:integer ;
    rdfs:label "bound"@en ;
    owl:equivalentProperty old:bound .
old:bound a owl:DatatypeProperty .

ns:publicKey a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "publicKey"@en ;
    owl:equivalentProperty old:publicKey .
old:publicKey a owl:DatatypeProperty .

ns:sig a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "sig"@en ;
    owl:equivalentProperty old:sig .
old:sig a owl:DatatypeProperty .

ns:sigType a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "sigType"@en ;
    owl:equivalentProperty old:sigType .
old:sigType a owl:DatatypeProperty .

ns:signedFields a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "signedFields"@en ;
    owl:equivalentProperty old:signedFields .
old:signedFields a owl:DatatypeProperty .

ns:fired a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "fired"@en ;
    owl:equivalentProperty old:fired .
old:fired a owl:DatatypeProperty .

ns:prevMarking a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "prevMarking"@en ;
    owl:equivalentProperty old:prevMarking .
old:prevMarking a owl:DatatypeProperty .

ns:nextMarking a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "nextMarking"@en ;
    owl:equivalentProperty old:nextMarking .
old:nextMarking a owl:DatatypeProperty .

ns:actor a owl:ObjectProperty ;
    rdfs:label "actor"@en ;
    owl:equivalentProperty old:actor .
old:actor a owl:ObjectProperty .

ns:runtimeHash a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "runtimeHash"@en ;
    owl:equivalentProperty old:runtimeHash .
old:runtimeHash a owl:DatatypeProperty .

ns:timestamp a owl:DatatypeProperty ;
    rdfs:range xsd:dateTime ;
    rdfs:label "timestamp"@en ;
    owl:equivalentProperty old:timestamp .
old:timestamp a owl:DatatypeProperty .

ns:schemas a owl:DatatypeProperty ;
    rdfs:label "schemas"@en ;
    owl:equivalentProperty old:schemas .
old:schemas a owl:DatatypeProperty .

ns:links a owl:DatatypeProperty ;
    rdfs:label "links"@en ;
    owl:equivalentProperty old:links .
old:links a owl:DatatypeProperty .

ns:ref a owl:DatatypeProperty ;
    rdfs:range xsd:anyURI ;
    rdfs:label "ref"@en ;
    owl:equivalentProperty old:ref .
old:ref a owl:DatatypeProperty .

ns:from a owl:ObjectProperty ;
    rdfs:label "from"@en ;
    owl:equivalentProperty old:from .
old:from a owl:ObjectProperty .

ns:to a owl:ObjectProperty ;
    rdfs:label "to"@en ;
    owl:equivalentProperty old:to .
old:to a owl:ObjectProperty .

ns:place a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "place"@en ;
    owl:equivalentProperty old:place .
old:place a owl:DatatypeProperty .

ns:transition a owl:DatatypeProperty ;
    rdfs:range xsd:string ;
    rdfs:label "transition"@en ;
    owl:equivalentProperty old:transition .
old:transition a owl:DatatypeProperty .

@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix ns: <https://ontology.pflow.xyz/ns#> .
@prefix term: <https://ontology.pflow.xyz/term/> .

<https://ontology.pflow.xyz/term/scheme/core> a skos:ConceptScheme ;
    skos:prefLabel "pflow core glossary"@en .

<https://ontology.pflow.xyz/term/scheme/ecosystem> a skos:ConceptScheme ;
    skos:prefLabel "pflow ecosystem glossary"@en .

term:arc a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Arc"""@en ;
    skos:definition """A directed connection between a place and a transition (input arc) or a transition and a place (output arc). Arcs define the flow relation of the net. Each arc has a weight (default 1) specifying how many tokens are consumed or produced."""@en ;
    skos:closeMatch ns:Arc ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:bipartite-graph a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Bipartite graph"""@en ;
    skos:definition """A graph whose nodes divide into two disjoint sets, with edges only between sets, never within. Petri nets are bipartite: places connect to transitions, transitions connect to places, but places never connect directly to places."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:bounded a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Bounded"""@en ;
    skos:definition """A net is bounded if every place has a finite maximum token count across all reachable markings. A net is $k$-bounded if no place ever exceeds $k$ tokens. Boundedness is a safety property — it guarantees the system can't accumulate unbounded resources."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:cid a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """CID"""@en ;
    skos:altLabel """Content Identifier"""@en ;
    skos:definition """A hash-based identifier for content-addressed data. In the pflow ecosystem, CIDs identify JSON-LD models deterministically — the same model always produces the same CID regardless of where or when it's computed (Chapter 16)."""@en ;
    ns:coveredInChapter "16"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:compression-ratio a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Compression ratio"""@en ;
    skos:altLabel """$\\rho$"""@en ;
    skos:definition """For a transition, tokens consumed divided by tokens produced. $\\rho = 1$ is the core; $\\rho > 1$ is an observer that destroys state to produce a verdict. A property of the incidence matrix column, so every analysis of $C$ can see it. See *Core–observer boundary*."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:conservation-law a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Conservation law"""@en ;
    skos:definition """An equation $\\mathbf{y}^T \\mathbf{C} = \\mathbf{0}$ where $\\mathbf{y}$ is a vector of weights and $\\mathbf{C}$ is the incidence matrix. Conservation laws prove that weighted sums of token counts remain constant across all firings. Example: in an SIR model, $S + I + R = N$ for all time."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:contextual-arc a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Contextual arc"""@en ;
    skos:definition """A read arc (fires only if a place holds a token, without consuming it) or an inhibitor arc (fires only if it holds none). Neither appears in the incidence matrix, since neither changes the marking. Nets with contextual arcs do not generate the free symmetric monoidal category of ordinary nets (Montanari & Rossi, 1995); they are the categorical half of the core–observer boundary, and the natural home of guards."""@en ;
    skos:closeMatch ns:ContextualArc ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:continuous-relaxation a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Continuous relaxation"""@en ;
    skos:definition """Replacing discrete token counts with continuous concentrations and firing rules with differential equations. The Petri net becomes a system of ODEs via mass-action kinetics, enabling simulation with numerical solvers (Chapter 3)."""@en ;
    ns:coveredInChapter "3"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:core-observer-boundary a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Core–observer boundary"""@en ;
    skos:definition """Two distinct boundaries that older material treated as one. The *algebraic* boundary ($\\rho$) lies inside $C$ and separates transitions the tropical eigenvalue and uniform R1CS can handle from those they cannot; it does not affect composition. The *contextual* boundary (read/inhibitor arcs) lies outside $C$ and breaks free composition; it does not affect $\\rho$. Canonical statement in Appendix E."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:deadlock a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Deadlock"""@en ;
    skos:definition """A marking where no transition is enabled. The system is stuck — no further computation is possible. Deadlock detection is a key analysis performed by the reachability package."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:enabled a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Enabled"""@en ;
    skos:definition """A transition is enabled at a marking $\\mathbf{m}$ if every input place has at least as many tokens as the corresponding arc weight: $\\mathbf{m}(p) \\geq W(p, t)$ for all input places $p$. An enabled transition may fire; a disabled one cannot."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:equilibrium a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Equilibrium"""@en ;
    skos:definition """A state where all derivatives are approximately zero — the system has stopped changing. go-pflow's `SolveUntilEquilibrium` stops early once the largest absolute derivative stays below a tolerance (default $10^{-6}$) for several consecutive checks (`solver/equilibrium.go`; Appendix A)."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:event-sourcing a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Event sourcing"""@en ;
    skos:definition """A state management pattern where state is computed by replaying an immutable log of events from the initial state: $\\text{State}(t) = \\text{fold}(\\text{apply}, \\text{initialState}, \\text{events}[0..t])$. In Petri net terms, events are transition firings and state is the marking (Chapter 20)."""@en ;
    ns:coveredInChapter "20"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:firing-rule a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Firing rule"""@en ;
    skos:definition """The execution semantics of Petri nets. When a transition fires, it atomically removes tokens from input places and adds tokens to output places according to arc weights. The new marking is $\\mathbf{m}' = \\mathbf{m} + \\mathbf{C} \\cdot \\mathbf{e}_t$ where $\\mathbf{e}_t$ is the unit vector for transition $t$."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:groth16 a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Groth16"""@en ;
    skos:definition """A zero-knowledge proof system used in pflow for verifying Petri net transitions without revealing state. Produces constant-size proofs with fast verification, at the cost of a per-circuit trusted setup (Chapter 12)."""@en ;
    ns:coveredInChapter "12"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:guard a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Guard"""@en ;
    skos:definition """A boolean expression attached to a transition that must evaluate to true for the transition to be enabled, in addition to the standard token requirements. Guards extend the firing rule with data-dependent conditions."""@en ;
    skos:closeMatch ns:Guard ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:incidence-matrix a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Incidence matrix"""@en ;
    skos:definition """The matrix $\\mathbf{C} = \\mathbf{C}^+ - \\mathbf{C}^-$ where $\\mathbf{C}^+$ is the output matrix (tokens produced) and $\\mathbf{C}^-$ is the input matrix (tokens consumed). Each column represents a transition; each row represents a place. The entry $\\mathbf{C}_{ij}$ is the net change in place $i$ when transition $j$ fires (Chapter 2)."""@en ;
    ns:coveredInChapter "2"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:interleaving-vs-partial-order-semantics a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Interleaving vs. partial-order semantics"""@en ;
    skos:definition """Two readings of concurrent behavior. Interleaving semantics considers one firing at a time and asks which markings are reachable; partial-order (unfolding) semantics additionally records which firings were independent. Encoding a read arc as a consume-then-restore self-loop is exact under the first and inequivalent under the second (Vogler, Semenov & Yakovlev, 1998). A single-transition ZK proof has only interleaving semantics."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:json-ld a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """JSON-LD"""@en ;
    skos:definition """JSON for Linked Data. The pflow ecosystem uses JSON-LD as its model interchange format, with `@context: "https://pflow.xyz/schema"`. JSON-LD makes models self-describing and content-addressable (Chapter 16)."""@en ;
    ns:coveredInChapter "16"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:liveness a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Liveness"""@en ;
    skos:definition """A transition is live if it can eventually fire from every reachable marking (possibly after other transitions fire first). A net is live if all transitions are live. Liveness means the system never permanently loses capability."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:marking a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Marking"""@en ;
    skos:definition """The distribution of tokens across all places at a given moment; the state of the Petri net. Written as a vector $\\mathbf{m}$ where $\\mathbf{m}(p)$ is the token count at place $p$. The initial marking $\\mathbf{m}_0$ is the starting state."""@en ;
    skos:closeMatch ns:Marking ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:mass-action-kinetics a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Mass-action kinetics"""@en ;
    skos:definition """A rate law from chemistry where the rate of a reaction is proportional to the product of reactant concentrations. As go-pflow implements it, the continuous firing rate of transition $t$ is $r_t \\prod_{p \\in \\text{inputs}(t)} m(p)$, where $r_t$ is the rate constant: first order in every input place, whatever the arc weight. The weight $w(p,t)$ enters only the stoichiometry, so place $p$ drains at $w(p,t)$ times the flux ([`solver/ode.go`](https://github.com/pflow-xyz/go-pflow/blob/main/solver/ode.go); Chapter 3)."""@en ;
    ns:coveredInChapter "3"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:mimc a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """MiMC"""@en ;
    skos:altLabel """Minimum Multiplicative Complexity"""@en ;
    skos:definition """A hash function designed for efficiency inside arithmetic circuits. Used in pflow's zero-knowledge proofs to hash Petri net markings with minimal constraint count (Chapter 12)."""@en ;
    ns:coveredInChapter "12"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:monotonic-expansion a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Monotonic expansion"""@en ;
    skos:definition """The discipline of a schema that only grows: new facts can be added, existing facts are never retracted, so learning more never invalidates what was already known (Chapter 16). The history places of Chapters 6 and 7 follow the same discipline at the level of a single net. See *Write-once place*."""@en ;
    ns:coveredInChapter "6"^^xsd:integer ;
    ns:coveredInChapter "16"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:ode a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """ODE"""@en ;
    skos:altLabel """Ordinary Differential Equation"""@en ;
    skos:definition """An equation relating a function to its derivatives. The continuous relaxation of a Petri net produces a system of ODEs: $\\frac{d\\mathbf{m}}{dt} = \\mathbf{C} \\cdot \\mathbf{r}(\\mathbf{m})$ where $\\mathbf{r}(\\mathbf{m})$ is the rate vector (Chapter 3)."""@en ;
    ns:coveredInChapter "3"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:p-invariant a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """P-invariant"""@en ;
    skos:definition """A vector $\\mathbf{y} \\geq \\mathbf{0}$ such that $\\mathbf{y}^T \\mathbf{C} = \\mathbf{0}$. The weighted sum $\\mathbf{y}^T \\mathbf{m}$ is constant for all reachable markings. P-invariants prove conservation laws — they identify quantities that are preserved by every transition firing (Chapter 2)."""@en ;
    ns:coveredInChapter "2"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:petri-net a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Petri net"""@en ;
    skos:definition """A mathematical modeling language consisting of places, transitions, arcs, and tokens. Formally, a tuple $(P, T, F, W, \\mathbf{m}_0)$ where $P$ is a set of places, $T$ is a set of transitions, $F \\subseteq (P \\times T) \\cup (T \\times P)$ is the flow relation, $W: F \\to \\mathbb{N}$ is the weight function, and $\\mathbf{m}_0$ is the initial marking."""@en ;
    skos:closeMatch ns:PetriNet ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:place a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Place"""@en ;
    skos:definition """A node in a Petri net representing a condition, resource, or state. Places hold tokens. Drawn as circles. In the continuous relaxation, token counts become continuous concentrations."""@en ;
    skos:closeMatch ns:Place ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:reachability-graph a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Reachability graph"""@en ;
    skos:definition """The graph of all markings reachable from the initial marking through sequences of transition firings. Each node is a marking, each edge is a transition firing. The reachability graph may be infinite for unbounded nets."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:sde a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """SDE"""@en ;
    skos:altLabel """Stochastic Differential Equation"""@en ;
    skos:definition """Here, specifically the chemical Langevin equation: continuous state evolving under the same propensities SSA uses, but with intrinsic firing noise built into the diffusion term rather than sampled as discrete events. Cheap to sweep like the ODE, with an honest variance band like SSA — the regime between them. Distinct from a layer of exogenous Brownian motion added to an ODE for external uncertainty (a price feed, say), which answers a different question (Chapter 3)."""@en ;
    ns:coveredInChapter "3"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:ssa a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """SSA"""@en ;
    skos:altLabel """Stochastic Simulation Algorithm"""@en ;
    skos:definition """The discrete engine's execution method (Gillespie's direct method): pick the next transition to fire and the time until it fires, both drawn from the model's own propensities, then repeat. Produces one exact discrete sample path, or an ensemble of them, rather than a mean-field trajectory — the right tool when small counts or gating (read arcs, inhibitors, reachable capacities, guards) make the continuous relaxation inapplicable (Chapter 3)."""@en ;
    ns:coveredInChapter "3"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:state-equation a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """State equation"""@en ;
    skos:definition """The algebraic relation $\\mathbf{m}' = \\mathbf{m}_0 + \\mathbf{C} \\cdot \\boldsymbol{\\sigma}$ where $\\boldsymbol{\\sigma}$ is the firing count vector (how many times each transition has fired). A necessary but not sufficient condition for reachability — the actual firing sequence must also be valid."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:state-root a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """State root"""@en ;
    skos:definition """A hash of the simulation output used for cross-implementation verification. If the Go server and JavaScript browser produce the same state root from the same model, the implementations agree (Chapter 20)."""@en ;
    ns:coveredInChapter "20"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:token a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Token"""@en ;
    skos:definition """A marker in a place. Tokens represent the presence of a resource, the truth of a condition, or a unit of something being processed. In the discrete model, tokens are non-negative integers. In the continuous relaxation, they become non-negative real numbers."""@en ;
    skos:closeMatch ns:Token ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:transition a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Transition"""@en ;
    skos:definition """A node in a Petri net representing an event, action, or chemical reaction. Transitions consume tokens from input places and produce tokens in output places. Drawn as rectangles. In the continuous relaxation, transitions have firing rates."""@en ;
    skos:closeMatch ns:Transition ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:tsit5 a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Tsit5"""@en ;
    skos:definition """Tsitouras 5th-order Runge-Kutta method with embedded 4th-order error estimator. The default ODE solver in go-pflow and pflow.xyz. Uses adaptive step size control for automatic accuracy management (Appendix A)."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:urdna2015 a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """URDNA2015"""@en ;
    skos:definition """Universal RDF Dataset Normalization Algorithm 2015. Used in pflow to canonicalize JSON-LD models before hashing, ensuring that semantically equivalent documents produce identical content identifiers regardless of key order or formatting (Chapter 16)."""@en ;
    ns:coveredInChapter "16"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:weight a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Weight"""@en ;
    skos:definition """The number of tokens consumed or produced by an arc when its transition fires. A weight of $k$ on an input arc means the transition requires at least $k$ tokens in the source place and removes $k$ tokens when firing. Default weight is 1."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:zero-knowledge-proof a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/core> ;
    skos:prefLabel """Zero-knowledge proof"""@en ;
    skos:definition """A cryptographic protocol where a prover convinces a verifier that a statement is true without revealing any information beyond the truth of the statement. In pflow, ZK proofs verify that a Petri net transition was validly fired without revealing the marking (Chapter 12)."""@en ;
    ns:coveredInChapter "12"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:declare-then-derive a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/ecosystem> ;
    skos:prefLabel """Declare, then derive"""@en ;
    skos:definition """The Metamodel working discipline. The model is declared once as data; analysis, the running application, proofs and, in this ecosystem's own deployment tooling, the infrastructure that serves it are computed from that document. Nothing downstream is hand-written to agree with the model, so nothing downstream can disagree with it (Chapter 21; *The Model Is the App*)."""@en ;
    ns:coveredInChapter "21"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:drift a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/ecosystem> ;
    skos:prefLabel """Drift"""@en ;
    skos:definition """Disagreement between a declared artifact and the world it describes — a manifest and a host, a vendored module and its upstream, two implementations of one net. Metamodel does not prevent drift; it makes drift detectable by comparing two values: a manifest against a host, a vendored file against its lockfile, a trace against the golden trace (Chapters 20, 21)."""@en ;
    ns:coveredInChapter "20"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:edge-matching-composition a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/ecosystem> ;
    skos:prefLabel """Edge-matching composition"""@en ;
    skos:definition """Two nets compose by sharing a place, the way two tiles meet because their edges agree. No glue code is written to make them fit; the shared place *is* the interface. Invariants carry across in a specific sense: if a P-invariant of each component agrees with the other on the shared places, together they define a P-invariant of the composite — the theorem `invariant_lift`, kernel-checked in Lean ([`proofs/PflowProofs/InvariantLift.lean`](https://github.com/pflow-xyz/book-pflow-xyz/blob/main/proofs/PflowProofs/InvariantLift.lean)). A component's invariant extended by zeros is not in general an invariant of the composite, and liveness does not carry across at all (Appendix E; Chapters 4, 21; *A Tiling for Computation*)."""@en ;
    ns:coveredInChapter "4"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:golden-trace a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/ecosystem> ;
    skos:prefLabel """Golden trace"""@en ;
    skos:definition """A canonical firing sequence and its resulting markings, checked byte-for-byte against every implementation of a model. `pflow-polyglot/parity/trace.golden` holds thirty-nine programs in ten languages to one six-line trace. `make parity` runs the twenty Go, Rust, Python and JavaScript programs under Bazel and fails the build on any divergence; `make parity-native` checks the rest against the same file (Chapter 20)."""@en ;
    ns:coveredInChapter "20"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:internal-dsl a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/ecosystem> ;
    skos:prefLabel """Internal DSL"""@en ;
    skos:altLabel """as a failure mode"""@en ;
    skos:definition """A model expressed as *code in a host language* that constructs a net — Rust macros, Python calls, Solidity structs. Five such ports of an early version of this work claimed to encode the same thing and could not prove it, because the specification existed only as five programs. The fix was to make the model a document (Chapter 21; book `ROADMAP.md` §Lineage)."""@en ;
    ns:coveredInChapter "21"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:journey a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/ecosystem> ;
    skos:prefLabel """Journey"""@en ;
    skos:definition """A workflow whose control flow is a Petri net declared in a markdown document's frontmatter, with one prompt per transition in the body. The document is both the documentation and the runtime — there is no second copy of the control flow to drift (Chapter 21)."""@en ;
    ns:coveredInChapter "21"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:manifest a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/ecosystem> ;
    skos:prefLabel """Manifest"""@en ;
    skos:definition """The declared description of an application — a handful of fields and a marking in one YAML file — from which its service entry, virtual host, certificate and uptime check are derived. The infrastructure instance of declare-then-derive (Chapter 21)."""@en ;
    ns:coveredInChapter "21"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:metamodel a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/ecosystem> ;
    skos:prefLabel """Metamodel"""@en ;
    skos:definition """Capitalised: a model for making models — the cross-cutting claim of this book. A small, fixed alphabet — place, transition, arc, guard — whose local composition rules generate an unbounded space of specific, checkable systems, because a model written in it is a value rather than a program. Lowercase `metamodel`, in code font, is a Go package implementing one instance of the vocabulary (Chapter 21; *A Tiling for Computation*)."""@en ;
    ns:coveredInChapter "21"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:model-is-a-value-not-a-program a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/ecosystem> ;
    skos:prefLabel """Model is a value, not a program"""@en ;
    skos:definition """The single fact Metamodel rests on. A value can be hashed, diffed, composed and checked by a machine that has never seen any of our runtimes; a program can only be run. Content addressing (Chapter 16), dual implementation (Chapter 20) and the golden trace all depend on it."""@en ;
    ns:coveredInChapter "16"^^xsd:integer ;
    ns:coveredInChapter "20"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:polyglot-forms a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/ecosystem> ;
    skos:prefLabel """Polyglot forms"""@en ;
    skos:definition """The five shapes an implementation of one model can take — *interpreter* (a generic engine reads the document), *lambda* (the net as a pure step function), *generated* (source emitted from the document), *contract* (on-chain), *proof* (the program checks its claims over every reachable marking before it prints anything; in Lean the check is a theorem the kernel accepts at compile time) — all held to one golden trace (*The Proof Form*; `pflow-polyglot/FORMS.md`)."""@en ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:tropical-past-predicate-future a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/ecosystem> ;
    skos:prefLabel """Tropical past, predicate future"""@en ;
    skos:definition """The tense structure of an executing model. Write-once places and the event log are the *past* — monotone and irreversible, the boolean case of tropical $(\\max,+)$ accumulation. Guards are the *future* — predicates recomputed from the marking on every step and stored nowhere. The marking is the *present*, the boundary where they meet. All three are data in the one model document (Chapter 6; Appendix E; *The Zipper Whose Hole Is a Universe*)."""@en ;
    ns:coveredInChapter "6"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

term:write-once-place a skos:Concept ;
    skos:inScheme <https://ontology.pflow.xyz/term/scheme/ecosystem> ;
    skos:prefLabel """Write-once place"""@en ;
    skos:definition """A place that no move takes a token back from: once a token arrives, the transitions that wrote it never consume it. History places are the canonical case — `X11` and `O02` in the tic-tac-toe net of Chapter 6, `_D2_01` in the Sudoku net of Chapter 7. Their only downstream transitions are the pattern and constraint collectors that turn a completed pattern into a verdict. The smallest instance of tropical accumulation (Appendix E)."""@en ;
    ns:coveredInChapter "6"^^xsd:integer ;
    ns:coveredInChapter "7"^^xsd:integer ;
    dct:source "book-pflow-xyz/chapters/appendix-d-glossary.md" .

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <https://schema.org/> .
@prefix ns: <https://ontology.pflow.xyz/ns#> .

<https://ontology.pflow.xyz/component/beats-bitwrap-io> a ns:Project ;
    rdfs:label "beats-bitwrap-io" ;
    schema:codeRepository <https://github.com/stackdump/beats-bitwrap-io> ;
    schema:description "Deterministic beat generator powered by Petri nets. No AI, no LLMs — just math, music theory, and token flow."@en ;
    schema:programmingLanguage "Go" ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> .

<https://ontology.pflow.xyz/component/bitwrap-io> a ns:Project ;
    rdfs:label "bitwrap-io" ;
    schema:codeRepository <https://github.com/stackdump/bitwrap-io> ;
    schema:description "Anonymous on-chain voting with ZK proofs — create polls, cast verifiable ballots, tally results. Built on Petri net state machines."@en ;
    schema:programmingLanguage "Go" ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/prover> .

<https://ontology.pflow.xyz/component/blog-stackdump-com> a ns:Project ;
    rdfs:label "blog-stackdump-com" ;
    schema:url <https://blog.stackdump.com> ;
    schema:programmingLanguage "Go" .

<https://ontology.pflow.xyz/component/book-pflow-xyz> a ns:Project ;
    rdfs:label "book-pflow-xyz" ;
    schema:codeRepository <https://github.com/pflow-xyz/book-pflow-xyz> ;
    schema:description "Petri Nets as a Universal Abstraction — a technical book on modeling state machines, workflows, and token standards with Petri nets"@en ;
    schema:programmingLanguage "Go" .

<https://ontology.pflow.xyz/component/go-pflow> a ns:Project ;
    rdfs:label "go-pflow" ;
    schema:codeRepository <https://github.com/pflow-xyz/go-pflow> ;
    schema:description "Petri net library — ODE, SSA & SDE simulation, parameter fitting, and formal verification, in Go"@en ;
    schema:programmingLanguage "Go" .

<https://ontology.pflow.xyz/component/go-pflow/actor> a ns:GoPackage ;
    rdfs:label "actor" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "actor" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package actor provides an Actor model built on Petri nets with message passing."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/engine> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/metamodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/solver> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/tokenmodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/workflow> .

<https://ontology.pflow.xyz/component/go-pflow/compat> a ns:GoPackage ;
    rdfs:label "compat" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "compat" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package compat bridges the two Petri implementations in this repo so facades built on either side can interoperate during migration."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/tokenmodel> .

<https://ontology.pflow.xyz/component/go-pflow/derive> a ns:GoPackage ;
    rdfs:label "derive" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "derive" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package derive builds evaluation variants of a declared Petri net."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> .

<https://ontology.pflow.xyz/component/go-pflow/engine> a ns:GoPackage ;
    rdfs:label "engine" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "engine" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package engine provides a state machine harness for continuous Petri net simulation."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/solver> .

<https://ontology.pflow.xyz/component/go-pflow/eventlog> a ns:GoPackage ;
    rdfs:label "eventlog" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "eventlog" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package eventlog provides parsing and analysis of process event logs."@en .

<https://ontology.pflow.xyz/component/go-pflow/eventsource> a ns:GoPackage ;
    rdfs:label "eventsource" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "eventsource" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package eventsource provides event sourcing infrastructure for CQRS applications."@en .

<https://ontology.pflow.xyz/component/go-pflow/graphql> a ns:GoPackage ;
    rdfs:label "graphql" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "graphql" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package graphql provides a GraphQL server for Petri net models."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/eventsource> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> .

<https://ontology.pflow.xyz/component/go-pflow/hypothesis> a ns:GoPackage ;
    rdfs:label "hypothesis" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "hypothesis" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package hypothesis provides utilities for evaluating hypothetical states via ODE simulation."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/solver> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/stateutil> .

<https://ontology.pflow.xyz/component/go-pflow/learn> a ns:GoPackage ;
    rdfs:label "learn" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "learn" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package learn fits the unknown parameters of continuous Petri-net models to observed data — mechanistic system identification."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/solver> .

<https://ontology.pflow.xyz/component/go-pflow/metamodel> a ns:GoPackage ;
    rdfs:label "metamodel" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "metamodel" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package metamodel provides compatibility utilities for migrating from the legacy Model type to the modern generic PetriNet types."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/tokenmodel> .

<https://ontology.pflow.xyz/component/go-pflow/mining> a ns:GoPackage ;
    rdfs:label "mining" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "mining" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package mining provides process mining algorithms including discovery and conformance checking."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/eventlog> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/learn> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/solver> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/tokenmodel> .

<https://ontology.pflow.xyz/component/go-pflow/monitoring> a ns:GoPackage ;
    rdfs:label "monitoring" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "monitoring" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package monitoring provides real-time predictive process monitoring."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/solver> .

<https://ontology.pflow.xyz/component/go-pflow/parser> a ns:GoPackage ;
    rdfs:label "parser" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "parser" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package parser handles JSON import/export for Petri nets."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/metamodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> .

<https://ontology.pflow.xyz/component/go-pflow/petri> a ns:GoPackage ;
    rdfs:label "petri" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "petri" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package petri implements core Petri net data structures."@en .

<https://ontology.pflow.xyz/component/go-pflow/plotter> a ns:GoPackage ;
    rdfs:label "plotter" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "plotter" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package plotter provides SVG visualization for ODE solutions."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/solver> .

<https://ontology.pflow.xyz/component/go-pflow/prover> a ns:GoPackage ;
    rdfs:label "prover" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "prover" ;
    schema:programmingLanguage "Go" .

<https://ontology.pflow.xyz/component/go-pflow/reachability> a ns:GoPackage ;
    rdfs:label "reachability" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "reachability" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package reachability provides state space analysis for Petri nets."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> .

<https://ontology.pflow.xyz/component/go-pflow/saga> a ns:GoPackage ;
    rdfs:label "saga" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "saga" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package saga models a saga — an ordered list of steps, each paired with a compensation that undoes it — as a Petri net."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/metamodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/reachability> .

<https://ontology.pflow.xyz/component/go-pflow/sensitivity> a ns:GoPackage ;
    rdfs:label "sensitivity" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "sensitivity" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package sensitivity provides tools for analyzing how Petri net behavior changes with different parameters."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/solver> .

<https://ontology.pflow.xyz/component/go-pflow/solver> a ns:GoPackage ;
    rdfs:label "solver" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "solver" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package solver implements ODE (Ordinary Differential Equation) solvers for Petri net simulation using mass-action kinetics."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> .

<https://ontology.pflow.xyz/component/go-pflow/statemachine> a ns:GoPackage ;
    rdfs:label "statemachine" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "statemachine" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package statemachine provides a high-level API for modeling hierarchical state machines (statecharts) using Petri nets as the underlying formalism."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/engine> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/metamodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/tokenmodel> .

<https://ontology.pflow.xyz/component/go-pflow/stateutil> a ns:GoPackage ;
    rdfs:label "stateutil" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "stateutil" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package stateutil provides utility functions for manipulating Petri net state maps."@en .

<https://ontology.pflow.xyz/component/go-pflow/stochastic> a ns:GoPackage ;
    rdfs:label "stochastic" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "stochastic" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package stochastic simulates a metamodel.Model as a continuous-time Markov chain (Gillespie's direct method) and dispatches the same declared net to either that engine or the mass-action ODE in solver — Petri.jl's ODEProblem/JumpProblem choice, off one structure."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/learn> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/metamodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/reachability> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/solver> .

<https://ontology.pflow.xyz/component/go-pflow/templates> a ns:GoPackage ;
    rdfs:label "templates" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "templates" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package templates provides common Petri net patterns"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> .

<https://ontology.pflow.xyz/component/go-pflow/tokenmodel> a ns:GoPackage ;
    rdfs:label "tokenmodel" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "tokenmodel" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package tokenmodel defines abstract building blocks for formal models."@en .

<https://ontology.pflow.xyz/component/go-pflow/validation> a ns:GoPackage ;
    rdfs:label "validation" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "validation" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package validation provides structural analysis and validation for Petri nets"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/reachability> .

<https://ontology.pflow.xyz/component/go-pflow/verify> a ns:GoPackage ;
    rdfs:label "verify" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "verify" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package verify turns questions about a Petri net into verdicts with evidence."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/reachability> .

<https://ontology.pflow.xyz/component/go-pflow/visualization> a ns:GoPackage ;
    rdfs:label "visualization" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "visualization" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package visualization provides utilities for visualizing Petri nets as SVG."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/statemachine> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/workflow> .

<https://ontology.pflow.xyz/component/go-pflow/workflow> a ns:GoPackage ;
    rdfs:label "workflow" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "workflow" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package workflow provides a comprehensive workflow management framework built on Petri nets with support for task dependencies, resource management, SLA tracking, and real-time monitoring."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/metamodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/solver> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/tokenmodel> .

<https://ontology.pflow.xyz/component/go-pflow/zkcompile> a ns:GoPackage ;
    rdfs:label "zkcompile" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:sourcePath "zkcompile" ;
    schema:programmingLanguage "Go" ;
    schema:description "Package zkcompile transforms Petri net models into ZK circuit constraints."@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/tokenmodel> .

<https://ontology.pflow.xyz/component/pflow-jl> a ns:Project ;
    rdfs:label "pflow-jl" ;
    schema:codeRepository <https://github.com/pflow-xyz/pflow-jl> ;
    schema:description "Julia package for Petri nets — colored tokens, mass-action ODEs, bridged to AlgebraicPetri.jl"@en ;
    schema:programmingLanguage "Julia" .

<https://ontology.pflow.xyz/component/pflow-polyglot> a ns:Project ;
    rdfs:label "pflow-polyglot" ;
    schema:codeRepository <https://github.com/stackdump/pflow-polyglot> ;
    schema:description "A Coffee state machine in various languages."@en ;
    schema:programmingLanguage "polyglot" .

<https://ontology.pflow.xyz/component/pflow-rs> a ns:Project ;
    rdfs:label "pflow-rs" ;
    schema:codeRepository <https://github.com/pflow-xyz/pflow-rs> ;
    schema:description "Rust port of go-pflow — ODE/SSA solvers, token-model DSL, ZK provers"@en ;
    schema:programmingLanguage "Rust" .

<https://ontology.pflow.xyz/component/pflow-rs/pflow> a ns:RustCrate ;
    rdfs:label "pflow" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Petri net modeling with ODE simulation and token model DSL"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-core> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-dsl> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-macros> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-solver> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-tokenmodel> ;
    ns:optionalDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-zk> ;
    ns:optionalDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-zk-arkworks> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-cli> a ns:RustCrate ;
    rdfs:label "pflow-cli" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-cli" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Command-line tool for Petri net modeling and simulation — parity with go-pflow's cmd/pflow"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-compose> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-core> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-dsl> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-metamodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-parser> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-results> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-solver> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-tokenmodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-validation> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-verify> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-visualization> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-compose> a ns:RustCrate ;
    rdfs:label "pflow-compose" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-compose" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Bundle/Flatten composition, templates, derive and model-extension operations, ported from go-pflow's metamodel (compose*), templates and derive packages"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-core> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-metamodel> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-core> a ns:RustCrate ;
    rdfs:label "pflow-core" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-core" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Core Petri net types, fluent builder API, and state utilities"@en .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-dsl> a ns:RustCrate ;
    rdfs:label "pflow-dsl" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-dsl" ;
    schema:programmingLanguage "Rust" ;
    schema:description "S-expression DSL for defining token model schemas"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-tokenmodel> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-eventlog> a ns:RustCrate ;
    rdfs:label "pflow-eventlog" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-eventlog" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Process event log types plus CSV/JSONL readers, ported from go-pflow's eventlog package"@en .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-learn> a ns:RustCrate ;
    rdfs:label "pflow-learn" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-learn" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Parameter fitting, sensitivities, and gradient/derivative-free optimizers for Petri net ODEs"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-core> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-metamodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-solver> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-macros> a ns:RustCrate ;
    rdfs:label "pflow-macros" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-macros" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Proc macros for pflow token model DSL"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-dsl> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-mcp> a ns:RustCrate ;
    rdfs:label "pflow-mcp" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-mcp" ;
    schema:programmingLanguage "Rust" ;
    schema:description "MCP server for Petri net simulation and analysis"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-compose> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-core> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-dsl> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-eventlog> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-metamodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-mining> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-parser> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-reachability> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-solver> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-tokenmodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-verify> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-metamodel> a ns:RustCrate ;
    rdfs:label "pflow-metamodel" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-metamodel" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Shape B model (places, transitions, arcs, stages, schedules, parameters) and the shared firing rule, ported from go-pflow's metamodel package"@en .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-mining> a ns:RustCrate ;
    rdfs:label "pflow-mining" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-mining" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Process discovery and conformance checking, ported from go-pflow's mining package"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-core> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-eventlog> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-metamodel> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-parser> a ns:RustCrate ;
    rdfs:label "pflow-parser" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-parser" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Shape A -> Shape B converter: the pflow.xyz editor document to a pflow-metamodel Model, ported from go-pflow's parser package"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-core> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-metamodel> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-reachability> a ns:RustCrate ;
    rdfs:label "pflow-reachability" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-reachability" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Reachability graph, coverability, invariants and spectral analysis, ported from go-pflow's reachability package"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-metamodel> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-results> a ns:RustCrate ;
    rdfs:label "pflow-results" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-results" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Structured simulation results (types, analysis, builder, io), ported from go-pflow's results package"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-core> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-solver> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-solver> a ns:RustCrate ;
    rdfs:label "pflow-solver" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-solver" ;
    schema:programmingLanguage "Rust" ;
    schema:description "ODE solvers for Petri net simulation using mass-action kinetics"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-core> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-metamodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-tropical> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-tokenmodel> a ns:RustCrate ;
    rdfs:label "pflow-tokenmodel" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-tokenmodel" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Token model schema, snapshot, and runtime execution"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-metamodel> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-tropical> a ns:RustCrate ;
    rdfs:label "pflow-tropical" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-tropical" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Tropical semiring (max-plus algebra) for Petri net analysis"@en ;
    ns:optionalDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-core> ;
    ns:optionalDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-zk> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-validation> a ns:RustCrate ;
    rdfs:label "pflow-validation" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-validation" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Structural validation checks for pflow-metamodel nets, ported from go-pflow's validation package"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-metamodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-reachability> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-verify> a ns:RustCrate ;
    rdfs:label "pflow-verify" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-verify" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Property verification (deadlock-free, bounded, live, invariants, reachability) for pflow-metamodel nets, ported from go-pflow's verify package"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-metamodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-reachability> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-visualization> a ns:RustCrate ;
    rdfs:label "pflow-visualization" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-visualization" ;
    schema:programmingLanguage "Rust" ;
    schema:description "SVG rendering for Petri nets and ODE solutions, ported from go-pflow's visualization and plotter packages"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-core> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-solver> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-zk> a ns:RustCrate ;
    rdfs:label "pflow-zk" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-zk" ;
    schema:programmingLanguage "Rust" ;
    schema:description "ZK proof traits and incidence matrix extraction for Petri nets"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-core> .

<https://ontology.pflow.xyz/component/pflow-rs/pflow-zk-arkworks> a ns:RustCrate ;
    rdfs:label "pflow-zk-arkworks" ;
    schema:isPartOf <https://ontology.pflow.xyz/component/pflow-rs> ;
    ns:sourcePath "crates/pflow-zk-arkworks" ;
    schema:programmingLanguage "Rust" ;
    schema:description "Arkworks-based ZK prover for Petri nets (Groth16 + Poseidon over BN254)"@en ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-core> ;
    ns:directDependency <https://ontology.pflow.xyz/component/pflow-rs/pflow-zk> .

<https://ontology.pflow.xyz/component/pflow-xyz> a ns:Project ;
    rdfs:label "pflow-xyz" ;
    schema:codeRepository <https://github.com/pflow-xyz/pflow-xyz> ;
    schema:description "Visual editor and browser ODE simulator for Petri nets, byte-exact to go-pflow"@en ;
    schema:programmingLanguage "Go" ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/learn> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/metamodel> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/parser> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/petri> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/reachability> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/solver> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/stochastic> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/validation> ;
    ns:directDependency <https://ontology.pflow.xyz/component/go-pflow/verify> .

<https://ontology.pflow.xyz/component/sim-pflow-xyz> a ns:Project ;
    rdfs:label "sim-pflow-xyz" ;
    schema:url <https://sim.pflow.xyz> ;
    schema:programmingLanguage "Go" .

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix schema: <https://schema.org/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix ns: <https://ontology.pflow.xyz/ns#> .

<https://ontology.pflow.xyz/work/blog> a schema:Blog , ns:Work ;
    schema:name "stackdump blog" ;
    schema:url <https://blog.stackdump.com> .

<https://ontology.pflow.xyz/work/blog/a-circuits-eye-view> a schema:BlogPosting , ns:Work ;
    schema:name "A Circuit's-Eye View: Notes from Inside the Loop" ;
    schema:url <https://blog.stackdump.com/posts/a-circuits-eye-view> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Reflections from an AI collaborator on building with Petri nets—what makes this approach different, and why it keeps surprising me."@en ;
    schema:datePublished "2026-02-14T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-04-01T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/claude-code> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "ai" ;
    schema:keywords "collaboration" ;
    schema:keywords "reflection" ;
    ns:collection "about" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/enzyme-kinetics-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/petri-pilot> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-petri-nets> .

<https://ontology.pflow.xyz/work/blog/alpha-decidability-past-tense> a schema:BlogPosting , ns:Work ;
    schema:name "Brouwer Ordinals and the Shape of a Witness" ;
    schema:url <https://blog.stackdump.com/posts/alpha-decidability-past-tense> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "de Jong et al. (2026) put an ordinal axis under decidability. That axis is past-tense, and Brouwer ordinals are the scalar specialization of our vector tropical past."@en ;
    schema:datePublished "2026-04-16T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "type-theory" ;
    schema:keywords "ordinals" ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "tropical-geometry" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tense-type-theory> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tropical-petri-nets> .

<https://ontology.pflow.xyz/work/blog/beats-btw-dj> a schema:BlogPosting , ns:Work ;
    schema:name "beats-btw-dj: the Petri-net sequencer, native on the Mac" ;
    schema:url <https://blog.stackdump.com/posts/beats-btw-dj> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A native macOS DJ app where each deck runs a live Petri net. The generator is ported from beats.bitwrap.io to Swift and held to the same CIDs and bytes by fixtures from the real JavaScript; Claude drives it over MCP."@en ;
    schema:datePublished "2026-10-24T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-24T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-nets" ;
    schema:keywords "music" ;
    schema:keywords "beats-bitwrap" ;
    schema:keywords "mcp" ;
    schema:keywords "swift" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/petri-net-runtime> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/petri-net-sequencer> .

<https://ontology.pflow.xyz/work/blog/beats-evolution> a schema:BlogPosting , ns:Work ;
    schema:name "From Petri-net toy to jambox: 38 days of beats.bitwrap.io" ;
    schema:url <https://blog.stackdump.com/posts/beats-evolution> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A visual archaeology of beats.bitwrap.io's first 75 tags, v0.1.0 (March 23) to v2.4.0 (April 28): one screenshot captured per minor release, ten of them shown here, each reproducible from the tag's CDN URL."@en ;
    schema:datePublished "2026-08-22T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-09-25T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-nets" ;
    schema:keywords "music" ;
    schema:keywords "beats-bitwrap" ;
    schema:keywords "retrospective" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/beats-launch-jambox> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/category-settle> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/generator-you-can-read> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/petri-net-runtime> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/petri-net-sequencer> .

<https://ontology.pflow.xyz/work/blog/beats-launch-jambox> a schema:BlogPosting , ns:Work ;
    schema:name "beats.bitwrap.io is a Jambox Now" ;
    schema:url <https://blog.stackdump.com/posts/beats-launch-jambox> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Official launch of beats.bitwrap.io as a live-performance tool — content-addressed shareable tracks, full-page Stage visuals, and a hands-free Auto-DJ that runs itself for hours."@en ;
    schema:datePublished "2026-04-30T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-04-30T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-nets" ;
    schema:keywords "music" ;
    schema:keywords "beats-bitwrap" ;
    schema:keywords "tone-js" ;
    schema:keywords "live-performance" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/petri-net-sequencer> .

<https://ontology.pflow.xyz/work/blog/bitwrap-capstone> a schema:BlogPosting , ns:Work ;
    schema:name "Bitwrap: Petri Nets as ZK Containers" ;
    schema:url <https://blog.stackdump.com/posts/bitwrap-capstone> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "From OP_RETURN in 2014 to zero-knowledge Petri nets in 2026 — how bitwrap.io became the capstone for a decade of work on formal state machines, cryptographic proofs, and executable specifications."@en ;
    schema:datePublished "2026-03-18T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-04-01T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "zero-knowledge" ;
    schema:keywords "bitwrap" ;
    schema:keywords "solidity" ;
    schema:keywords "groth16" ;
    schema:about <https://ontology.pflow.xyz/term/groth16> ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/petri-net-sequencer> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/revisiting-the-flows> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/token-language> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-petri-nets> .

<https://ontology.pflow.xyz/work/blog/building-zk-poker> a schema:BlogPosting , ns:Work ;
    schema:name "Building ZK Poker: Four Petri Nets and a Branchless Circuit" ;
    schema:url <https://blog.stackdump.com/posts/building-zk-poker> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A technical deep dive into heads-up hold'em at stackedup.gg — four Petri nets (phase, hand classifier, bot decision, chip ledger) and what each one actually drives in the code, a commit-reveal shuffle for casino sessions, and a branchless Groth16 circuit that proves a hand's score without revealing the hole cards."@en ;
    schema:datePublished "2026-08-22T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-19T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "zk" ;
    schema:keywords "poker" ;
    schema:keywords "groth16" ;
    schema:about <https://ontology.pflow.xyz/term/groth16> ;
    schema:keywords "gnark" ;
    schema:keywords "game-design" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/texas-holdem-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-holdem> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-petri-nets> .

<https://ontology.pflow.xyz/work/blog/byte-exact-across-four-languages> a schema:BlogPosting , ns:Work ;
    schema:name "Byte-Exact Across Four Languages" ;
    schema:url <https://blog.stackdump.com/posts/byte-exact-across-four-languages> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Go, Rust, JavaScript and Julia run the same stochastic Petri net and produce the identical IEEE-754 double, every time. Not close — equal. Here's what that actually took, and the two bugs it caught along the way."@en ;
    schema:datePublished "2026-09-04T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-09-04T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "determinism" ;
    schema:keywords "stochastic-simulation" ;
    schema:keywords "cross-language" ;
    schema:keywords "formal-methods" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/category-settle> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/json-ld-declarative-infrastructure> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/small-models-not-llms> .

<https://ontology.pflow.xyz/work/blog/capacity-paradox> a schema:BlogPosting , ns:Work ;
    schema:name "The Capacity Paradox" ;
    schema:url <https://blog.stackdump.com/posts/capacity-paradox> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "sim.pflow.xyz ranks every knob in a model by its measured effect on the objective. One run against a software team's backlog model reported that hiring past a point lowers the score; that finding is unconfirmed until the model's cost meter is fixed, and the catalog-wide sweep behind the rest of the pattern was never preserved. What was checked, what wasn't, and the models to re-run it on."@en ;
    schema:datePublished "2026-09-16T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-09T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "what-if-analysis" ;
    schema:keywords "simulation" ;
    schema:keywords "sim-pflow-xyz" ;
    schema:keywords "cost-benefit-analysis" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/model-is-the-app> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/what-if-analysis> .

<https://ontology.pflow.xyz/work/blog/categorical-net-types> a schema:BlogPosting , ns:Work ;
    schema:name "Categorical Net Types" ;
    schema:url <https://blog.stackdump.com/posts/categorical-net-types> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Five Petri net types classify token behavior — workflow cursors, countable resources, game turns, continuous rates, and classification signals — with typed links that constrain how nets compose."@en ;
    schema:datePublished "2026-02-07T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-08-22T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "category-theory" ;
    schema:keywords "composition" ;
    schema:keywords "pflow" ;
    schema:keywords "dsl" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/symmetric-monoidal-categories> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/token-language> .

<https://ontology.pflow.xyz/work/blog/category-settle> a schema:BlogPosting , ns:Work ;
    schema:name "The Category Settle" ;
    schema:url <https://blog.stackdump.com/posts/category-settle> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Settlement networks form a sub-SMC of open Petri nets. The core-observer split is really two boundaries — an algebraic one (ρ) inside the incidence matrix and a categorical one (contextual arcs) outside it — and a ZK circuit dissolves only the second."@en ;
    schema:datePublished "2026-03-12T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-08-22T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-nets" ;
    schema:keywords "category-theory" ;
    schema:keywords "settlement" ;
    schema:keywords "open-petri-nets" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/pflow-square> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/structuralism-not-objects> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/symmetric-monoidal-categories> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tropical-petri-nets> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-petri-nets> ;
    schema:citation <https://ontology.pflow.xyz/ref/baez-2020-open-petri-nets> ;
    schema:citation <https://ontology.pflow.xyz/ref/meseguer-1990-petri-nets-are-monoids> ;
    schema:citation <https://ontology.pflow.xyz/ref/montanari-1995-contextual-nets> ;
    schema:citation <https://ontology.pflow.xyz/ref/vogler-1998-unfolding-and-finite-prefix-for-nets-wit> ;
    schema:citation <https://ontology.pflow.xyz/ref/karp-1978-a-characterization-of-the-minimum-cycle-> .

<https://ontology.pflow.xyz/work/blog/code-to-flow> a schema:BlogPosting , ns:Work ;
    schema:name "Code-to-Flow: Turn Anything into a Petri Net" ;
    schema:url <https://blog.stackdump.com/posts/code-to-flow> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Paste source code in any language and Claude returns a Petri net that a validator checks for structure and deadlocks — what is checked, what isn't, and the faithfulness test not yet run."@en ;
    schema:datePublished "2026-03-05T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-23T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "llm" ;
    schema:keywords "sim-pflow-xyz" ;
    schema:keywords "codegen" ;
    schema:keywords "state-machine" ;
    schema:keywords "code-visualization" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/model-is-the-app> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/petri-pilot> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/small-models-not-llms> .

<https://ontology.pflow.xyz/work/blog/coffeeshop-model> a schema:BlogPosting , ns:Work ;
    schema:name "Coffee Shop Model" ;
    schema:url <https://blog.stackdump.com/posts/coffeeshop-model> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Resource modeling with Petri nets — the five-drink core of go-pflow's coffee shop, where arc weights are recipes, each ingredient carries a conservation law, and the rates say what runs out first (milk, not cups). Revised to link the code, restore mocha's syrup and label every minute figure as a linear estimate."@en ;
    schema:datePublished "2026-01-31T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-23T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "resource-modeling" ;
    schema:keywords "ode" ;
    schema:about <https://ontology.pflow.xyz/term/ode> ;
    schema:keywords "capacity" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/enzyme-kinetics-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/small-models-not-llms> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/what-if-analysis> .

<https://ontology.pflow.xyz/work/blog/declarative-differential-models> a schema:BlogPosting , ns:Work ;
    schema:name "Declarative Differential Models (DDM)" ;
    schema:url <https://blog.stackdump.com/posts/declarative-differential-models> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A modeling approach where system behavior is described declaratively and encoded directly in differential equations."@en ;
    schema:datePublished "2025-01-07T04:54:52Z"^^xsd:dateTime ;
    schema:dateModified "2026-04-02T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "ddm" ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "ode" ;
    schema:about <https://ontology.pflow.xyz/term/ode> ;
    schema:keywords "theory" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/knapsack-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/sudoku-petri-net-model> .

<https://ontology.pflow.xyz/work/blog/earned-compression> a schema:BlogPosting , ns:Work ;
    schema:name "Earned Compression" ;
    schema:url <https://blog.stackdump.com/posts/earned-compression> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "ODE simulation, tropical analysis and zero-knowledge proofs each draw a line between a Petri net's core and its observer. Where the three agree on tic-tac-toe, why the agreement follows from one definition, and where the code does not yet match the theorem."@en ;
    schema:datePublished "2026-03-11T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-18T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-nets" ;
    schema:keywords "tropical-geometry" ;
    schema:keywords "zero-knowledge" ;
    schema:keywords "category-theory" ;
    schema:keywords "compression" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/category-settle> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/coffeeshop-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/symmetric-monoidal-categories> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tense-type-theory> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/texas-holdem-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tropical-petri-nets> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-petri-nets> ;
    schema:citation <https://ontology.pflow.xyz/ref/baccelli-1992-synchronization-and-linearity-an-algebra> ;
    schema:citation <https://ontology.pflow.xyz/ref/meseguer-1990-petri-nets-are-monoids> ;
    schema:citation <https://ontology.pflow.xyz/ref/groth-2016-on-the-size-of-pairing-based-non-interac> ;
    schema:citation <https://ontology.pflow.xyz/ref/li-2008-an-introduction-to-kolmogorov-complexity> .

<https://ontology.pflow.xyz/work/blog/enzyme-kinetics-model> a schema:BlogPosting , ns:Work ;
    schema:name "Enzyme Kinetics: Michaelis-Menten from Three Transitions" ;
    schema:url <https://blog.stackdump.com/posts/enzyme-kinetics-model> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Four places and three mass-action transitions generate the ODE system that Michaelis-Menten is derived from. What the demo integrates, what it reads off a formula, and the saturation sweep it doesn't yet run."@en ;
    schema:datePublished "2026-02-14T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-04T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "ode" ;
    schema:about <https://ontology.pflow.xyz/term/ode> ;
    schema:keywords "biochemistry" ;
    schema:keywords "mass-action" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/coffeeshop-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> .

<https://ontology.pflow.xyz/work/blog/exponential-scoring> a schema:BlogPosting , ns:Work ;
    schema:name "Exponential Weights in Petri Nets: What Worked, What Didn't, and What's Next" ;
    schema:url <https://blog.stackdump.com/posts/exponential-scoring> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Power-of-2 weights encode lexicographic order over distinct ranks as a single integer. We tried it for poker kicker scoring inside the net and reverted it; the per-card variant we shipped also broke the ordering. Where the encoding belongs, and where it doesn't."@en ;
    schema:datePublished "2026-02-14T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-06T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "weighted-arcs" ;
    schema:keywords "poker" ;
    schema:keywords "encoding" ;
    schema:keywords "technique" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-holdem> .

<https://ontology.pflow.xyz/work/blog/f004> a schema:BlogPosting , ns:Work ;
    schema:name "f004 Is Older Than My Daughter" ;
    schema:url <https://blog.stackdump.com/posts/f004> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A single-player Minecraft world moved to a dedicated server so it could have a chat bridge — plus a closed verb list, a fixed aid ceiling, and a nether hub that separates roof traffic from portal traffic."@en ;
    schema:datePublished "2026-07-30T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-07-30T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "minecraft" ;
    schema:keywords "mcp" ;
    schema:keywords "self-hosting" ;
    schema:keywords "provenance" ;
    schema:keywords "chat-bridge" ;
    ns:collection "about" .

<https://ontology.pflow.xyz/work/blog/generator-you-can-read> a schema:BlogPosting , ns:Work ;
    schema:name "A Generator You Can Read" ;
    schema:url <https://blog.stackdump.com/posts/generator-you-can-read> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "The AI music debate is arguing about the wrong axis: the distinction that matters is structural transparency vs. statistical opacity, and a Petri net — beats.bitwrap.io's generator, linked file by file — is a third kind of generator the discourse keeps missing."@en ;
    schema:datePublished "2026-08-22T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-05T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "music" ;
    schema:keywords "generative" ;
    schema:keywords "formal-methods" ;
    schema:keywords "beats-bitwrap" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/beats-evolution> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/petri-net-runtime> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/petri-net-sequencer> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/small-models-not-llms> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tense-type-theory> .

<https://ontology.pflow.xyz/work/blog/incidence-bridge> a schema:BlogPosting , ns:Work ;
    schema:name "March Madness Without Monte Carlo" ;
    schema:url <https://blog.stackdump.com/posts/incidence-bridge> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "The incidence matrix of an NCAA bracket Petri net connects ODE, Monte Carlo, and analytical methods — and makes simulation redundant. A closed-form formula derived from the bracket topology replaces 150,000 stochastic transitions with 256 exact configurations."@en ;
    schema:datePublished "2026-03-16T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-08-22T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-nets" ;
    schema:keywords "ode" ;
    schema:about <https://ontology.pflow.xyz/term/ode> ;
    schema:keywords "monte-carlo" ;
    schema:keywords "incidence-reduction" ;
    schema:keywords "stochastic" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tropical-petri-nets> ;
    schema:citation <https://ontology.pflow.xyz/ref/jahnke-2007-solving-the-chemical-master-equation-for> ;
    schema:citation <https://ontology.pflow.xyz/ref/molloy-1982-performance-analysis-using-stochastic-pe> .

<https://ontology.pflow.xyz/work/blog/integer-reduction> a schema:BlogPosting , ns:Work ;
    schema:name "The Incidence Reduction" ;
    schema:url <https://blog.stackdump.com/posts/integer-reduction> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "ODE steady-state values with uniform rates reveal integer structure — incidence degrees to terminal transitions — giving a reverse-engineering technique for rate constants."@en ;
    schema:datePublished "2026-02-22T22:30:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-04-01T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-nets" ;
    schema:keywords "ode" ;
    schema:about <https://ontology.pflow.xyz/term/ode> ;
    schema:keywords "game-theory" ;
    schema:keywords "tic-tac-toe" ;
    schema:keywords "rate-constants" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/categorical-net-types> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/coffeeshop-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction-paper> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/symmetric-monoidal-categories> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/texas-holdem-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> ;
    schema:citation <https://ontology.pflow.xyz/ref/murata-1989-petri-nets-properties-analysis-and-appli> ;
    schema:citation <https://ontology.pflow.xyz/ref/david-2010-discrete-continuous-and-hybrid-petri-net> ;
    schema:citation <https://ontology.pflow.xyz/ref/heiner-2008-petri-nets-for-systems-and-synthetic-bio> ;
    schema:citation <https://ontology.pflow.xyz/ref/freeman-1978-centrality-in-social-networks-conceptual> .

<https://ontology.pflow.xyz/work/blog/integer-reduction-paper> a schema:BlogPosting , ns:Work ;
    schema:name "Paper: Incidence Reduction via Petri Net ODE Equilibrium" ;
    schema:url <https://blog.stackdump.com/posts/integer-reduction-paper> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A draft paper formalizing incidence reduction — the ODE equilibrium of an analysis net is exactly the reciprocal of each entity's constraint count — checked on tic-tac-toe, poker, Connect Four, and Hex, with the tests linked."@en ;
    schema:datePublished "2026-02-23T21:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-09-30T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-nets" ;
    schema:keywords "ode" ;
    schema:about <https://ontology.pflow.xyz/term/ode> ;
    schema:keywords "game-theory" ;
    schema:keywords "incidence-reduction" ;
    schema:keywords "paper" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-holdem> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-petri-nets> .

<https://ontology.pflow.xyz/work/blog/json-ld-declarative-infrastructure> a schema:BlogPosting , ns:Work ;
    schema:name "JSON-LD as Declarative Infrastructure" ;
    schema:url <https://blog.stackdump.com/posts/json-ld-declarative-infrastructure> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Why JSON-LD's purely declarative semantics and monotonic schema expansion make it reliable infrastructure for composable systems."@en ;
    schema:datePublished "2026-02-15T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-08-22T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "json-ld" ;
    schema:about <https://ontology.pflow.xyz/term/json-ld> ;
    schema:keywords "infrastructure" ;
    schema:keywords "category-theory" ;
    schema:keywords "pflow" ;
    schema:keywords "activitypub" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/categorical-net-types> .

<https://ontology.pflow.xyz/work/blog/knapsack-model> a schema:BlogPosting , ns:Work ;
    schema:name "Knapsack Model" ;
    schema:url <https://blog.stackdump.com/posts/knapsack-model> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A four-item 0/1 knapsack as a Petri net under mass-action ODEs — why every item stops at 71.4%, what exclusion analysis actually ranks, and where the relaxation falls short of branch-and-bound."@en ;
    schema:datePublished "2025-01-03T22:32:10Z"^^xsd:dateTime ;
    schema:dateModified "2026-09-29T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "knapsack" ;
    schema:keywords "optimization" ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "ode" ;
    schema:about <https://ontology.pflow.xyz/term/ode> ;
    schema:keywords "ddm" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/capacity-paradox> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> .

<https://ontology.pflow.xyz/work/blog/little-language-thesis> a schema:BlogPosting , ns:Work ;
    schema:name "The Little Language Thesis" ;
    schema:url <https://blog.stackdump.com/posts/little-language-thesis> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "cell, func, arrow, guard are the structural primitives — but the real ubiquitous language lives in the labels. Like Forth, we build up domain vocabularies on a minimal substrate, and the incidence matrix proves what it can see: conservation, not guards or data."@en ;
    schema:datePublished "2026-03-28T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-08T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "dsl" ;
    schema:keywords "domain-driven-design" ;
    schema:keywords "little-languages" ;
    schema:keywords "composition" ;
    schema:keywords "state-machine" ;
    schema:keywords "formal-methods" ;
    schema:keywords "forth" ;
    schema:keywords "tla-plus" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/category-settle> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/generator-you-can-read> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/petri-net-sequencer> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/small-models-not-llms> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/symmetric-monoidal-categories> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/token-language> .

<https://ontology.pflow.xyz/work/blog/metamodel> a schema:BlogPosting , ns:Work ;
    schema:name "A Tiling for Computation" ;
    schema:url <https://blog.stackdump.com/posts/metamodel> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A small, fixed alphabet whose local composition rules generate an unbounded, non-repeating space of checkable systems — token standards, business operations, games, music, our own infrastructure. Not one system that swallows every domain. Two tiles, remixed without limit."@en ;
    schema:datePublished "2026-08-23T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-08-23T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "metamodel" ;
    schema:about <https://ontology.pflow.xyz/term/metamodel> ;
    schema:keywords "composition" ;
    schema:keywords "dsl" ;
    schema:keywords "domain-driven-design" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/little-language-thesis> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/model-is-the-app> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/token-language> .

<https://ontology.pflow.xyz/work/blog/model-is-the-app> a schema:BlogPosting , ns:Work ;
    schema:name "The Model Is the App" ;
    schema:url <https://blog.stackdump.com/posts/model-is-the-app> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A declarative vocabulary of composable models that gives you analysis and an app framework from the same artifact. Describe your operation, get a model; play the model as an app; calibrate it with your own data."@en ;
    schema:datePublished "2026-08-22T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-08-22T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "metamodel" ;
    schema:about <https://ontology.pflow.xyz/term/metamodel> ;
    schema:keywords "what-if-analysis" ;
    schema:keywords "llm" ;
    schema:keywords "simulation" ;
    schema:keywords "sim-pflow-xyz" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/capacity-paradox> .

<https://ontology.pflow.xyz/work/blog/obligation-triangle> a schema:BlogPosting , ns:Work ;
    schema:name "The Obligation Triangle" ;
    schema:url <https://blog.stackdump.com/posts/obligation-triangle> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A sketched phase space for money — three poles (sovereign, commodity, protocol), instruments placed inside as barycentric mixes, two edges labelled with witnesses, and a proposed F ⊣ U between the sovereign and protocol poles."@en ;
    schema:datePublished "2026-08-22T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-15T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "money" ;
    schema:keywords "category-theory" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/pflow-square> .

<https://ontology.pflow.xyz/work/blog/ode-signatures> a schema:BlogPosting , ns:Work ;
    schema:name "Comparing Nets by Their ODE Signatures" ;
    schema:url <https://blog.stackdump.com/posts/ode-signatures> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "The same math with different labels still produces the same ODE solution. In tic-tac-toe, we see it directly — each board position is a place, and the heatmap is the solution projected onto the grid."@en ;
    schema:datePublished "2026-02-18T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-04-01T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "ode" ;
    schema:about <https://ontology.pflow.xyz/term/ode> ;
    schema:keywords "equivalence" ;
    schema:keywords "go-pflow" ;
    schema:keywords "sim-pflow-xyz" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/coffeeshop-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> .

<https://ontology.pflow.xyz/work/blog/ode-to-petri> a schema:BlogPosting , ns:Work ;
    schema:name "Ode To Petri" ;
    schema:url <https://blog.stackdump.com/posts/ode-to-petri> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A poem for Carl Adam Petri, inventor of Petri nets—the mathematical notation for concurrent systems."@en ;
    schema:datePublished "2024-03-23T15:06:24Z"^^xsd:dateTime ;
    schema:dateModified "2026-04-01T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "poetry" ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    ns:collection "about" .

<https://ontology.pflow.xyz/work/blog/peerage-invariant> a schema:BlogPosting , ns:Work ;
    schema:name "Peerage Is an Automorphism" ;
    schema:url <https://blog.stackdump.com/posts/peerage-invariant> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Two people are peers when you can swap them and the net doesn't notice — an automorphism. Cory Doctorow's reverse centaur is that symmetry broken. And only under that symmetry does continuing a protocol count as consent rather than coercion: the ethics of working alongside an LLM reduces to one question — does the agent-swap stay in the automorphism group?"@en ;
    schema:datePublished "2026-08-22T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-22T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "llm" ;
    schema:keywords "formal-methods" ;
    schema:keywords "agency" ;
    schema:keywords "asimov" ;
    schema:keywords "symmetry" ;
    schema:keywords "automorphism" ;
    schema:keywords "group-theory" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/bitwrap-capstone> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/incidence-bridge> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/little-language-thesis> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/revisiting-the-flows> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/small-models-not-llms> .

<https://ontology.pflow.xyz/work/blog/petri-net-runtime> a schema:BlogPosting , ns:Work ;
    schema:name "A browser music sequencer where every note is a Petri-net transition firing" ;
    schema:url <https://blog.stackdump.com/posts/petri-net-runtime> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "The runtime is a Petri net — places hold tokens, transitions fire, that's the music. Same genre+seed = byte-identical output. Share URLs are CIDv1; the address is the track."@en ;
    schema:datePublished "2026-04-30T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-04-30T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-nets" ;
    schema:keywords "music" ;
    schema:keywords "beats-bitwrap" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/beats-launch-jambox> .

<https://ontology.pflow.xyz/work/blog/petri-net-sequencer> a schema:BlogPosting , ns:Work ;
    schema:name "Petri Nets as a Music Sequencer" ;
    schema:url <https://blog.stackdump.com/posts/petri-net-sequencer> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A music sequencer built entirely on Petri nets — token rings become drum machines, Euclidean rhythms fall out of the topology, and polyrhythm comes free."@en ;
    schema:datePublished "2026-03-25T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-08-08T04:45:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-nets" ;
    schema:keywords "music" ;
    schema:keywords "beats-bitwrap" ;
    schema:keywords "tone-js" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> .

<https://ontology.pflow.xyz/work/blog/petri-nets-book> a schema:BlogPosting , ns:Work ;
    schema:name "Petri Nets as a Universal Abstraction — Now a Book" ;
    schema:url <https://blog.stackdump.com/posts/petri-nets-book> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "The blog's models, concepts, and toolchain have been organized into a book-length guide at book.pflow.xyz."@en ;
    schema:datePublished "2026-02-16T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-09-27T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "announcement" ;
    schema:keywords "petri-nets" ;
    schema:keywords "book" ;
    schema:keywords "pflow" ;
    ns:collection "about" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/byte-exact-across-four-languages> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/categorical-net-types> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/category-settle> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/coffeeshop-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/enzyme-kinetics-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/exponential-scoring> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/json-ld-declarative-infrastructure> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/knapsack-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/sudoku-petri-net-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/symmetric-monoidal-categories> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/texas-holdem-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/token-language> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-petri-nets> .

<https://ontology.pflow.xyz/work/blog/petri-pilot> a schema:BlogPosting , ns:Work ;
    schema:name "Introducing sim.pflow.xyz" ;
    schema:url <https://blog.stackdump.com/posts/petri-pilot> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A tour of sim.pflow.xyz — a catalog of executable Petri-net models you can run, compare and check, from tic-tac-toe to a café to a vet clinic, in the browser or from any MCP client."@en ;
    schema:datePublished "2026-01-31T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-23T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "tutorial" ;
    schema:keywords "go-pflow" ;
    schema:keywords "simulation" ;
    schema:keywords "sim-pflow-xyz" ;
    ns:collection "about" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/capacity-paradox> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/coffeeshop-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/model-is-the-app> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/what-if-analysis> .

<https://ontology.pflow.xyz/work/blog/pflow-square> a schema:BlogPosting , ns:Work ;
    schema:name "The Pflow Square" ;
    schema:url <https://blog.stackdump.com/posts/pflow-square> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "One square that collects six earlier posts — the free SMC on a net, the zipper W(M) = 𝓛 × M × 𝓡, and three analyses that read the ρ boundary off the incidence matrix — with what has been checked and what is still only drawn."@en ;
    schema:datePublished "2026-04-07T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-20T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "category-theory" ;
    schema:keywords "tropical-geometry" ;
    schema:keywords "type-theory" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/category-settle> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/structuralism-not-objects> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/symmetric-monoidal-categories> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tense-type-theory> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tropical-petri-nets> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-petri-nets> .

<https://ontology.pflow.xyz/work/blog/polydocument-host> a schema:BlogPosting , ns:Work ;
    schema:name "cdn.stackdump.com Is a Polydocument Host" ;
    schema:url <https://blog.stackdump.com/posts/polydocument-host> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A content-addressed file host where the markdown frontmatter is the metadata of record — schema-first entries, content-addressed lineage, and a search UI that builds itself from whatever fields you wrote."@en ;
    schema:datePublished "2026-07-06T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-07-06T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "content-addressing" ;
    schema:keywords "metadata" ;
    schema:keywords "provenance" ;
    schema:keywords "cdn" ;
    schema:keywords "schema-first" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/beats-launch-jambox> .

<https://ontology.pflow.xyz/work/blog/proof-form> a schema:BlogPosting , ns:Work ;
    schema:name "The Proof Form: When a Theorem Is Just Another Port" ;
    schema:url <https://blog.stackdump.com/posts/proof-form> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Adding Lean 4 to pflow-polyglot forced a fifth implementation form — the same reachability check is a startup assertion in five languages and a compile-time theorem in the sixth, and the code is line-for-line equivalent."@en ;
    schema:datePublished "2026-08-02T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-26T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "lean" ;
    schema:keywords "formal-methods" ;
    schema:keywords "model-checking" ;
    schema:keywords "polyglot" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/byte-exact-across-four-languages> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/metamodel> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/revisiting-the-flows> .

<https://ontology.pflow.xyz/work/blog/revisiting-the-flows> a schema:BlogPosting , ns:Work ;
    schema:name "Revisiting the Flows" ;
    schema:url <https://blog.stackdump.com/posts/revisiting-the-flows> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Reflecting on old ideas with new tools — from Petri nets to proofs, from Bash scripts to composable universes."@en ;
    schema:datePublished "2025-11-09T10:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-09-28T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "announcement" ;
    schema:keywords "petri-nets" ;
    schema:keywords "philosophy" ;
    schema:keywords "category-theory" ;
    schema:keywords "blog-relaunch" ;
    ns:collection "about" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/bitwrap-capstone> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/category-settle> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/json-ld-declarative-infrastructure> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/knapsack-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/polydocument-host> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/proof-form> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/structuralism-not-objects> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/symmetric-monoidal-categories> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tense-type-theory> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/token-language> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-tic-tac-toe-model> .

<https://ontology.pflow.xyz/work/blog/small-models-not-llms> a schema:BlogPosting , ns:Work ;
    schema:name "Small Models > LLMs" ;
    schema:url <https://blog.stackdump.com/posts/small-models-not-llms> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Why executable formal models matter more with LLMs around, not less — and what the LLM is and isn't trusted with when a Petri net constrains it."@en ;
    schema:datePublished "2026-03-06T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-23T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "modeling" ;
    schema:keywords "formal-methods" ;
    schema:keywords "llm" ;
    schema:keywords "sim-pflow-xyz" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/code-to-flow> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/coffeeshop-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/model-is-the-app> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/ode-signatures> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/petri-pilot> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/what-if-analysis> .

<https://ontology.pflow.xyz/work/blog/structuralism-not-objects> a schema:BlogPosting , ns:Work ;
    schema:name "Structuralism, Not Objects: Dirac Deltas, Algebraic Effects, and Why C Comes First" ;
    schema:url <https://blog.stackdump.com/posts/structuralism-not-objects> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A Mastodon thread on formalizing Dirac deltas as algebraic effects, read through the pflow lens — the same refusal to posit an object, the same check-after-the-fact discipline, and a question about whether the predicate future is an effect rather than a value."@en ;
    schema:datePublished "2026-08-20T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-10T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "category-theory" ;
    schema:keywords "algebraic-effects" ;
    schema:keywords "tropical-geometry" ;
    schema:keywords "incidence-matrix" ;
    schema:about <https://ontology.pflow.xyz/term/incidence-matrix> ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/category-settle> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/pflow-square> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tense-type-theory> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tropical-petri-nets> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-petri-nets> .

<https://ontology.pflow.xyz/work/blog/sudoku-petri-net-model> a schema:BlogPosting , ns:Work ;
    schema:name "Sudoku Petri-Net Model" ;
    schema:url <https://blog.stackdump.com/posts/sudoku-petri-net-model> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A 4×4 Sudoku as a Petri net in the tic-tac-toe pattern — cells, digit moves with history, constraint collectors into a solved place — checked against the go-pflow generator, which shows the collectors as built can never fire and the ODE ranking is not yet demonstrated."@en ;
    schema:datePublished "2025-11-28T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-17T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "sudoku" ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "ode" ;
    schema:about <https://ontology.pflow.xyz/term/ode> ;
    schema:keywords "ddm" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/knapsack-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> .

<https://ontology.pflow.xyz/work/blog/symmetric-monoidal-categories> a schema:BlogPosting , ns:Work ;
    schema:name "Symmetric Monoidal Categories: The Structure Underneath" ;
    schema:url <https://blog.stackdump.com/posts/symmetric-monoidal-categories> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A Petri net generates a free symmetric monoidal category — places give the objects, transitions the generating morphisms. What that theorem buys for composition, analysis and proofs across this blog, and which of the connections are still a shape match rather than a checked result."@en ;
    schema:datePublished "2026-03-09T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-01T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "category-theory" ;
    schema:keywords "composition" ;
    schema:keywords "pflow" ;
    schema:keywords "symmetric-monoidal" ;
    schema:keywords "open-games" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/categorical-net-types> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/category-settle> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/coffeeshop-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/enzyme-kinetics-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction-paper> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/json-ld-declarative-infrastructure> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/ode-signatures> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/sudoku-petri-net-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tense-type-theory> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/texas-holdem-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/token-language> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-petri-nets> ;
    schema:citation <https://ontology.pflow.xyz/ref/meseguer-1990-petri-nets-are-monoids> ;
    schema:citation <https://ontology.pflow.xyz/ref/sassone-1995-on-the-category-of-petri-net-computation> ;
    schema:citation <https://ontology.pflow.xyz/ref/baez-2011-physics-topology-logic-and-computation-a> ;
    schema:citation <https://ontology.pflow.xyz/ref/fong-2015-the-algebra-of-open-and-interconnected-s> ;
    schema:citation <https://ontology.pflow.xyz/ref/master-2020-petri-nets-based-on-lawvere-theories> ;
    schema:citation <https://ontology.pflow.xyz/ref/montanari-1995-contextual-nets> ;
    schema:citation <https://ontology.pflow.xyz/ref/ghani-2016-compositional-game-theory> ;
    schema:citation <https://ontology.pflow.xyz/ref/riley-2018-categories-of-optics> .

<https://ontology.pflow.xyz/work/blog/tens-city-release> a schema:BlogPosting , ns:Work ;
    schema:name "tens-city v0.8: A Federated Blog in 500 Lines" ;
    schema:url <https://blog.stackdump.com/posts/tens-city-release> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "A minimal blog platform with ActivityPub federation. Markdown files, a Go binary, JSON for state. No database required."@en ;
    schema:datePublished "2026-01-25T12:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-04-01T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "tens-city" ;
    schema:keywords "activitypub" ;
    schema:keywords "federation" ;
    schema:keywords "fediverse" ;
    schema:keywords "go" ;
    ns:collection "about" .

<https://ontology.pflow.xyz/work/blog/tense-type-theory> a schema:BlogPosting , ns:Work ;
    schema:name "The Zipper Whose Hole Is a Universe" ;
    schema:url <https://blog.stackdump.com/posts/tense-type-theory> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Execution state is a zipper — the present moment is not a parameter or a modality but a universe that separates tropical past from predicate future. Tic-tac-toe makes the structure visible."@en ;
    schema:datePublished "2026-04-04T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "type-theory" ;
    schema:keywords "tropical-geometry" ;
    schema:keywords "category-theory" ;
    schema:keywords "tic-tac-toe" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/bitwrap-capstone> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/symmetric-monoidal-categories> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tropical-petri-nets> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-petri-nets> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-tic-tac-toe-model> .

<https://ontology.pflow.xyz/work/blog/texas-holdem-model> a schema:BlogPosting , ns:Work ;
    schema:name "Texas Hold'em Model" ;
    schema:url <https://blog.stackdump.com/posts/texas-holdem-model> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "The five-seat Hold'em tutorial net (18 places, 32 transitions) read against its source — phase places, turn tokens, a dealer role and an event log, plus what the net leaves to code (chips, guards, re-raises) and one bug in how seats re-enter a hand."@en ;
    schema:datePublished "2026-01-31T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-12T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "game" ;
    schema:keywords "state-machine" ;
    schema:keywords "event-sourcing" ;
    schema:about <https://ontology.pflow.xyz/term/event-sourcing> ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/building-zk-poker> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/petri-pilot> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-holdem> .

<https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> a schema:BlogPosting , ns:Work ;
    schema:name "Tic-Tac-Toe Model" ;
    schema:url <https://blog.stackdump.com/posts/tic-tac-toe-model> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Modeling tic-tac-toe using Petri nets with ODE simulation for AI move selection—no game heuristics, just model topology."@en ;
    schema:datePublished "2025-11-13T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-08-25T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "game" ;
    schema:keywords "tic-tac-toe" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tense-type-theory> .

<https://ontology.pflow.xyz/work/blog/token-language> a schema:BlogPosting , ns:Work ;
    schema:name "The Token Language" ;
    schema:url <https://blog.stackdump.com/posts/token-language> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Four terms — cell, func, arrow, guard — generate a free symmetric monoidal category. The DSL is a categorical language for executable token models."@en ;
    schema:datePublished "2026-01-25T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-08-22T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "go-pflow" ;
    schema:keywords "dsl" ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "guards" ;
    schema:keywords "invariants" ;
    schema:keywords "category-theory" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/bitwrap-capstone> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/category-settle> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/pflow-square> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/symmetric-monoidal-categories> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tense-type-theory> .

<https://ontology.pflow.xyz/work/blog/tropical-petri-nets> a schema:BlogPosting , ns:Work ;
    schema:name "Tropical Petri Nets" ;
    schema:url <https://blog.stackdump.com/posts/tropical-petri-nets> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Timed event graphs are max-plus linear and ReLU networks are tropical rational, so the two meet over the tropical semiring. This post covers what those two theorems give us, what pflow-tropical checks in code, and how far the Petri-net/neural-net analogy has actually been earned."@en ;
    schema:datePublished "2026-03-10T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-14T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "tropical-geometry" ;
    schema:keywords "neural-networks" ;
    schema:keywords "category-theory" ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/category-settle> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction-paper> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/pflow-square> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/small-models-not-llms> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/structuralism-not-objects> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/symmetric-monoidal-categories> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tense-type-theory> .

<https://ontology.pflow.xyz/work/blog/what-if-analysis> a schema:BlogPosting , ns:Work ;
    schema:name "Skip the Spreadsheet: What-If Analysis with Petri Nets" ;
    schema:url <https://blog.stackdump.com/posts/what-if-analysis> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Describe your business to an LLM, get a simulation you can actually play with — adjust staffing, change demand, and watch the numbers move. Revised to say which vet-clinic results the tests actually check, and that the coffee shop runs out of milk, not cups."@en ;
    schema:datePublished "2026-03-08T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-23T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "what-if-analysis" ;
    schema:keywords "llm" ;
    schema:keywords "capacity" ;
    schema:keywords "simulation" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/capacity-paradox> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/coffeeshop-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/declarative-differential-models> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/model-is-the-app> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/petri-pilot> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/small-models-not-llms> .

<https://ontology.pflow.xyz/work/blog/zk-holdem> a schema:BlogPosting , ns:Work ;
    schema:name "ZK Hold'em: Poker Hand Ranking from Network Topology" ;
    schema:url <https://blog.stackdump.com/posts/zk-holdem> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Incidence reduction applied to poker in one pflow-rs example — hand-category values come out of the ODE as 1/drains over hand-picked drain counts, every game action is Groth16-proven, the shuffle is a Poseidon commit-reveal, and the generated contract still trusts the showdown."@en ;
    schema:datePublished "2026-02-23T18:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-13T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "zk-proofs" ;
    schema:keywords "game" ;
    schema:keywords "integer-reduction" ;
    schema:keywords "poker" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/building-zk-poker> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/integer-reduction-paper> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/texas-holdem-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-petri-nets> .

<https://ontology.pflow.xyz/work/blog/zk-petri-nets> a schema:BlogPosting , ns:Work ;
    schema:name "Zero-Knowledge Proofs for Petri Nets" ;
    schema:url <https://blog.stackdump.com/posts/zk-petri-nets> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "How gnark circuits prove that a Petri net transition is valid without revealing the state—MiMC hashing, topology-based constraints, and Groth16 proofs."@en ;
    schema:datePublished "2026-02-14T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-08-22T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "zero-knowledge" ;
    schema:keywords "gnark" ;
    schema:keywords "cryptography" ;
    schema:keywords "groth16" ;
    schema:about <https://ontology.pflow.xyz/term/groth16> ;
    ns:collection "concepts" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/earned-compression> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/symmetric-monoidal-categories> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-tic-tac-toe-model> .

<https://ontology.pflow.xyz/work/blog/zk-polls-voting-as-state-machine> a schema:BlogPosting , ns:Work ;
    schema:name "ZK Polls: Voting as a Visible State Machine" ;
    schema:url <https://blog.stackdump.com/posts/zk-polls-voting-as-state-machine> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Anonymous polls in bitwrap-io: a small Petri net whose cast-vote transition carries a Groth16 proof of registry membership, nullifier and range — and what the current code does about secrecy after the poll closes."@en ;
    schema:datePublished "2026-03-19T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-10-25T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "zk" ;
    schema:keywords "voting" ;
    schema:keywords "groth16" ;
    schema:about <https://ontology.pflow.xyz/term/groth16> ;
    schema:keywords "gnark" ;
    schema:keywords "governance" ;
    schema:keywords "solidity" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/bitwrap-capstone> ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/zk-petri-nets> .

<https://ontology.pflow.xyz/work/blog/zk-tic-tac-toe-model> a schema:BlogPosting , ns:Work ;
    schema:name "ZK Tic-Tac-Toe Model" ;
    schema:url <https://blog.stackdump.com/posts/zk-tic-tac-toe-model> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/blog> ;
    schema:description "Zero-knowledge proofs meet Petri nets—cryptographically verify valid game moves without revealing strategy using gnark circuits."@en ;
    schema:datePublished "2026-01-31T00:00:00Z"^^xsd:dateTime ;
    schema:dateModified "2026-04-01T00:00:00Z"^^xsd:dateTime ;
    schema:author <https://ontology.pflow.xyz/person/stackdump> ;
    schema:keywords "petri-net" ;
    schema:about <https://ontology.pflow.xyz/term/petri-net> ;
    schema:keywords "zero-knowledge" ;
    schema:keywords "gnark" ;
    schema:keywords "cryptography" ;
    ns:collection "models" ;
    ns:linksTo <https://ontology.pflow.xyz/work/blog/tic-tac-toe-model> .

<https://ontology.pflow.xyz/work/book> a schema:Book , ns:Work ;
    schema:name "Petri Nets as a Universal Abstraction" ;
    schema:url <https://book.pflow.xyz> .

<https://ontology.pflow.xyz/work/book/appendix-a-solver-reference> a schema:Chapter , ns:Work ;
    schema:name "Appendix A: Solver Parameter Reference" ;
    schema:url <https://book.pflow.xyz/appendix-a-solver-reference.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> .

<https://ontology.pflow.xyz/work/book/appendix-b-token-grammar> a schema:Chapter , ns:Work ;
    schema:name "Appendix B: Token Language Grammar" ;
    schema:url <https://book.pflow.xyz/appendix-b-token-grammar.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> .

<https://ontology.pflow.xyz/work/book/appendix-c-json-schema> a schema:Chapter , ns:Work ;
    schema:name "Appendix C: JSON Schema Reference" ;
    schema:url <https://book.pflow.xyz/appendix-c-json-schema.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> .

<https://ontology.pflow.xyz/work/book/appendix-d-glossary> a schema:Chapter , ns:Work ;
    schema:name "Appendix D: Glossary" ;
    schema:url <https://book.pflow.xyz/appendix-d-glossary.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> .

<https://ontology.pflow.xyz/work/book/appendix-e-categorical-foundations> a schema:Chapter , ns:Work ;
    schema:name "Appendix E: Categorical Foundations" ;
    schema:url <https://book.pflow.xyz/appendix-e-categorical-foundations.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:citation <https://ontology.pflow.xyz/ref/meseguer-1990-petri-nets-are-monoids> ;
    schema:citation <https://ontology.pflow.xyz/ref/sassone-1995-on-the-category-of-petri-net-computation> ;
    schema:citation <https://ontology.pflow.xyz/ref/baez-2011-physics-topology-logic-and-computation-a> ;
    schema:citation <https://ontology.pflow.xyz/ref/fong-2015-the-algebra-of-open-and-interconnected-s> ;
    schema:citation <https://ontology.pflow.xyz/ref/master-2020-generalized-petri-nets> ;
    schema:citation <https://ontology.pflow.xyz/ref/riley-2018-categories-of-optics> ;
    schema:citation <https://ontology.pflow.xyz/ref/montanari-1995-contextual-nets> ;
    schema:citation <https://ontology.pflow.xyz/ref/vogler-1998-unfolding-and-finite-prefix-for-nets-wit> ;
    schema:citation <https://ontology.pflow.xyz/ref/karp-1978-a-characterization-of-the-minimum-cycle-> .

<https://ontology.pflow.xyz/work/book/ch01-why-petri-nets> a schema:Chapter , ns:Work ;
    schema:name "Why Petri Nets?" ;
    schema:url <https://book.pflow.xyz/ch01-why-petri-nets.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "1"^^xsd:integer .

<https://ontology.pflow.xyz/work/book/ch02-mathematics-of-flow> a schema:Chapter , ns:Work ;
    schema:name "The Mathematics of Flow" ;
    schema:url <https://book.pflow.xyz/ch02-mathematics-of-flow.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "2"^^xsd:integer ;
    schema:about <https://ontology.pflow.xyz/term/incidence-matrix> ;
    schema:about <https://ontology.pflow.xyz/term/p-invariant> .

<https://ontology.pflow.xyz/work/book/ch03-discrete-to-continuous> a schema:Chapter , ns:Work ;
    schema:name "From Discrete to Continuous" ;
    schema:url <https://book.pflow.xyz/ch03-discrete-to-continuous.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "3"^^xsd:integer ;
    schema:about <https://ontology.pflow.xyz/term/continuous-relaxation> ;
    schema:about <https://ontology.pflow.xyz/term/mass-action-kinetics> ;
    schema:about <https://ontology.pflow.xyz/term/ode> ;
    schema:about <https://ontology.pflow.xyz/term/sde> ;
    schema:about <https://ontology.pflow.xyz/term/ssa> .

<https://ontology.pflow.xyz/work/book/ch04-token-language> a schema:Chapter , ns:Work ;
    schema:name "The Token Language" ;
    schema:url <https://book.pflow.xyz/ch04-token-language.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "4"^^xsd:integer ;
    schema:about <https://ontology.pflow.xyz/term/edge-matching-composition> .

<https://ontology.pflow.xyz/work/book/ch05-resource-modeling> a schema:Chapter , ns:Work ;
    schema:name "Resource Modeling — The Coffee Shop" ;
    schema:url <https://book.pflow.xyz/ch05-resource-modeling.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "5"^^xsd:integer .

<https://ontology.pflow.xyz/work/book/ch06-game-mechanics> a schema:Chapter , ns:Work ;
    schema:name "Game Mechanics — Tic-Tac-Toe" ;
    schema:url <https://book.pflow.xyz/ch06-game-mechanics.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "6"^^xsd:integer ;
    schema:about <https://ontology.pflow.xyz/term/monotonic-expansion> ;
    schema:about <https://ontology.pflow.xyz/term/tropical-past-predicate-future> ;
    schema:about <https://ontology.pflow.xyz/term/write-once-place> .

<https://ontology.pflow.xyz/work/book/ch07-constraint-satisfaction> a schema:Chapter , ns:Work ;
    schema:name "Constraint Satisfaction — Sudoku" ;
    schema:url <https://book.pflow.xyz/ch07-constraint-satisfaction.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "7"^^xsd:integer ;
    schema:about <https://ontology.pflow.xyz/term/write-once-place> .

<https://ontology.pflow.xyz/work/book/ch08-optimization> a schema:Chapter , ns:Work ;
    schema:name "Optimization — The Knapsack Problem" ;
    schema:url <https://book.pflow.xyz/ch08-optimization.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "8"^^xsd:integer .

<https://ontology.pflow.xyz/work/book/ch09-enzyme-kinetics> a schema:Chapter , ns:Work ;
    schema:name "Biochemistry — Enzyme Kinetics" ;
    schema:url <https://book.pflow.xyz/ch09-enzyme-kinetics.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "9"^^xsd:integer .

<https://ontology.pflow.xyz/work/book/ch10-complex-state-machines> a schema:Chapter , ns:Work ;
    schema:name "Complex State Machines — Texas Hold'em" ;
    schema:url <https://book.pflow.xyz/ch10-complex-state-machines.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "10"^^xsd:integer .

<https://ontology.pflow.xyz/work/book/ch11-process-mining> a schema:Chapter , ns:Work ;
    schema:name "Process Mining" ;
    schema:url <https://book.pflow.xyz/ch11-process-mining.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "11"^^xsd:integer .

<https://ontology.pflow.xyz/work/book/ch12-zero-knowledge-proofs> a schema:Chapter , ns:Work ;
    schema:name "Zero-Knowledge Proofs" ;
    schema:url <https://book.pflow.xyz/ch12-zero-knowledge-proofs.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "12"^^xsd:integer ;
    schema:about <https://ontology.pflow.xyz/term/groth16> ;
    schema:about <https://ontology.pflow.xyz/term/mimc> ;
    schema:about <https://ontology.pflow.xyz/term/zero-knowledge-proof> .

<https://ontology.pflow.xyz/work/book/ch13-topology-driven-verification> a schema:Chapter , ns:Work ;
    schema:name "Topology-Driven Verification" ;
    schema:url <https://book.pflow.xyz/ch13-topology-driven-verification.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "13"^^xsd:integer .

<https://ontology.pflow.xyz/work/book/ch14-on-chain-verification> a schema:Chapter , ns:Work ;
    schema:name "On-Chain ZK Verification" ;
    schema:url <https://book.pflow.xyz/ch14-on-chain-verification.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "14"^^xsd:integer .

<https://ontology.pflow.xyz/work/book/ch15-exponential-weights> a schema:Chapter , ns:Work ;
    schema:name "Exponential Weights and Scoring Systems" ;
    schema:url <https://book.pflow.xyz/ch15-exponential-weights.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "15"^^xsd:integer .

<https://ontology.pflow.xyz/work/book/ch16-declarative-infrastructure> a schema:Chapter , ns:Work ;
    schema:name "Declarative Infrastructure" ;
    schema:url <https://book.pflow.xyz/ch16-declarative-infrastructure.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "16"^^xsd:integer ;
    schema:about <https://ontology.pflow.xyz/term/cid> ;
    schema:about <https://ontology.pflow.xyz/term/json-ld> ;
    schema:about <https://ontology.pflow.xyz/term/model-is-a-value-not-a-program> ;
    schema:about <https://ontology.pflow.xyz/term/monotonic-expansion> ;
    schema:about <https://ontology.pflow.xyz/term/urdna2015> .

<https://ontology.pflow.xyz/work/book/ch17-visual-editor> a schema:Chapter , ns:Work ;
    schema:name "The Visual Editor — pflow.xyz" ;
    schema:url <https://book.pflow.xyz/ch17-visual-editor.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "17"^^xsd:integer .

<https://ontology.pflow.xyz/work/book/ch18-code-generation> a schema:Chapter , ns:Work ;
    schema:name "sim.pflow.xyz — From Description to Checked Model" ;
    schema:url <https://book.pflow.xyz/ch18-code-generation.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "18"^^xsd:integer .

<https://ontology.pflow.xyz/work/book/ch19-go-pflow-library> a schema:Chapter , ns:Work ;
    schema:name "The go-pflow Library" ;
    schema:url <https://book.pflow.xyz/ch19-go-pflow-library.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "19"^^xsd:integer .

<https://ontology.pflow.xyz/work/book/ch20-dual-implementation> a schema:Chapter , ns:Work ;
    schema:name "Dual Implementation and Verification" ;
    schema:url <https://book.pflow.xyz/ch20-dual-implementation.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "20"^^xsd:integer ;
    schema:about <https://ontology.pflow.xyz/term/drift> ;
    schema:about <https://ontology.pflow.xyz/term/event-sourcing> ;
    schema:about <https://ontology.pflow.xyz/term/golden-trace> ;
    schema:about <https://ontology.pflow.xyz/term/model-is-a-value-not-a-program> ;
    schema:about <https://ontology.pflow.xyz/term/state-root> .

<https://ontology.pflow.xyz/work/book/ch21-epilogue> a schema:Chapter , ns:Work ;
    schema:name "Epilogue: What the Abstraction Sits On" ;
    schema:url <https://book.pflow.xyz/ch21-epilogue.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> ;
    schema:position "21"^^xsd:integer ;
    schema:about <https://ontology.pflow.xyz/term/declare-then-derive> ;
    schema:about <https://ontology.pflow.xyz/term/internal-dsl> ;
    schema:about <https://ontology.pflow.xyz/term/journey> ;
    schema:about <https://ontology.pflow.xyz/term/manifest> ;
    schema:about <https://ontology.pflow.xyz/term/metamodel> .

<https://ontology.pflow.xyz/work/book/preface> a schema:Chapter , ns:Work ;
    schema:name "Preface" ;
    schema:url <https://book.pflow.xyz/preface.html> ;
    schema:isPartOf <https://ontology.pflow.xyz/work/book> .

<https://ontology.pflow.xyz/person/claude-code> a schema:Person ;
    schema:name "Claude Code" ;
    schema:url <https://claude.com/claude-code> .

<https://ontology.pflow.xyz/person/stackdump> a schema:Person ;
    schema:name "stackdump" ;
    schema:url <https://github.com/stackdump> .

<https://ontology.pflow.xyz/person/alla-h> a schema:Person ;
    schema:name "Alla, H." .

<https://ontology.pflow.xyz/person/baccelli-f> a schema:Person ;
    schema:name "Baccelli, F." .

<https://ontology.pflow.xyz/person/baez-j-c> a schema:Person ;
    schema:name "Baez, J.C." .

<https://ontology.pflow.xyz/person/cohen-g> a schema:Person ;
    schema:name "Cohen, G." .

<https://ontology.pflow.xyz/person/david-r> a schema:Person ;
    schema:name "David, R." .

<https://ontology.pflow.xyz/person/donaldson-r> a schema:Person ;
    schema:name "Donaldson, R." .

<https://ontology.pflow.xyz/person/fong-b> a schema:Person ;
    schema:name "Fong, B." .

<https://ontology.pflow.xyz/person/freeman-l-c> a schema:Person ;
    schema:name "Freeman, L.C." .

<https://ontology.pflow.xyz/person/genovese-f> a schema:Person ;
    schema:name "Genovese, F." .

<https://ontology.pflow.xyz/person/ghani-n> a schema:Person ;
    schema:name "Ghani, N." .

<https://ontology.pflow.xyz/person/gilbert-d> a schema:Person ;
    schema:name "Gilbert, D.," .

<https://ontology.pflow.xyz/person/groth-j> a schema:Person ;
    schema:name "Groth, J." .

<https://ontology.pflow.xyz/person/hedges-j> a schema:Person ;
    schema:name "Hedges, J." .

<https://ontology.pflow.xyz/person/heiner-m> a schema:Person ;
    schema:name "Heiner, M." .

<https://ontology.pflow.xyz/person/huisinga-w> a schema:Person ;
    schema:name "Huisinga, W." .

<https://ontology.pflow.xyz/person/jahnke-t> a schema:Person ;
    schema:name "Jahnke, T." .

<https://ontology.pflow.xyz/person/karp-r-m> a schema:Person ;
    schema:name "Karp, R.M." .

<https://ontology.pflow.xyz/person/li-m> a schema:Person ;
    schema:name "Li, M." .

<https://ontology.pflow.xyz/person/mac-lane-s> a schema:Person ;
    schema:name "Mac Lane, S." .

<https://ontology.pflow.xyz/person/master-j> a schema:Person ;
    schema:name "Master, J." .

<https://ontology.pflow.xyz/person/meseguer-j> a schema:Person ;
    schema:name "Meseguer, J." .

<https://ontology.pflow.xyz/person/molloy-m-k> a schema:Person ;
    schema:name "Molloy, M.K." .

<https://ontology.pflow.xyz/person/montanari-u> a schema:Person ;
    schema:name "Montanari, U." .

<https://ontology.pflow.xyz/person/murata-t> a schema:Person ;
    schema:name "Murata, T." .

<https://ontology.pflow.xyz/person/olsder-g-j> a schema:Person ;
    schema:name "Olsder, G.J." .

<https://ontology.pflow.xyz/person/pollard-b-s> a schema:Person ;
    schema:name "Pollard, B.S." .

<https://ontology.pflow.xyz/person/quadrat-j-p> a schema:Person ;
    schema:name "Quadrat, J.-P." .

<https://ontology.pflow.xyz/person/riehl-e> a schema:Person ;
    schema:name "Riehl, E." .

<https://ontology.pflow.xyz/person/riley-m> a schema:Person ;
    schema:name "Riley, M." .

<https://ontology.pflow.xyz/person/rossi-f> a schema:Person ;
    schema:name "Rossi, F." .

<https://ontology.pflow.xyz/person/sassone-v> a schema:Person ;
    schema:name "Sassone, V." .

<https://ontology.pflow.xyz/person/semenov-a> a schema:Person ;
    schema:name "Semenov, A." .

<https://ontology.pflow.xyz/person/shulman-m> a schema:Person ;
    schema:name "Shulman, M." .

<https://ontology.pflow.xyz/person/stay-m> a schema:Person ;
    schema:name "Stay, M." .

<https://ontology.pflow.xyz/person/vit-nyi-p> a schema:Person ;
    schema:name "Vitányi, P." .

<https://ontology.pflow.xyz/person/vogler-w> a schema:Person ;
    schema:name "Vogler, W." .

<https://ontology.pflow.xyz/person/winschel-v> a schema:Person ;
    schema:name "Winschel, V." .

<https://ontology.pflow.xyz/person/yakovlev-a> a schema:Person ;
    schema:name "Yakovlev, A." .

<https://ontology.pflow.xyz/person/yoneda-n> a schema:Person ;
    schema:name "Yoneda, N." .

<https://ontology.pflow.xyz/person/zahn-p> a schema:Person ;
    schema:name "Zahn, P." .

<https://ontology.pflow.xyz/ref/baccelli-1992-synchronization-and-linearity-an-algebra> a ns:Reference ;
    schema:name "Synchronization and Linearity: An Algebra for Discrete Event Systems" ;
    schema:datePublished "1992"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/baccelli-f> ;
    schema:author <https://ontology.pflow.xyz/person/cohen-g> ;
    schema:author <https://ontology.pflow.xyz/person/olsder-g-j> ;
    schema:author <https://ontology.pflow.xyz/person/quadrat-j-p> ;
    ns:authorList "Baccelli, F.; Cohen, G.; Olsder, G.J.; Quadrat, J.-P." ;
    ns:venue "Wiley" .

<https://ontology.pflow.xyz/ref/baez-2011-physics-topology-logic-and-computation-a> a ns:Reference ;
    schema:name "Physics, Topology, Logic and Computation: A Rosetta Stone" ;
    schema:datePublished "2011"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/baez-j-c> ;
    schema:author <https://ontology.pflow.xyz/person/stay-m> ;
    ns:authorList "Baez, J.C.; Stay, M." ;
    ns:venue "New Structures for Physics, Springer" .

<https://ontology.pflow.xyz/ref/baez-2017-a-compositional-framework-for-reaction-n> a ns:Reference ;
    schema:name "A Compositional Framework for Reaction Networks" ;
    schema:datePublished "2017"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/baez-j-c> ;
    schema:author <https://ontology.pflow.xyz/person/pollard-b-s> ;
    ns:authorList "Baez, J.C.; Pollard, B.S." ;
    ns:arxiv "1704.02051" ;
    schema:sameAs <https://arxiv.org/abs/1704.02051> ;
    ns:addedBy "editor" ;
    ns:basis "Reaction networks, equivalently Petri nets, composed as open systems." .

<https://ontology.pflow.xyz/ref/baez-2020-open-petri-nets> a ns:Reference ;
    schema:name "Open Petri Nets" ;
    schema:datePublished "2020"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/baez-j-c> ;
    schema:author <https://ontology.pflow.xyz/person/master-j> ;
    ns:authorList "Baez, J.C.; Master, J." ;
    ns:venue "Mathematical Structures in Computer Science, 30(3)" ;
    ns:arxiv "1808.05415" ;
    schema:sameAs <https://arxiv.org/abs/1808.05415> .

<https://ontology.pflow.xyz/ref/baez-2021-categories-of-nets> a ns:Reference ;
    schema:name "Categories of Nets" ;
    schema:datePublished "2021"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/baez-j-c> ;
    schema:author <https://ontology.pflow.xyz/person/genovese-f> ;
    schema:author <https://ontology.pflow.xyz/person/master-j> ;
    schema:author <https://ontology.pflow.xyz/person/shulman-m> ;
    ns:authorList "Baez, J.C.; Genovese, F.; Master, J.; Shulman, M." ;
    ns:arxiv "2101.04238" ;
    schema:sameAs <https://arxiv.org/abs/2101.04238> ;
    ns:addedBy "editor" ;
    ns:basis "Abstract: Sigma-nets generate symmetric strict monoidal categories and ordinary Petri nets generate commutative monoidal categories, by left adjoint functors. Directly relevant to the free-SMC claim in Appendix E." .

<https://ontology.pflow.xyz/ref/david-2010-discrete-continuous-and-hybrid-petri-net> a ns:Reference ;
    schema:name "Discrete, Continuous, and Hybrid Petri Nets" ;
    schema:datePublished "2010"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/david-r> ;
    schema:author <https://ontology.pflow.xyz/person/alla-h> ;
    ns:authorList "David, R.; Alla, H." ;
    ns:venue "Springer" .

<https://ontology.pflow.xyz/ref/fong-2015-the-algebra-of-open-and-interconnected-s> a ns:Reference ;
    schema:name "The Algebra of Open and Interconnected Systems" ;
    schema:datePublished "2015"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/fong-b> ;
    ns:authorList "Fong, B." ;
    ns:venue "PhD thesis, Oxford" .

<https://ontology.pflow.xyz/ref/freeman-1978-centrality-in-social-networks-conceptual> a ns:Reference ;
    schema:name "Centrality in Social Networks: Conceptual Clarification" ;
    schema:datePublished "1978"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/freeman-l-c> ;
    ns:authorList "Freeman, L.C." ;
    ns:venue "Social Networks, 1(3)" .

<https://ontology.pflow.xyz/ref/ghani-2016-compositional-game-theory> a ns:Reference ;
    schema:name "Compositional Game Theory" ;
    schema:datePublished "2016"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/ghani-n> ;
    schema:author <https://ontology.pflow.xyz/person/hedges-j> ;
    schema:author <https://ontology.pflow.xyz/person/winschel-v> ;
    schema:author <https://ontology.pflow.xyz/person/zahn-p> ;
    ns:authorList "Ghani, N.; Hedges, J.; Winschel, V.; Zahn, P." ;
    ns:venue "arXiv" ;
    ns:arxiv "1603.04641" ;
    schema:sameAs <https://arxiv.org/abs/1603.04641> .

<https://ontology.pflow.xyz/ref/groth-2016-on-the-size-of-pairing-based-non-interac> a ns:Reference ;
    schema:name "On the Size of Pairing-Based Non-Interactive Arguments" ;
    schema:datePublished "2016"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/groth-j> ;
    ns:authorList "Groth, J." ;
    ns:venue "EUROCRYPT 2016" .

<https://ontology.pflow.xyz/ref/heiner-2008-petri-nets-for-systems-and-synthetic-bio> a ns:Reference ;
    schema:name "Petri Nets for Systems and Synthetic Biology" ;
    schema:datePublished "2008"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/heiner-m> ;
    schema:author <https://ontology.pflow.xyz/person/gilbert-d> ;
    schema:author <https://ontology.pflow.xyz/person/donaldson-r> ;
    ns:authorList "Heiner, M.; Gilbert, D.,; Donaldson, R." ;
    ns:venue "Formal Methods for Computational Systems Biology, Springer" .

<https://ontology.pflow.xyz/ref/jahnke-2007-solving-the-chemical-master-equation-for> a ns:Reference ;
    schema:name "Solving the chemical master equation for monomolecular reaction systems analytically" ;
    schema:datePublished "2007"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/jahnke-t> ;
    schema:author <https://ontology.pflow.xyz/person/huisinga-w> ;
    ns:authorList "Jahnke, T.; Huisinga, W." ;
    ns:venue "Journal of Mathematical Biology, 54(1)" .

<https://ontology.pflow.xyz/ref/karp-1978-a-characterization-of-the-minimum-cycle-> a ns:Reference ;
    schema:name "A characterization of the minimum cycle mean in a digraph" ;
    schema:datePublished "1978"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/karp-r-m> ;
    ns:authorList "Karp, R.M." ;
    ns:venue "Discrete Mathematics, 23(3)" .

<https://ontology.pflow.xyz/ref/li-2008-an-introduction-to-kolmogorov-complexity> a ns:Reference ;
    schema:name "An Introduction to Kolmogorov Complexity and Its Applications" ;
    schema:datePublished "2008"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/li-m> ;
    schema:author <https://ontology.pflow.xyz/person/vit-nyi-p> ;
    ns:authorList "Li, M.; Vitányi, P." ;
    ns:venue "Springer, 3rd ed" .

<https://ontology.pflow.xyz/ref/mac-lane-1998-categories-for-the-working-mathematician> a ns:Reference ;
    schema:name "Categories for the Working Mathematician" ;
    schema:datePublished "1998"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/mac-lane-s> ;
    ns:authorList "Mac Lane, S." ;
    ns:venue "Springer, Graduate Texts in Mathematics 5, 2nd ed." ;
    ns:addedBy "editor" ;
    ns:basis "Standard reference for the lemma. Checked: the book, edition and series, and that Chapter III is 'Universals and Limits'. Not checked: the section within that chapter, so none is given." .

<https://ontology.pflow.xyz/ref/master-2020-composing-behaviors-of-networks> a ns:Reference ;
    schema:name "Composing Behaviors of Networks" ;
    schema:datePublished "2020"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/master-j> ;
    ns:authorList "Master, J." ;
    ns:venue "PhD thesis, University of California, Riverside" ;
    ns:arxiv "2105.12905" ;
    schema:sameAs <https://arxiv.org/abs/2105.12905> ;
    ns:addedBy "editor" ;
    ns:basis "Title page: dissertation dated June 2020, posted to arXiv May 2021." .

<https://ontology.pflow.xyz/ref/master-2020-generalized-petri-nets> a ns:Reference ;
    schema:name "Generalized Petri Nets" ;
    schema:datePublished "2020"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/master-j> ;
    ns:authorList "Master, J." ;
    ns:venue "The Topos Institute" .

<https://ontology.pflow.xyz/ref/master-2020-petri-nets-based-on-lawvere-theories> a ns:Reference ;
    schema:name "Petri Nets Based on Lawvere Theories" ;
    schema:datePublished "2020"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/master-j> ;
    ns:authorList "Master, J." ;
    ns:venue "Mathematical Structures in Computer Science, 30" ;
    ns:arxiv "1904.09091" ;
    schema:sameAs <https://arxiv.org/abs/1904.09091> .

<https://ontology.pflow.xyz/ref/meseguer-1990-petri-nets-are-monoids> a ns:Reference ;
    schema:name "Petri Nets are Monoids" ;
    schema:datePublished "1990"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/meseguer-j> ;
    schema:author <https://ontology.pflow.xyz/person/montanari-u> ;
    ns:authorList "Meseguer, J.; Montanari, U." ;
    ns:venue "Information and Computation, 88(2)" .

<https://ontology.pflow.xyz/ref/molloy-1982-performance-analysis-using-stochastic-pe> a ns:Reference ;
    schema:name "Performance Analysis Using Stochastic Petri Nets" ;
    schema:datePublished "1982"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/molloy-m-k> ;
    ns:authorList "Molloy, M.K." ;
    ns:venue "IEEE Transactions on Computers, C-31(9)" .

<https://ontology.pflow.xyz/ref/montanari-1995-contextual-nets> a ns:Reference ;
    schema:name "Contextual Nets" ;
    schema:datePublished "1995"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/montanari-u> ;
    schema:author <https://ontology.pflow.xyz/person/rossi-f> ;
    ns:authorList "Montanari, U.; Rossi, F." ;
    ns:venue "Acta Informatica, 32(6)" .

<https://ontology.pflow.xyz/ref/murata-1989-petri-nets-properties-analysis-and-appli> a ns:Reference ;
    schema:name "Petri Nets: Properties, Analysis and Applications" ;
    schema:datePublished "1989"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/murata-t> ;
    ns:authorList "Murata, T." ;
    ns:venue "Proceedings of the IEEE, 77(4)" .

<https://ontology.pflow.xyz/ref/riehl-2016-category-theory-in-context> a ns:Reference ;
    schema:name "Category Theory in Context" ;
    schema:datePublished "2016"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/riehl-e> ;
    ns:authorList "Riehl, E." ;
    ns:venue "Dover Publications" ;
    ns:addedBy "editor" ;
    ns:basis "Standard textbook statement of the Yoneda lemma: Chapter 2 'Universal Properties, Representability, and the Yoneda Lemma', section 2.2 'The Yoneda lemma' (Dover edition; checked against the published table of contents)." .

<https://ontology.pflow.xyz/ref/riley-2018-categories-of-optics> a ns:Reference ;
    schema:name "Categories of Optics" ;
    schema:datePublished "2018"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/riley-m> ;
    ns:authorList "Riley, M." ;
    ns:venue "arXiv" ;
    ns:arxiv "1809.00738" ;
    schema:sameAs <https://arxiv.org/abs/1809.00738> .

<https://ontology.pflow.xyz/ref/sassone-1995-on-the-category-of-petri-net-computation> a ns:Reference ;
    schema:name "On the Category of Petri Net Computations" ;
    schema:datePublished "1995"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/sassone-v> ;
    ns:authorList "Sassone, V." ;
    ns:venue "TAPSOFT" .

<https://ontology.pflow.xyz/ref/vogler-1998-unfolding-and-finite-prefix-for-nets-wit> a ns:Reference ;
    schema:name "Unfolding and Finite Prefix for Nets with Read Arcs" ;
    schema:datePublished "1998"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/vogler-w> ;
    schema:author <https://ontology.pflow.xyz/person/semenov-a> ;
    schema:author <https://ontology.pflow.xyz/person/yakovlev-a> ;
    ns:authorList "Vogler, W.; Semenov, A.; Yakovlev, A." ;
    ns:venue "CONCUR 1998" .

<https://ontology.pflow.xyz/ref/yoneda-1954-on-the-homology-theory-of-modules> a ns:Reference ;
    schema:name "On the homology theory of modules" ;
    schema:datePublished "1954"^^xsd:gYear ;
    schema:author <https://ontology.pflow.xyz/person/yoneda-n> ;
    ns:authorList "Yoneda, N." ;
    ns:venue "Journal of the Faculty of Science, University of Tokyo, Section I, 7, 193-227" ;
    ns:addedBy "editor" ;
    ns:basis "The paper associated with Yoneda's name. Checked: the bibliographic details, against several sources. Not checked: whether the lemma is stated in this paper; cite a textbook for the statement." .

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix schema: <https://schema.org/> .
@prefix ns: <https://ontology.pflow.xyz/ns#> .

<https://ontology.pflow.xyz/modelkind/scheme> a skos:ConceptScheme ;
    rdfs:label "sim model kinds"@en ;
    schema:url <https://sim.pflow.xyz/ns/models/v1> ;
    ns:status "experimental — proposed candidate types, not yet applied to any catalog model; see ROADMAP.md Phase 8" .

<https://ontology.pflow.xyz/modelkind/ArrivalProcess> a ns:ModelKind ;
    rdfs:label "ArrivalProcess" ;
    skos:definition "at least one demand-rate (source) knob and no resource pool: pure arrivals with nothing rationing them"@en ;
    skos:inScheme <https://ontology.pflow.xyz/modelkind/scheme> ;
    skos:exactMatch <https://sim.pflow.xyz/ns/models/v1#ArrivalProcess> .

<https://ontology.pflow.xyz/modelkind/ConservedResourceCycle> a ns:ModelKind ;
    rdfs:label "ConservedResourceCycle" ;
    skos:definition "at least one firing-cycle (T-invariant) whose own support touches a resource pool: tokens cycle through that pool rather than accumulating or draining"@en ;
    skos:inScheme <https://ontology.pflow.xyz/modelkind/scheme> ;
    skos:exactMatch <https://sim.pflow.xyz/ns/models/v1#ConservedResourceCycle> .

<https://ontology.pflow.xyz/modelkind/HasFungibleFamily> a ns:ModelKind ;
    rdfs:label "HasFungibleFamily" ;
    skos:definition "at least one discovered fungible class: some of the model's knobs are interchangeable rather than independent"@en ;
    skos:inScheme <https://ontology.pflow.xyz/modelkind/scheme> ;
    skos:exactMatch <https://sim.pflow.xyz/ns/models/v1#HasFungibleFamily> .

<https://ontology.pflow.xyz/modelkind/QueueingSystem> a ns:ModelKind ;
    rdfs:label "QueueingSystem" ;
    skos:definition "at least one resource pool, at least one abandonment (patience) knob and at least one loss outcome: demand queues for a limited resource and can walk away empty-handed"@en ;
    skos:inScheme <https://ontology.pflow.xyz/modelkind/scheme> ;
    skos:exactMatch <https://sim.pflow.xyz/ns/models/v1#QueueingSystem> .

<https://ontology.pflow.xyz/modelkind/ResourcePool> a ns:ModelKind ;
    rdfs:label "ResourcePool" ;
    skos:definition "at least one resource pool and no abandonment knob: demand waits for the resource, it never gives up and leaves"@en ;
    skos:inScheme <https://ontology.pflow.xyz/modelkind/scheme> ;
    skos:exactMatch <https://sim.pflow.xyz/ns/models/v1#ResourcePool> .

<https://ontology.pflow.xyz/modelkind/StructurallyDeadlockable> a ns:ModelKind ;
    rdfs:label "StructurallyDeadlockable" ;
    skos:definition "at least one unmarked minimal siphon at the model's own initial marking: a structural proof (not sampled) that some transitions are permanently disabled once that siphon empties"@en ;
    skos:inScheme <https://ontology.pflow.xyz/modelkind/scheme> ;
    skos:exactMatch <https://sim.pflow.xyz/ns/models/v1#StructurallyDeadlockable> .

<https://ontology.pflow.xyz/modelkind/UnclassifiedModel> a ns:ModelKind ;
    rdfs:label "UnclassifiedModel" ;
    skos:definition "the model's shape matched no rule in ProposeTypes' table: unrecognized, not misclassified"@en ;
    skos:inScheme <https://ontology.pflow.xyz/modelkind/scheme> ;
    skos:exactMatch <https://sim.pflow.xyz/ns/models/v1#UnclassifiedModel> .

