ONVIF AI Service - #809
Conversation
| <mediaobject> | ||
| <imageobject> | ||
| <?oxy_comment_start author="Ottavio Campana" timestamp="20260729T095751+0200" comment="Image to be redone from scratch"?> | ||
| <imagedata fileref="media/AI/stack_overview.svg" contentwidth="140mm" |
|
PR specifies a persistent HTTP GET /mcp carrying newline-delimited notifications. MCP 2026-07-28 explicitly removed the GET stream. Requests use POST; long-lived notifications use the SSE response to subscriptions/listen. Independent notifications/message events cannot simply be placed on a permanent GET stream. Official MCP Streamable HTTP specification. |
|
server/discover is incorrectly mandatory as the first call. A server must support it, but a modern client may call any operation directly and handle UnsupportedProtocolVersionError. The PR currently says the client shall call it first. |
@willysagefalk Do you have a reference for that? |
|
@ocampana-videotec Yes. The normative reference is the MCP 2026-07-28 specification, Discovery — When to Call: https://modelcontextprotocol.io/specification/2026-07-28/server/discover#when-to-call It states that calling The same section only recommends calling it first for a dual-era client over stdio, as a backward-compatibility probe. Since the ONVIF proposal uses HTTP POST, that stdio-specific recommendation does not apply. I therefore suggest replacing:
with something along these lines:
|
Corrected. |
|
@willysagefalk , following our conversation, I just added chapter 9 about metadata. As you can see it defines abstract concepts and for Observations and Provenance it proposes two specialization. SOSA/SSN was included to accommodate @DammnAI 's feedback in https://github.com/onvif/wg_AI/pull/9 , while the JLDS-based provenance is my proposal based on an already existing specification. If any member wants to model an Observation, they can simply propose a similar derivation. |
|
Thanks for adding the metadata chapter. I suggest that we now use this PR as the working integration point and complete the model here. I reviewed head The following changes are needed before the draft can become an implementable specification. Blocking implementation issues
Information-model changes requiring WG agreement
One editorial cleanup: the PR description should describe the minimum information model in vendor-neutral ONVIF terms. The abstract-class and specialization direction is useful. The main work now is to make the boundaries explicit and ensure the transport, JSON-LD, schema, and signature mechanisms can be implemented and tested consistently. |
|
Sorry @willysagefalk but we need to find a more efficient way to tackle the document, we cannot just copy&paste tons of lines from an LLM. For the future, we need IMHO to be shorter a more focused. Point 1: I will study it, it looks correct. Point 2: I have no idea right now. It's generated by the linkml tools... Point 3: I intentionally got rid of ecdsa-rdfc-2019 in order to point our specs to the ONVIF Security Baseline. Point 4: The yaml file is broken, I know it very weak, there is even a note in the AI.xml that that part will have to be removed and be put in the ai.yaml. We are simply too far now to allocate time to it. Point 5: what is the problem here? beyond a style issue, I really see no problem for the observation to be to top level container. Point 6: how is it defined in SOSA? We do not want to diverge. If this is not good enough, then we have a reason to ditch SOSA Point 7: this looks like point 5. What is the use case we are trying to solve? Point 8: I agree and in fact we are starting to work on Annex A. The problem is that before creating an example we must clarify how it will work. Therefore, the immediately actionable items are: 1, 3 and 6. |
|
I suggest extending the model with a neutral Assertion type alongside Observation, together with an ObjectObservation specialization: InformationEntity ObjectObservation represents an observation concerning one persistent PhysicalObject. It groups the Claims produced within that observation context and may include observed positions or other object-related information. Assertion is not an Observation. It expresses a proposition, relationship or conclusion and can reference Observations as supporting evidence. Statement and Claim are concrete specializations of Assertion. For example, in RE-ID: ObjectObservation A ObjectObservation B Re-identification Claim SOSAObservation remains available for SOSA interoperability, but it does not need to be the foundation of the ONVIF information model. ObjectObservation and SOSAObservation describe different aspects, so a sensor-based ObjectObservation may also be mapped to SOSA. |
|
@willysagefalk let's start clarifying the definition of the abstract classes involved in metadata streaming. Once we clarify them, we can specialize stuff like ObjectObservation, PhysicaObject and so on. My definitions:
I do have a few ideas I am working for for statement, but I do not have a clear understanding of the difference between Claim and Assertion. My idea is that, if we are talking about abstract classes, assertions, claims and statements are the same thing. If that's the case we could have To my eyes, InformationEntity is an empy container, it's just a waste of bandwidth. We do not need to wrap a rich container (Observation) with an empty conatiner (InformationEntitiy) From assertion we could derive a statement, and for the statement use the idea of the predicate we were discussing at the Budapest meeting. |
|
InformationEntity is not intended as a serialized wrapper around an Observation, so it adds no bandwidth. It is only the neutral abstract superclass that allows both Observations and Assertions to be top-level information types. An Observation represents an observation/perception context and may contain Assertions produced during that observation. An Assertion represents a proposition or conclusion and may reference one or more Observations as evidence. For example, a RE-ID Assertion that two observations concern the same physical object cannot naturally belong to only one of those observations. I agree that we should first settle these two abstract definitions. We can then clarify the precise distinction between Statement and Claim and add specializations such as ObjectObservation. |
|
I am still having difficulties to understand clearly the difference between an Assertion and an Observation I am good with "An Observation represents an observation/perception context and may contain Assertions produced during that observation". But then I see a logical problem in "An Assertion represents a proposition or conclusion and Why may? Observations may exist without Assertions, but in my understanding Assertions cannot exist outside of an Observation. It is a must, not a may in my opinion. Assertions without observation are, de facto, Observations. Do you agree on this? |
|
I do not fully agree. The key is to separate the statement from the process or context that produced it. An Observation is an event/context: something was perceived at a particular time and place. There are then two different relationships: Produced during an Observation The second relationship should remain may, because assertions can also come from sources that are not observations: “Camera 1 is installed in Room 5” — configuration assertion. These are propositions, but they are not themselves observations. Calling them Observations would collapse the distinction between perception, inference, configuration, and human knowledge. The current wording could nevertheless be clearer: An Observation represents a perception context and may contain Assertions produced during that Observation. An Assertion represents a proposition or conclusion. An Assertion may be produced during an Observation and may reference one or more Observations or other information entities as evidence. |
Initial draft pull request to gather feedback on the AI specs being written right now.
Current status
AI.xmlis been writtenSecurity.xmlTentative scheduling
Topics to be included
I expect this PR to be used as a shared notepad about the specs begin developed. Once ready, this will be closed a new a formal PR will be created.