Gnowit

Gnowit

Gnowit (pronounced "know it") is a Canadian software company that provides automated, near-real-time monitoring of legislative, regulatory, and political activity across Canada. Its platform aggregates and analyzes information from government publications, parliamentary debates, committee, and proceedings to provide searchable alerts and reports for organizations monitoring public policy and regulatory developments. The system uses natural-language processing and machine learning techniques to organize and filter large volumes of public information.; the company reports that new publication documents are captured and millions of items are added to its repository daily. == History, Founders and Leadership == Gnowit was co-founded in Ottawa in 2010 by Shahzad Khan and Mohammad Al-Azzouni; Khan serves as chief executive officer. Khan holds a PhD in Computer Science from the University of Cambridge, has more than two decades of experience in AI/ML and computational linguistics, and has authored or co-authored 37 peer-reviewed publications and five patents. Traditionally, companies performed this analysis manually; Gnowit has delivered efficiencies achieved through AI innovations. The company has participated in several Canadian startup and accelerator programs, including Carleton University's Lead To Win initiative, the University of Ottawa's Startup Garage, the Invest Ottawa incubator, and the League of Innovators' BOOST program. === Kubernetes validation (2019–2020) === As part of a Canada's Centre of Excellence in Next Generation Networks (CENGN) project, Gnowit validated a containerized version of its web-intelligence software on Kubernetes. Between 2019 and 2020, Gnowit participated in a project with Canada’s Centre of Excellence in Next Generation Networks (CENGN) to test and scale its platform using containerized infrastructure based on Kubernetes. The initiative focused on improving scalability and supporting the company’s transition from a monolithic software architecture to a cloud-native deployment model. == Products and services == Gnowit markets several modules for public-affairs, compliance, and market-intelligence teams. Legislative & Regulatory Monitoring (vAnalyst). vAnalyst is a monitoring platform that tracks legislative and regulatory activity across Canadian federal, provincial, and territorial jurisdictions. The system aggregates parliamentary debates, bills, committee proceedings, and regulatory publications and provides searchable alerts and reporting tools. The product monitors more than two million web sources to surface relevant items quickly. Parliamentary Live (vAnalyst). Monitors live video feeds from parliamentary sessions and committees with same-day transcripts, AI-generated summaries, witness summaries, and motion detection; municipal coverage is offered as an option. Gnowit can avail transcripts up to two weeks before official releases. These transcripts enable users to navigate and review lengthy parliamentary sittings and committee discussions through searchable text. Municipal Monitoring (vAnalyst). The platform also tracks council meetings, agendas, bylaws, and other municipal government publications from hundreds of Canadian municipalities. The platform aggregates these sources into a single searchable interface for reviewing local government decisions. Curation Edge (analyst service). Curation Edge is an add-on service in which expert analysts work and collaborate with clients to develop a tailored curation guide and deliver daily newsletters or briefs on legislation and media. These reports provide concise summaries, relevant links, and optional metadata, prioritizing key updates with additional context and analysis. The service is customizable, including branding and formatting for executive audiences, and is intended to reduce information overload, support decision-making, and streamline the synthesis and distribution of information. === Coverage and sources === Gnowit monitors sources span Canadian government materials across federal, provincial, and territorial jurisdictions Hansard transcripts (All Jurisdictions, including committees), order papers, committee transcripts, gazettes, bills, acts and regulations, consultations, regulatory-agency publications, and global news media as well as press releases and council-meeting materials from hundreds of municipalities. == Partnerships and support == Gnowit reports collaborations with Canadian academic and ecosystem partners, including: Algonquin College Carleton University McGill University University of Ottawa Université du Québec en Outaouais (UQO) Queen's University The company also participated in the accelerator program at Invest Ottawa and has received support from Canadian research and innovation programs, including: NRC Industrial Research Assistance Program (NRC-IRAP) Mitacs Ontario Centre of Innovation (OCI) (formerly OCE) Gnowit has also referenced membership in the Southern Ontario Smart Computing Innovation Platform (Government of Canada profile: FedDev Ontario – SOSCIP overview). == Technology == Gnowit develops technology intended to support timely decision-making by delivering updates from monitored web sources as they are published. The platform applies artificial intelligence (AI) and machine learning (ML) techniques to monitor, capture, clean, analyze, filter, and organize text, and to generate concise briefs. Its technical approach combines Boolean queries, shallow language processing techniques, and machine learning classifiers within a self-service interface. The company has described its longer-term development framework in relation to a belief–desire–intention (BDI) model of intelligent agents on the web. Gnowit and its founder are listed as inventors/assignees on patents concerning multi-document clustering, salient-content extraction, and sentiment analysis methods that are consistent with these features: US 9,600,470 – Method and system relating to re-labelling multi-document clusters (assignee: Whyz Technologies Ltd.). US 9,336,202 – Method and system relating to salient content extraction for information retrieval (assignee: Whyz Technologies Ltd.). CA 2,865,184 C – Method and system relating to re-labelling multi-document clusters. CA 2,865,186 C – Procédé et système concernant l'analyse de sentiment d'un contenu (sentiment analysis; French record). CA 2,865,187 C – Method and system relating to salient content extraction for information retrieval. == Research and community == In January 2025, Gnowit personnel contributed to regulatory NLP by co-authoring a peer-reviewed paper at the 1st Regulatory NLP Workshop (RegNLP 2025), co-located with COLING in Abu Dhabi. Titled Unifying Large Language Models and Knowledge Graphs for Efficient Regulatory Information Retrieval and Answer Generation, the work introduces PolicyInsight, a framework that joins a dynamic policy data model and knowledge graph with LLMs to monitor policy texts, detect changes, and support retrieval and answer generation; the author list includes Shahzad Khan (CEO, Gnowit Inc.). (ACL Anthology, aclweb.org). Similar information-retrieval technologies are widely used for competitive intelligence, policy monitoring, and media analysis. == White paper == Gnowit has published a practical guide, Automated Government Information Monitoring, which outlines how GR and regulatory teams can design a monitoring and briefing workflow and describes Gnowit's automation features and export options (PDF, email, dashboards, CSV/JSON/XML/API).

