Giter VIP home page Giter VIP logo

bsdd's People

Contributors

atomczak avatar baars-it avatar berlotti avatar erik-rn avatar evandroalfieri avatar grandfr avatar klacol avatar lemoinet avatar stefkeb avatar tliebich avatar yohooe avatar youshengcode avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bsdd's Issues

Single property duplicated multiple times within the same class

Hello!
I wanted to ask if it is possible to associate the same property multiple times within the same class and use individual "ClassProperty" to differentiate their various limit values?
I try to explain me better. I know that it wouldn't make sense, for example, to assign the "Area" property multiple times within the same "Wall" class.
However, in my case, in the field of energy analysis, I wanted to use bSDD to input all the thermal transmittance limits required by regulations (which vary in Italy depending on the 6 climatic zones) in order to have a single "ThermalTransmittance" property associated with a single "Wall" class and 6 ClassProperties, one for each climatic zone, where only the limit values vary.
I am attaching an example image with currently only 2 class properties for climatic zones A and B of a wall.
eg climate zone

The alternative I have is to create 6 different thermal transmittance properties, one for each climatic zone, for all building envelope elements (walls, roof, floor, windows) for a total of 24 individual properties?
Thank you!

Luca

Missing Properties

Describe the bug
Missing properties when using the "Get Properties" function.

image

To Reproduce
For example, I want to obtain properties listed within a property set. Let's look at Pset_BuildingUse:
http://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/Pset_BuildingUse.htm

Now if I search for these properties in the API, some of them return results. However, TenureModesAvailableNow does not. Other properties are missing too.

It seems from a little experimenting that only IFC properties with the property type IfcPropertySingleValue can be called?

Maybe I am just looking at the incorrect documentation that is associated with the API?

http://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/prop/TenureModesAvailableNow

image

Expected behaviour
I expect that the properties that exist in the documentation for ifc 4.3 should be able to be called from the API property function.

Screenshots
See above

Desktop (please complete the following information):

  • OS: [Windows 10]
  • Browser [Chrome]

Any help with this will be much appreciated! Thank you

Material Properties

Describe the bug
The Excel template only allows to add properties to classifications, not to materials.

Expected behavior
The data model says that properties can be assigned to materials too.

Does the bSDD API replace two empty characery with one?

I use this ressource of the bSDD REST-API to insert a translated definition of the PSets:

POST /IfdConcept/{guid}/definition

I am wondering, if the API replaces two empty characters (spaces) with only one.

I send this string:

Eine Aktionsanforderung ist eine Anforderung an eine Aktion, um einen Bedarf zu decken.  HISTORY: IFC4: Removed RequestSourceType, RequestDescription, Status

The API returns this string:

Eine Aktionsanforderung ist eine Anforderung an eine Aktion, um einen Bedarf zu decken. HISTORY: IFC4: Removed RequestSourceType, RequestDescription, Status

Between "...decken." and "HISTORY..." are two spaces in the request and only one in the response. In the web page of the concept, I have also only one space.

This leads for me to the problem, that the ressource ist not stateless and I cannot identify changed values.

I am wondering, if I have to replace double spaces in the source of the translation with single spaces.

GraphQL - non-nullable field symbol - unit

When we want to retrieve all units via this query:

query{
  units{
    name
    code
    symbol
  }
}

we get this error:

{
  "": [
    "Cannot return null for non-null type. Field: symbol, Type: String!."
  ]
}

The field symbol is now defined as a non-nullable field.

type Unit {
  code: String!
  name: String!
  symbol: String!
}

Is it possible to make this a nullable field since the symbols are almost always null?

Workaround for special characters

Markus Järvenpää raised the issue that Finnish classes, properties and property sets often need 'Äą'. In bSDD we allow 'Äą' in names but not in codes.

Problem 1: The property set doesn't have a name in bSDD, only code. A potential workaround could be to define the set as GroupOfProperties and give it a human-friendly name with 'Äą'. But it's not supported by software implementations and also leads to problem 2.

