Xbim.IDS.Validator.Common 1.0.156

There is a newer version of this package available.
See the version list below for details.
dotnet add package Xbim.IDS.Validator.Common --version 1.0.156                
NuGet\Install-Package Xbim.IDS.Validator.Common -Version 1.0.156                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Xbim.IDS.Validator.Common" Version="1.0.156" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Xbim.IDS.Validator.Common --version 1.0.156                
#r "nuget: Xbim.IDS.Validator.Common, 1.0.156"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Xbim.IDS.Validator.Common as a Cake Addin
#addin nuget:?package=Xbim.IDS.Validator.Common&version=1.0.156

// Install Xbim.IDS.Validator.Common as a Cake Tool
#tool nuget:?package=Xbim.IDS.Validator.Common&version=1.0.156                

Xbim.IDS.Validator

Xbim.IDS.Validator is a .net (core & framework) library tht verifies IFC models against the official BuildingSMART Information Delivery Specification (IDS) standard.

Powered by xbim Tookit, this library can be used to translate IDS files into an executable specification, which can be run against any IFC2x3, IFC4 or IFC4.3 model and provide a detailed breakdown of the the test outcomes. It supports the latest full IDS1.0 specification and should fully support cloud and desktop applications across platforms.

An experimental extension adds support for validating COBie using IDS. See the Readme in Xbim.IDS.Validator.Extensions.COBie for more info.

How do I install it?

dotnet add package Xbim.IDS.Validator.Core

How do I use it?

Building the solution is easy, which includes a fully functional Console application in the Xbim.IDS.Validator.Console project.

XBIM IDS Console example

To integrate in your own application is also simple. Given an IDS file such as BasicRequirements.ids and an input IFC such as SampleHouse4.ifc, a basic C# implementation might look like:


// during application startup/bootstrap:

IServiceCollection serviceCollection = new ServiceCollection();

serviceCollection.AddIdsValidation();

// Build service provider if not using DI 
var provider = serviceCollection.BuildServiceProvider();

// Get IdsModelValidator from an IServiceProvider / or inject to your service
var idsValidator = provider.GetRequiredService<IIdsModelValidator>();

// Open a model

IModel model = IfcStore.Open("SampleFile.ifc"); // Or any other IModel implementation in place of IfcStore (including optionally a COBieModel)

// optionally you can over-ride some behaviours
var options = new VerificationOptions
{
    OutputFullEntity = true,            // Returns the full IFC entity in results, not just key
    PerformInPlaceSchemaUpgrade = true, // Update old IDS schemas to latest version
    PermittedIdsAuditStatuses = VerificationOptions.Relaxed,    // Silently ignore some IDS schema errors - just log the fault
            
    // IncludeSubtypes = true           // Include derived IFC Entity types in Selection
    // AllowDerivedAttributes = true,   // Allow Derived attributes to be tested.
};

// Invoke the validation checking asynchronously. Also supports cancellation and async progress updating.
ValidationOutcome outcome = await idsValidator.ValidateAgainstIdsAsync(model, "BasicRequirements1-0.ids", logger, verificationOptions: options);

// Present the results
foreach (ValidationRequirement requirement in outcome.ExecutedRequirements)
{
    // ApplicableResults contains details of the applicable IFC entities tested
    var entitiesTested = requirement.ApplicableResults.Count();
    var entitiesPassed = requirement.ApplicableResults.Count(e => e.ValidationStatus == ValidationStatus.Pass);
    Console.WriteLine("[{0,-8}] : [{1}/{2}] met {3} specification '{4}' ",
        requirement.Status,
        entitiesPassed, entitiesTested,
        requirement.Specification.Cardinality.Description,
        requirement.Specification.Name
        );

    // Detail the failure reasons against applicable entities.

    foreach(var entity in requirement.ApplicableResults.Where(e => e.ValidationStatus != ValidationStatus.Pass))
    {
        Console.WriteLine(" Failed Entity: {0}", entity.FullEntity);
        foreach(var failure in entity.Messages)
        {
            // Reasons for failure
            Console.WriteLine("   {0}", failure);
        }
    }
}

Example IDS Console output

How much of the IDS spec does this support?

This is a comprehensive implementation of the latest IDS v1.0 standard, with 100% pass rate all current IDS TestCases

This library has been tested at scale with real-world models. It also supports some useful extensions that can be enabled through runtime options.