Cache language model

A cache language model is a type of statistical language model. These occur in the natural language processing subfield of computer science and assign probabilities to given sequences of words by means of a probability distribution. Statistical language models are key components of speech recognition systems and of many machine translation systems: they tell such systems which possible output word sequences are probable and which are improbable. The particular characteristic of a cache language model is that it contains a cache component and assigns relatively high probabilities to words or word sequences that occur elsewhere in a given text. The primary, but by no means sole, use of cache language models is in speech recognition systems. To understand why it is a good idea for a statistical language model to contain a cache component one might consider someone who is dictating a letter about elephants to a speech recognition system. Standard (non-cache) N-gram language models will assign a very low probability to the word "elephant" because it is a very rare word in English. If the speech recognition system does not contain a cache component, the person dictating the letter may be annoyed: each time the word "elephant" is spoken another sequence of words with a higher probability according to the N-gram language model may be recognized (e.g., "tell a plan"). These erroneous sequences will have to be deleted manually and replaced in the text by "elephant" each time "elephant" is spoken. If the system has a cache language model, "elephant" will still probably be misrecognized the first time it is spoken and will have to be entered into the text manually; however, from this point on the system is aware that "elephant" is likely to occur again – the estimated probability of occurrence of "elephant" has been increased, making it more likely that if it is spoken it will be recognized correctly. Once "elephant" has occurred several times, the system is likely to recognize it correctly every time it is spoken until the letter has been completely dictated. This increase in the probability assigned to the occurrence of "elephant" is an example of a consequence of machine learning and more specifically of pattern recognition. There exist variants of the cache language model in which not only single words but also multi-word sequences that have occurred previously are assigned higher probabilities (e.g., if "San Francisco" occurred near the beginning of the text subsequent instances of it would be assigned a higher probability). The cache language model was first proposed in a paper published in 1990, after which the IBM speech-recognition group experimented with the concept. The group found that implementation of a form of cache language model yielded a 24% drop in word-error rates once the first few hundred words of a document had been dictated. A detailed survey of language modeling techniques concluded that the cache language model was one of the few new language modeling techniques that yielded improvements over the standard N-gram approach: "Our caching results show that caching is by far the most useful technique for perplexity reduction at small and medium training data sizes". The development of the cache language model has generated considerable interest among those concerned with computational linguistics in general and statistical natural language processing in particular: recently, there has been interest in applying the cache language model in the field of statistical machine translation. The success of the cache language model in improving word prediction rests on the human tendency to use words in a "bursty" fashion: when one is discussing a certain topic in a certain context, the frequency with which one uses certain words will be quite different from their frequencies when one is discussing other topics in other contexts. The traditional N-gram language models, which rely entirely on information from a very small number (four, three, or two) of words preceding the word to which a probability is to be assigned, do not adequately model this "burstiness". Recently, the cache language model concept – originally conceived for the N-gram statistical language model paradigm – has been adapted for use in the neural paradigm. For instance, recent work on continuous cache language models in the recurrent neural network (RNN) setting has applied the cache concept to much larger contexts than before, yielding significant reductions in perplexity. Another recent line of research involves incorporating a cache component in a feed-forward neural language model (FN-LM) to achieve rapid domain adaptation.

