Skip to main content
Glama
italia

Schema.gov.it MCP Server

Official
by italia

Inspect Property in Local / Uploaded Ontology

inspect_local_property
Read-onlyIdempotent

Get a property's complete semantic profile from a local ontology: definitions, asserted and inherited domain/range, superproperty chain, and redundancy analysis.

Instructions

Get the full semantic profile of a property from a local or uploaded ontology, resolving inherited domain and range via rdfs:subPropertyOf+.

CRITICAL — file access workflow:

  1. Try file_path first (works only if the file is readable by the MCP server process).

  2. If file_path fails for any reason → call get_upload_instructions with the local path, execute the returned curl command via Bash tool, parse the id from the JSON response, then call this tool again with upload_id.

  3. NEVER read the file content and pass it through the conversation. NEVER attempt to parse or analyse the TTL text manually. The upload workflow sends raw bytes directly from disk to server without the AI ever seeing the content — it is always faster, cheaper, and more reliable.

Quale modalita di input usare:

  • stdio / stessa macchina → file_path

  • server remoto, file grande → get_upload_instructions + upload_id

  • server remoto, file piccolo (<1 MB) → valuta content + format con inspect_local_ontology, poi passa a upload se servono query ripetute

Tip: Use search_concepts first if you are checking whether an equivalent property already exists in schema.gov.it. Use this tool only after you know you want to inspect the local/uploaded ontology.

Returns:

  • definition: direct attributes from the local store (type, label, comment, subPropertyOf, inverseOf, functional flags)

  • assertedDomain: rdfs:domain declared directly on this property in the local file

  • assertedRange: rdfs:range declared directly on this property in the local file

  • superproperties: ancestor chain via rdfs:subPropertyOf+; each entry has source:

    • "local" = found in the local store

    • "remote" = not in local file, resolved from schema.gov.it

    • "not-found" = absent from both

  • inheritedDomain: domain values collected from super-properties, each annotated with ancestor URI and source

  • inheritedRange: range values collected from super-properties, each annotated with ancestor URI and source

  • effectiveDomain: deduplicated union of assertedDomain + inheritedDomain

  • effectiveRange: deduplicated union of assertedRange + inheritedRange

  • redundancy_analysis: diagnostic view of each asserted value:

    • "redundant": identical to an inherited value — the axiom can be dropped without semantic loss

    • "specialization": a rdfs:subClassOf of an inherited value — genuinely narrows the domain/range

    • "new": not present in any inherited value — adds information not implied by the super-property chain

  • summary counts per category for quick overview

  • warnings: super-properties not resolved, remote lookup failures

owl:imports handling: The local store typically does NOT contain imported ontologies (owl:imports declarations are not followed automatically). Super-properties from external namespaces (e.g. l0:name, l0:description from OntoPiA) are resolved against schema.gov.it automatically, making the effective semantics complete without requiring the full import chain to be loaded.

Use case — subproperty chains: For properties like ha_cup_collegato_per_fusione rdfs:subPropertyOf ha_cup_collegato, this tool shows whether domain/range are asserted directly, inherited from ha_cup_collegato, or need remote resolution. For subPropertyOf l0:name, it fetches l0:name's domain/range from schema.gov.it and shows it as source "remote".

When to use this vs X:

  • vs get_property_details: use this for a local or uploaded ontology; use get_property_details for a property already published in the remote schema.gov.it catalog

  • vs query_local_ontology: use this when you want the standard semantic profile of one property; use query_local_ontology only for custom SPARQL questions not covered here

Unicode SPARQL note: oxigraph rejects prefixed names with non-ASCII local parts. For properties with Unicode in the local name (e.g. myont:modalità_cup), always pass the full URI in angle brackets (<https://...#modalità_cup>).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
uriYesURI of the property to inspect
file_pathNoAbsolute path readable by the MCP server process. If this fails, do NOT read the file — use get_upload_instructions + Bash curl + upload_id instead.
upload_idNoUUID from POST /upload. Preferred when the file is on the client machine or file_path failed.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, idempotentHint, and openWorldHint, already indicating safety. The description adds extensive behavioral details: how super-properties are resolved (local/remote/not-found), owl:imports handling, redundancy analysis, Unicode SPARQL note, and return structure. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with clear sections (critical workflow, input mode guidance, returns, etc.). It front-loads essential purpose and uses formatting (e.g., lists, bold) for clarity. Could be slightly more concise, but every section adds necessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and absence of an output schema, the description thoroughly covers return values, edge cases (file access failures, Unicode, remote resolution), and provides a complete semantic profile. It leaves no gaps for an AI agent to misinterpret.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, but the description adds significant context: explains when to use each parameter, the workflow for file_path failure, and the difference between file_path and upload_id. Also provides a tip for Unicode handling with the uri parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get the full semantic profile of a property' and mentions resolving inherited domain/range, distinguishing it from siblings like get_property_details (for remote properties) and query_local_ontology (for custom SPARQL).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance, including a critical file access workflow with step-by-step instructions, alternatives for input modes, and comparisons to other tools like get_property_details and query_local_ontology. Also advises using search_concepts first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/italia/dati-semantic-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server