File size: 5,482 Bytes
9e88eab
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import os
import json
from typing import List, Optional
from pydantic import BaseModel, Field
from enum import Enum

class BimDiscipline(Enum):
    plumbing = 'S - Sanitär'
    network = 'd - Datennetz'
    heating = 'h - Heizung'
    electrical = 'e - Elektro'
    ventilation = 'l - Lüftung'
    architecture = 'a - Architektur'

class KeywordChoice(str, Enum):
    three_dimensional_modeling = "3d modeling"
    four_dimensional_simulation = "4d simulation"
    five_dimensional_cost_estimation = "5d cost estimation"
    six_dimensional_lifecycle_management = "6d lifecycle management"
    adoption = "adoptions"
    agile_bim = "agile bim"
    artificial_intelligence = "artificial intelligence"
    automated_code_checking = "automated code checking"
    automation = "automation"
    big_data_analytics = "big data analytics"
    bim_based_estimating = "bim-based estimating"
    bim_execution_plan = "bim execution plan"
    bim_governance = "bim governance"
    bim_integration = "bim integration"
    bim_maturity = "bim maturity"
    bim_objects = "bim objects"
    bim_process = "bim process"
    bim_quality_assurance = "bim quality assurance"
    bim_requirements = "bim requirements"
    bim_server = "bim server"
    bim_standardization = "bim standardization"
    bim_strategy = "bim strategy"
    bim_tools = "bim tools"
    bim_training = "bim training"
    barriers = "barriers"
    benchmarking = "benchmarking"
    building_energy_modeling = "building energy modeling"
    building_life_cycle = "building life cycle"
    building_physics = "building physics"
    building_smartness = "building smartness"
    built_environment = "built environment"
    case_studies = "case studies"
    cloud_computing = "cloud computing"
    collaborative_environments = "collaborative environments"
    communication = "communication"
    computational_design = "computational design"
    cobie = "construction operations building information exchange"
    construction_scheduling = "construction scheduling"
    construction_site_layout = "construction site layout"
    context_awareness = "context awareness"
    contractual_issues = "contractual issues"
    cost_control = "cost control"
    critical_success_factors = "critical success factors"
    digital_fabrication = "digital fabrication"
    digital_twin = "digital twin"
    disaster_response = "disaster response"
    dispute_resolution = "dispute resolution"
    dynamic_scheduling = "dynamic scheduling"
    education = "education"
    electronic_tendering = "electronic tendering"
    empirical_research = "empirical research"
    energy_analysis = "energy analysis"
    environmental_impacts = "environmental impacts"
    facility_management = "facility management"
    fire_safety = "fire safety"
    gis_integration = "gis integration"
    green_buildings = "green buildings"
    health_and_safety = "health and safety"
    historical_preservation = "historical preservation"
    human_behavior = "human behavior"
    industrialized_construction = "industrialized construction"
    information_management = "information management"
    infrastructure_asset_management = "infrastructure asset management"
    interoperability = "interoperability"
    iot_integration = "iot integration"
    knowledge_sharing = "knowledge sharing"
    lean_construction = "lean construction"
    legal_frameworks = "legal frameworks"
    level_of_development = "level of development"
    level_of_detail = "level of detail"
    level_of_information_need = "level of information need"
    lifetime_costs = "lifetime costs"
    linked_data = "linked data"
    machine_learning = "machine learning"
    manufacturing = "manufacturing"
    materials_management = "materials management"
    mobile_applications = "mobile applications"
    multi_criteria_decision_making = "multi-criteria decision making"
    natural_language_processing = "natural language processing"
    networking = "networking"
    open_bim = "open bim"
    organizational_change = "organizational change"
    owner_involvement = "owner involvement"
    parametric_design = "parametric design"
    performance_measurement = "performance measurement"
    pipeline_simulation = "pipeline simulation"
    policy_implications = "policy implications"
    predictive_maintenance = "predictive maintenance"
    product_data_templates = "product data templates"
    public_procurement = "public procurement"
    radio_frequency_identification = "radio frequency identification"
    reality_capture = "reality capture"
    real_time_monitoring = "real-time monitoring"
    reliability_engineering = "reliability engineering"
    resilience = "resilience"
    return_on_investment = "return on investment"
    reverse_logistics = "reverse logistics"
    risk_assessment = "risk assessment"
    robotics = "robotics"
    maintenance_management = "maintenance management"

# Define the schema for the output.
class Metadata(BaseModel):
    title: str = Field(description='Title of the document')
    summary: str = Field(description='One sentence short summary of the document information')
    disciplines: List[str] = Field(
        default_factory=list,
        description='BIM disciplines the document belongs to',
        example=['S - Sanitär', 'D - Datennetz']
    )
    keywords: List[str] = Field(
        default_factory=list,
        description='List of BIM keywords associated with the document',
        example=['3D Modelling', 'Clash detection']
    )