Andrej Karpathy

Andrej Karpathy (born 23 October 1986) is a Slovak-Canadian AI researcher, who co-founded and formerly worked at OpenAI, where he specialized in deep learning and computer vision. He also worked as the director of artificial intelligence and Autopilot Vision at Tesla, and in 2024 he founded Eureka Labs, an AI education platform. In 2026 he joined Anthropic as part of the pretraining team. == Education and early life == Karpathy was born in Bratislava, Czechoslovakia (now Slovakia), and moved with his family to Toronto when he was 15. He completed his Computer Science and Physics bachelor's degrees at University of Toronto in 2009 and his master's degree at University of British Columbia in 2011, where he worked on physically simulated figures (for example, a simulated runner or a simulated person in a crowd) with his adviser Michiel van de Panne. In 2006, Karpathy began posting videos on YouTube on his channel, badmephisto. He garnered fame by posting Rubik's cube tutorials which have been used by famous speedcubers such as Feliks Zemdegs. The channel has over 9 million views as of June 2025. Karpathy received a PhD from Stanford University in 2015 under the supervision of Fei-Fei Li, focusing on the intersection of natural language processing and computer vision, and deep learning models suited for this task. == Career and research == He authored and was the primary instructor of the first deep learning course at Stanford, CS 231n: Convolutional Neural Networks for Visual Recognition. The course became one of the largest classes at Stanford, growing from 150 students in 2015 to 750 in 2017. Karpathy is a founding member of the artificial intelligence research group OpenAI, where he was a research scientist from 2015 to 2017. In June 2017 he became Tesla's director of artificial intelligence and reported to Elon Musk. He was named one of MIT Technology Review's Innovators Under 35 for 2020. After taking a several-months-long sabbatical from Tesla, he announced he was leaving the company in July 2022. As of February 2023, he makes YouTube videos on how to create artificial neural networks. On February 9, 2023, Karpathy announced he was returning to OpenAI. A year later on February 13, 2024, an OpenAI spokesperson confirmed that Karpathy had left OpenAI. In the same year, he was named one of Time Magazine's 100 Most Influential People in AI. On July 16, 2024, Karpathy announced on his X account that he started a new AI education company called Eureka Labs. Their first product was the AI course, LLM101n. He also has a broader educational effort, the "Zero to Hero" series on LLM fundamentals. The company also advocates for AI teaching assistants, a concept which has been criticized due to data privacy concerns and the removal of personal connection between teacher and student. In February 2025, Karpathy coined the term vibe coding to describe how AI tools allow hobbyists to construct apps and websites just by typing prompts. On May 19, 2026, he announced that he joined Anthropic via a statement on X, while the company stated that he will be leading a team for research in pretraining.

Reason maintenance

