3DOnt

User guide

The 3DOnt Explorer, online

Everything you need to use the online demo: what each project shows, how to segment, plot, query and inspect a 3DGraph, and where the demo stops.

Getting started

Open the Explorer in a recent desktop browser (Chrome, Edge, Firefox, Safari). The first project loads by itself; the selector at the top switches project. A project weighs 20–50 MB and loads in a few seconds on a normal connection; after that, everything happens in your browser: the RDF graph of the objects, the queries, the segmentations.

ActionMouseTouch
Orbitleft dragone finger
Panright drag (or Shift + left drag)two fingers
Zoomwheelpinch
Inspect a pointclick (without dragging)tap
Standard views3D · Top · Front · Side buttons, top right; PNG saves the view

Tutorial (10 minutes)

  1. Open YTU3D. In the Explorer choose YTU3D — Urban campus. The Project tab tells you what this graph is good for. The cloud opens coloured by the Dynamic Semantic Segmentation at full detail: windows, pipelines, facades, roofs, cars, trees.
  2. Climb the mereology. Go to Explore and drag Mereological level to the right. Windows, ventilations and pipelines disappear into facades and roofs; at the end, whole buildings. Nothing was recomputed: each point already knew all the objects it constitutes. YTU3D segmented at the level of whole objects
  3. Climb the taxonomy. Bring Mr back to the left and move Taxonomical level: Car and Van become Four-Wheeled Vehicle, then Vehicle, then Movable Object. The two sliders are the two axes of S(Mr, Tr).
  4. Ask a structural question. Open Query, pick the example Windows of buildings taller than 20 m and press Run query. The answer lights up in red; the table lists the windows; “Query actually run” shows what was executed on the object graph. A query highlighting the windows of tall buildings
  5. Inspect. Click a point on a window. The Inspect tab shows its coordinates and the chain of objects it constitutes, from the window to the building, each with its class path. Click an object of the chain to see all its properties and highlight its points; click a linked object to move to it. Inspecting a point: the chain window, facade, building
  6. Switch to Ferrara. Choose Ferrara. In the Project tab click The material of every point, then Points made of materials that are practically impermeable: the permeability is a property of the material (expert knowledge in the T-box), and reaches the points through Is_a_point_made_of.
  7. Look at a rule. Click Heating propension index. The hint under the property explains the rule that produced it: low heat capacity of the material and a dark colour make a point heat up more. Heating propension index on Ferrara
  8. Switch to the Temple of Neptune. Move Mr one step at a time: abacus and echinus become the capital, capital and shaft the column, columns, floor and entablature the temple. Then run Columns whose shaft is lower than 7 m.
  9. Write your own query. Edit any example: change a class (base:Tree, base:Capital), a property, a threshold. The cheat-sheet lists the names. Ctrl/⌘ + Enter runs the query.

Which project for what

ProjectBest forNot for
YTU3D
urban campus, 3.5 M points, 854 objects
Dynamic Semantic Segmentation (multi-label, 3 mereological levels, deep taxonomy); structural and geometric queries; plotting object and point properties.Materials, thermal data, rules.
Ferrara
urban block, 1 M points, 702 objects
Materials and expert knowledge (material properties in the graph); point-level thermal data (day / night); rule-derived indices (heating propension, flooding risk).Segmentation: the classification is coarse and single-level.
Temple of Neptune
Paestum, 2.8 M points, 418 objects
Heritage: architectural mereology (abacus → capital → column → temple), 4 mereological levels, queries on columns and capitals.Materials, sensors. Its classification is a model prediction and some parts are noisy.
Santa Chiara
Trento, 3 M of 10.9 M points
Semantic digital twin: two sensors and three 6-hour data streams in the graph; the dew formation risk index computed by the time-aware rule after each stream (shared colour scale, so the three can be compared).Objects and segmentation: this export carries the per-point result of the reasoning, not the window objects.

Coming later: the Casa degli Epigrammi Greci in Pompeii (inference to the best explanation) and a synthetic forest stand (forestry extension, what-if scenarios).

The interface

Explore: colourings

ModeWhat you see
RGBThe colour acquired with the scan.
InstancesOne colour per object: every point takes the colour of the finest object it constitutes.
Dynamic segmentationOne colour per class, at the chosen mereological and taxonomical level (next section).
TargetedOnly the classes you tick are coloured; everything else is grey. A point takes the first ticked class met going up from its object; ticking a class blocks only its own lineage.
Plot a propertyA colour ramp (numbers) or categories (IRIs) from a point property, an object property or a property of a linked node such as a material.

Points drawn lowers the number of points rendered. Points are stored in random order, so 30% of the points is a uniform 30% sample: use it on slow devices. Queries and segmentations always work on all points.

Dynamic Semantic Segmentation S(Mr, Tr)

In a 3DGraph a point Constitutes every object it belongs to, and every object is typed with its class and all the ancestors of its class. A segmentation is therefore a choice of two resolutions:

The legend lists the classes visible at the current levels, with the number of points of each.

Plotting properties

Grey means “no value”.

Natural-language questions (NL-2-SPARQL)

Write the question in English and press Translate & run. The question is first parsed by a language model that runs in your browser; the parse goes to the NL-2-SPARQL service, which maps it on the ontology of the project and returns a SPARQL query; the query appears in the SPARQL box and runs in your browser. The words of your question that were mapped on the ontology are shown above the result, so you can see how the question was understood.