It currently supports:

  • Applicability and Requirements of the following
    • Entities & Predefined Types
    • Attributes
      • With optional extension to support devived Attributes
    • Classifications
      • Includes Classification hierarchies/ancestry
      • Includes inheriting/over-riding from Type
    • Properties
      • Includes inheriting from Type
      • Support for all IfcSimpleProperty implementations
      • Support for IfcElementQuantities
      • Support for Unit conversion
      • Support for 1e6 Floating Point precision tolerances
    • Materials
    • PartOf
    • Combinations of all Facet types and Cardinalities
    • Xbim.IDS custom facet extensions (Document, IfcRelation)
  • Complex Restrictions:
    • Enumerations
    • Patterns (Regex)
    • Bounds/Ranges
    • Structure (Min/Max length)
  • Restrictions can be used in both Applicability filtering and Requirements verification
  • Reading of IDS
    • in v0.9-1.0 IDS Schema in BuildingSmart XML format
    • in v1.0 IDS JSON formats (XIDS proprietary)
  • Required, Prohibited and Optional Facets
  • Cardinality of Specification (Expected, Prohibited, Optional)
  • Support for validating models in following IFC Schemas
    • IFC2x3
    • IFC4 schemas
    • IFC4x3-ADD2
    • COBie24 (Experimental - using an extension module: Xbim.IDS.Validator.Extensions.COBie and proprietary entity types)
  • Support for validating IDS schema validity using ids-lib
  • Support for upgrading older IDS schemas to latest Xml Schema
  • Custom Extensions (See xbimEndToEnd TestCases for example usage)
    • Case Insensitivity testing
    • Special case handling of Wild-carded PropertySet names See IDS#189
    • Optional Support for Ifc Type Inheritance
    • Optional Support for querying/verifying Derived Properties (Mostly for COBie)
    • Optional support for running IDS against COBie Spreadsheets (using Xbim.COBieExpress extensions)
    • Support for use of IFC4+ schema items on Ifc2x3 models - e.g. to support IfcAirTerminal queries via an inferred IfcAirTerminalType definition See IDS#116 Usage Example

The library has been tested against the IDS test suite

Currently only one minor test-case is unsupported. (See PropertySet skipped unit-test).

To-do list

  • Support for Xbim.XIDS extensions (Documents etc)
  • Testing Pre-defined Properties. e.g. IFCDOORPANELPROPERTIES.PanelOperation
  • Review support of latest PartOf relations in 0.96/0.97
  • Further COBie specific enhancements (Attributes checking, Classification etc)
  • Refactoring to further unify selection and verification logic for consistency

License

This library is made available by xbim Ltd under the GNU Affero General Public License v3. Please note this is different to the Open Source license used by other libraries in the xbim Toolkit (CDDL), and means that, while you are free to use this software for evaluation, personal, and non-commercial use, it is not compatible for use use in 'proprietary' (closed-source) commercial software.

If you are a developer wishing to use this library in commercial software please contact sales@xbim.net to discuss a commercial license, or contact @andyward on github.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Xbim.IDS.Validator.Common:

Package Downloads
Xbim.IDS.Validator.Core

Enables validation of IFC models with BuildingSmart IDS using xbim Toolkit

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.164 107 11/26/2024
1.0.163 141 11/19/2024
1.0.162 169 11/12/2024
1.0.161 118 11/12/2024
1.0.160 138 11/11/2024
1.0.159 294 10/10/2024
1.0.158 186 10/4/2024
1.0.157 137 10/2/2024
1.0.156 226 9/17/2024
1.0.155 205 9/13/2024
1.0.154 179 9/10/2024
1.0.153 142 9/9/2024
1.0.152 160 9/2/2024
1.0.151 145 9/2/2024
1.0.150 170 8/29/2024
1.0.149 162 8/29/2024
1.0.148 289 7/24/2024
1.0.147 183 7/19/2024
1.0.146 142 7/19/2024
1.0.145 148 7/19/2024
1.0.144 205 7/11/2024
1.0.143 284 6/28/2024
1.0.142 570 6/25/2024
1.0.141 181 6/25/2024
1.0.140 150 6/25/2024
1.0.139 159 6/24/2024
1.0.138 171 6/14/2024
1.0.137 153 6/13/2024
1.0.136 171 6/13/2024
1.0.134 174 6/12/2024
0.97.133 162 6/12/2024
0.97.132 175 6/12/2024
0.97.131 275 4/26/2024
0.97.129 179 4/18/2024
0.97.125 183 4/12/2024
0.97.124 147 4/12/2024