-
Notifications
You must be signed in to change notification settings - Fork 612
Visual query language
This page explains a visual query language. This will not necessarily become a real way of quering BIM models. For now it serves as tool to develop/explain a potential new query language.
This is where the query "starts".
Consideration: Remove the "Root" node, if you consider all the blocks with no input's as starting points, there is no need to have a "Root" node.
Query by type. By default all subtypes will be queried as well. You can disable the subtypes by adding "No subtypes"
Follow a reference from the previous object. These can be single/multi references.
The condition blocks (gray blocks) seem to use a text-based expression, this is just a simplification. The actual query model will represent these with more building blocks such as "Equal", "Literal" etc...
Reuse a query block defined somewhere else. Possible properties
- Recurse (this will short-circuit the IN and OUT on the reusable code block), (default: false)
- Exclude, the objects will only be used to traverse the model, but not included in the result (default: false)
Returns all IfcRoot (and subclasses) objects with the given GUID's (if they exist in the model). Of course these types of queries can also be done for "Name", "ObjectID" etc...
Queries all doors/windows, plus their subtypes, if any.
Get all walls with name "Muur 1".
This will return all IfcWall objects with a OverallWidth > 2 AND OverallHeight > 3
This will return all IfcWall objects that have a Representation. Could maybe also be visualized by adding an explicit NOT block.
These are not direct object-properties, but properties that are attached to the object via IfcPropertySet/IfcPropertySingleValue etc...
This functionality makes the query engine less schema-agnostic, another way of making it easier to query complex properties and also keep the query engine schema-less would be to use a reusable query block for it, for example the Properties block.
This query first selects all IfcBuildingStorey objects that have the name "Storey 2", which would usually be used to get one single storey (using a GUID here would be better). However this storey is not added to the resultset (note the "exclude" attribute). The Storey is only used as a path to get to the Window/Door objects that are linked to it.
The Decomposes and Contains blocks are uses of reusable query blocks. These blocks will recurse through the decomposes and contains relations. The objects encountered on the way also excluded (in this case).
Finally the IfcDoor and IfcWindow objects are selected, those are included in the results.
Get Started
- Quick Guide
- Requirements Version 1.2
- Requirements Version 1.3
- Requirements Version 1.4
- Requirements Version 1.4 > 2015-09-12
- Requirements Version 1.5
- Download
- JAR Starter
- Setup
Deployment
- Ubuntu installation 1.3
- Windows installation
- Security
- Memory Usage
- More memory
- Performance statistics
- Large databases
Developers
- Service Interfaces
- Common functions
- Data Model
- Low Level Calls
- Endpoints
Clients
BIMServer Developers
- Plugins in 1.5
- Plugin Development
- Eclipse
- Eclipse Modeling Framework
- Embedding
- Terminology
- Database/Versioning
- IFC STEP Encoding
- Communication
- Global changes in 1.5
- Writing a service
- Services/Notifications
- BIMserver 1.5 Developers
- Extended data
- Extended data schema
- Object IDM
New developments
- New remote service interface
- Plugins new
- Deprecated
- New query language
- Visual query language
- Reorganizing BIMserver JavaScript API
General