Choosing the model

The menu above the question box (tab Query) offers two sizes of the same parser, fine-tuned on the NL-2-SPARQL dataset:

The model is downloaded the first time you press Translate & run (the progress is shown next to the button) and is then kept in the browser cache: the following visits start in a few seconds. Your choice is remembered. The model needs WebGPU: recent Chrome or Edge on Windows, macOS and ChromeOS, Safari 26 or later; Firefox only on some systems. Without WebGPU, or if the GPU does not support 16-bit shaders, the box says so and the SPARQL editor keeps working. If Medium cannot start on your device (not enough GPU memory), the message suggests Small.

Status of this feature. The parser models are being trained. Until they are published the box answers with an error; the tested suggested questions will appear in their slot once the models are in place. The SPARQL editor and its examples work in any case.

How NL-2-SPARQL works: a fine-tuned language model only parses the question (the words, their relations, operators, filters, what to return); the words are then mapped on the ontology vocabulary; a graph-exploration step finds how the mapped terms are connected in the ontology and writes the query. The model never sees the data.

How to write a question

What NL-2-SPARQL does not do (yet)

Each limit below is a structure that the parser or the query builder does not produce today. When you need one of them, write the query in the SPARQL editor: the examples of each project are a good starting point.

SPARQL in the browser

The editor accepts SPARQL 1.1 SELECT / ASK queries. Prefixes base: (http://3DOntCore#), rdf:, rdfs:, owl:, xsd: are added if missing. FROM clauses are ignored (everything is in one graph).

The graph in your browser contains the ontology and the objects; the points are typed arrays. A query that talks about points is rewritten before it runs: point triples are removed, the rest runs on the graph, and the points are recovered from the links. You can see the rewritten query under every result.

PatternMeaning online
?p base:Constitutes ?othe points of object ?o (all levels: a point of a window constitutes the facade and the building too)
?p base:Is_a_point_made_of ?mthe points made of material ?m (Ferrara)
?p base:X ?x, Y, Z, R, G, Bpoint coordinates (in the CRS of the project) and colour (0–255)
?p base:Verticality ?v, Day_Temperature …point properties of the project
FILTER(?z > 12) on point valuesapplied to the points
SELECT ?x1 ?y1 ?z1 ?v with ?v an object or material valuea scalar query: each point coloured by ?v
COUNT, AVG, MIN, MAX, SUM of point values, no GROUP BYcomputed on the selected points
Queries without pointsrun as they are; the points of any object or material in the result are highlighted

Not supported online (they work in the desktop application): a FILTER mixing point values and object values (FILTER(?z > ?h) with ?z a point coordinate and ?h an object height); aggregates of point values grouped by objects; property paths through points; updates.

Inspecting points and objects

Click a point (without dragging). The Inspect tab shows the point (individual, coordinates, colour, point properties), the chain of objects it constitutes from the finest to the whole — each with its class path — and, on Ferrara, its material. Clicking an object shows all its properties and highlights its points; clicking a linked object (parts, wholes, materials) moves to it. Clicking an object name in a query result does the same.

Vocabulary cheat-sheet

Core (3DOntCore)

Constitutes / Is_constituted_bypoint → object it belongs to
Is_part_of / Has_as_partobject → whole / part (transitive closure stored)
Min_X … Max_Z, X_Length, Y_Length, Z_Lengthbounding box and dimensions of an object (m)
Surface_Valueestimated surface of an object (m²), from point count and point spacing
Scenethe whole scan; every object is part of it

Classes by project

YTU3DBuilding, Facade, Roof, Window, Ventilation, Pipeline, Chimney, Solar_Panel, Ancillary_Element, Car, Van, Vehicle, Person, Tree, Bush, Street, Sidewalk, Parking_Lot, Meadow, Stair, Fence, Street_Lamp …
FerraraBuilding, Vegetation_Element, Ground_Area, Water_Area, Unclassified_Entity; materials: Material, Proper_Material, Improper_Material (Asphalt, Red_Tile, Cobblestone, Porphyry, Cement, Glass, Metal, High_Vegetation …); point properties Day_Temperature, Night_Temperature, Heating_Propension_Index, Flooding_Risk_Index; material properties Specific_Heat_Capacity, Permeability_To_Water
Santa ChiaraSensor_Datastream (with rdfs:label, Temperature, Humidity: mean values of each stream), point properties Dew_Formation_Risk_Index_Stream_1, _2, _3
Temple of NeptuneTemple, Column, Shaft, Capital, Abacus, Echinus, Architrave, Frieze, Cornice, Tympanum, Floor, Crepidoma, Stone_Slab_Floor, Meadow; groupings Column_Part, Capital_Part, Ceiling_Part, Floor_Part, Building_Part

Limits of the online demo

Troubleshooting

The view is black / “WebGL” errorEnable hardware acceleration in the browser settings; try another browser.
Rotation is slowExplore → Points drawn: 30–50%. Smaller point size also helps.
The natural-language box waits a long timeThe service sleeps when unused and takes up to a minute to wake up; try again, or use SPARQL.
“A FILTER mixes point values and object values”Split the condition: one FILTER on the object values, one on the point values.
A query highlights nothingCheck class and property names (case matters): base:Building, not base:building.