Problem 2: Common BIM software allows users to put property names with 'Äą', and when exporting to IFC, those characters get encoded to hexadecimal code (https://technical.buildingsmart.org/resources/ifcimplementationguidance/string-encoding/). bSDD doesn't allow '' in codes, so not possible to define even the encoded names.

namespaceURI otl.amsterdam.nl doesn't exist within bSDD

Describe the bug
The namespaceURI for Amsterdam's Object-Type Library isn't working respectively doesn't exist in bSDD

To Reproduce
E.g. use a terminal to execute:

curl -X 'GET' \
  'https://api.bsdd.buildingsmart.org/api/Domain/v2/Classifications?namespaceUri=http%3A%2F%2Fotl.amsterdam.nl%2F' \
  -H 'accept: text/plain'

Or use swaggerhub with Domain/get_api_Domain_v2_Classifications and use http://otl.amsterdam.nl/ as namespaceUri

Expected behavior
Response should hold classifications for otl.amsterdam.

Actual behavior
Code 400: "Domain with namespace 'http://otl.amsterdam.nl' not found"

More documentation on "Property inheritance" (file bSDD JSON import model.md)

In the first case Parent Class → child Class
the documentation states:

The child Class does not inherit properties from the parent Class. If authors want child classes to also have properties of parent classes, they should specify them intentionally in import files.

Is it possible to improve the bolded part, with more information about how the author should act?

GET method to retriev all properties of a domain.

Is your feature request related to a problem? Please describe.
We would like to check properties of a particular domain in order to find similar definitions. Those properties should be shown as a list so that the user can browse through the list, e.g. if he/she wants to see existing definitions without using a particular search query.

Describe the solution you'd like
We suggest to add an api call to retrieve all properties of domain, similar to classifications. The call could be:
GET /api/Domain/v1/Properties

Describe alternatives you've considered

  1. checking properties for each classification -> results in many api calls, which would slow down performance

  2. using a search query requires at least 3 characters as search string (GET /api/TextSearchListOpen/v5). It is not clear if three wild cards could used as a work around (***), but results will not return all expected results (test with Swagger and IFC4.3)

Additional context
Feature is needed by buildingSMART Germany for support of extension groups working on own content to be published in bSDD as own domain, ideally linked with existing content (via Classification- and PropertyRelation).

Show all properties generates wrong url's for the additional properties

Describe the bug
When you click on the "Show all properties" link on the overview page of a dictionary, the additional properties all have a wrong url.

To Reproduce
Steps to reproduce the behavior:

  1. Go to https://search.bsdd.buildingsmart.org/uri/LCA/LCA/3.0
  2. Click on 'Show all properties'
  3. Click on an additional property https://search.bsdd.buildingsmart.org/uri/LCA/LCA/3.0/class/organisationsauthorisedbytheEPDownerstousetheEPDda
  4. See error 'Sorry, cannot find the requested resource'

Expected behavior
The url should not be this https://search.bsdd.buildingsmart.org/uri/LCA/LCA/3.0/class/organisationsauthorisedbytheEPDownerstousetheEPDda but this https://search.bsdd.buildingsmart.org/uri/LCA/LCA/3.0/prop/organisationsauthorisedbytheEPDownerstousetheEPDda

Rename the context “IFC 2x4” to “IFC 4”

The official name of IFC 4 is "IFC4". In the bSDD the context is named "IFC 2x4".
How can we rename the context “IFC 2x4” to “IFC 4”?
image

Shall we use "IFC 4" or shall we use the new semantic versioning system, explained here : http://www.buildingsmart-tech.org/ifc/ (see tab "Schemas")?

IFC 4.1.0.4 : IFC4.1
IFC 4.0.2.1 : IFC 4.0 Addendum 2 TC1
IFC 4.0.2.0 : IFC 4.0 Addendum 2
IFC 4.0.1.0 : IFC 4.0 Addendum 1
IFC 4.0.0.5 : IFC 4.0
IFC 2.3.0.1 : IFC2X3_FINAL

Property status value change

Describe the bug
The status value related to a Property has changed.

Before it was defined as either active or inactive:

| Status | Text | | | Status of the Property: “Active” (default) or “Inactive” |

Whereas now an integer value (as a string) is returned:
image

Question
What do these values represent? My assumption is that 1: active; 2: inactive; 3: ???

bsdd API: URI example not working

Describe the bug
Example URI in the Class API call does not work:

https://identifier.buildingsmart.org/uri/bs-agri/fruitvegs/1.1/class/apple

image

image

Appears to work with the URI https://identifier.buildingsmart.org/uri/bs-agri/fruitvegs/1.0.0/class/apple so maybe it is an issue with the version?

Unexpected namespaceUri property on ClassificationPropertyContract.v4

Describe the bug
When calling /api/Classification/v4 on production (https://api.bsdd.buildingsmart.org) the returned ClassificationContract.v4 seems to reference ClassificationPropertyContract.v4 objects that have the namespaceUri property, which (according to https://app.swaggerhub.com/apis/buildingSMART/Dictionaries/v1#/Classification/get_api_Classification_v4) is not a valid property.

To Reproduce
Steps to reproduce the behavior:

  1. Call /api/Classification/v4 (on production)
  2. Deserialize the object according to deserializers generated from the https://app.swaggerhub.com/apis/buildingSMART/Dictionaries/v1 OpenAPI spec

Expected behavior
No namespaceUri property on ClassificationPropertyContract.v4, or an updated spec.

Additional context
From https://forums.buildingsmart.org/t/bsdd-tech-updates/4889 I understand some changes have been implemented, also on production, but the OpenAPI spec that is being referred to from the bSDD github page (https://github.com/buildingSMART/bSDD) still seems to be referring to a V1 of the OpenAPI spec. I suspect perhaps that's where something is going wrong because until now I have not updated my code that was working a few months ago, maybe I am missing the updated spec.

Ontology quick comments

Very quickly scrolled through https://github.com/buildingSMART/bSDD/blob/master/RDF/preview-bsdd-rdfs-0.3.ttl and provide some quick comments:

First note. I'm not an expert on ontology development.

No domains on properties. This makes it quite hard to understand and use probably.

Double:

bsdd:ReplacedObjectCode a rdf:Property ;
  skos:prefLabel "Replaced Object Code"@en ;
  rdfs:range xsd:string .

bsdd:replacingObjectCode a rdf:Property ;
  skos:prefLabel "Replacing Object Code"@en ;
  rdfs:range xsd:string .

Vvisual:

bsdd:VisualRepresentationUri a rdf:Property ;
  skos:prefLabel "Vvisual Representation URI"@en ;
  rdfs:range xsd:string .

Pparent:

bsdd:ParentClassificationCode a rdf:Property ;
  skos:prefLabel "Pparent Classification Code"@en ;
  rdfs:range xsd:string .

Uunit:

bsdd:Uunit a rdf:Property ;
  skos:prefLabel "unit"@en ;
  rdfs:range xsd:string .

bsdd:QudtUunit a rdf:Property ;
  skos:prefLabel "QUDT reference"@en .

Everything range string, I'd look for ways to enforce more consistency in the data, e.g prevent Netherlands/Holland/NL/nl/The Netherlands. I understand that there needs to be a reasonable sync between RDF <-> database, so it might not be possible, to normalize everything into classes (or maybe it is...).

bsdd:CountryOfOrigin a rdf:Property ;
  skos:prefLabel "Country Of Origin"@en ;
  rdfs:range xsd:string .

I wouln't expect relationship as a class. What's the intention here:

bsdd:ClassificationRelation a rdfs:Class ;
  skos:prefLabel "ClassificationRelation"@en .

XSD can be imported as an ontology:

bsdd:MinInclusive a rdf:Property ;
  skos:prefLabel "Min Inclusive"@en ;
  rdfs:range xsd:float .

bsdd:MaxInclusive a rdf:Property ;
  skos:prefLabel "Max Inclusive"@en ;
  rdfs:range xsd:float .

bsdd:MinExclusive a rdf:Property ;
  skos:prefLabel "Min Exclusive"@en ;
  rdfs:range xsd:float .

bsdd:MaxExclusive a rdf:Property ;
  skos:prefLabel "MaxExclusive"@en ;
  rdfs:range xsd:float .

bsdd:Pattern a rdf:Property ;
  skos:prefLabel "Pattern"@en ;
  rdfs:range xsd:string .

skos:note/rdfs:comment?

bsdd:Description a rdf:Property ;
  skos:prefLabel "Description"@en ;
  rdfs:range xsd:string.

How to distinguish between psets and qtos?

Here is some sample response from the bSDD. Notice how some properties associated with this classification are psets and some are qtos. I can't find any way to clearly distinguish between the two (apart from heuristic checks like starting with "Qto_"):

{
    "referenceCode": "L-ULM",
    "synonyms": ["Wall"],
    "relatedIfcEntityNames": ["IfcWall", "IfcPlate", "IfcPlateStandarsCase"],
    "parentClassificationReference": {
        "namespaceUri": "https://identifier.buildingsmart.org/uri/molio/cciconstruction/1.0/class/L-UL_",
        "name": "Structural supporting object",
        "code": "L-UL_",
    },
    "classificationProperties": [
        {
            "name": "FireRating",
            "description": "Fire rating for this object. It is given according to the national fire safety classification.",
            "dataType": "String",
            "propertyCode": "FireRating",
            "propertyDomainName": "IFC",
            "propertyNamespaceUri": "https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/prop/FireRating",
            "propertySet": "Pset_WallCommon",
            "propertyStatus": "Active",
            "propertyValueKind": "Single",
        },
        {
            "name": "ThermalTransmittance",
            "description": "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials).",
            "dataType": "Real",
            "propertyCode": "ThermalTransmittance",
            "propertyDomainName": "IFC",
            "propertyNamespaceUri": "https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/prop/ThermalTransmittance",
            "propertySet": "Pset_PlateCommon",
            "propertyStatus": "Active",
            "propertyValueKind": "Single",
        },
        {
            "name": "StrengthClass",
            "description": "Classification of the concrete strength in accordance with the concrete design code which is applied in the project.",
            "dataType": "String",
            "possibleValues": [
                {"code": "100MPa", "value": "100 MPa"},
                {"code": "8MPa", "value": "8 MPa"},
                {"code": "12MPa", "value": "12 MPa"},
                {"code": "16MPa", "value": "16 MPa"},
                {"code": "20MPa", "value": "20 MPa"},
                {"code": "25MPa", "value": "25 MPa"},
                {"code": "30MPa", "value": "30 MPa"},
                {"code": "35MPa", "value": "35 MPa"},
                {"code": "40MPa", "value": "40 MPa"},
                {"code": "45MPa", "value": "45 MPa"},
                {"code": "50MPa", "value": "50 MPa"},
                {"code": "55MPa", "value": "55 MPa"},
                {"code": "60MPa", "value": "60 MPa"},
                {"code": "70MPa", "value": "70 MPa"},
                {"code": "80MPa", "value": "80 MPa"},
                {"code": "90MPa", "value": "90 MPa"},
            ],
            "propertyCode": "StrengthClass",
            "propertyDomainName": "IFC",
            "propertyNamespaceUri": "https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/prop/StrengthClass",
            "propertySet": "Pset_ConcreteElementGeneral",
            "propertyStatus": "Active",
            "propertyValueKind": "Single",
        },
        {
            "name": "Height",
            "description": "Characteristic height",
            "dataType": "Real",
            "propertyCode": "Height",
            "propertyDomainName": "IFC",
            "propertyNamespaceUri": "https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/prop/Height",
            "propertySet": "Qto_WallBaseQuantities",
            "propertyStatus": "Active",
            "propertyValueKind": "Single",
        },
        {
            "name": "Length",
            "description": "The length of the object.",
            "dataType": "Real",
            "propertyCode": "Length",
            "propertyDomainName": "IFC",
            "propertyNamespaceUri": "https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/prop/Length",
            "propertySet": "Qto_WallBaseQuantities",
            "propertyStatus": "Active",
            "propertyValueKind": "Single",
        },
        {
            "name": "ConstructionMethod",
            "description": "The type of construction action to the object, e.g. new construction, renovation, refurbishment, etc.",
            "dataType": "String",
            "possibleValues": [
                {"code": "Pre-fabricated", "value": "Pre-fabricated"},
                {"code": "In-situ", "value": "In-situ"},
            ],
            "propertyCode": "ConstructionMethod",
            "propertyDomainName": "IFC",
            "propertyNamespaceUri": "https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/prop/ConstructionMethod",
            "propertySet": "Pset_ConcreteElementGeneral",
            "propertyStatus": "Active",
            "propertyValueKind": "Single",
        },
        {
            "name": "IsExternal",
            "description": "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building.",
            "dataType": "Boolean",
            "propertyCode": "IsExternal",
            "propertyDomainName": "IFC",
            "propertyNamespaceUri": "https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/prop/IsExternal",
            "propertySet": "Pset_WallCommon",
            "propertyStatus": "Active",
            "propertyValueKind": "Single",
        },
    ],
    "classificationRelations": [
        {
            "relationType": "HasReference",
            "relatedClassificationUri": "https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/class/IfcWall",
        },
        {
            "relationType": "HasReference",
            "relatedClassificationUri": "https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/class/IfcPlate",
        },
        {
            "relationType": "HasReference",
            "relatedClassificationUri": "https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/class/IfcPlateStandarsCase",
        },
    ],
    "domainNamespaceUri": "https://identifier.buildingsmart.org/uri/molio/cciconstruction/1.0",
    "activationDateUtc": "2020-01-01T10:23:00Z",
    "code": "L-ULM",
    "creatorLanguageCode": "da-DK",
    "countriesOfUse": [],
    "countryOfOrigin": "DK",
    "definition": "structural supporting object in a plane or curved surface form withstanding compression forces",
    "name": "Wall plate",
    "namespaceUri": "https://identifier.buildingsmart.org/uri/molio/cciconstruction/1.0/class/L-ULM",
    "replacedObjectCodes": [],
    "replacingObjectCodes": [],
    "revisionNumber": 1,
    "status": "Active",
    "subdivisionsOfUse": [],
    "versionDateUtc": "2020-01-01T10:23:00Z",
}

namespaceURI .../csi/omniclass-1 doesn't exist within bSDD

Describe the bug
The namespaceURI for Omniclass 1 isn't working respectively doesn't exist in bSDD

To Reproduce
E.g. use a terminal to execute:

curl -X 'GET' \
  'https://api.bsdd.buildingsmart.org/api/Classification/v3?namespaceUri=http%3A%2F%2Fidentifier.buildingsmart.org%2Furi%2Fcsi%2Fomniclass-1&includeChildClassificationReferences=true' \
  -H 'accept: text/plain'

Or use swaggerhub with Domain/get_api_Domain_v3_Classifications and use http://identifier.buildingsmart.org/uri/csi/omniclass-1 as namespaceUri

Expected behavior
Response should hold classifications for Omniclass.

Actual behavior
Code 400: "Domain with namespace 'http://identifier.buildingsmart.org/uri/csi/omniclass-1" not found"

(see similar problem in #26 )

EDIT
for API Version /Classification/v2 the namespaceUri exists for Omniclass.

Dynamic properties

Is your feature request related to a problem? Please describe.
Please provide an explanation about how dynamic properties should be defined. Functions? Formulas?

Describe the solution you'd like
Example in Excel template, documentation

Fraction

Hi,

I have a question about the 'Fraction' field. Can it be set for all relation types (One of: HasMaterial, HasReference, IsEqualTo, IsSynonymOf, IsParentOf, IsChildOf, HasPart) or only for some?

Thanks.

[RDF/XML] Improve namespace declarations

This can be simpliffied

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rdf:RDF [
	
<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
<!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
<!ENTITY bsdd 'http://bsdd.buildingsmart.org/def#'>
<!ENTITY qudtUnit 'http://qudt.org/vocab/unit/'>
<!ENTITY pdt1_0 'https://identifier.buildingsmart.org/uri/pdt/pdt/1.0'>
]>
<rdf:RDF xml:base="https://identifier.buildingsmart.org/uri/pdt/pdt/1.0/class/suspendedceilingkit" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:bsdd="http://bsdd.buildingsmart.org/def#" xmlns:qudtUnit="http://qudt.org/vocab/unit/" xmlns:pdt1_0="https://identifier.buildingsmart.org/uri/pdt/pdt/1.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

to this:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rdf:RDF [
	
<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
<!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
<!ENTITY bsdd 'http://bsdd.buildingsmart.org/def#'>
<!ENTITY qudtUnit 'http://qudt.org/vocab/unit/'>
<!ENTITY pdt1_0 'https://identifier.buildingsmart.org/uri/pdt/pdt/1.0'>
]>
<rdf:RDF xml:base="https://identifier.buildingsmart.org/uri/pdt/pdt/1.0/class/suspendedceilingkit" xmlns:rdfs="&rdfs;" xmlns:xsd="&xsd;" xmlns:bsdd="&bsdd;" xmlns:qudtUnit="&qudtUnit;" xmlns:pdt1_0="&pdt1_0;" xmlns:rdf="&rdf;">

"Old" domain URI leads to error 400 for endpoint api/Domain/v*/Classifications

Describe the bug

It seems that since a few days the URI format for domains has changed from <domain_name>-<domain_version> to <domain_name>/<domain_version> (slash instead of hyphen). (This seems to be indicated e.g. in PR #65)

The API now returns error 400 for endpoint api/Domain/v*/Classifications (both v2 and v3) when using the "old" format with a hyphen.

To Reproduce

  1. Example URI: https://identifier.buildingsmart.org/uri/molio/cciconstruction-1.0
  2. Use this URI for api/Domain/v2/Classifications: https://api.bsdd.buildingsmart.org/api/Domain/v2/Classifications?namespaceUri=https%3A%2F%2Fidentifier.buildingsmart.org%2Furi%2Fmolio%2Fcciconstruction-1.0&useNestedClassifications=false
  3. Response:

"Domain with namespace \u0027https://identifier.buildingsmart.org/uri/molio/cciconstruction-1.0\u0027 not found"

Expected behaviour

Other endpoints automatically convert the URI into the "new" format, e.g. api/Classification/v4.

Example:

  • URI: http://identifier.buildingsmart.org/uri/molio/cciconstruction-1.0/class/L-CB (Even http instead of https works)
  • API call: https://api.bsdd.buildingsmart.org/api/Classification/v4?namespaceUri=http%3A%2F%2Fidentifier.buildingsmart.org%2Furi%2Fmolio%2Fcciconstruction-1.0%2Fclass%2FL-CB
  • Response: returns status 200 and the desired information.

Use consistent GUID's for the same properties that are used in different PSets

For historic reasons for a long time, a property that had been assigned to more than one property set has got different ifd guids. I.e., the property "ThermalTransmittance" assigned to PSet wall-common has a different guid as the property "ThermalTransmittance" assigned to pset slab-common - despite the fact, that it is the same property. Hence there are many instances of "ThermalTransmittance" in bSDD and in IFC - which is wrong.

All instances of "ThermalTransmittance" in bSDD and in the IFC PSet files should have the same and constistent GUID.

bSDD GraphQL schema

Hello everyone,
To get the bSDD GraphQL schema, I used the following CLI tool get-graphql-schema, so I got the attached schema, but unfortunately, I couldn't find any filter or resolvers used.
My question is there is any ambition to add those filters and resolvers?
bSDD_schema.txt

Materials vs Classifications

What is the difference between Materials and Classifications in the bSDD JSON import model

Wouldn't it be easier to treat Materials as Classifications with ClassificationType=Material?
Because as stated in the documentation "A Material is similar to a Classification."

It also resolves immediately "Please note that the "code" of both Material(s) and Classification(s) must be unique within the domain. You can't have a Domain with Material with code "abcd" and a Classification with the same code "abcd"."

Import model version

In order to handle future changes in the import model, it would be useful to make explicit a version of the import model.

Classification DocumentReference

Hi, I have a question about "DocumentReference":
Must this field be filled only with the values coming from the API (/api/ReferenceDocument/v1)? Or is it possible to write a custom value (es. bs-agri-veg-example.json contains "The Fruit Book")?

Thank you for the support

Wrong order of attributes in some PSet XML-files

Some PSets in the XML serialization (in the folder PSets/XML) have a wrong order of their attributes.

Normally, this should not be a problem, but some serialization engines need a proper order of the attributes.

The schema of the PSets uses the "xs:sequence" element, which forces the correct order of elements in the instance, according to the schema. See this post.

The XML file should be corrected according to the schema.

Importing properties require Classifications

When I want to import only properties, I get the error that 'Classifications' must not be empty.
Isn't it possible to upload only properties in bsDD without the need to define classifications?

Example file
{ "OrganizationCode": "BBRI", "DomainCode": "BBRI", "DomainVersion": "0.1", "DomainName": "BBRI", "Status": "Preview", "DomainNamespaceUri": "http://identifier.buildingsmart.org/uri/BBRI/BBRI-0.1", "LanguageIsoCode": "EN", "Properties": [ { "Code": "τv", "OwnedUri": "", "Uid": "", "Name": "Light transmittance", "Definition": "Fraction of the transmitted light by the incident light", "Status": "Active", "ActivationDateUtc": "2022-04-05", "RevisionDateUtc": null, "VersionDateUtc": "2022-04-05", "DeActivationDateUtc": null, "VersionNumber": null, "RevisionNumber": null, "ReplacedObjectCodes": [], "ReplacingObjectCodes": [], "DeprecationExplanation": "", "CreatorLanguageIsoCode": "", "VisualRepresentationUri": "", "CountriesOfUse": [], "SubdivisionsOfUse": [], "CountryOfOrigin": "", "DocumentReference": "EN 410:2011", "Description": "", "Example": "", "ConnectedPropertyCodes": [], "PhysicalQuantity": "without", "Dimension": "", "DimensionLength": 0, "DimensionMass": 0, "DimensionTime": 0, "DimensionElectricCurrent": 0, "DimensionThermodynamicTemperature": 0, "DimensionAmountOfSubstance": 0, "DimensionLuminousIntensity": 0, "MethodOfMeasurement": "", "DataType": "Real", "PropertyValueKind": "Single", "MinInclusive": 0, "MaxInclusive": 1, "MinExclusive": null, "MaxExclusive": null, "Pattern": "", "IsDynamic": false, "DynamicParameterPropertyCodes": [], "Units": [], "AllowedValues": [], "TextFormat": "" } ], "Materials": [] }

Provide JSON Schema for bsdd

{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://example.com/bsdd.schema.json",
    "description": "",
    "type": "object",
    "required": [
        "DomainCode",
        "DomainName",
        "DomainVersion",
        "LanguageIsoCode",
        "LanguageOnly",
        "OrganizationCode",
        "UseOwnUri"
    ],
    "properties": {
        "OrganizationCode": {
            "type": "string",
            "description": "Code of the Organization, preferably short, as it will appear in all the URI links. Only alphabetical characters and numbers are allowed. Can't start with a digit. E.g. \"ifc\". If you do not have a code for your organization yet, request one at bSDD User Helpdesk"
        },
        "DomainCode": {
            "type": "string",
            "description": "Code of the domain, preferably short, only alphabetical characters and numbes allowed, must start with alphabetical character E.g. \"ifc\""
        },
        "DomainVersion": {
            "type": "string",
            "description": "Version of the domain data. Allowed format: up to three dot-separated numbers, e.g.: 1.0.1. Allowed: \"12\", \"10.1\", \"1.2.3\". Not allowed: \"1.2.3.4\", \"Beta\", \"2x3\". We recommend following Semantic Versioning approach."
        },
        "DomainName": {
            "type": "string",
            "description": "Name of the domain. *If the domain exists supplying this name is not necessary."
        },
        "ReleaseDate": {
            "type": [
                "string",
                "null"
            ],
            "description": "Date of release of the version, YYYY-MM-DD E.g. \"2017-12-24\"",
            "format": "date"
        },
        "Status": {
            "type": "string",
            "description": "State of this version. Must be one of: Preview, Active, Inactive",
            "enum": [
                "Preview",
                "Active",
                "Inactive"
            ]
        },
        "MoreInfoUrl": {
            "type": [
                "string",
                "null"
            ],
            "description": "Url to web page with more info about the domain",
            "format": "uri"
        },
        "UseOwnUri": {
            "type": "boolean",
            "description": "Use your own namespace uri for global unique identification of Classifications and Properties. If you don't use your own namespace URI a namespace URI starting with \"http://bsdd.buildingsmart.org\" will be assigned to each Classification and Property",
            "default": false
        },
        "DomainNamespaceUri": {
            "type": [
                "string",
                "null"
            ],
            "description": "Required if UseOwnUri = true. Supply the globally unique namespace that's the first part of all Classifications and Properties namespaces, e.g. \"urn:mycompany:mydomain\"",
            "format": "uri"
        },
        "LanguageIsoCode": {
            "type": "string",
            "description": "ISO language code: indicates the language of the data. If you want to deliver data in multiple language use a json file per language. See reference list languages. * E.g. \"de-DE\""
        },
        "LanguageOnly": {
            "type": "boolean",
            "description": "true if json contains only language specific information, no otherwise *",
            "default": false
        },
        "License": {
            "type": [
                "string",
                "null"
            ],
            "description": "Description of the license the data will be made available (free text). E.g. \"No license\", \"MIT license\""
        },
        "LicenseUrl": {
            "type": [
                "string",
                "null"
            ],
            "description": "Url to a web page with the full license text",
            "format": "uri"
        },
        "QualityAssuranceProcedure": {
            "type": [
                "string",
                "null"
            ],
            "description": "Name or short description of the quality assurance procedure used for the domain, e.g. \"ETIM international\", \"AFNOR NF XP P07-150 (PPBIM)\", \"bSI process\", \"UN GHS 2015\", \"UN CPC 1.1\", \"Private\", \"Unknown\""
        },
        "QualityAssuranceProcedureUrl": {
            "type": [
                "string",
                "null"
            ],
            "description": "Url to a web page with more detailed info on the quality assurance procedure, e.g. \"https://www.buildingsmart.org/about/bsi-process\"",
            "format": "uri"
        },
        "Classifications": {
            "type": "array",
            "description": "List of objects of type Classification.",
            "items": {
                "$ref": "#/$defs/Classification"
            }
        },
        "Properties": {
            "type": "array",
            "description": "List of objects of type Property.",
            "items": {
                "$ref": "#/$defs/Property"
            }
        },
        "Materials": {
            "type": "array",
            "description": "List of objects of type Material.",
            "items": {
                "$ref": "#/$defs/Material"
            }
        }
    },
    "$defs": {
        "AllowedValue": {
            "type": "object",
            "description": "",
            "required": [
                "Code",
                "Value"
            ],
            "properties": {
                "Code": {
                    "type": "string",
                    "description": "Code as unique identification of the value (max 20 characters). If you want to add translations of Values or their Descriptions, you must supply a Code for each Value"
                },
                "Description": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "A description of the value"
                },
                "NamespaceUri": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "You can provide your own Namespace Uri (must be globally unique).",
                    "format": "uri"
                },
                "SortNumber": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "SortNumber of the Value in the list of Values of the Property it belongs to"
                },
                "Value": {
                    "type": "string",
                    "description": "One of the Values the property can have, e.g. \"Green\" in case the Property is something like \"Color\""
                }
            }
        },
        "Classification": {
            "type": "object",
            "description": "A Classification can be any (abstract) object (e.g. \"IfcWall\"), abstract concept (e.g. \"Costing\") or process (e.g. \"Installation\").",
            "required": [
                "Code",
                "Name"
            ],
            "properties": {
                "ActivationDateUtc": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Will get date of import if field not present, YYYY-MM-DD E.g. \"2017-12-24\"",
                    "format": "date"
                },
                "ClassificationProperties": {
                    "type": "array",
                    "description": "",
                    "items": {
                        "$ref": "#/$defs/ClassificationProperty"
                    }
                },
                "ClassificationRelations": {
                    "type": "array",
                    "description": "",
                    "items": {
                        "$ref": "#/$defs/ClassificationRelation"
                    }
                },
                "ClassificationType": {
                    "type": "string",
                    "description": "Must be one of: Class, ComposedProperty, Domain, GroupOfProperties, ReferenceDocument, AlternativeUse. Read more about classification types. If not specified, the Class type will be used by default.",
                    "enum": [
                        "Class",
                        "ComposedProperty",
                        "Domain",
                        "GroupOfProperties",
                        "ReferenceDocument",
                        "AlternativeUse"
                    ],
                    "default": "Class"
                },
                "Code": {
                    "type": "string",
                    "description": "Unique identification within the domain of the classification E.g. \"ifc-00123-01\""
                },
                "ReferenceCode": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Reference code, can have domain specific usage. If null, then the value of Code is used to fill the field. To make ReferenceCode empty use empty string \"\"."
                },
                "CountriesOfUse": {
                    "type": "array",
                    "description": "List of country ISO codes this Classification is being used.",
                    "items": {
                        "type": "string"
                    }
                },
                "CountryOfOrigin": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "ISO Country Code of the country of origin of this classification."
                },
                "CreatorLanguageIsoCode": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Language ISO code of the creator."
                },
                "DeActivationDateUtc": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "YYYY-MM-DD E.g. \"2017-12-24\"",
                    "format": "date"
                },
                "Definition": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Definition of the Classification"
                },
                "DeprecationExplanation": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": ""
                },
                "DocumentReference": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Reference to document with full or official definition of the Classification."
                },
                "Name": {
                    "type": "string",
                    "description": "Name of the Classification E.g. \"IfcCurtainWall\""
                },
                "OwnedUri": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "If you specified \"UseOwnUri = true\" at domain level you must supply the namepsace URI that globally uniquely identifies the Classifciation",
                    "format": "uri"
                },
                "ParentClassificationCode": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Reference to the parent Classification. The ID in this field MUST exist in the data delivered. E.g. \"ifc-00123-00\"."
                },
                "RelatedIfcEntityNamesList": {
                    "type": "array",
                    "description": "References to the IFC equivalent of this Classification.",
                    "items": {
                        "type": "string"
                    }
                },
                "ReplacedObjectCodes": {
                    "type": "array",
                    "description": "List of Classification Codes this Classification replaces",
                    "items": {
                        "type": "string"
                    }
                },
                "ReplacingObjectCodes": {
                    "type": "array",
                    "description": "List of Classification Codes this classification is replaced by",
                    "items": {
                        "type": "string"
                    }
                },
                "RevisionDateUtc": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "YYYY-MM-DD E.g. \"2017-12-24\"",
                    "format": "date"
                },
                "RevisionNumber": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": ""
                },
                "Status": {
                    "type": "string",
                    "description": "Status of the Classification: Active (default) or Inactive",
                    "enum": [
                        "Active",
                        "Inactive"
                    ],
                    "default": "Active"
                },
                "SubdivisionsOfUse": {
                    "type": "array",
                    "description": "List of geographical regions of use E.g. \"US-MT\"",
                    "items": {
                        "type": "string"
                    }
                },
                "Synonyms": {
                    "type": "array",
                    "description": "List of alternative names of this classification for easier finding.",
                    "items": {
                        "type": "string"
                    }
                },
                "Uid": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Unique identification (ID), in case the URI is not enough."
                },
                "VersionDateUtc": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Will get date of import if field not present, YYYY-MM-DD E.g. \"2017-12-24\"",
                    "format": "date"
                },
                "VersionNumber": {
                    "type": "integer",
                    "description": ""
                },
                "VisualRepresentationUri": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "",
                    "format": "uri"
                }
            }
        },
        "ClassificationProperty": {
            "type": "object",
            "description": "",
            "required": [
                "Code"
            ],
            "properties": {
                "AllowedValues": {
                    "type": "array",
                    "description": "List of allowed values for the Property. Overrides the values defined for the Property. Do not use this one for properties of type boolean.",
                    "items": {
                        "$ref": "#/$defs/AllowedValue"
                    }
                },
                "Code": {
                    "type": "string",
                    "description": "Unique identification within the domain of this classification property"
                },
                "Description": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "You can supply the property description specific for the classification. If left out, the 'common' description of the property will be shown where applicable"
                },
                "ExternalPropertyUri": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "DEPRECATED - Use PropertyNamespaceUri instead",
                    "format": "uri",
                    "deprecated": true
                },
                "IsRequired": {
                    "type": "boolean",
                    "description": "Indicates if this is a required Property of the Classification"
                },
                "IsWritable": {
                    "type": "boolean",
                    "description": "Indicates if the value of this Property of the Classification can be changed"
                },
                "MaxExclusive": {
                    "type": [
                        "number",
                        "null"
                    ],
                    "description": "Maximum allowed value, exclusive. Overrides the value defined for the Property. Do not fill both 'inclusive' and 'exclusive' values"
                },
                "MaxInclusive": {
                    "type": [
                        "number",
                        "null"
                    ],
                    "description": "Maximum allowed value, inclusive. Overrides the value defined for the Property. Do not fill both 'inclusive' and 'exclusive' values."
                },
                "MinExclusive": {
                    "type": [
                        "number",
                        "null"
                    ],
                    "description": "Minimum allowed value, exclusive. Overrides the value defined for the Property"
                },
                "MinInclusive": {
                    "type": [
                        "number",
                        "null"
                    ],
                    "description": "Minimum allowed value, inclusive. Overrides the value defined for the Property"
                },
                "Pattern": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "An XML Schema regular expression to limit allowed values. Overrides the pattern defined for the Property"
                },
                "PredefinedValue": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Predefined value for this Property. E.g. value for property \"IsLoadBearing\" can be \"true\" for classification \"IfcWall\""
                },
                "PropertyCode": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Reference to the Property if it is in the same Domain. Not required if you fill the PropertyNamespaceUri"
                },
                "PropertyNamespaceUri": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Reference to the Property if it is in a different Domain, e.g. http://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/prop/position Not required if you fill the PropertyCode",
                    "format": "uri"
                },
                "PropertySet": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Name of the \"property set\" in which the property should be placed during IFC export. When the property should be placed in an IFC entity you should use that. For example, when a property is a material, you should use the value \"IfcMaterial\"."
                },
                "PropertyType": {
                    "type": "string",
                    "description": "Type of the Property for the Classification: Property (default) or Dependency",
                    "enum": [
                        "Property",
                        "Dependency"
                    ],
                    "default": "Property"
                },
                "SortNumber": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "Sort number of this Property within the Classification"
                },
                "Symbol": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": ""
                },
                "Unit": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": ""
                }
            }
        },
        "ClassificationRelation": {
            "type": "object",
            "description": "",
            "required": [
                "RelatedClassificationUri",
                "RelationType"
            ],
            "properties": {
                "RelatedClassificationUri": {
                    "type": "string",
                    "description": "Full namespace URI of the related Classification. Can be to same or different Domain. Example: http://identifier.buildingsmart.org/uri/etim/etim-8.0/class/EC002987",
                    "format": "uri"
                },
                "RelatedClassificationName": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": ""
                },
                "RelationType": {
                    "type": "string",
                    "description": "One of: HasMaterial, HasReference, IsEqualTo, IsSynonymOf, IsParentOf, IsChildOf, HasPart",
                    "enum": [
                        "HasMaterial",
                        "HasReference",
                        "IsEqualTo",
                        "IsSynonymOf",
                        "IsParentOf",
                        "IsChildOf",
                        "HasPart"
                    ]
                },
                "Fraction": {
                    "type": "number",
                    "description": "Optional provision of a fraction of the total amount (e.g. volume or weight) that applies to the Classification owning the relations. The sum of Fractions per classification/relationtype must be 1. Similar to Fraction in IfcMaterialConstituent"
                }
            }
        },
        "Property": {
            "type": "object",
            "required": [
                "Code",
                "Description",
                "Name"
            ],
            "properties": {
                "ActivationDateUtc": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Will get date of import if field not present, YYYY-MM-DD E.g. \"2017-12-24\"",
                    "format": "date"
                },
                "AllowedValues": {
                    "type": "array",
                    "description": "List of allowed values for the property. Note: do not use this one for properties of type boolean.",
                    "items": {
                        "$ref": "#/$defs/AllowedValue"
                    }
                },
                "Code": {
                    "type": "string",
                    "description": "Unique identification within the domain of the property E.g. \"ifc-99088-01\""
                },
                "ConnectedPropertyCodes": {
                    "type": "array",
                    "description": "List of codes of connected properties",
                    "items": {
                        "type": "string"
                    }
                },
                "CountriesOfUse": {
                    "type": "array",
                    "description": "List of country ISO codes this Property is being used.",
                    "items": {
                        "type": "string"
                    }
                },
                "CountryOfOrigin": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "ISO Country Code of the country of origin of this classification."
                },
                "CreatorLanguageIsoCode": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Language ISO code of the creator."
                },
                "DataType": {
                    "type": "string",
                    "description": "The datatype the property is expressed in. Must be one of: Boolean, Character, Integer, Real, String, Time",
                    "enum": [
                        "Boolean",
                        "Character",
                        "Integer",
                        "Real",
                        "String",
                        "Time"
                    ]
                },
                "DeActivationDateUtc": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "YYYY-MM-DD E.g. \"2017-12-24\"",
                    "format": "date"
                },
                "Definition": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Definition of the Property"
                },
                "DeprecationExplanation": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": ""
                },
                "Description": {
                    "type": "string",
                    "description": ""
                },
                "Dimension": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "In case of a physical quantity, specify dimension according to International_System_of_Quantities, as defined in ISO 80000-1. The order is: length, mass, time, electric current, thermodynamic temperature, amount of substance, and luminous intensity. For example speed (m/s) would be denoted as \"1 0 -1 0 0 0 0\". ",
                    "pattern": "-?[0-9]+ -?[0-9]+ -?[0-9]+ -?[0-9]+ -?[0-9]+ -?[0-9]+ -?[0-9]+"
                },
                "DimensionLength": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "The Length dimension; either use the field Dimension to specifiy all parts, or specify all parts separately"
                },
                "DimensionMass": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "The Mass dimension; either use the field Dimension to specifiy all parts, or specify all parts separately"
                },
                "DimensionTime": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "The Time dimension; either use the field Dimension to specifiy all parts, or specify all parts separately"
                },
                "DimensionElectricCurrent": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "The ElectricCurrent dimension; either use the field Dimension to specifiy all parts, or specify all parts separately"
                },
                "DimensionThermodynamicTemperature": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "The ThermodynamicTemperature dimension; either use the field Dimension to specifiy all parts, or specify all parts separately"
                },
                "DimensionAmountOfSubstance": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "The AmountOfSubstance dimension; either use the field Dimension to specifiy all parts, or specify all parts separately"
                },
                "DimensionLuminousIntensity": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "The LuminousIntensity dimension; either use the field Dimension to specifiy all parts, or specify all parts separately"
                },
                "DocumentReference": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Reference to document with full or official definition of the Property."
                },
                "DynamicParameterPropertyCodes": {
                    "type": "array",
                    "description": "List of codes of properties which are parameters of the function for a dynamic property",
                    "items": {
                        "type": "string"
                    }
                },
                "Example": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Example of the Property"
                },
                "IsDynamic": {
                    "type": "boolean",
                    "description": "Default: false If this is a dynamic property, the value is dependent on the parameters provided in field DynamicParameterProperties",
                    "default": false
                },
                "MaxExclusive": {
                    "type": [
                        "number",
                        "null"
                    ],
                    "description": "Maximum allowed value, exclusive - do not fill both 'inclusive' and 'exclusive' values"
                },
                "MaxInclusive": {
                    "type": [
                        "number",
                        "null"
                    ],
                    "description": "Maximum allowed value, inclusive - do not fill both 'inclusive' and 'exclusive' values"
                },
                "MinExclusive": {
                    "type": [
                        "number",
                        "null"
                    ],
                    "description": "Minimum allowed value, exclusive"
                },
                "MinInclusive": {
                    "type": [
                        "number",
                        "null"
                    ],
                    "description": "Minimum allowed value, inclusive"
                },
                "MethodOfMeasurement": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "E.g. \"Thermal transmittance according to ISO 10077-1\""
                },
                "Name": {
                    "type": "string",
                    "description": "Name of the Property E.g. \"IsExternal\""
                },
                "OwnedUri": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "If you specified \"UseOwnUri = true\" at domain level you must supply the namepsace URI that globally uniquely identifies the Property",
                    "format": "uri"
                },
                "Pattern": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "An XML Schema regular expression to limit allowed values"
                },
                "PhysicalQuantity": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Name of the physical quantity of the property E.g. \"without\" or \"mass\""
                },
                "PropertyValueKind": {
                    "type": "string",
                    "description": "Must be one of: Single (one value, is default), Range (two values), List (multiple values), Complex (consists of multiple properties, use ConnectedProperties), ComplexList (list of complex values)",
                    "enum": [
                        "Single",
                        "Range",
                        "List",
                        "Complex",
                        "ComplexList"
                    ],
                    "default": "Single"
                },
                "ReplacedObjectCodes": {
                    "type": "array",
                    "description": "List of Property Codes this Property replaces",
                    "items": {
                        "type": "string"
                    }
                },
                "ReplacingObjectCodes": {
                    "type": "array",
                    "description": "List of Property Codes this Property is replaced by",
                    "items": {
                        "type": "string"
                    }
                },
                "RevisionDateUtc": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "YYYY-MM-DD E.g. \"2017-12-24\"",
                    "format": "date"
                },
                "RevisionNumber": {
                    "type": "integer",
                    "description": ""
                },
                "Status": {
                    "type": "string",
                    "description": "Status of the Property: \"Active\" (default) or \"Inactive\"",
                    "enum": [
                        "Active",
                        "Inactive"
                    ],
                    "default": "Active"
                },
                "SubdivisionsOfUse": {
                    "type": "array",
                    "description": "List of geographical regions of use E.g. \"US-MT\"",
                    "items": {
                        "type": "string"
                    }
                },
                "TextFormat": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Pair for text type (encoding, number of characters) The encoding is set according to \"Name of encoding standard\" of IANA, RFC 2978 E.g. \"(UTF-8,32)\""
                },
                "Uid": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Unique identification (ID), in case the URI is not enough."
                },
                "Units": {
                    "type": "array",
                    "description": "The units to represent a scale that enables a value to be measured (ISO 80000 or ISO 4217 or ISO 8601). List of values. See reference list (json) units. We are working on supporting the QUDT vocabulary. If you would like to import using QUDT units or want to have the QUDT units in the API output pls let us know.",
                    "items": {
                        "type": "string"
                    }
                },
                "VersionDateUtc": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Will get date of import if field not present, YYYY-MM-DD E.g. \"2017-12-24\"",
                    "format": "date"
                },
                "VersionNumber": {
                    "type": "integer",
                    "description": ""
                },
                "VisualRepresentationUri": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "",
                    "format": "uri"
                },
                "PropertyRelations": {
                    "type": "array",
                    "description": "List of related properties.",
                    "items": {
                        "$ref": "#/$defs/PropertyRelation"
                    }
                }
            }
        },
        "PropertyRelation": {
            "type": "object",
            "description": "",
            "required": [
                "RelatedPropertyUri",
                "RelationType"
            ],
            "properties": {
                "RelatedPropertyName": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Name of the related Property."
                },
                "RelatedPropertyUri": {
                    "type": "string",
                    "description": "Full namespace URI of the related Property. Can be to same or different Domain.",
                    "format": "uri"
                },
                "RelationType": {
                    "type": "string",
                    "description": "One of: HasReference, IsEqualTo, IsSynonymOf, IsParentOf, IsChildOf, HasPart",
                    "enum": [
                        "HasReference",
                        "IsEqualTo",
                        "IsSynonymOf",
                        "IsParentOf",
                        "IsChildOf",
                        "HasPart"
                    ]
                }
            }
        },
        "Material": {
            "type": "object",
            "required": [
                "Code",
                "Name"
            ],
            "properties": {
                "ActivationDateUtc": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Will get date of import if field not present, YYYY-MM-DD E.g. \"2017-12-24\"",
                    "format": "date"
                },
                "MaterialProperties": {
                    "type": "array",
                    "description": "",
                    "items": {
                        "$ref": "#/$defs/ClassificationProperty"
                    }
                },
                "ClassificationRelations": {
                    "type": "array",
                    "description": "",
                    "items": {
                        "$ref": "#/$defs/ClassificationRelation"
                    }
                },
                "Code": {
                    "type": "string",
                    "description": "Unique identification within the domain of the material E.g. \"ifc-00123-01\""
                },
                "ReferenceCode": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Reference code, can have domain specific usage. If null, then the value of Code is used to fill the field. To make ReferenceCode empty use empty string \"\"."
                },
                "CountriesOfUse": {
                    "type": "array",
                    "description": "List of country ISO codes this Material is being used.",
                    "items": {
                        "type": "string"
                    }
                },
                "CountryOfOrigin": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "ISO Country Code of the country of origin of this Material."
                },
                "CreatorLanguageIsoCode": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Language ISO code of the creator."
                },
                "DeActivationDateUtc": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "YYYY-MM-DD E.g. \"2017-12-24\"",
                    "format": "date"
                },
                "Definition": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Definition of the Material"
                },
                "DeprecationExplanation": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": ""
                },
                "DocumentReference": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Reference to document with full or official definition of the Material."
                },
                "Name": {
                    "type": "string",
                    "description": "Name of the Material E.g. \"Concrete\""
                },
                "OwnedUri": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "If you specified \"UseOwnUri = true\" at domain level you must supply the namepsace URI that globally uniquely identifies the Material",
                    "format": "uri"
                },
                "ParentMaterialCode": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Reference to the parent Material. The ID in this field MUST exist in the data delivered. E.g. \"ifc-00123-00\"."
                },
                "ReplacedObjectCodes": {
                    "type": "array",
                    "description": "List of Material Codes this Material replaces",
                    "items": {
                        "type": "string"
                    }
                },
                "ReplacingObjectCodes": {
                    "type": "array",
                    "description": "List of Material Codes this Material is replaced by",
                    "items": {
                        "type": "string"
                    }
                },
                "RevisionDateUtc": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "YYYY-MM-DD E.g. \"2017-12-24\"",
                    "format": "date"
                },
                "RevisionNumber": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": ""
                },
                "Status": {
                    "type": "string",
                    "description": "Status of the Material: Active (default) or Inactive",
                    "enum": [
                        "Active",
                        "Inactive"
                    ],
                    "default": "Active"
                },
                "SubdivisionsOfUse": {
                    "type": "array",
                    "description": "List of geographical regions of use E.g. \"US-MT\"",
                    "items": {
                        "type": "string"
                    }
                },
                "Synonyms": {
                    "type": "array",
                    "description": "List of alternative names of this Material for easier finding.",
                    "items": {
                        "type": "string"
                    }
                },
                "Uid": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Unique identification (ID), in case the URI is not enough."
                },
                "VersionDateUtc": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Will get date of import if field not present, YYYY-MM-DD E.g. \"2017-12-24\"",
                    "format": "date"
                },
                "VersionNumber": {
                    "type": "integer",
                    "description": ""
                },
                "VisualRepresentationUri": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "",
                    "format": "uri"
                }
            }
        }
    }
}