Reason maintenance is a knowledge representation approach to efficient handling of inferred information that is explicitly stored. Reason maintenance distinguishes between base facts, which can be defeated, and derived facts. As such it differs from belief revision which, in its basic form, assumes that all facts are equally important. Reason maintenance was originally developed as a technique for implementing problem solvers. It encompasses a variety of techniques that share a common architecture: two components—a reasoner and a reason maintenance system—communicate with each other via an interface. The reasoner uses the reason maintenance system to record its inferences and justifications of ("reasons" for) the inferences. The reasoner also informs the reason maintenance system which are the currently valid base facts (assumptions). The reason maintenance system uses the information to compute the truth value of the stored derived facts and to restore consistency if an inconsistency is derived. == Truth maintenance system == A truth maintenance system, or TMS, is a knowledge representation method for representing both beliefs and their dependencies and an algorithm called the "truth maintenance algorithm" that manipulates and maintains the dependencies. The name truth maintenance is due to the ability of these systems to restore consistency. A truth maintenance system maintains consistency between old believed knowledge and current believed knowledge in the knowledge base (KB) through revision. If the current believed statements contradict the knowledge in the KB, then the KB is updated with the new knowledge. It may happen that the same data will again be believed, and the previous knowledge will be required in the KB. If the previous data are not present, but may be required for new inference. But if the previous knowledge was in the KB, then no retracing of the same knowledge is needed. The use of TMS avoids such retracing; it keeps track of the contradictory data with the help of a dependency record. This record reflects the retractions and additions which makes the inference engine (IE) aware of its current belief set. == Algorithm == Each statement having at least one valid justification is made a part of the current belief set. When a contradiction is found, the statement(s) responsible for the contradiction are identified and the records are appropriately updated. This process is called dependency-directed backtracking. The TMS algorithm maintains the records in the form of a dependency network. Each node in the network is an entry in the KB (a premise, antecedent, or inference rule etc.) Each arc of the network represent the inference steps through which the node was derived. A premise is a fundamental belief which is assumed to be true. They do not need justifications. The set of premises are the basis from which justifications for all other nodes will be derived. == Justification == There are two types of justification for a node. They are: Support list [SL] Conditional proof (CP) == Examples == Many kinds of truth maintenance systems exist. Two major types are single-context and multi-context truth maintenance. In single context systems, consistency is maintained among all facts in memory (KB) and relates to the notion of consistency found in classical logic. Multi-context systems support paraconsistency by allowing consistency to be relevant to a subset of facts in memory, a context, according to the history of logical inference. This is achieved by tagging each fact or deduction with its logical history. Multi-agent truth maintenance systems perform truth maintenance across multiple memories, often located on different machines. de Kleer's assumption-based truth maintenance system (ATMS, 1986) was utilized in systems based upon KEE on the Lisp Machine. The first multi-agent TMS was created by Mason and Johnson. It was a multi-context system. Bridgeland and Huhns created the first single-context multi-agent system.

John M. Jumper

John Michael Jumper (born 1 January 1985) is an American chemist and computer scientist. Jumper and Demis Hassabis were awarded the 2024 Nobel Prize in Chemistry for protein structure prediction. As of 2025 Jumper serves as director at Google DeepMind. Jumper and his colleagues created AlphaFold, an artificial intelligence (AI) model to predict protein structures from their amino acid sequence with high accuracy. The AlphaFold team had released 214 million protein structures as of January 2024. The scientific journal Nature included Jumper as one of the ten "people who mattered" in science in their annual listing of Nature's 10 in 2021. == Education == Jumper graduated from Pulaski Academy in 2003. He received a Bachelor of Science with majors in physics and mathematics from Vanderbilt University in 2007, a Master of Philosophy in theoretical condensed matter physics from the University of Cambridge where he was a student of St Edmund's College, Cambridge in 2010 on a Marshall Scholarship, a Master of Science in theoretical chemistry from the University of Chicago in 2012, and a Doctor of Philosophy in theoretical chemistry from the University of Chicago in 2017. His doctoral advisors at the University of Chicago were Tobin R. Sosnick and Karl Freed. == Career and research == Jumper's research investigates algorithms for protein structure prediction. === AlphaFold === AlphaFold is a deep learning algorithm developed by Jumper and his team at DeepMind, a research lab acquired by Google's parent company Alphabet Inc. It is an artificial intelligence program which performs predictions of protein structure. === Awards and honors === In November 2020, AlphaFold was named the winner of the 14th Critical Assessment of Structure Prediction (CASP) competition. This international competition benchmarks algorithms to determine which one can best predict the 3D structure of proteins. AlphaFold won the competition, outperforming other algorithms scoring above 90 for around two-thirds of the proteins in CASP's global distance test (GDT), a test that measures the degree to which a computational program predicted structure is similar to the lab experiment determined structure, with 100 being a complete match, within the distance cutoff used for calculating GDT. In 2021, Jumper was awarded the BBVA Foundation Frontiers of Knowledge Award in the category "Biology and Biomedicine". In 2022 Jumper received the Wiley Prize in Biomedical Sciences and for 2023 the Breakthrough Prize in Life Sciences for developing AlphaFold, which accurately predicts the structure of a protein. In 2023 he was awarded the Canada Gairdner International Award and the Albert Lasker Award for Basic Medical Research. In 2024, Jumper and Demis Hassabis shared half of the Nobel Prize in Chemistry for their protein folding predictions, the other half went to David Baker for computational protein design. In 2025, Jumper received the Golden Plate Award of the American Academy of Achievement and the Marshall Medal of the Marshall Aid Commemoration Commission. He was elected a Fellow of the Royal Society (FRS) that same year. In 2026, he was elected a member of the National Academy of Engineering.

