-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathbuildm_extractor.py
109 lines (70 loc) · 4.71 KB
/
buildm_extractor.py
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
import os
import sys
import ifc_query
import util.geo
import util.qudt
from ifc_query import formatters
fn = os.path.normpath(sys.argv[1])
assert os.path.isfile(fn)
file = ifc_query.open(fn)
try: schema_file = sys.argv[2]
except: schema_file = 'buildm_v3.0.rdf'
geo_lookup = util.geo.lookup_factory(user_name="")
ifc_query.rdf_formatter(
schema_file,
'http://data.duraark.eu/resource/',
file.IfcProject.GlobalId >> formatters.expand_guid,
{ 'xsd' : '<http://www.w3.org/2001/XMLSchema#>' ,
'duraark' : '<http://data.duraark.eu/vocab/buildm/>' ,
'schema' : '<http://schema.org/>' ,
'xsd112' : '<http://www.w3.org/TR/xmlschema11-2/#>' ,
'unit' : '<%s>'%util.qudt.namespace ,
'geonames' : '<http://sws.geonames.org/>' }
) << [
file.header.file_name.author >> "duraark:IFCSPFFile/duraark:creator",
file.header.file_name.organization >> "duraark:IFCSPFFile/duraark:creator",
# ifcm attributes
#file.header.file_name.preprocessor_version >> "duraark:IFCSPFFile/duraark:authoringTool",
#file.header.file_name.originating_system >> "duraark:IFCSPFFile/duraark:authoringTool",
#file.header.file_schema.schema_identifiers >> "duraark:IFCSPFFile/duraark:fileSchema",
file.header.file_description.description >> formatters.regex(r"ViewDefinition\s\[([^\]+])\]") >> formatters.split(",") >> "duraark:IFCSPFFile/duraark:viewDefinition",
file.IfcOwnerHistory.OwningUser.ThePerson.GivenName + ' ' +
file.IfcOwnerHistory.OwningUser.ThePerson.FamilyName
>> formatters.unique >> "duraark:IFCSPFFile/duraark:creator",
file.header.file_name.name >> "duraark:IFCSPFFile/duraark:filename",
file.header.file_name.time_stamp >> "duraark:IFCSPFFile/duraark:dateCreated",
(file.IfcProject.LongName | file.IfcProject.Name) >> "duraark:PhysicalAsset/duraark:name",
(file.IfcSite.RefLatitude >> formatters.latitude) >> "duraark:PhysicalAsset/duraark:latitude",
(file.IfcSite.RefLongitude >> formatters.longitude) >> "duraark:PhysicalAsset/duraark:longitude",
((file.IfcSite.RefLatitude >> formatters.latitude)
^ (file.IfcSite.RefLongitude >> formatters.longitude))
>> geo_lookup >> "duraark:PhysicalAsset/duraark:location",
file.IfcBuilding.BuildingAddress.AddressLines >> formatters.join >> "duraark:PhysicalAsset/duraark:streetAddress",
file.IfcProject.Description >> "duraark:PhysicalAsset/duraark:description",
file.IfcProject.GlobalId >> "duraark:PhysicalAsset/duraark:identifier",
file.IfcGeometricRepresentationContext.ContextType >> formatters.unique >> "duraark:IFCSPFFile/duraark:hasType",
# ifcm attributes
#file.IfcGeometricRepresentationContext.Precision >> formatters.unique >> "duraark:IFCSPFFile/duraark:geometricPrecision",
#file.IfcGeometricRepresentationContext.CoordinateSpaceDimension >> formatters.unique >> "duraark:IFCSPFFile/duraark:dimensionCount",
file.IfcProject.UnitsInContext.Units.select("IfcSIUnit").Prefix +
file.IfcProject.UnitsInContext.Units.select("IfcSIUnit").Name >> formatters.mapping(util.qudt.qudt) >>
"duraark:IFCSPFFile/duraark:unit",
file.IfcBuilding.IsDefinedBy.RelatingPropertyDefinition.HasProperties.filter(Name="GrossPlannedArea").NominalValue.wrappedValue >> "duraark:PhysicalAsset/duraark:buildingArea",
file.IfcBuilding >> formatters.count >> "duraark:PhysicalAsset/duraark:buildingCount",
file.IfcBuilding.IsDecomposedBy.RelatedObjects >> formatters.count >> "duraark:PhysicalAsset/duraark:floorCount",
file.IfcSpace >> formatters.count >> "duraark:PhysicalAsset/duraark:spaceCount",
file.IfcWall >> formatters.count >> "duraark:PhysicalAsset/duraark:wallCount",
file.IfcWindow >> formatters.count >> "duraark:PhysicalAsset/duraark:windowCount",
file.IfcDoor >> formatters.count >> "duraark:PhysicalAsset/duraark:doorCount",
file.IfcColumn >> formatters.count >> "duraark:PhysicalAsset/duraark:columnCount",
file.IfcProduct >> formatters.count >> "duraark:PhysicalAsset/duraark:componentCount",
file.IfcRelationship >> formatters.count >> "duraark:IFCSPFFile/duraark:relationshipCount",
file.IfcActor >> formatters.count >> "duraark:IFCSPFFile/duraark:actorCount",
# ifcm attribute with name 'ifcApplication'
#file.IfcApplication.ApplicationFullName >> "duraark:IFCSPFFile/duraark:authoringTool",
file.measures.optionalAttributesSet >> "duraark:IFCSPFFile/duraark:optionalAttributesSet",
file.measures.instanceCount >> "duraark:IFCSPFFile/duraark:instanceCount",
file.measures.entityCount >> "duraark:IFCSPFFile/duraark:entityCount",
# ifcm attribute
#file.rdf_vocabularies >> "duraark:webResourceList"
]