Maintain the official PSets and their localizations

Based on resolutions by the Technical Room and the Product Room on the summits in Paris and Tokyo, the official PSets will be maintained by the ProductRoom within the bSDD. The PSets stay an official extension of IFC.

The plan is, that the chapters can contribute their localization of the PSets in a GitHub based workflow as follows:

  • The chapter makes a fork of this repository
  • The chapter commits the localized PSets into the fork
  • The chapter makes a pull request
  • Members of the Product Room and the Technical Rooms check the pull request
  • If the pull request was done according to the quality guidelines they can approve the pull request
  • The new approved localizations will be automatically transfered to the bSDD at http://bsdd.buildingsmart.org
  • The Product Room and the Technical Rooms say "Thank you" to the contribution chapter

In this issue we plan and describe this workflow in detail. It is clear, that the first steps can be try and error. Every hint and contribution is welcome.

How to search for a classification just by a specific attribute ?

Hello,
Is there no possibility to search for a classification just by its "name" attribute or other specific attributes; for example, return just classifications that contain in their names the text that I put for the parameter searchText?
because when I type the following command:

{domain(namespaceUri : 'http://identifier.buildingsmart.org/uri/etim/etim-8.0') { classificationSearch(searchText: 'cotter', languageCode: 'EN') { name definition synonyms namespaceUri properties{ name } } } }