Observability (software)

In software engineering, more specifically in distributed computing, observability is the ability to collect data about programs' execution, modules' internal states, and the communication among components. To improve observability, software engineers use a wide range of logging and tracing techniques to gather telemetry information, and tools to analyze and use it. Observability is foundational to site reliability engineering, as it is the first step in triaging a service outage. One of the goals of observability is to minimize the amount of prior knowledge needed to debug an issue. == Etymology, terminology and definition == The term is borrowed from control theory, where the "observability" of a system measures how well its state can be determined from its outputs. Similarly, software observability measures how well a system's state can be understood from the obtained telemetry (metrics, logs, traces, profiling). The definition of observability varies by vendor: Observability is the process of making a system’s internal state more transparent. Systems are made observable by the data they produce, which in turn helps you to determine if your infrastructure or application is healthy and functioning normally. a measure of how well you can understand and explain any state your system can get into, no matter how novel or bizarre [...] without needing to ship new code software tools and practices for aggregating, correlating and analyzing a steady stream of performance data from a distributed application along with the hardware and network it runs onobservability starts by shipping all your raw data to central service before you begin analysisthe ability to measure a system’s current state based on the data it generates, such as logs, metrics, and traces Observability is tooling or a technical solution that allows teams to actively debug their system. Observability is based on exploring properties and patterns not defined in advance. proactively collecting, visualizing, and applying intelligence to all of your metrics, events, logs, and traces—so you can understand the behavior of your complex digital system The term is frequently referred to as its numeronym o11y (where 11 stands for the number of letters between the first letter and the last letter of the word). This is similar to other computer science abbreviations such as i18n and l10n and k8s. === Observability vs. monitoring === Observability and monitoring are sometimes used interchangeably. As tooling, commercial offerings and practices evolved in complexity, "monitoring" was re-branded as observability in order to differentiate new tools from the old. The terms are commonly contrasted in that systems are monitored using predefined sets of telemetry, and monitored systems may be observable. Majors et al. suggest that engineering teams that only have monitoring tools end up relying on expert foreknowledge (seniority), whereas teams that have observability tools rely on exploratory analysis (curiosity). == Telemetry types == Observability relies on three main types of telemetry data: metrics, logs and traces. Those are often referred to as "pillars of observability". === Metrics === A metric is a point in time measurement (scalar) that represents some system state. Examples of common metrics include: number of HTTP requests per second; total number of query failures; database size in bytes; time in seconds since last garbage collection. Monitoring tools are typically configured to emit alerts when certain metric values exceed set thresholds. Thresholds are set based on knowledge about normal operating conditions and experience. Metrics are typically tagged to facilitate grouping and searchability. Application developers choose what kind of metrics to instrument their software with, before it is released. As a result, when a previously unknown issue is encountered, it is impossible to add new metrics without shipping new code. Furthermore, their cardinality can quickly make the storage size of telemetry data prohibitively expensive. Since metrics are cardinality-limited, they are often used to represent aggregate values (for example: average page load time, or 5-second average of the request rate). Without external context, it is impossible to correlate between events (such as user requests) and distinct metric values. === Logs === Logs, or log lines, are generally free-form, unstructured text blobs that are intended to be human readable. Modern logging is structured to enable machine parsability. As with metrics, an application developer must instrument the application upfront and ship new code if different logging information is required. Logs typically include a timestamp and severity level. An event (such as a user request) may be fragmented across multiple log lines and interweave with logs from concurrent events. === Traces === ==== Distributed traces ==== A cloud native application is typically made up of distributed services which together fulfill a single request. A distributed trace is an interrelated series of discrete events (also called spans) that track the progression of a single user request. A trace shows the causal and temporal relationships between the services that interoperate to fulfill a request. Instrumenting an application with traces means sending span information to a tracing backend. The tracing backend correlates the received spans to generate presentable traces. To be able to follow a request as it traverses multiple services, spans are labeled with unique identifiers that enable constructing a parent-child relationship between spans. Span information is typically shared in the HTTP headers of outbound requests. === Continuous profiling === Continuous profiling is another telemetry type used to precisely determine how an application consumes resources. === Instrumentation === To be able to observe an application, telemetry about the application's behavior needs to be collected or exported. Instrumentation means generating telemetry alongside the normal operation of the application. Telemetry is then collected by an independent backend for later analysis. In fast-changing systems, instrumentation itself is often the best possible documentation, since it combines intention (what are the dimensions that an engineer named and decided to collect?) with the real-time, up-to-date information of live status in production. Instrumentation can be automatic, or custom. Automatic instrumentation offers blanket coverage and immediate value; custom instrumentation brings higher value but requires more intimate involvement with the instrumented application. Instrumentation can be native - done in-code (modifying the code of the instrumented application) - or out-of-code (e.g. sidecar, eBPF). Verifying new features in production by shipping them together with custom instrumentation is a practice called "observability-driven development". == "Pillars of observability" == Metrics, logs and traces are most commonly listed as the pillars of observability. Majors et al. suggest that the pillars of observability are high cardinality, high-dimensionality, and explorability, arguing that runbooks and dashboards have little value because "modern systems rarely fail in precisely the same way twice." == Self monitoring == Self monitoring is a practice where observability stacks monitor each other, in order to reduce the risk of inconspicuous outages. Self monitoring may be put in place in addition to high availability and redundancy to further avoid correlated failures.

