You're reading the public-facing archive of the Category Theory Zulip server.
To join the server you need an invite. Anybody can get an invite by contacting Matteo Capucci at name dot surname at gmail dot com.
For all things related to this archive refer to the same person.
Spivak says that an olog’s arrows convey “aspects” of a thing. An issue I have with this is that it is unclear if there is any way to distinguish between an “aspect” of a thing, and any other kind of semantic assertion about that thing. What is not an aspect?
Let’s consider restricting the arrows of an olog to a single kind of semantic relation, to see if it sheds light on if arrows should be semantically unrestricted (or if there should be different classes of arrows for different kinds of relations).
dog —>|is| mammal
dog —>|is| animal
dog —>|is| thing
dog —>|is| pet
dog —>|is| organism
dog —>|is| species
dog —>|is| concept
And so on. This is the well-known idea that a category is equivalent to a poset.
dog —> friendly
dog —> furry
dog —> warm
friendly —> nice
I haven’t figured this one out yet because it seems like it would need to be written entirely in adjectives, so you would need to claim an adjective like yellow has some other property than yellowness. Not sure it makes sense. At that point it might be more like a web of synonyms, instead.
dog —>|has| legs
dog —>|has| mouth
dog —>|has| a set of friends (which could be empty)
dog —>|has| hopes for future
dog —>|has| feelings
dog —>|has| collar
dog —>|has| ability to run
dog —>|has| an age
All I can say for now is that this one comes closest to the example ologs of Spivak’s I have seen. But semantically, what kind of “has” is this? In linguistics, I believe the most abstract catch-all for all kinds of “having” is called ‘reference’. It simply means, “is associated with”, in some way. Could ologs thus be adequately formulated with all arrows simply labeled as “is associated with”?
I am pretty sure Spivak’s ologs use both arrows-as-subtypes and arrows-as-reference. Do they use any other kinds of arrows?
We can try any given verb.
dog —>|need| water
If the verb expresses a universal property of the noun class, then it seems that any verb is acceptable in an olog.
dog —>|run| Hawaii
If the verb expresses something about a member of the class, then it does not seem suitable for an olog (so far).
Philosophically, could we say (for now) that the olog expresses the “necessary and sufficient” conditions of a thing? Which leads to the question: what can’t it therefore express? “Necessary and sufficient conditions” of an abstract Ideal Form are atemporal - it leads to the question, “can ologs talk about non-universal things, like the particularities of a single dog, or an event that happened at some point in historical time? How?”
This is the next question: can you construct a language of particularities out of a language of universals, or do you need to allow yourself the ability to express particularities a priori, in the language you are using?
A "model" of an olog assigns to each name (e.g. dog) a set representing the collection of dogs. The individuals are elements of that set. The olog is only really able to talk about properties common to all members of this collection, if I understand correctly; any distinguishing characteristics (properties distinguishing elements/members) exist only in the model.
You cleverly dodged Julius' next bullet by saying "a set representing the collection of dogs" rather than "the set of dogs". It is hard to include actual dogs in one's foundations of mathematics.
That's probably what drove Cantor mad...
Is it? Zermelo set theory/more recently ZFA just has a lot of stuff, and some of the stuff is sets but as far as I can tell the other stuff might as well be actual dogs.
I think the other stuff are called "atoms" but I too would prefer "dogs"
Sure, it's called atoms but I think dogs are possible examples of atoms.
If you choose the right Godel numbering, I bet you can show that "there does not exist a number which is a dog" is not decidable in Peano arithmetic.
@_Kevin Arlin|609515 said:
Is it? Zermelo set theory/more recently ZFA just has a lot of stuff, and some of the stuff is sets but as far as I can tell the other stuff might as well be actual dogs.
I've never opened up a ZFA set and checked to see if there are dogs inside. If there are, someone should feed them.
Seriously, I think it changes math when your sets contain elements for which equality can be tricky to check, which came into existence at some point in history, and which sometimes run off and get lost, or die. You can try to handle all these issues and create a precise formalization of sets of dogs... but is this really what we want to spend our time on?
(Julius) What is not an aspect?
(I'll answer for math generally, as I think your question really has more to do with the philosophy of correspondence between objects of thought and objects of reality.)
When viewed through the lens of a model, everything has aspects, including the model itself. I think one must come to the (sometimes uncomfortable) conclusion that many of the aspects of a thing are often not data we provide the theory, but emergent properties that we "discover" when we attempt to model the objects of the theory we "invented".
Wether those aspects are incidental / accidental to our model is ~ Ramsey theory, how durable / universal aspects are ~ category theory. We here in CT land prefer models that have features just when they are universal, and minimal/no extra/incidental features.
A question that leads beyond itself is not "is a dog a set or an atom" -- that's a mirror to what we put in, but we start with instead, "well what are the aspects of a dog, based on how you defined it?" (what you you prove starting with that definition) and proceed to "how durable are those aspects in similar contexts; do hamsters defined thusly also satisfy the adjoint canine theorem; is there an adjoint mammal theorem?" and so on. This is true wether the thing with aspects is an atom with concrete properties like "3" in ZFA or a set "{{},{{}}}" in ZFC, or in ETCS. All of these things emphasize different aspects. It's practical; we set it up to express what we want/need. The only hard rule is consistency with the rest of what we have said or cited.
Which brings me to
Is an arrow a subtype or a reference?
It looks to me like it can be either. I believe you could restrict to Typed Ologs if you want, where the arrows have a strict type relationship you provide, or to literal references like pointers, or anything in between.
The olog seems to be a database that is waiting for you to fill it with data. You do this using a functor to . What makes a relationship between ologs with data in them (with functors to Set, ) "meaningful" and not just some arbitrary mapping between one concatenation of unstructured JSON and another, is that there be a "meaningfulness pullback" .
You could have arrow represent subtypes and arrow represent memory locations for those type definitions and a pullback would exist. You could have arrow represent literal references to machine memory locations, map to the last unix epoch that object was referenced and have a pullback exist, just be sure to distinguish between the "external" functor arrows and the "internal" morphism arrow between ologs ; those will need to mean different things most of the time.
Spivak is abstracting away almost all the questions that have got you hung up as far as I can tell? He is proposing a new structure whose aspects he means to cover any robust non-error-prone use of a database whatsoever. Not by specifying in exacting details what every arrow must mean, but just by requiring you confirm your ologs obeys certain commutative diagrams once you build them. Like, you deploy the olog cluster, ingest your data from , and then your data pipeline engineer writes a bunch of tests, not looking at the data content itself, but just wether it satisfies consistency criteria.
This is a little confusing because usually we do want our arrows to mean something specific in a given category, but within an olog it looks like they can be different kinds of arrows, or more specifically a union/join type of those different types, if you're familiar with Scala. So David is hinting at a construction valid in any category meeting certain criteria, which is a common and beautiful thing to find once you start looking.
I hope that helps, Julius.
Many of the questions David Spivak asks/answers in the original olog paper are not unique to knowledge representation with ologs, they are about knowledge representation with logic or algebra in general. For example, even in a "knowledge graph", a weaker structure than a category, one way ask, what meanings may be ascribed to the edges, i.e., consider morphisms from a graph to categories beyond Set (and there are even commercial products that do this for graphs). And Rosebrugh's work on entity-attribute sketches foreshadows ologs. Anyway this thread reminds me a lot of the discussions around RDF/OWL and the semantic web, where people were trying to understand, philosophically, what it could do, when really that question can only be answered using math.
I’m still planning on reading and responding to the above.
I just wanted to say I think a really simple solution is to label all arrows in a olog with “is associated with”. This makes it clearer that the type of relation is fully abstracted away.
In a model of an olog, each arrow is interpreted as a function. So to make sense, it has to be something that could be interpreted as a function. For example, if we have an arrow People ->[is a sibling to] People, that wouldn't make sense, because some people have no siblings and some people have multiple siblings, so it is not a function. Subtypes work because we can have a function which sends UIDs (unique identifiers) for dogs to UIDs for mammals, for instance. A quality such as Dog -> Weight works because we can have a function sending each dog to it's weight. Possession can work in the case that each UID in the source possesses exactly one thing in the target. For example, People ->[owns house] Houses works if and only if nobody in the set assigned to People is homeless or owns multiple houses.
Joshua Meyers brings up a good point. But if you wanted to fully abstract away any type of relation (and so include any example of possession such as with someone possessing multiple things in the target set) or the example of People ->[is a sibling to] People, then you would need to consider binary relations instead of functions. Now, Ologs are categories equipped with a model functor from the category to Set. However, if you want to "stretch" the definition of olog, you could instead simply consider a category equipped with a "model" functor into Rel, the category of sets and the binary relations between them. Indeed, there is a canonical inclusion Set -> Rel and so any olog modeled in Set is also one modeled in Rel, which you can get by simply composing the olog model functor with the inclusion.
The good thing about binary relations is that there's a whole family of different kinds/properties of binary relation (of which functions are one special kind), each of which can be interpreted in different ways. Therefore, you can appreciably narrow down what kind of semantics a certain arrow in your olog can represent simply by analyzing the properties of the relation it is mapped to by the model. In addition, if you want to impose semantic restrictions on all the arrows in your olog, you can tune your model to map morphisms in your olog only to binary relations that have some specific property. For example, any relationship between things resembling the sibling example are specified by symmetric endo-relations. An endo-relation is a binary relation between a set and itself, and a symmetric relation is one such that if element a relates to element b, then element b relates to element a (this makes sense for siblings since if you have a sibling, you must also be your sibling's sibling). Your earlier example about subtype relations, likewise, only make sense with injective functions.
one reason regular logic comes up in functional ologs is because that logic allows one to express the same data integrity constraints as 'finitely presented relational ologs'. In CQL for example we primarily use functional ologs but with regular logic on top to get the niceness of Rel.
@Naso ^^
Julius Hamilton said:
dog furry
Morgan Rogers (he/him) said:
a set representing the collection of dogs.
to this end I would view fur dog. or rather fur this specific dog, assigning to that specific dog its fur. I don't claim this is how Spivak's ologs work.
Ryan Wisnesky said:
the original olog paper are not unique to knowledge representation with ologs,
I agree with this, ologs absolutely allude to much more generic knowledge representation.