I see that the search is extended to the level of all attributes of the classification, and in this example: it is "synonyms", this is the result that I got:

{ "data": { "domain": { "classificationSearch": [ { "name": "Split-/safe pin", "definition": null, "synonyms": [ "Cotter key", "Cotter pin", "Double spring cotter", "Dowel pin", "Safe pin", "Slotted pin", "Split pin", "Spring connector", "Spring cotter", "Straight pin" ], "namespaceUri": "http://identifier.buildingsmart.org/uri/etim/etim-8.0/class/EC003020", "properties": [ { "name": "Model" }, { "name": "Material" }, { "name": "Material quality" }, { "name": "Surface protection" }, { "name": "Diameter" }, { "name": "Diameter axle" }, { "name": "Length" } ] }, { "name": "Assortment box fastening material", "definition": null, "synonyms": [ "Assortment box fixation material", "Disc assortment", "Linch pin assortment", "Lubricating nipple assortment", "Plasterboard fixing assortment", "Range of rivets", "Splint assortment", "Spring cotter pin selection", "Spring cotter pin set", "Spring pin assortment", "Spring washer selection", "Spring washer set", "Srew and plug assortment", "Yacht assortment" ], "namespaceUri": "http://identifier.buildingsmart.org/uri/etim/etim-8.0/class/EC012002", "properties": [ { "name": "Model" }, { "name": "Number of sections" }, { "name": "Number of screws" }, { "name": "Number of dowels/plugs" }, { "name": "Number of nuts" }, { "name": "Number of washers" }, { "name": "Number of rivets" }, { "name": "Number of parts" }, { "name": "With hand riveter" }, { "name": "With transparent cover" }, { "name": "With carrying handle" }, { "name": "Length" }, { "name": "Width" }, { "name": "Height" } ] } ] } } }