Metaclass (knowledge representation)

In knowledge representation, particularly in the Semantic Web, a metaclass is a class whose instances can themselves be classes. Similar to their role in programming languages, metaclasses in ontology languages can have properties otherwise applicable only to individuals, while retaining the same class's ability to be classified in a concept hierarchy. This enables knowledge about instances of those metaclasses to be inferred by semantic reasoners using statements made in the metaclass. Metaclasses thus enhance the expressivity of knowledge representations in a way that can be intuitive for users. While classes are suitable to represent a population of individuals, metaclasses can, as one of their feature, be used to represent the conceptual dimension of an ontology. Metaclasses are supported in the Web Ontology Language (OWL) and the data-modeling vocabulary RDFS. Metaclasses are often modeled by setting them as the object of claims involving rdf:type and rdfs:subClassOf—built-in properties commonly referred to as instance of and subclass of. Instance of entails that the subject of the claim is an instance, i.e. an individual that is a member of a class. Subclass of entails that the subject is a class. In the context of instance of and subclass of, the key difference between metaclasses and ordinary classes is that metaclasses are the object of instance of claims used on a class, while ordinary classes are not objects of such claims. (e.g. in a claim Bob instance of Human, Bob is the subject and an Instance, while the object, Human, is an ordinary class; but a further claim that Human instance of Animal species makes "Animal species" a metaclass because it has a member, "Human", that is also a Class). OWL 2 DL supports metaclasses by a feature called punning, in which one entity is interpreted as two different types of thing—a class and an individual—depending on its syntactic context. For example, through punning, an ontology could have a concept hierarchy such as Harry the eagle instance of golden eagle, golden eagle subclass of bird, and golden eagle instance of species. In this case, the punned entity would be golden eagle, because it is represented as a class (second claim) and an instance (third claim); whereas the metaclass would be species, as it has an instance that is a class. Punning also enables other properties that would otherwise be applicable only to ordinary instances to be used directly on classes, for example "golden eagle conservation status least concern." Having arisen from the fields of knowledge representation, description logic and formal ontology, Semantic Web languages have a closer relationship to philosophical ontology than do conventional programming languages such as Java or Python. Accordingly, the nature of metaclasses is informed by philosophical notions such as abstract objects, the abstract and concrete, and type-token distinction. Metaclasses permit concepts to be construed as tokens of other concepts while retaining their ontological status as types. This enables types to be enumerated over, while preserving the ability to inherit from types. For example, metaclasses could allow a machine reasoner to infer from a human-friendly ontology how many elements are in the periodic table, or, given that number of protons is a property of chemical element and isotopes are a subclass of elements, how many protons exist in the isotope hydrogen-2. Metaclasses are sometime organized by levels, in a similar way to the simple Theory of types where classes that are not metaclasses are assigned the first level, classes of classes in the first level are in the second level, classes of classes in the second level on the next and so on. == Examples == Following the type-token distinction, real world objects such as Abraham Lincoln or the planet Mars are regrouped into classes of similar objects. Abraham Lincoln is said to be an instance of human, and Mars is an instance of planet. This is a kind of is-a relationship. Metaclasses are class of classes, such as for example the nuclide concept. In chemistry, atoms are often classified as elements and, more specifically, isotopes. The glass of water one last drank has many hydrogen atoms, each of which is an instance of hydrogen. Hydrogen itself, a class of atoms, is an instance of nuclide. Nuclide is a class of classes, hence a metaclass. == Implementations == === RDF and RDFS === In RDF, the rdf:type property is used to state that a resource is an instance of a class. This enables metaclasses to be easily created by using rdf:type in a chain-like fashion. For example, in the two triples the resource species is a metaclass, because golden eagle is used as a class in the first statement and the class golden eagle is said to be an instance of the class species in the second statement. This way of doing allows :species to have non-class instances. RDF also provides rdf:Property as a way to create properties beyond those defined in the built-in vocabulary. Properties can be used directly on metaclasses, for example "species quantity 8.7 million", where quantity is a property defined via rdf:Property and species is a metaclass per the preceding example above. RDFS, an extension of RDF, introduced rdfs:Class and rdfs:subClassOf and enriched how vocabularies can classify concepts. Whereas rdf:type enables vocabularies to represent instantiation, the property rdfs:subClassOf enables vocabularies to represent subsumption. RDFS thus makes it possible for vocabularies to represent taxonomies, also known as subsumption hierarchies or concept hierarchies, which is an important addition to the type–token distinction made possible by RDF. Notably, the resource rdfs:Class is an instance of itself, demonstrating both the use of metaclasses in the language's internal implementation and a reflexive usage of rdf:type. RDFS is its own metamodel. This allows a second way to express that a resource is a metaclass. A triple to instantiate rdfs:Class, for example :golden_eagle rdf:type rdfs:Class will declare :golden_eagle as a class. It's also possible to subclass the rdfs:Class resource to declare a meta-class resource, for example :species rdfs:SubclassOf. By deduction, any instance of :species is then a class, so it is a class with class-instances, a meta-class.. This second way does not allows non-class instances of species and explicitly declares :tpecies as a meta-class. === OWL === In some OWL flavors like OWL1-DL, entities can be either classes or instances, but cannot be both. This limitations forbids metaclasses and metamodeling. This is not the case in the OWL1 full flavor, but this allows the model to be computationally undecidable. In OWL2, metaclasses can implemented with punning, that is a way to treat classes as if they were individuals. Other approaches have also been proposed and used to check the properties of ontologies at a meta level. ==== Punning ==== OWL 2 supports metaclasses through a feature called punning. In metaclasses implemented by punning, the same subject is interpreted as two fundamentally different types of thing—a class and an individual—depending on its syntactic context. This is similar to a pun in natural language, where different senses of the same word are emphasized to illustrate a point. Unlike in natural language, where puns are typically used for comedic or rhetorical effect, the main goal of punning in Semantic Web technologies is to make concepts easier to represent, closer to how they are discussed in everyday speech or academic literature. Although OWL 2 permits the same symbol to assume different roles, its standard semantics (known as Direct Semantics) still interprets the symbol differently depending on whether it is used as an individual, a class, or a property. === Protégé === In the ontology editor Protégé, metaclasses are templates for other classes who are their instances. == Classification == Some ontologies like the Cyc AI project's classifies classes and metaclasses. Classes are divided into fixed-order classes and variable-order classes. In the case of fixed-order classes, an order is attributed for metaclasses by measuring the distance to individuals with respect to the number of "instance of" triples that are necessary to find an individual. Classes that are not metaclasses are classes of individuals, so their order is "1" (first-order classes). Metaclasses that are classes of first-order classes' order is "2" (second-order classes), and so on. Variable-order metaclasses, on the other hand, can have instances; one example of variable-order metaclass is the class of all fixed-order classes.