Thanks.

get API for the test domain

Is your feature request related to a problem? Please describe.
I have uploaded my json file in the test domain but I need to verify the data from the domain with my IFC file .As I have created a simple console application to compare the data with "get API " from the test domain and the data obtained from it will be compared to my IFC file .How can i get the aPI for the test domain to get all the classification

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

CORS headers are not set, disabling usage from javascript in browsers

Describe the bug
CORS is security implemented by browsers limiting requests sent to another domain.
The swagger works because it shares the same domain as the API.

Requesting the API from any other web page will result in a CORS exception.

To Reproduce
Steps to reproduce the behavior:

  1. Open the console from any page other than the swagger
  2. Paste (or write) fetch('https://bs-dd-api-prototype.azurewebsites.net/api/Domain/v2') in the console
  3. See the cors error

Expected behavior
Be able to request the API from browsers

Screenshots
Capture d’écran de 2021-03-03 11-28-38

Merging 0MqdTJBSj4ivReEeWxFQSc with 0LWrk0qX8HuO00025QrE$V ?

The file of the PSet of the (TransportElementElevator)
[https://github.com/buildingSMART/bSDD/blob/master/PSets/YAML/Pset_TransportElementElevator.YAML] lives here in the test server of the bSDD:

http://test.bsdd.buildingsmart.org/#concept/browse/0LWrk0qX8HuO00025QrE$V

There is a second nest for “transport element elevator” here:
http://test.bsdd.buildingsmart.org/#concept/details/0MqdTJBSj4ivReEeWxFQSc

This seems to be a duplicate.

Shall the concept
http://test.bsdd.buildingsmart.org/#concept/browse/0MqdTJBSj4ivReEeWxFQSc
be merged to
http://test.bsdd.buildingsmart.org/#concept/browse/0LWrk0qX8HuO00025QrE$V
to eliminate this duplicate?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.