WO2016079792A1 - 検索装置および検索方法 - Google Patents
検索装置および検索方法 Download PDFInfo
- Publication number
- WO2016079792A1 WO2016079792A1 PCT/JP2014/080382 JP2014080382W WO2016079792A1 WO 2016079792 A1 WO2016079792 A1 WO 2016079792A1 JP 2014080382 W JP2014080382 W JP 2014080382W WO 2016079792 A1 WO2016079792 A1 WO 2016079792A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- search
- expression
- condition
- information
- search expression
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/56—Information retrieval; Database structures therefor; File system structures therefor of still image data having vectorial format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/13—Architectural design, e.g. computer-aided architectural design [CAAD] related to design of buildings, bridges, landscapes, production plants or roads
Definitions
- Embodiments described herein relate generally to a search device and a search method.
- the embodiment of the present invention is intended to enable a flexible search using the semantic relationship between parts and the three-dimensional information of the parts.
- the embodiment of the present invention includes storage means, analysis means, first search means, second search means, generation means, and search result integration means.
- the storage means stores the semantic relationship established between the parts and the three-dimensional information of the parts for the parts arranged in the three-dimensional space.
- the analysis means includes a first search condition that defines a component condition using the semantic relationship and a second search condition that defines a component condition using the three-dimensional information, and the first search By analyzing an input search expression of a part that satisfies a condition and the second search condition, structure information of the input search expression is generated.
- the first search means can interpret and execute a search expression based on the semantic relationship.
- the second search means can interpret and execute a search expression based on the three-dimensional information.
- the generation means generates a first search expression that can be interpreted by the first search means from a portion corresponding to the first search condition in the structure information, and corresponds to the second search condition in the structure information. From the portion, a second search expression that can be interpreted by the second search means is generated, and integrated information for integrating the search results of the first search expression and the second search expression is generated.
- the search result integration unit integrates the search result of the first search formula by the first search unit and the search result of the second search formula by the second search unit based on the integration information. A part that satisfies the input retrieval formula is identified.
- the block diagram of the search device which concerns on this embodiment The figure which shows the example of a class diagram.
- FIG. 1 shows a block diagram of a search device according to this embodiment.
- the building information DB (storage means) 106 stores information (relationship model) representing a semantic relationship established between the components constituting the building as components (or objects) arranged in the three-dimensional space.
- the building information DB 106 stores three-dimensional (3D) information or a 3D model of each part.
- the three-dimensional information includes shape information (geometry). This shape information (geometory information) is described in the absolute coordinate system of the space occupied by the building, and thus includes position information of the article. Details of the building information DB 106 will be described later.
- Search expression input means 201 is an interface for inputting a search expression.
- the search formula input by the search formula input unit 201 includes a first search condition that defines a component condition using a semantic relationship and a second search condition that defines a component condition using three-dimensional information. A part that satisfies the first search condition and the second search condition is searched.
- the search expression input unit 201 may be an interface operated by a user such as a touch panel, a mouse, and a keyboard, a storage device storing a search expression, a read drive that reads data from a recording medium, or the like. Good.
- the storage device may be a device that permanently stores information such as an SSD, a hard disk, or a USB memory, or a nonvolatile memory, or may be a volatile memory such as a DRAM.
- the read drive is, for example, a drive such as a DVD or a CD-ROM.
- the analysis unit 101 is connected to the search formula input unit 201, and parses the search formula input from the search formula input unit 201 to generate structure information of the search formula. Specifically, it is converted into a format that can be interpreted by the search expression separating means 102, for example, a tree structure. Here, the case of converting to a tree structure is assumed.
- the analysis unit 101 is connected to the retrieval formula separation unit 102 and outputs the retrieval formula of the tree structure obtained by the conversion to the retrieval formula separation unit 102.
- the search expression separation unit 102 receives the tree structure from the analysis unit 101, decomposes the tree structure into a part related to the search based on the semantic relationship and a part related to the 3D space search (also referred to as a spatial search), and from each of them, the semantic related search
- a search expression semantic relation search expression
- 3D space search expression 3D space search expression interpretable by 3D space search means 105 (second search means) are generated.
- the 3D space search is a search using 3D information in the 3D space, for example, searching for an object (part) included in a specified range in the 3D space.
- the range may be specified by an arbitrary method.
- the range may be specified by a starting point (viewpoint), an orientation, and a shape, or may be an intersection region of a plurality of ranges in 3D space.
- the object being included in the designated range may be that the entire object may be included in the range, or at least a part of the object may be included in the range.
- the search expression separating unit 102 generates integrated information (integrated script) representing an integration procedure of the search result of the semantic related search expression and the search result of the 3D space search expression.
- the execution result (search result) of the semantic related search formula is applied to the 3D spatial search formula, and the search result satisfying the 3D spatial search formula is extracted from the search results of the semantic related search formula. This is a script describing this. *
- the meaning related search means 104 is connected to the search expression separating means 102 and receives the meaning related search expression from the search expression separating means 102.
- the semantic related search unit 104 searches the building information DB 106 based on the semantic related search formula, and acquires a desired building part (object) as a search result.
- the meaning related search means 104 can interpret and execute a search expression described in a predetermined inquiry language, for example.
- the operation of the semantic related search unit 104 can be controlled by the search result integration unit 103.
- the 3D space search means 105 is connected to the search expression separation means 102 and receives the 3D space search expression from the search expression separation means 102.
- the 3D space search unit 105 performs a search using 3D information in the building information DB 106 based on the 3D space search formula.
- the 3D space search unit 105 can interpret and execute a search expression described in a predetermined procedural language, for example.
- the operation of the 3D space search unit 105 can be controlled by the search result integration unit 103.
- the search result integration means 103 is connected to the search expression separation means 102 and receives an integration script from the search expression separation means 102.
- the search result integration means 103 is connected to the semantic relation search means 104 and the 3D space search means 105, and integrates the search results of the semantic relation search means 104 and the search results of the 3D space search means 105 based on the integration script. .
- the search result integration unit 103 identifies a component that satisfies the search formula input from the search formula input unit by executing a 3D space search formula based on the search result of the semantic related search formula according to the integration script.
- the search result integration unit 103 outputs information of the obtained result (information representing a part satisfying the search formula input by the search formula input unit 201) to the search result display unit 202.
- the search result display unit 202 is connected to the search result integration unit 103, and displays information representing the search result (part) input from the search result integration unit 103.
- the search result display unit 202 is a screen device that displays the search result, and is a liquid crystal display as an example. A single independent display or a mobile terminal display may be used. It can be output as text, or the searched parts can be displayed as a 3D image.
- the building information DB 106 stores the information (relation model) of the semantic relationship established between the parts (or objects) constituting the building.
- the relationship model is a building information model (BIM: Building Information Model) as an example.
- BIM Building Information Model
- the form of the relationship model may be arbitrary, but as an example, the relationship model includes entities classified for each part constituting the building and relationships (semantic relationships) established between the entities.
- it may be a database (relation model) whose schema is IFC (Industry Foundation Classes, ISO16739) that defines semantic information including connection relationships between entities.
- the relationship model may be represented by a class diagram.
- Figure 2 shows a class diagram extracted from ISO 16739: 2013 Industry Foundation Classes (IFC) for data sharing in the construction and facility management industries.
- a rectangular frame represents a product or part class, and a frame in which the four corners of the rectangle are curved in an arc is a class representing a relationship between classes (in this example, IfcRelSpaceBoundary). Between the rectangles connected by the straight solid line, the is-a relationship is expressed from the upper level to the lower level. For example, IfcProduct is an IfcElement (IfcProduct is an IfcElement.).
- a room (IfcSpace) connected to a door (IfcDoor) is linked by a relationship (IfcRelSpaceBoundary).
- IfcRelSpaceBoundary Specifically, when tracing from the door (IfcDoor) to the room (IfcSpace), as a property, (INV) ProvidersBoundaries S [0 :? ] And RelatingSpace and (INV) BoundedBy S [0 :?] when tracing from the room (IfcSpace) to the door (IfcDoor) direction. ] And RelatedBuildingElement.
- ABSTRACT ABSTRACT
- ABSTRACT ABSTRACT
- ABSTRACT rectangular class with “ABS” written is an abstract class.
- a rectangular class in which “ABS” is not written is a normal class capable of generating an instance.
- the building information DB 106 will be described in more detail based on specific examples.
- parts (instances) constituting a building are classified by type (class) in accordance with the object-oriented concept.
- An instance is an object having a unique state, and is a materialization of a class.
- a relationship regarding inheritance between classes (the aforementioned is_a relationship), a structural hierarchical relationship (has_a relationship), and a building-specific relationship (eg, connection) established between classes are recorded. It also has information on the properties (attributes) of each part.
- the building information DB 106 has shape information of each part. This shape information is described in the absolute coordinate system of the space occupied by the building.
- the building information DB 106 may be provided with means for searching according to the concept of the object-oriented DB.
- BIMserver reads building information from an IFC file written according to the BIM standard and stores it as a database according to the object-oriented concept.
- BIMserver uses this database to provide a search service that executes a search expression represented by SQL.
- the external device transmits the search formula to the BIM server and receives the search result from the BIM server.
- BIMQL Building Information Model Model Query Query Language
- BIMQL Building Information Model Model Query Query Language
- Example 1 An example of a search for finding a door in which a difference in floor height between two rooms is 200 mm or more assuming two rooms connected via a door is shown. An example of this retrieval formula is shown as retrieval formula 1 below.
- the search formula is input from the search formula input unit 201. If the 3D model editor is used in addition to directly inputting the search formula, the connection between the door and the room and the relationship between the floors may be input as a 3D diagram. In this case, the input 3D diagram is expanded into a search expression by the analysis unit 101 or another arbitrary unit.
- IfcDoor specifies an instance whose type is "Door".
- an instance satisfying the conditions below Where is searched and returned as $ Var1 in the Select statement.
- Use ConnectedSpace property to acquire the room (s) connected from the instance with $ Var1.ConnectedSpace and substitute the number of rooms acquired into Rooms.
- the absolute value of the difference between the floor heights of the acquired rooms Rooms [0] and Rooms [1] (Rooms [0] .floor.height, Rooms [1] .floor.height) is obtained by Abs ().
- a Door instance with a value greater than 20cm is selected as $ Var1.
- Example 2 As another example, an example of a search for finding a corner in a building where a mirror is not installed is shown. An example of this search formula is shown below as search formula 2.
- IfcCorner specifies an instance whose type is "Corner”.
- the value of the Mirror property is null, that is, a Corner instance without a mirror is found and returned as $ Var1.
- search example of 3D space search For example, an example of a search formula when searching for an object included in a range of a 30-degree cone from a certain starting point (viewpoint) with respect to a certain direction is shown.
- the following search formula 3 is an example.
- ⁇ Search expression 3> Cone 3DCone (poinsts, dir, 30)
- Objects 3DGetInclude (Cone)
- 3DCone represents an object that represents a cone of 30 degrees from the starting point points in the direction of dir. This object is given to Cone by an assignment statement.
- 3DInclude Cone
- an object (part) included in this Cone is acquired and given to Objects by an assignment statement.
- 3DIntersect an instruction for acquiring an area where specified objects intersect.
- 3DIntersect an instruction for acquiring an area where specified objects intersect.
- a logical operation between designated objects for example, a logical operation instruction (Intersect) indicating whether or not the designated objects intersect.
- Intersect a logical operation instruction
- FIG. 3 is a plan view of a certain place in the building schematically showing the contents of the retrieval formula 4. A straight passage is bent at a right angle in the middle, and a mirror is arranged at the corner.
- the above search expression may be directly input, or a mirror is installed at a corner using a 3D editor, but the mirror is not visible at a viewing angle from a path toward the corner. May be defined on a 3D screen, and this may be input as a search expression by expanding it with a 3D editor or another conversion application.
- IfcCorner specifies an instance whose type is "Corner”.
- an instance satisfying the conditions below Where is searched and returned as $ Var1 in the Select statement.
- $ Var1.Mirror! Null indicates that the value of the Mirror property is not null, that is, a mirror is installed. “!” Represents negation.
- Var.AdjacentConnections represents a corner connection point (Connections) and is obtained as Connections.
- two connection points Connections [0] and Connections [1] are acquired.
- 3DCorn (Connections [0] .points, Connections [0] .dir, 30) is the direction set for the connection point from the position or coordinate point (Connections [0] .points) of the connection point Connections [0] Looking at (Connections [0] .dir), it points to a cone of 30 degrees and enters this into Cone1.
- 3DCorn (Connections [1] .points, Connections [1] .dir, 30) is set to the connection point from the connection point Connections [1] position or coordinate point (Connections [1] .points). Looking in the direction (Connections [1] .dir), it points to a 30 degree cone, which is entered into Cone2.
- 3D Intersect (Cone1, Cone2) represents the space (intersection) where the cones Cone1, Cone2 intersect, and this is input to Intersect.
- 3DIsIntersect (Cone1, Cone2) is a logical expression that determines whether or not the cones Cone1, Cone2 intersect. Returns true if crossing, false otherwise.
- 3DInclude (Intersect, $ Var.Mirror.geometory) is a logical expression that determines whether or not the intersection Intersect includes a mirror mirror geometry ($ Var.Mirror.geometory). Returns true if the mirror geometry is included, false otherwise.
- the geometric shape is included, but it may be defined so as to indicate a case where a part of the geometric shape is included.
- 3DIntercept (Connections [0] .points, $ Var.Mirror.geometory) is an object that obstructs visibility between the connection point position (Connections [0] .points) and the mirror geometry This is a logical expression for determining whether there is an object. Returns true if there is an obstacle, false otherwise.
- 3DIntercept (Connections [1] .points, $ Var.Mirror.geometory) determines if there is an obstacle between the location of the connection point (Connections [1] .points) and the mirror geometry. Is a logical expression. Returns true if there is an obstacle, false otherwise.
- the search expression 4 is declaratively described in an SQL style, but the 3D space search portion is procedurally processed. Therefore, as described later, the 3D space search portion and the other portion (semantic relations) A search expression suitable for each of them (that is, interpretable by the meaning-related search means and the 3D space search means) is generated.
- the analysis unit 101 analyzes the search expression and generates structure information of the search expression. Specifically, as the structure information of the search expression, the search expression is expanded into a syntax tree according to the grammar of the search expression. If there is an inconsistency or error in the search expression, this is indicated by the user via the display device. May be notified.
- the generation of the syntax tree may use any existing method, and a specific example will be described later.
- the search expression separating means 102 analyzes the syntax tree and separates it into a part (subtree) related to semantic-related search and a part (subtree) related to 3D space search, and from each of them, the semantic-related search expression and 3D space search expression (3D space search function) is generated. In addition, the search expression separating unit 102 generates information (integrated script) representing an integration procedure of the semantic related search expression and the 3D space search expression.
- a syntax tree is generated from the search expression 4 described above, and is separated into a part (subtree) related to a semantic relation search and a part (subtree) related to a 3D space search, respectively.
- An example of generating (3D space search function) is shown below.
- the 3D space search function is expressed in a procedural language function format, and is composed of variable definitions and conditional statements. This function returns true or false as a return value.
- the function 3Dfunc1 has corner and connections as arguments, and receives these as execution results (search results) of the semantic related search expression.
- Cone1 and Cone2 are each defined by var.
- 3DIsIntersect Cone1, Cone2
- And 3DInclude Intersect, corner.Mirror.geometory
- the search expression separating unit 102 generates information (integration script) representing the integration procedure of the semantic related search expression and the 3D space search expression.
- integration script information representing the integration procedure of the semantic related search expression and the 3D space search expression.
- integration script 1 let res1 semantic search results (booleanfilter (map (fun x (3Dfunc1 (get2nd x))) res1) (map (get1st res1)) ) )
- ⁇ Map applies f () to each element in f () and takes the set of the results.
- ⁇ Funx in (map (fun x (3Dfunc1 (get2nd x))) res1) defines an anonymous function.
- the semantic related search means 104 performs a search based on the semantic related search formula 1 to obtain a set of search results (corresponding to the “semantic related search results” of the integrated script). Each element of the search result set is an argument of 3Dfunction1 and is ($ Var1, Connections). A set of search results is passed to the search result integration unit 103.
- map f (a, b, c, d) is a process of applying f () to each element in f () and taking the set of the results.
- booleanfilter ⁇ false, true, true, false ⁇ ⁇ a, b, c, d ⁇ retrieves only the elements whose corresponding value is true from ⁇ a, b, c, d ⁇ (b, c).
- booleanfilter map f (a, b, c, d) ⁇ a, b, c, d ⁇ Is booleanfilter ⁇ f (a), f (b), f (c), f (d) ⁇ It is expressed as ⁇ a, b, c, d ⁇ . Furthermore, if f (a), f (b), f (c), f (d) are false, true, true, false, respectively, booleanfilter ⁇ false, true, true, false ⁇ ⁇ a, b, c, d ⁇ Finally (b, c) is obtained.
- the search result integration unit 103 applies the 3D space search unit 105 to all elements (search results) in the set, as indicated by the map function, for the set of search results output from the semantic related search unit 104. To perform the calculation. For example, when the number of elements of the search result set that is the output of the semantic relation retrieval unit 104 is 3, that is, when the semantic relation retrieval result is ⁇ element 1, element 2, element 3 ⁇ , 3Dfunc1 (element 1), 3Dfunc1 (Element 2), 3Dfunc1 (Element 3) is calculated.
- the 3D space search unit 105 performs a 3D space search (implementing the 3D search function 1 described above) on the argument given based on the search result of the semantic relation search unit 104, and the result is true or false. return.
- 3Dfunc1 (element 1), 3Dfunc1 (element 2), and 3Dfunc1 (element 3) are calculated, and the result is returned as true or false.
- the search result integration unit 103 uses the booleanfilter to match the meaning-related search unit 104 corresponding to true. Select search results.
- booleanfilter ⁇ true, false, true ⁇ ⁇ Element 1, Element 2, Element 3 ⁇
- the true element is selected from ⁇ element 1, element 3 ⁇ .
- the search for the building information DB 106 is separated into a part related to the 3D space search and a part not related to the 3D space search (a part related to the semantic related search), and each is integrated to obtain a desired search result. Can be obtained.
- the object contained in the cone (Cone1) is acquired by 3DGetInclude (Cone1) and assigned to the variable Objects.
- the number of objects to be acquired is not limited to zero or one, and may be plural.
- search formula 5 for a corner where a mirror is installed, an object included in a cone of 30 degrees when viewing a certain direction (dir) is obtained from the connection point of the corner, and an instance of the corner ($ Var1 ) And the acquired object (Objects).
- the analysis unit 101 parses the search expression 5 to generate a syntax tree.
- FIG. 4 shows a syntax tree obtained by parsing the search expression 5. Note that “eq”, “assign”, “and”, and the like are information representing the meaning of an operator, that is, minutes. “3dassign” and “3dfunc” indicate that the sentence is analyzed as a sentence related to 3D space search as a result of syntax analysis. As shown in FIG. 4, the syntax tree is composed of 13 sentences.
- ID is a sentence number
- OP is an operator
- args is an argument
- up is an ID of an upper sentence of this sentence
- invars is a variable list referred to by the sentence
- outvars is a variable list output by the statement.
- a low-order sentence ID is given as a list as a logical operator (and and the like) as an argument.
- 11 such as ⁇ “Cone1”, 11 ⁇ of ID10 whose operator is 3dassigne indicates a sentence having a sentence ID of 11. If the syntax tree is represented by a hierarchical structure following the up relationship, it is as shown in FIG.
- the search expression separating unit 102 decomposes the parsed syntax tree into a part (subtree) related to the semantic related search and a part (subtree) related to the 3D space search, respectively, and the semantic related search expression and the 3D space, respectively. Expands to a search function (3D space search formula).
- the search expression separating unit 102 generates an integrated script for integrating the search results of the semantic related search expression and the 3D space search expression, and passes the integrated script to the search result integrating unit 103.
- it shows more concretely.
- the part (3dassign, 3dfunc) related to 3D space search is specified in the syntax tree, and the syntax tree is separated in units of blocks (BLK).
- the entire syntax tree is represented as an entire block BLK0
- the syntax tree (BLK0) can be separated into two blocks, a block BLK1 and a block BLK2. That is, the hierarchical structure of BLK0, BLK1, and BLK2 is as shown in FIG.
- the subtree (block) of BLK1 is composed of eight sentences from sentence 1 to sentence 8, as indicated by a frame 301 in FIG.
- the subtree (block) of BLK2 is composed of five sentences 9 to 13 as shown by a frame 302 in FIG. In this way, the syntax tree can be separated into two blocks.
- BLK2's invars are set as function arguments. Generate an assignment expression based on the 3dasign statement. A function is generated by expanding the arguments of a 3dfunc statement according to a predetermined rule. In this example, this function is the input side of the assignment statement. BLK2's outvars is set to the return value (for example, return a return command to return outvars). As a result, the following 3D space search function (3D space search expression) is obtained. As a result, the block (BLK2) is expanded into a 3D space search function. A rule for converting the tree structure into a 3D space search function format is determined in advance.
- BLK1 Extracting the dependency of variables (analyzing the interaction between variables), BLK1 can obtain the dependency from $ Var1 to Connections. With BLK2, you can get a dependency from Connections to Object. Therefore, it can be seen that Objects have a one-to-one correspondence with $ Var1 given first.
- the format of the entire return value is a list of pairs of $ Var1 and Objects as follows.
- the number of elements in the list may be one.
- ⁇ $ Var1, Objects ⁇ corresponds to one element.
- () represents a list.
- (Let a b) assigns b to variable a.
- (Union list 1 list 2) calculates the union of lists 1 and 2 as a list.
- Map fun1 (a b c d)) expands fun1 into each element and becomes (fun (a) fun (b) fun (c)).
- (Get1st (a b)) gets (a) and (get2nd (a b)) gets (b).
- the semantic search result returns a list of ⁇ $ Var1, Connections ⁇
- the 3D spatial search function receives Connections as an input and outputs Objects.
- the element (first sub-element) and the second element (second sub-element) in the element are input to the 3D space search function to obtain a list of search result sets.
- “Process” is a result of a search performed by inputting the first element (first sub-element) in the element and the second element (second sub-element) in the element to the 3D space search function.
- Corresponding to fun x represents the anonymous function (x) as described above.
- x represents the element. For example, get1st x obtains the first element (first subelement) of x. Therefore, the integrated script is finally obtained as follows.
- the “let res1 meaning-related search result” is the meaning-related search result ⁇ $ Var1, Connections ⁇ , ⁇ $ Var1, Connections ⁇ , ..., ⁇ $ Var1, Connections ⁇ Is all assigned to res1.
- the final output statement of block BLK2 is not a statement whose operator is 3dassign or 3dfunc, a template of the following type is selected. That is, the final output sentence is a sentence corresponding to “In ($ Var1.Mirror, Objects)”, which corresponds to a logical operation sentence (the operator (OP) is in).
- the semantic-related search result returns a list of ⁇ $ Var1, Connections ⁇ , whereas the 3D spatial search function receives Connections as an input and outputs Objects.
- True if $ Var1.Mirror is included in the Objects set, false otherwise.
- select only the element corresponding to true and then extract the first element (first subelement) of the selected element (ie ⁇ $ Var1, Connections ⁇ ) To get.
- Results list is a list of the first element (first subelement) of ⁇ $ Var1, Connections ⁇ (map get1st res1) It is expressed.
- processing is the result of inputting the second element (second sub-element) into the 3D space search function (fun x (3dfunc (get2nd x)) It is expressed. Therefore, the following integrated script is finally obtained.
- FIG. 8 shows a flowchart of the overall operation of the search device according to this embodiment.
- the analysis unit 101 performs an analysis process on the search expression input from the search expression input unit 201 to generate a syntax tree (S101).
- FIG. 9 shows a flowchart of the detailed operation of the analysis process. Parsing is performed on the search expression input from the search expression input unit (S201). If there is an error, the error display is terminated (S202). If there is no error, a syntax tree is created ( S203), the process ends.
- FIG. 10 shows a flowchart of the detailed operation of the search expression separation process.
- a part related to the 3D space search is specified for the syntax tree (S301), and the specified part (subtree) is separated from the syntax tree (S302).
- An argument is specified (extracted) from the separated part (S303).
- a semantic related search expression is created from a part of the syntax tree other than the part specified in step S301 (S304).
- a 3D space search function (3D space search expression) is created from the part related to 3D space search and the extracted argument (S305).
- an integrated script for integrating the search result of the semantic related search expression and the search result of the 3D space search function is generated (S306).
- the execution result (search result) of the semantic related search formula is applied to the 3D spatial search formula, and the search result satisfying the 3D spatial search formula is extracted from the search results of the semantic related search formula. This is a script describing this. Note that the order of the steps of this flow is not limited to FIG.
- FIG. 11 shows a flowchart of detailed operations of search processing and integration processing.
- the semantic related search means 104 performs a semantic related search using the semantic related search formula (S401), and then performs a 3D spatial search based on the search result of the semantic related search and the 3D spatial search formula (S402). These search results are integrated according to the integration script (S403). More specifically, by executing the 3D space search formula based on the search result of the semantic related search formula according to the integrated script, a component that satisfies the search formula input from the search formula input unit is specified.
- the search result integration unit 103 outputs the obtained result (information of searched parts).
- FIG. 12 shows a hardware configuration example of the search device.
- the search device includes a CPU 401, an input unit 402, a display unit 403, a communication unit 404, a main storage unit 405, and an external storage unit 406, which are connected to each other via a bus 407 so as to communicate with each other.
- the input unit 402 includes input devices such as a keyboard and a mouse.
- the display unit 403 includes a display such as an LCD (Liquid Crystal Display) and a CRT (Cathode Ray Tube).
- the communication unit 404 includes a wireless or wired communication unit, and performs communication using a predetermined communication method.
- the external storage unit 406 includes, for example, a storage medium such as an HDD, an SSD, a memory device, a CD-R, a CD-RW, a DVD-RAM, and a DVD-R.
- the external storage unit 406 stores a program for causing the CPU 401 to execute the functions of the processing units in FIG.
- the building information DB 106 is also included in the external storage unit 406. Although only one external storage unit 406 is shown here, a plurality of external storage units 406 may exist.
- the main storage unit 405 expands the control program stored in the external storage unit 406 under the control of the CPU 401, and stores data necessary for executing the program, data generated by the execution of the program, and the like.
- the main storage unit 405 includes an arbitrary memory such as a nonvolatile memory.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
[課題]部品間の意味関係と、部品の3次元情報とを利用した、柔軟な検索を可能にする。 [解決手段]本発明の実施形態としての検索装置は、部品間に成立する意味関係、および前記部品の3次元情報を記憶する記憶手段と、前記意味関係を利用して部品の条件を定義する第1検索条件と、前記3次元情報とを利用して部品の条件を定義する第2検索条件とを含む入力検索式を解析して構造情報を生成する解析手段と、前記意味関係に基づく検索式を解釈および実行可能な第1検索手段と、前記3次元情報に基づく検索式を解釈および実行可能な第2検索手段と、前記構造情報において前記第1検索条件に対応する部分から第1の検索式を生成し、前記第2検索条件に対応する部分から第2の検索式を生成する生成手段と、前記第1検索手段による前記第1の検索式の検索結果と、前記第2検索手段による前記第2の検索式の検索結果を統合する検索結果統合手段とを備える。
Description
本発明の実施形態は、検索装置および検索方法に関する。
従来の検索技術として、ビル情報モデルに含まれる建物の情報を、ビル情報の意味モデル(例えば、IFC(Industry Foundation Classes,ISO16739)に代表されるスキーマにて定義される)に従って検索するものがあった。しかしながら、建物部品の形状および位置といった、建物部品の3D情報を活用しておらず、柔軟な検索機能を提供しているとは言えなかった。
本発明の実施形態は、部品間の意味関係と、部品の3次元情報とを利用した、柔軟な検索を可能にしようとするものである。
本発明の実施形態は、記憶手段と、解析手段と、第1検索手段と、第2検索手段と、生成手段と、検索結果統合手段とを備える。
前記記憶手段は、3次元空間に配置された部品について、前記部品間に成立する意味関係、および前記部品の3次元情報を記憶する。
前記解析手段は、前記意味関係を利用して部品の条件を定義する第1検索条件と、前記3次元情報を利用して部品の条件を定義する第2検索条件とを含み、前記第1検索条件と前記第2検索条件を満たす部品の入力検索式を解析することにより、前記入力検索式の構造情報を生成する。
前記第1検索手段は、前記意味関係に基づく検索式を解釈および実行可能である。
前記第2検索手段は、前記3次元情報に基づく検索式を解釈および実行可能である。
前記生成手段は、前記構造情報において前記第1検索条件に対応する部分から、前記第1検索手段により解釈可能な第1の検索式を生成し、前記構造情報において前記第2検索条件に対応する部分から、前記第2検索手段により解釈可能な第2の検索式を生成し、前記第1の検索式と前記第2の検索式の検索結果を統合するための統合情報を生成する。
前記検索結果統合手段は、前記第1検索手段による前記第1の検索式の検索結果と、前記第2検索手段による前記第2の検索式の検索結果を前記統合情報に基づき統合することにより、前記入力検索式を満たす部品を特定する。
以下、図面を参照しながら、本発明の実施形態について説明する。
図1に、本実施形態に係る検索装置のブロック図を示す。建物情報DB(記憶手段)106には、3次元空間に配置される部品(あるいはオブジェクト)として、建物を構成する部品間に成立する意味関係を表す情報(関係モデル)が記憶されている。また建物情報DB106には、各部品の3次元(3D)情報あるいは3Dモデルが格納されている。3次元情報は、形状情報(geometry)を含む。この形状情報(geometory情報)は、建物の占める空間の絶対座標系にて記述されており、従って、物品の位置情報も含んでいる。建物情報DB106の詳細は後述する。
検索式入力手段201は、検索式を入力するためのインターフェイスである。検索式入力手段201で入力される検索式は、意味関係を利用して部品の条件を定義する第1検索条件と、3次元情報を利用して部品の条件を定義する第2検索条件とを含み、第1検索条件と第2検索条件を満たす部品を検索するものである。検索式入力手段201は、一例として、タッチパネル、マウス、およびキーボード等のユーザにより操作されるインターフェイスでもよいし、検索式が格納された記憶装置でもよいし、記録媒体からデータを読み出す読み出しドライブ等でもよい。記憶装置は、SSD、ハードディスク、USBメモリ等の永続的に情報を記憶する装置または不揮発性メモリでもよいし、DRAM等の揮発性のメモリでもよい。読み出しドライブは、一例として、DVD、CD-ROM等のドライブである。
解析手段101は、検索式入力手段201に接続されており、検索式入力手段201から入力された検索式を構文解析して、検索式の構造情報を生成する。具体的に、検索式分離手段102が解釈可能な形式、例えば木構造に変換する。ここでは木構造に変換する場合を想定する。解析手段101は、検索式分離手段102に接続されており、変換により得られた木構造の検索式を、検索式分離手段102に出力する。
検索式分離手段102は、解析手段101から木構造を受け取り、意味関係に基づく検索に関連する部分と、3D空間検索(空間検索とも呼ぶ)に関連する部分とに分解し、それぞれから意味関連検索手段104(第1検索手段)により解釈可能な検索式(意味関連検索式)および3D空間検索手段105(第2検索手段)により解釈可能な検索式(3D空間検索式)を生成する。3D空間検索とは、3D空間において、3D情報を利用した検索、例えば、3D空間において、指定した範囲に含まれるオブジェクト(部品)を検索するものである。範囲の指定は、任意の方法でよく、例えば起点(視点)と、方位と、形状とによって指定してもよいし、3D空間において複数の範囲の交差領域でもよい。オブジェクトが、指定された範囲に含まれるとは、オブジェクトの全部が当該範囲に含まれるとしてもよいし、オブジェクトの少なくとも一部が当該範囲に含まれるとしてもよい。また、検索式分離手段102は、意味関連検索式の検索結果と、3D空間検索式の検索結果との統合手順を表す統合情報(統合スクリプト)を生成する。統合スクリプトの一形態は、意味関連検索式の実行結果(検索結果)を、3D空間検索式に適用して、意味関連検索式の検索結果のうち、3D空間検索式を満たす検索結果を抽出することを記述したスクリプトである。
意味関連検索手段104は、検索式分離手段102に接続されており、検索式分離手段102から意味関連検索式を受け取る。意味関連検索手段104は、当該意味関連検索式に基づき、建物情報DB106を検索し、検索結果として、所望の建物部品(オブジェクト)を取得する。意味関連検索手段104は、例えば所定の問い合わせ言語で記述された検索式を解釈および実行可能である。意味関連検索手段104の動作は、検索結果統合手段103により制御可能である。
3D空間検索手段105は、検索式分離手段102に接続されており、検索式分離手段102から3D空間検索式を受け取る。3D空間検索手段105は、当該3D空間検索式に基づき、建物情報DB106における3D情報を用いて検索を行う。3D空間検索手段105は、例えば所定の手続型言語で記述された検索式を解釈および実行可能である。3D空間検索手段105の動作は、検索結果統合手段103により制御可能である。
検索結果統合手段103は、検索式分離手段102に接続されており、検索式分離手段102から統合スクリプトを受け取る。また検索結果統合手段103は、意味関連検索手段104と3D空間検索手段105に接続されており、統合スクリプトに基づき、意味関連検索手段104の検索結果と3D空間検索手段105の検索結果を統合する。具体的に、検索結果統合手段103は、統合スクリプトに従って、意味関連検索式の検索結果に基づき3D空間検索式を実行することで、検索式入力手段から入力された検索式を満たす部品を特定する。検索結果統合手段103は、得られた結果の情報(検索式入力手段201で入力された検索式を満たす部品を表す情報)を検索結果表示手段202に出力する。
検索結果表示手段202は、検索結果統合手段103に接続されており、検索結果統合手段103から入力された検索結果(部品)を表す情報を表示する。検索結果表示手段202は、検索結果を表示する画面装置であり、一例として、液晶表示ディスプレイである。単独の独立したディスプレイでもよいし、携帯端末のディスプレイでもよい。テキストとして出力することもできるし、検索された部品を、3D画像で表示することもできる。
ここで、前述したように、建物情報DB106には、建物を構成する部品(あるいはオブジェクト)間に成立する意味関係の情報(関係モデル)が記憶されている。関係モデルは、一例としてビル情報モデル(BIM:Building Information Model)である。関係モデルの形式は任意で良いが、一例として、関係モデルが、建物を構成する部品毎にクラス分けされたエンティティと、エンティティ間に成り立つ関係(意味関係)とを含む。例えば、エンティティ間の接続関係を含む意味情報を規定するIFC(Industry Foundation Classes,ISO16739)をスキーマとしたデータベース(関係モデル)でもよい。この場合、関係モデルは、クラス図によって表現されてもよい。
図2に、ISO 16739:2013 Industry Foundation Classes (IFC) for data sharing in the construction and facility management industriesから抜粋したクラス図を示す。矩形の枠が製品または部品のクラスを表し、矩形の四隅が弧状にカーブしている枠は、クラス間の関係を表すクラス(この例ではIfcRelSpaceBoundary)である。直線の実線で結合された矩形間は、上位から下位方向へ、is-a関係を表している。例えばIfcProductはIfcElementである(IfcProduct is an IfcElement.)。
意味情報の一例として、例えばドア(IfcDoor)に接続する部屋(IfcSpace)が、関係(IfcRelSpaceBoundary)によって紐づけられている。具体的に、ドア(IfcDoor)から部屋(IfcSpace)方向へ辿る場合は、プロパティとして、(INV)ProvidesBoundaries S[0:?]とRelatingSpaceとを介して紐付けられ、部屋(IfcSpace)からドア(IfcDoor)方向へ辿る場合は、(INV)BoundedBy S[0:?]とRelatedBuildingElementとを介して紐付けられる。
「ABS」はABSTRACTのことであり、「ABS」が記入された矩形のクラスは、抽象クラスのことである。「ABS」が記入されていない矩形のクラスは、インスタンスの生成が可能な通常のクラスである。
以下、具体的な事例に基づき、建物情報DB106について、さらに詳細に説明する。
建物情報DB106では、オブジェクト指向の考え方に従って、建物を構成する部品(インスタンス)が、型(クラス)毎に分類されている。インスタンスは、固有の状態を持つオブジェクトであり、クラスを実体化したものである。また、クラス間の継承に関する関係(前述したis_a関係)、構造上の階層関係(has_a関係)および、クラス間に成立する建物特有の関係(例:接続)が記録されている。また、各部品のプロパティ(属性)に関する情報を有している。
また、前述したように、建物情報DB106は、各部品の形状情報を持っている。この形状情報は、建物の占める空間の絶対座標系にて記述されている。
また建物情報DB106には、オブジェクト指向DBの考え方に従って、検索のための手段が具備されていてもよい。このように検索手段を備えた建物情報DBの例として、BIMserverがある。BIMserverは、ビルの情報を、BIM標準に従って記述されたIFCファイルから読み込み、これをオブジェクト指向の考え方に沿ってデータベースとして保持する。BIMserverは、このデータベースを利用して、SQLに代表される検索式を実行する検索サービスを提供している。外部の装置は、検索式をBIMサーバに送信し、BIMサーバから検索結果を受け取る。BIMをデータベースに保存し、これに対して検索を行う言語の既存技術の例としては、BIMQL(Building Information Model Query Language)がある。
以下、部品(オブジェクト)間に成立する関係(「接続」等の意味関係)に関する情報を利用した検索の例を示す。
(例1)ドアを介して接続する2つの部屋を想定し、2つの部屋の床の高さの差分が200mm以上であるドアを見つける検索の例を示す。この検索式の例を、以下に検索式1として示す。検索式は、検索式入力手段201から入力する。検索式を直接入力する他、3Dモデルエディタを用いるならば、ドアと部屋の接続、床間の関係を3D図として入力してもよい。この場合、入力された3D図を、解析手段101または別の任意の手段で、検索式に展開する。ここで、検索式は、3D空間上での具体的な状況を記述するものであり、手続き的な処理または制御構文を持たないものを想定する。説明のため、本実施形態で用いる検索式は、SQL風の文法に準拠するものとする。なお、下記のAbs()は絶対値を計算する関数である。
<検索式1>
Select $Var1
Where $Var1.type == IfcDoor
Rooms = $Var1.ConnectedSpace
Abs(Rooms[0].floor.height ?Rooms[1].floor.height) > 200
(例1)ドアを介して接続する2つの部屋を想定し、2つの部屋の床の高さの差分が200mm以上であるドアを見つける検索の例を示す。この検索式の例を、以下に検索式1として示す。検索式は、検索式入力手段201から入力する。検索式を直接入力する他、3Dモデルエディタを用いるならば、ドアと部屋の接続、床間の関係を3D図として入力してもよい。この場合、入力された3D図を、解析手段101または別の任意の手段で、検索式に展開する。ここで、検索式は、3D空間上での具体的な状況を記述するものであり、手続き的な処理または制御構文を持たないものを想定する。説明のため、本実施形態で用いる検索式は、SQL風の文法に準拠するものとする。なお、下記のAbs()は絶対値を計算する関数である。
<検索式1>
Select $Var1
Where $Var1.type == IfcDoor
Rooms = $Var1.ConnectedSpace
Abs(Rooms[0].floor.height ?Rooms[1].floor.height) > 200
IfcDoorは、型(type)が、"Door"であるインスタンスを指定している。この検索式では、Where以下の条件を満たすインスタンスを検索し、Select文で$Var1として返す。インスタンスから接続する部屋(複数)をConnectedSpace プロパティを利用して、$Var1.ConnectedSpaceで取得して、取得した部屋数をRoomsに代入する。取得した部屋Rooms[0]、Rooms[1]のフロアの高さ(Rooms[0].floor.height 、Rooms[1].floor.height)の差の絶対値をAbs()により求め、当該絶対値が20cmより大きいDoorインスタンスを、$Var1として選択している。
(例2)別の例として、建物内のコーナー(角)のうち、鏡が設置されてない角を見つける検索の例を示す。この検索式の例を、以下に検索式2として示す。
<検索式2>
Select $Var1
Where $Var1.type == IfcCorner
$Var.Mirror == null
<検索式2>
Select $Var1
Where $Var1.type == IfcCorner
$Var.Mirror == null
IfcCornerは、型(type)が、"Corner"であるインスタンスを指定している。Mirrorプロパティの値がヌル(null)、すなわち鏡が設置されていないCornerインスタンスを見つけ、$Var1として返している。
次に、3D空間検索の検索例を示す。例えば、ある起点(視点)から、ある方位に対して、30度の円錐の範囲に含まれるオジェクトを検索する場合の検索式の例を示す。以下の検索式3がその一例である。
<検索式3>
Cone =3DCone(poinsts,dir,30)
Objects=3DGetInclude(Cone)
<検索式3>
Cone =3DCone(poinsts,dir,30)
Objects=3DGetInclude(Cone)
3DCone(poinsts,dir,30)は、起点pointsから、dirの方向に見て30度の円錐を表すオブジェクトを表す。このオブジェクトを代入文により、Coneに与えている。3DInclude(Cone)で、このConeに含まれるオブジェクト(部品)を取得して、代入文により、Objectsに与えている。
ここでは、3D空間内で指定された範囲に含まれるオブジェクトを取得する例を示したが、指定されたオブジェクト同士が交差する領域を取得する命令(3DIntersect)もある。また、指定されたオブジェクト同士の論理演算、たとえば指定されたオブジェクト同士が交差するか否かの論理演算命令(Intersect)などもある。その他、3D空間に関する様々な命令が存在する。
以下では、部品間の意味関係の情報を利用した検索(意味関係検索)と、3D空間検索を組み合わせた例を示す。本実施形態では、このような検索式を検索式入力手段201から入力する。この検索式の例を、検索式4に示す。図3に検索式4の内容を模式的に表した建物内のある箇所の平面図を示す。直線上の通路が途中で直角に曲がっており、角部には鏡が配置されている。
<検索式4>
--------------------------------------------------
Select $Var1
Where $Var1.Type == IfcCorner
$Var1.Mirror !=null
Connections = $Var.AdjacentConnections
Cone1= 3DCorn(Connections[0].points,Connections[0].dir, 30)
Cone2= 3DCorn(Connections[1].points,Connections[1].dir,30)
Intersect = 3DIntersect(Cone1,Cone2)
3DIsIntersect(Cone1,Cone2)
3DInclude(Intersect, $Var.Mirror.geometory)
(3DIntercept(Connections[0].points,$Var.Mirror.geometory) ||
3DIntercept(Connections[1].points,$Var.Mirror.geometory))
--------------------------------------------------
<検索式4>
--------------------------------------------------
Select $Var1
Where $Var1.Type == IfcCorner
$Var1.Mirror !=null
Connections = $Var.AdjacentConnections
Cone1= 3DCorn(Connections[0].points,Connections[0].dir, 30)
Cone2= 3DCorn(Connections[1].points,Connections[1].dir,30)
Intersect = 3DIntersect(Cone1,Cone2)
3DIsIntersect(Cone1,Cone2)
3DInclude(Intersect, $Var.Mirror.geometory)
(3DIntercept(Connections[0].points,$Var.Mirror.geometory) ||
3DIntercept(Connections[1].points,$Var.Mirror.geometory))
--------------------------------------------------
この事例では、角(IfcCorner)に鏡が設置してある場合でも、視界を遮る他のオブジェクト(障害物)により、角につながる経路から鏡が見えないこととなる角を検索している(なお図3では障害物を明示していない)。検索式入力手段201では、上記の検索式を直接入力してもよいし、3Dエディタを用いて、角に鏡が設置してあるが、角に向かう経路からの視野角で鏡が見えない場合を、3D画面で定義して、これを検索式に3Dエディタまたは別の変換アプリケーションにより展開して、入力してもよい。
IfcCornerは、型(type)が、"Corner"であるインスタンスを指定している。この検索式では、Where以下の条件を満たすインスタンスを検索し、Select文で$Var1として返す。$Var1.Mirror !=nullは、Mirrorプロパティの値がヌル(null)でない、すなわち鏡が設置されていることを示す。「!」は否定を表す。
$Var.AdjacentConnectionsは、角の接続点(Connections)を表し、これをConnectionsとして取得している。ここでは2つの接続点Connections[0]およびConnections[1]が取得される。
3DCorn(Connections[0].points,Connections[0].dir, 30)は、接続点Connections[0]の位置または座標点(Connections[0].points)から、当該接続点に設定されている方向(Connections[0].dir)に見て、30度の円錐を指し、これをCone1に入力している。
同様に、3DCorn(Connections[1].points,Connections[1].dir, 30)は、接続点Connections[1]の位置または座標点(Connections[1].points)から、当該接続点に設定されている方向(Connections[1].dir)に見て、30度の円錐を指し、これをCone2に入力している。
3DIntersect(Cone1,Cone2)は、円錐Cone1,Cone2が交差する空間(交差部)を表し、これをIntersectに入力している。
3DIsIntersect(Cone1,Cone2)は、円錐Cone1,Cone2が交差しているか否かを判定する論理式である。交差していれば真、交差していなければ偽を返す。
3DInclude(Intersect, $Var.Mirror.geometory)は、交差部Intersectが 鏡の幾何形状($Var.Mirror.geometory)を含んでいるかを判定する論理式である。鏡の幾何形状を含んでいれば真、含んでいなければ偽を返す。幾何形状を含んでいるとは、ここでは幾何形状の全てを包含している場合を想定しているが、一部が包含されている場合を指すように定義してもよい。
3DIntercept(Connections[0].points,$Var.Mirror.geometory)は、接続点の位置(Connections[0].points)と、鏡の幾何形状との間に、視界を阻害しているオブジェクト(障害物)があるかを判定する論理式である。障害物があれば真、なければ偽を返す。
同様に、3DIntercept(Connections[1].points,$Var.Mirror.geometory)は、接続点の位置(Connections[1].points)と、鏡の幾何形状との間に障害物があるかを判定する論理式である。障害物があれば真、なければ偽を返す。
「||」は、論理和(OR)を表す。
よって、 (3DIntercept(Connections[0].points,$Var.Mirror.geometor) ||
3DIntercept(Connections[1].points,$Var.Mirror.geometory))
は、接続点の位置(Connections[0].points)と、鏡の幾何形状との間、および接続点の位置(Connections[1].points)と、鏡の幾何形状との間の少なくとも一方に障害物がある場合に真を返す。それ以外の場合は、偽を返す。
よって、 (3DIntercept(Connections[0].points,$Var.Mirror.geometor) ||
3DIntercept(Connections[1].points,$Var.Mirror.geometory))
は、接続点の位置(Connections[0].points)と、鏡の幾何形状との間、および接続点の位置(Connections[1].points)と、鏡の幾何形状との間の少なくとも一方に障害物がある場合に真を返す。それ以外の場合は、偽を返す。
上述の検索式では、上記のすべての条件が真となるようなインスタンスを検索する。
検索式4は、SQL風に宣言的に記述されるが、3D空間検索の部分は、手続き型の処理が行われるので、後述するように、3D空間検索の部分と、そうでない部分(意味関連検索の部分)に分離して、それぞれに適合した(すなわち、意味関連検索手段および3D空間検索手段により解釈可能な)検索式を生成する。
解析手段101は、検索式を解析して、検索式の構造情報を生成する。具体的に、検索式の構造情報として、検索式を、検索式の文法に従った構文木に展開する、検索式に不整合またはエラーがある場合は、この旨を、表示装置を介してユーザに通知してもよい。構文木の生成は、既存の任意の手法を用いればよく、具体例については後述する。
検索式分離手段102は、構文木を解析し、意味関連検索に係る部分(部分木)と、3D空間検索に係る部分(部分木)に分離し、それぞれから意味関連検索式と3D空間検索式(3D空間検索関数)を生成する。また、検索式分離手段102は、意味関連検索式と3D空間検索式の統合手順を表す情報(統合スクリプト)を生成する。
上述した検索式4から構文木を生成し、それぞれ意味関連検索に係る部分(部分木)と、3D空間検索に係る部分(部分木)に分離し、それぞれから意味関連検索式と3D空間検索式(3D空間検索関数)を生成する例を以下に示す。
<意味関連検索式1>
Select $Var1, $Connections
Where $Var1.Type == IfcCorner
$Var1.Mirror !=null
$Connections = $Var1.AdjacentConnections
Select $Var1, $Connections
Where $Var1.Type == IfcCorner
$Var1.Mirror !=null
$Connections = $Var1.AdjacentConnections
$Var1, $Connectionsは、以下の3D空間検索関数への引数cornerおよびconnectionsとしてそれぞれ渡される。意味関連検索式の読み方は、前述した説明から自明であるため省略する。なお、意味関連検索式で取得される角は、1つとは限らず、建物内に鏡のない角が複数あれば、複数の角が取得される。意味関連検索式1は、所定の問い合わせ言語で記述される。
<3D空間検索関数1>
function 3Dfunc1(corner,connections){
var Cone1= 3DCorn(connections[0].points,connections[0].dir,30)
var Cone2= 3DCorn(connections[1].points,connections[1].dir,30)
Intersect = 3DIntersect(Cone1,Cone2)
if (3DIsIntersect(Cone1,Cone2) &&
3DInclude(Intersect, corner.Mirror.geometory) &&
(3DIntercept(connections[0].points,corner.Mirror.geometor) ||
3DIntercept(connections[1].points,corner.Mirror.geometory)))
return true;
else
return false;
}
function 3Dfunc1(corner,connections){
var Cone1= 3DCorn(connections[0].points,connections[0].dir,30)
var Cone2= 3DCorn(connections[1].points,connections[1].dir,30)
Intersect = 3DIntersect(Cone1,Cone2)
if (3DIsIntersect(Cone1,Cone2) &&
3DInclude(Intersect, corner.Mirror.geometory) &&
(3DIntercept(connections[0].points,corner.Mirror.geometor) ||
3DIntercept(connections[1].points,corner.Mirror.geometory)))
return true;
else
return false;
}
3D空間検索関数は、手続き型言語の関数形式で表現され、かつ変数定義や、条件文から構成されている。この関数は、戻り値として、真(true)または偽(false)を返す。関数3Dfunc1は、cornerとconnectionsを引数に有し、これらを意味関連検索式の実行結果(検索結果)として受け取る。
2つの円錐3DCorn(conns[0].points,connections[0].dir, 30)、
3DCorn(conns[1].points,connections[1].dir,30)を、それぞれCone1およびCone2に代入している。Cone1およびCone2は、それぞれvarによって定義されている。
3DIsIntersect(Cone1,Cone2)が成立し、
かつ3DInclude(Intersect, corner.Mirror.geometory)が成立し、
かつ、(3DIntercept(conns[0].points,corner.Mirror.geometory) ||
3DIntercept(conns[1].points,corner.Mirror.geometory)))が成立した場合、真(true)が返され、それ以外の場合は、偽(false)が返される。
3DCorn(conns[1].points,connections[1].dir,30)を、それぞれCone1およびCone2に代入している。Cone1およびCone2は、それぞれvarによって定義されている。
3DIsIntersect(Cone1,Cone2)が成立し、
かつ3DInclude(Intersect, corner.Mirror.geometory)が成立し、
かつ、(3DIntercept(conns[0].points,corner.Mirror.geometory) ||
3DIntercept(conns[1].points,corner.Mirror.geometory)))が成立した場合、真(true)が返され、それ以外の場合は、偽(false)が返される。
また検索式分離手段102は、意味関連検索式と3D空間検索式の統合手順を表す情報(統合スクリプト)を生成する。以下は統合スクリプトの例である。
<統合スクリプト1>
(let res1 意味関連検索結果
(booleanfilter
(map (fun x (3Dfunc1 (get2nd x))) res1)
(map (get1st res1))
)
)
<統合スクリプト1>
(let res1 意味関連検索結果
(booleanfilter
(map (fun x (3Dfunc1 (get2nd x))) res1)
(map (get1st res1))
)
)
統合スクリプトの処理では、集合演算(map処理)とフィルタ処理(booleanfilter処理)が行われる。統合スクリプトは、本実施形態では関数型言語風の記述を採用しているが、他の形式で記述してもかまわない。
“()”はリストを表し、リストの最初が、“union”, “map”, “let”, “get1st”, “get2nd”, “booleanfilter”であるものは、以下の意味をもつ特別なリストであるとする(なお、上記の例では、“union”は含まれていない)。
・(let a b)はbを変数aに代入する
・(union リスト1 リスト2)は、リスト1,2の和集合を、リストとして計算する。例えば、union(a,b)(a,c)の結果は、(a,b,c)となる。
・mapは 、f()内の各要素についてf()を適用し、その結果の集合を取るもので、(map fun1 (a b c d))の場合、(fun1(a), fun1(b), fun1(c), fun1(d))となる。
・(get1st (a b))は(a)を得、(get2nd (a b))は(b)を得るものとする
・(booleanfilter (true false false true) (1 2 3 4))は、true/falseに応じて、(1 2 3 4)をフィルタリングする。具体的に(1 2 3 4)のうち、対応する値がtrueの要素のみを取り出す。この場合、(1 4)を得る。
・(map (fun x (3Dfunc1 (get2nd x))) res1) のfun xは無名関数を定義する。簡単な例として、 (fun x x*2)を考える。これは 無名関数(x)=x*2 を意味する。この場合、(map (fun x x*2) (1 2 3 4))は、(map 無名関数 (1 2 3 4))になり、さらにこれは、(無名関数(1) 無名関数(2) 無名関数(3) 無名関数(4))となる。無名関数(x)=x*2に相当するため、 (2 4 6 8)が得られる。同様にして、(map (fun x (3Dfunc1 (get2nd x))) res1)も考えればよい。
・(let a b)はbを変数aに代入する
・(union リスト1 リスト2)は、リスト1,2の和集合を、リストとして計算する。例えば、union(a,b)(a,c)の結果は、(a,b,c)となる。
・mapは 、f()内の各要素についてf()を適用し、その結果の集合を取るもので、(map fun1 (a b c d))の場合、(fun1(a), fun1(b), fun1(c), fun1(d))となる。
・(get1st (a b))は(a)を得、(get2nd (a b))は(b)を得るものとする
・(booleanfilter (true false false true) (1 2 3 4))は、true/falseに応じて、(1 2 3 4)をフィルタリングする。具体的に(1 2 3 4)のうち、対応する値がtrueの要素のみを取り出す。この場合、(1 4)を得る。
・(map (fun x (3Dfunc1 (get2nd x))) res1) のfun xは無名関数を定義する。簡単な例として、 (fun x x*2)を考える。これは 無名関数(x)=x*2 を意味する。この場合、(map (fun x x*2) (1 2 3 4))は、(map 無名関数 (1 2 3 4))になり、さらにこれは、(無名関数(1) 無名関数(2) 無名関数(3) 無名関数(4))となる。無名関数(x)=x*2に相当するため、 (2 4 6 8)が得られる。同様にして、(map (fun x (3Dfunc1 (get2nd x))) res1)も考えればよい。
意味関連検索手段104は、意味関連検索式1を元に検索を行い、検索結果の集合(統合スクリプトの「意味関連検索結果」に対応)を得る。検索結果の集合の各要素は、3Dfunction1の引数となり、それぞれ($Var1,Connections)である。検索結果の集合を、検索結果統合手段103に渡す。
ここで、統合スクリプトに記載されているmapおよびbooleanfiterの処理について簡単な事例で説明する。
map f(a,b,c,d)は、f()内の各要素についてf()を適用し、その結果の集合を取る処理であり、この場合、{f(a),f(b),f(c),f(d)}が得られる。
booleanfilter {false,true,true,false}{a,b,c,d}は、{a,b,c,d}のうち、対応する値が真(true)の要素のみを取り出し、この場合、(b,c)となる。
従って、
booleanfilter
map f(a,b,c,d)
{a,b,c,d}
は、
booleanfilter
{f(a),f(b),f(c),f(d)}
{a,b,c,d}と表される。さらに、f(a),f(b),f(c),f(d)が、それぞれfalse,true,true,falseであれば、
booleanfilter
{false,true,true,false}
{a,b,c,d}となり、
最終的に(b,c)が得られる。
map f(a,b,c,d)は、f()内の各要素についてf()を適用し、その結果の集合を取る処理であり、この場合、{f(a),f(b),f(c),f(d)}が得られる。
booleanfilter {false,true,true,false}{a,b,c,d}は、{a,b,c,d}のうち、対応する値が真(true)の要素のみを取り出し、この場合、(b,c)となる。
従って、
booleanfilter
map f(a,b,c,d)
{a,b,c,d}
は、
booleanfilter
{f(a),f(b),f(c),f(d)}
{a,b,c,d}と表される。さらに、f(a),f(b),f(c),f(d)が、それぞれfalse,true,true,falseであれば、
booleanfilter
{false,true,true,false}
{a,b,c,d}となり、
最終的に(b,c)が得られる。
検索結果統合手段103は、意味関連検索手段104の出力である検索結果の集合に対して、map関数が示すように、当該集合内の全ての要素(検索結果)に、3D空間検索手段105を用いて計算を実施する。例えば、意味関連検索手段104の出力である検索結果集合の要素数が3の場合、すなわち、意味関連検索結果が{要素1、要素2、要素3}の場合は、3Dfunc1(要素1)、3Dfunc1(要素2)、3Dfunc1(要素3)を計算する。
3D空間検索手段105は、意味関連検索手段104の検索結果に基づき与えられた引数に対して、3D空間検索を実施(先に示した3D検索関数1を実施)し、結果をtrueまたはfalseで返す。上記の例では、3Dfunc1(要素1)、3Dfunc1(要素2)、3Dfunc1(要素3)のそれぞれを計算し、結果をtrueまたはfalseで返す。
検索結果統合手段103は、3D空間検索手段105から返された検索結果の集合(trueまたはfalseの要素から構成される集合から)に基づき、booleanfilterにより、trueに対応する、意味関連検索手段104の検索結果を選択する。上記の例では、3Dfunc1(要素1)、3Dfunc1(要素2)、3Dfunc1(要素3)がそれぞれtrue,false,trueであったとすると、
booleanfilter
{ true,false,true }
{要素1、要素2、要素3}
からtrueの要素が選択され、{要素1、要素3}となる。
booleanfilter
{ true,false,true }
{要素1、要素2、要素3}
からtrueの要素が選択され、{要素1、要素3}となる。
このように、建物情報DB106に対する検索を、3D空間検索に関連する部分と、3D空間検索に関連しない部分(意味関連検索に関連する部分)に分離し、それぞれを統合させて、所望の検索結果を得ることができる。
次に、別の例として、検索式入力手段201から、以下の検索式5が入力された場合の処理を示す。
<検索式5>
Select $Var1,Objects
Where $Var1.Type == IfcCorner
$Var1.Mirror !=null
Connections = $Var.AdjacentConnections
Cone1= 3DCorn(Connections[0].points,Connections[0].dir, 30)
Objects = 3DGetInclude(Cone1)
<検索式5>
Select $Var1,Objects
Where $Var1.Type == IfcCorner
$Var1.Mirror !=null
Connections = $Var.AdjacentConnections
Cone1= 3DCorn(Connections[0].points,Connections[0].dir, 30)
Objects = 3DGetInclude(Cone1)
Select文で、Objectsが追加されている。末尾の文では、3DGetInclude(Cone1)により円錐(Cone1)内に含まれるオブジェクトを取得して、変数Objectsに代入している。取得されるオブジェクトの個数は0または1つとは限らず、複数の場合もある。検索式5では、鏡が設置された角について、当該角の接続点から、ある方向(dir)を見たときの30度の円錐内に含まれるオブジェクトを取得し、当該角のインスタンス($Var1)と、取得されたオブジェクト(Objects)を返す。
解析手段101は、検索式5を構文解析して、構文木を生成する。図4に、検索式5を構文解析して得られる構文木を示す。なお、“eq”、“assign”、“and”等は、演算子、すなわち分の意味を表す情報である。“3dassign”および“3dfunc”は構文解析の結果、3D空間検索に関する文であると解析されたことを指している。図4に示すように構文木は13個の文から構成される。
図4において、“ID”は文の番号、“OP”は演算子、“args”は引数、“up”はこの文の上位の文のID、“invars”は文が参照する変数リスト、“outvars”は文が出力する変数リストであるとする。ここで論理演算子(and等)は引数として、下位の文IDがリストとして与えられているものとする。また、演算子が3dassigneであるID10の{"Cone1",11}等の「11」は、文IDが11の文を指す。構文木を、up関係を辿った階層構造で表すと図5のようになる。
検索式分離手段102は、解析された構文木を、意味関連検索に関する部分(部分木)と、3D空間検索に関連する部分(部分木)に分解し、それぞれを意味関連検索式と、3D空間検索関数(3D空間検索式)に展開する。また検索式分離手段102は、意味関連検索式および3D空間検索式の検索結果を統合するための統合スクリプトを生成し、統合スクリプトを検索結果統合手段103に渡す。以下、より具体的に示す。
構文木の中で、3D空間検索に関連する部分(3dassign,3dfunc)を特定し、構文木をブロック(BLK)という単位で分離する。ここで構文木の全体を全体ブロックBLK0と表すと、構文木(BLK0)は、ブロックBLK1およびブロックBLK2の2つに分離できる。すなわち、BLK0、BLK1およびBLK2の階層構造は図6のようになる。
構文木(BLK0)のうち、BLK1の部分木(ブロック)は、図7の枠301で示すように文1~文8までの8個の文からなる。一方、BLK2の部分木(ブロック)は、図7の枠302で示すように文9~13までの5個の文からなる。このように構文木は、2つブロックに分離できる。
(引数の抽出処理)
各々のブロックの変数invars、outvarsを特定する。この際、ブロック内でoutvarsがinvarsに対応している場合は、これはブロック内での入出力に相当し、特定の対象から除外する。すなわち、ブロック内での入出力でないものを、ブロックのinvars,outvarsとして特定する。この結果、以下のようになる。
BLK0のinvarsは無し(すなわち{})、outvarsは、{$Var1,Objects}となる。
BLK1のinvarsは無し(すなわち{})、outvarsは、{$Var1,Connections}となる。
BLK2のinvarsは、{Connections}、outvarsは、{Objects}となる。
各々のブロックの変数invars、outvarsを特定する。この際、ブロック内でoutvarsがinvarsに対応している場合は、これはブロック内での入出力に相当し、特定の対象から除外する。すなわち、ブロック内での入出力でないものを、ブロックのinvars,outvarsとして特定する。この結果、以下のようになる。
BLK0のinvarsは無し(すなわち{})、outvarsは、{$Var1,Objects}となる。
BLK1のinvarsは無し(すなわち{})、outvarsは、{$Var1,Connections}となる。
BLK2のinvarsは、{Connections}、outvarsは、{Objects}となる。
(意味関連検索式作成)
引数の抽出処理で特定したBLK1におけるoutvarをselect文の引数に追加する。具体的には、元の検索文のSelect文の引数($Var1、Objects)を、$Var1,Connectionsに置き換える動作になる。置き換え後の部分木を、SQL風の元の検索式の形式に戻すことにより、以下の意味関連検索式を得る。これにより、ブロック(BLK1)が意味関連検索式へ展開されたことになる。
引数の抽出処理で特定したBLK1におけるoutvarをselect文の引数に追加する。具体的には、元の検索文のSelect文の引数($Var1、Objects)を、$Var1,Connectionsに置き換える動作になる。置き換え後の部分木を、SQL風の元の検索式の形式に戻すことにより、以下の意味関連検索式を得る。これにより、ブロック(BLK1)が意味関連検索式へ展開されたことになる。
Select $Var1, Connections
Where $Var1.Type == IfcCorner
$Var1.Mirror !=null
Connections = $Var.AdjacentConnections
Where $Var1.Type == IfcCorner
$Var1.Mirror !=null
Connections = $Var.AdjacentConnections
(3D空間検索関数作成)
BLK2のinvarsは、関数の引数に設定する。3dasignの文に基づき代入式を生成する。3dfuncの文の引数を、所定のルールで展開して関数を生成する。本例ではこの関数が代入文の入力側となっている。BLK2のoutvarsは、返り値に設定する(例えばreturn命令でoutvarsを返す)。この結果、以下の3D空間検索関数(3D空間検索式)が得られる。これにより、ブロック(BLK2)が3D空間検索関数へ展開されたことになる。なお、木構造を3D空間検索関数の形式にするルールは事前に定められている。
BLK2のinvarsは、関数の引数に設定する。3dasignの文に基づき代入式を生成する。3dfuncの文の引数を、所定のルールで展開して関数を生成する。本例ではこの関数が代入文の入力側となっている。BLK2のoutvarsは、返り値に設定する(例えばreturn命令でoutvarsを返す)。この結果、以下の3D空間検索関数(3D空間検索式)が得られる。これにより、ブロック(BLK2)が3D空間検索関数へ展開されたことになる。なお、木構造を3D空間検索関数の形式にするルールは事前に定められている。
function 3Dfunc1(Connections){
var Cone1= 3DCorn(Connections[0].points,Connections[0].dir, 30)
var Objects = 3DGetInclude(Cone1)
return Objects;
}
var Cone1= 3DCorn(Connections[0].points,Connections[0].dir, 30)
var Objects = 3DGetInclude(Cone1)
return Objects;
}
(統合スクリプト作成)
[ブロック間の変数の依存関係を明確化]
ブロック間の変数の依存関係を把握する。各々のブロックの変数invars、outvarsは、上述したように以下の通りである。
[ブロック間の変数の依存関係を明確化]
ブロック間の変数の依存関係を把握する。各々のブロックの変数invars、outvarsは、上述したように以下の通りである。
BLK0,{},{$Var1,Objects}
BLK1,{},{$Var1,Connections}
BLK2,{Connections},{Objects}
BLK1,{},{$Var1,Connections}
BLK2,{Connections},{Objects}
変数の依存関係を抽出する(変数間のやりとりを分析する)と、BLK1では、$Var1からConnectionsへの依存関係が得られる。BLK2では、ConnectionsからObjectへの依存関係が得られる。よって、Objectsは、最初に与えられる$Var1に1対1対応していることが分かる。
$Var1は複数検索され得るため、全体の返り値の形式は、以下のように、$Var1とObjectsの組みのリストになる。もちろんリストの要素数が1の場合もあり得る。{$Var1,Objects}が1つの要素に相当する。
{{$Var1,Objects},{$Var1,Objects},....{$Var1,Objects}}
{{$Var1,Objects},{$Var1,Objects},....{$Var1,Objects}}
[テンプレートの選択]
BLK2の最終出力の文が、演算子が3dassignまたは3dfuncの文であるため、以下の型のテンプレートを選択する。
BLK2の最終出力の文が、演算子が3dassignまたは3dfuncの文であるため、以下の型のテンプレートを選択する。
(let res1 意味関連検索結果
(map 処理 res1)
)
)
(map 処理 res1)
)
)
上述したように、()はリストを表し、リストの最初が“union”、 “map”、 “let”等の場合は、特別なリストであるとする。“union”、 “map”、 “let”等について、再度簡単に説明すると以下の通りである。
・(let a b)は、bを変数aに代入する。
・(union リスト1 リスト2)は、リスト1,2の和集合をリストとして計算する。
・(map fun1 (a b c d))は、fun1を各要素に展開して、(fun(a) fun(b) fun(c))となる。
・(get1st (a b))は、(a)を得、(get2nd (a b))は、(b)を得る。
・(let a b)は、bを変数aに代入する。
・(union リスト1 リスト2)は、リスト1,2の和集合をリストとして計算する。
・(map fun1 (a b c d))は、fun1を各要素に展開して、(fun(a) fun(b) fun(c))となる。
・(get1st (a b))は、(a)を得、(get2nd (a b))は、(b)を得る。
[引数の分析]
上述したように、意味関連検索結果が{$Var1,Connections}のリストを返すのに対し、3D空間検索関数 は Connectionsを入力として、Objectsを出力する。全体の検索結果は、{$Var1,Objects}のリストであるから、意味関連検索結果を
res1={{$Var1,Connections},{$Var1,Connections},...,{$Var1,Connections}}と表すと、リストres1内のそれぞれの要素に対して、当該要素内の1番目の要素(第1サブ要素)と、当該要素内の2番目の要素(第2サブ要素)を3D空間検索関数に入力して、検索結果の組のリストを得ることになる。
上述したように、意味関連検索結果が{$Var1,Connections}のリストを返すのに対し、3D空間検索関数 は Connectionsを入力として、Objectsを出力する。全体の検索結果は、{$Var1,Objects}のリストであるから、意味関連検索結果を
res1={{$Var1,Connections},{$Var1,Connections},...,{$Var1,Connections}}と表すと、リストres1内のそれぞれの要素に対して、当該要素内の1番目の要素(第1サブ要素)と、当該要素内の2番目の要素(第2サブ要素)を3D空間検索関数に入力して、検索結果の組のリストを得ることになる。
リストres1内のそれぞれの要素に対して、「処理」した結果のリストを得るための記述は以下の通りである。
(map 「処理」 元のリスト=res1)
(map 「処理」 元のリスト=res1)
「処理」が、当該要素内の1番目の要素(第1サブ要素)と、当該要素内の2番目の要素(第2サブ要素)を3D空間検索関数に入力して検索された結果との組
(fun x ((get1st x) (3dfunc (get2nd x)))
に対応する。fun xは、前述したように無名関数(x)を表す。xは、当該要素を表し、例えば、get1st xは、xの1番目の要素(第1サブ要素)を得る。
よって、最終的に統合スクリプトは、以下のように得られる。
(fun x ((get1st x) (3dfunc (get2nd x)))
に対応する。fun xは、前述したように無名関数(x)を表す。xは、当該要素を表し、例えば、get1st xは、xの1番目の要素(第1サブ要素)を得る。
よって、最終的に統合スクリプトは、以下のように得られる。
(let res1 意味関連検索結果
(map (fun x ((get1st x) (3dfunc (get2nd x)) res1)
)
(map (fun x ((get1st x) (3dfunc (get2nd x)) res1)
)
なお、上述した説明から理解されるように、「let res1 意味関連検索結果」は、意味関連検索結果{{$Var1,Connections},{$Var1,Connections},...,{$Var1,Connections}}をres1にすべて代入することを意味する。
次に、さらに別の例として、検索式入力手段201から、以下の検索式6が入力された場合の処理を示す。検索式5と異なる点として、末尾の文に“In($Var1.Mirror, Objects)”が追加されている。「In($Var1.Mirror, Objects)」は、$Var1.Mirrorが Objects集合に含まれるかを表す。$Var1.Mirrorが Objects集合に含まれることを、集合演算で記述すると、$Var1.Mirror∈Objects、となる。
<検索式6>
Select $Var1
Where $Var1.Type == IfcCorner
$Var1.Mirror !=null
Connections = $Var.AdjacentConnections
Cone1= 3DCorn(Connections[0].points,Connections[0].dir, 30)
Objects = 3DGetInclude(Cone1)
In($Var1.Mirror, Objects)
Select $Var1
Where $Var1.Type == IfcCorner
$Var1.Mirror !=null
Connections = $Var.AdjacentConnections
Cone1= 3DCorn(Connections[0].points,Connections[0].dir, 30)
Objects = 3DGetInclude(Cone1)
In($Var1.Mirror, Objects)
検索式6に対して統合スクリプトを生成するまでの処理を以下に示す。なお、構文木およびその生成過程の説明は省略する。
(統合スクリプト作成)
[テンプレートの選択]
ブロックBLK2の最終出力の文が、演算子が3dassignまたは3dfuncの文でないため、以下の型のテンプレートを選択する。すなわち、最終出力の文は、「In($Var1.Mirror, Objects)」に対応する文であり、これは論理演算の文に相当する(演算子(OP)はinである。)。
[テンプレートの選択]
ブロックBLK2の最終出力の文が、演算子が3dassignまたは3dfuncの文でないため、以下の型のテンプレートを選択する。すなわち、最終出力の文は、「In($Var1.Mirror, Objects)」に対応する文であり、これは論理演算の文に相当する(演算子(OP)はinである。)。
(let res1 意味関連検索結果
(booleanfilter
(map 処理 res1) 結果リスト)
)
)
(booleanfilter
(map 処理 res1) 結果リスト)
)
)
[引数の分析]
まず、意味関連検索結果が{$Var1,Connections}のリストを返すのに対し、3D空間検索関数 は Connectionsを入力として、Objectsを出力する。全体の検索結果は、{$Var1 }のリストであるから、意味関連検索結果を
res1={{$Var1,Connections},{$Var1,Connections},...,{$Var1,Connections}}と表すと、リストres1内のそれぞれの要素内の2番目の要素(第2サブ要素)を3D空間検索関数に入力して、検索結果の組であるtrue/falseのリストを求める。$Var1.Mirrorが Objects集合に含まれていればtrue(真)、含まれていなければfalse(偽)である。そして、true/falseに応じて、trueに対応する要素のみを選択し、さらに選択した要素(すなわち{$Var1,Connections})の1番目の要素(第1サブ要素)を抽出したリストを、最終的に得る。
まず、意味関連検索結果が{$Var1,Connections}のリストを返すのに対し、3D空間検索関数 は Connectionsを入力として、Objectsを出力する。全体の検索結果は、{$Var1 }のリストであるから、意味関連検索結果を
res1={{$Var1,Connections},{$Var1,Connections},...,{$Var1,Connections}}と表すと、リストres1内のそれぞれの要素内の2番目の要素(第2サブ要素)を3D空間検索関数に入力して、検索結果の組であるtrue/falseのリストを求める。$Var1.Mirrorが Objects集合に含まれていればtrue(真)、含まれていなければfalse(偽)である。そして、true/falseに応じて、trueに対応する要素のみを選択し、さらに選択した要素(すなわち{$Var1,Connections})の1番目の要素(第1サブ要素)を抽出したリストを、最終的に得る。
リストres1内のそれぞれの要素に対して、「処理」した結果のリストを得るための記述は以下の通りである。
(map 「処理」 元のリスト=res1)
(map 「処理」 元のリスト=res1)
「結果リスト」は、{$Var1,Connections}の1番目の要素(第1サブ要素)のリストであるため
(map get1st res1)
と表される。
(map get1st res1)
と表される。
「処理」は、3D空間検索関数に、2番目の要素(第2サブ要素)を入力した結果であるので
(fun x (3dfunc (get2nd x))
と表される。
よって、最終的に、以下の統合スクリプトを得る。
(fun x (3dfunc (get2nd x))
と表される。
よって、最終的に、以下の統合スクリプトを得る。
(let res1 意味関連検索結果
(booleanfilter
(map (fun x (3dfunc (get2nd x)) res1)
(map get1st res1))
)
)
(booleanfilter
(map (fun x (3dfunc (get2nd x)) res1)
(map get1st res1))
)
)
このように、検索式6のように3D空間検索式の最後が、論理式である場合は、式が成立するか否かに応じて答えを絞り込むbooleanfilterを用いる。
図8に、本実施形態に係る検索装置の全体の動作のフローチャートを示す。解析手段101が、検索式入力手段201から入力された検索式に対して解析処理を行い、構文木を生成する(S101)。図9に解析処理の詳細動作のフローチャートを示す。検索式入力部より入力された検索式に対して、構文解析を実施し(S201)、エラーがある場合はエラーを表示終了し(S202)、エラーが無い場合は、構文木を作成して(S203)、終了する。
次に、図8において、検索式分離手段102は、構文木に基づき、検索式分離処理を行う。図10に、検索式分離処理の詳細な動作のフローチャートを示す。構文木に対して、3D空間検索に係る部分を特定し(S301)、特定した部分(部分木)を構文木から分離する(S302)。分離した部分から引数を特定(抽出)する(S303)。また、構文木のうち、ステップS301で特定した部分以外の部分から、意味関連検索式を作成する(S304)。3D空間検索に係る部分と、抽出した引数とから3D空間検索関数(3D空間検索式)を作成する(S305)。最後に、意味関連検索式の検索結果と、3D空間検索関数の検索結果を統合するための統合スクリプトを生成する(S306)。統合スクリプトの一形態は、意味関連検索式の実行結果(検索結果)を、3D空間検索式に適用して、意味関連検索式の検索結果のうち、3D空間検索式を満たす検索結果を抽出することを記述したスクリプトである。なお、本フローのステップの順序は図10に限定されない。
次に、図8において、意味関連検索手段104および3D空間検索手段105により検索処理を行い、続いて検索結果統合手段103が統合処理を行う(S103)。図11に検索処理および統合処理の詳細な動作のフローチャートを示す。意味関連検索手段104が意味関連検索式を用いて意味関連検索を行い(S401)、次に意味関連検索の検索結果と3D空間検索式に基づき3D空間検索を実施し(S402)、最後に、統合スクリプトに従って、これらの検索結果を統合する(S403)。より詳細には、統合スクリプトに従って、意味関連検索式の検索結果に基づき3D空間検索式を実行することで、検索式入力手段から入力された検索式を満たす部品を特定する。検索結果統合手段103は、得られた結果(検索された部品の情報)を出力する。
図12は、検索装置のハードウェア構成例を示す。検索装置は、CPU401、入力部402、表示部403、通信部404、主記憶部405、外部記憶部406を備え、これらはバス407により相互に通信可能に接続される。
入力部402は、キーボード、マウス等の入力デバイスを備える。表示部403は、LCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)等の表示ディスプレイを含む。通信部404は、無線または有線の通信手段を有し、所定の通信方式で通信を行う。
外部記憶部406は、例えば、HDD、SSD、メモリ装置、CD-R、CD-RW、DVD-RAM、DVD-R等の記憶媒体等を含む。外部記憶部406は、図1の各処理部の機能を、CPU401に実行させるためのプログラムを記憶している。また、建物情報DB106も、外部記憶部406に含まれる。ここでは、外部記憶部406を1つのみ示しているが、複数存在しても構わない。
主記憶部405は、CPU401による制御の下で、外部記憶部406に記憶された制御プログラムを展開し、当該プログラムの実行時に必要なデータ、当該プログラムの実行により生じたデータ等を記憶する。主記憶部405は、例えば不揮発性メモリ等の任意のメモリを含む。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
101:解析手段
102:検索式分離手段(生成手段)
103:検索結果統合手段
104:意味関連検索手段
105:3D空間検索手段
106:建物情報DB(記憶手段)
201:検索式入力手段
202:検索結果表示手段
401:CPU
402:入力部
403:表示部
404:通信部
405:主記憶装置
406:補助記憶装置
407:バス
102:検索式分離手段(生成手段)
103:検索結果統合手段
104:意味関連検索手段
105:3D空間検索手段
106:建物情報DB(記憶手段)
201:検索式入力手段
202:検索結果表示手段
401:CPU
402:入力部
403:表示部
404:通信部
405:主記憶装置
406:補助記憶装置
407:バス
Claims (13)
- 3次元空間に配置された部品について、前記部品間に成立する意味関係、および前記部品の3次元情報を記憶する記憶手段と、
前記意味関係を利用して部品の条件を定義する第1検索条件と、前記3次元情報を利用して部品の条件を定義する第2検索条件とを含み、前記第1検索条件と前記第2検索条件を満たす部品の入力検索式を解析することにより、前記入力検索式の構造情報を生成する解析手段と、
前記意味関係に基づく検索式を解釈および実行可能な第1検索手段と、
前記3次元情報に基づく検索式を解釈および実行可能な第2検索手段と、
前記構造情報において前記第1検索条件に対応する部分から、前記第1検索手段により解釈可能な第1の検索式を生成し、前記構造情報において前記第2検索条件に対応する部分から、前記第2検索手段により解釈可能な第2の検索式を生成し、前記第1の検索式と前記第2の検索式の検索結果を統合するための統合情報を生成する生成手段と、
前記第1検索手段による前記第1の検索式の検索結果と、前記第2検索手段による前記第2の検索式の検索結果を前記統合情報に基づき統合することにより、前記入力検索式を満たす部品を特定する検索結果統合手段と、
を備えた検索装置。 - 前記統合情報は、前記第1の検索式の検索結果を、前記第2の検索式に適用して、前記第1の検索式の検索結果のうち、前記第2の検索式を満たす検索結果を抽出することを記述したスクリプトであり、前記検索結果統合手段は、前記スクリプトに従って、前記第1の検索式の検索結果に基づき前記第2の検索式を実行することで、前記入力検索式を満たす部品を特定する
請求項1に記載の検索装置。 - 前記生成手段は、前記スクリプトを、前記構造情報において前記第2検索条件に対応する部分の最後の文の演算子に基づいて、予め用意されたテンプレートから選択する
請求項2に記載の検索装置。 - 前記入力検索式は、複数の文を含み
前記生成手段は、前記文が、予め定めた3次元検索用の関数を含むか否かにより、前記第1検索条件に関連する部分に属するか、前記第2検索条件に関連する部分に属するかを判断する
請求項1ないし3のいずれか一項に記載の検索装置。 - 前記第2検索条件は、3次元空間内の指定範囲に前記部品の全部または一部が含まれことを要求する
請求項1ないし4のいずれか一項に記載の検索装置。 - 前記第1の検索式は、所定の問い合わせ言語で記述され、前記第2の検索式は、手続型言語で記述された
請求項1ないし5のいずれか一項に記載の検索装置。 - 前記構造情報は、前記構文木である
請求項1ないし6のいずれか一項に記載の検索装置。 - 前記検索結果統合手段は、前記特定した部品を表す情報を出力する
請求項1ないし7のいずれか一項に記載の検索装置。 - 前記検索結果統合手段は、前記特定した部品を表す情報として、前記特定した部品を識別するテキスト、または、前記特定した部品の3次元情報を出力する
請求項8に記載の検索装置。 - 検索式を入力するための入力手段をさらに備え、
前記解析手段は、前記入力手段で入力された検索式を解析する
請求項1ないし9のいずれか一項に記載の検索装置。 - 前記検索結果統合手段により出力された情報を表示する表示手段
をさらに備えた請求項1ないし10のいずれか一項に記載の検索装置。 - 前記部品を、建物を構成する部品である
請求項1ないし11のいずれか一項に記載の検索装置。 - 3次元空間に配置された部品について、前記部品間に成立する意味関係、および前記部品の3次元情報を記憶する記憶手段に基づき、前記意味関係を利用して部品の条件を定義する第1検索条件と、前記3次元情報を利用して部品の条件を定義する第2検索条件とを含み、前記第1検索条件と前記第2検索条件を満たす部品の入力検索式を解析することにより、前記入力検索式の構造情報を生成する解析ステップと、
前記構造情報において前記第1検索条件に対応する部分から、前記意味関係に基づく検索式を解釈および実行可能な第1検索手段により解釈可能な形式を有する第1の検索式を生成し、前記構造情報において前記第2検索条件に対応する部分から、前記3次元情報に基づく検索式を解釈および実行可能な第2検索手段により解釈可能な形式を有する第2の検索式を生成し、前記第1の検索式と前記第2の検索式の検索結果の統合手順を表す統合情報を生成する生成ステップと、
前記第1検索手段による前記第1の検索式の検索結果と、前記第2検索手段による前記第2の検索式の検索結果を前記統合情報に基づき統合することにより、前記入力検索式を満たす部品を特定する検索結果統合ステップと
をコンピュータが実行する検索方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/080382 WO2016079792A1 (ja) | 2014-11-17 | 2014-11-17 | 検索装置および検索方法 |
JP2016559713A JP6239786B2 (ja) | 2014-11-17 | 2014-11-17 | 検索装置および検索方法 |
US15/420,528 US20170139998A1 (en) | 2014-11-17 | 2017-01-31 | Search Device and Search Method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/080382 WO2016079792A1 (ja) | 2014-11-17 | 2014-11-17 | 検索装置および検索方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/420,528 Continuation US20170139998A1 (en) | 2014-11-17 | 2017-01-31 | Search Device and Search Method |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2016079792A1 true WO2016079792A1 (ja) | 2016-05-26 |
Family
ID=56013408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2014/080382 WO2016079792A1 (ja) | 2014-11-17 | 2014-11-17 | 検索装置および検索方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20170139998A1 (ja) |
JP (1) | JP6239786B2 (ja) |
WO (1) | WO2016079792A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107247757A (zh) * | 2017-05-31 | 2017-10-13 | 上海建工四建集团有限公司 | 基于bim的建设工程文档分类存储与检索方法及系统 |
JP2019144915A (ja) * | 2018-02-22 | 2019-08-29 | 学校法人 京都産業大学 | 検索装置、検索方法、およびプログラム |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110674548A (zh) * | 2019-09-18 | 2020-01-10 | 贵州匠人筑造工程咨询有限公司 | 基于bim的装配式建筑设计方法及系统 |
CN117786044B (zh) * | 2023-12-15 | 2024-08-13 | 清华大学 | 一种建筑信息模型搜索方法及装置 |
-
2014
- 2014-11-17 JP JP2016559713A patent/JP6239786B2/ja active Active
- 2014-11-17 WO PCT/JP2014/080382 patent/WO2016079792A1/ja active Application Filing
-
2017
- 2017-01-31 US US15/420,528 patent/US20170139998A1/en not_active Abandoned
Non-Patent Citations (2)
Title |
---|
BORRMANN, ANDRE ET AL.: "Query support for BIMs using semantic and spatial conditions", 2009, pages 1 - 54, Retrieved from the Internet <URL:http://www.cms.bgu.tum.de/publications/2009_Borrmann_BIM-Handbook.pdf> * |
DAUM, SIMON ET AL.: "CHECKING SPATIO-SEMANTIC CONSISTENCY OF BUILDING INFORMATION MODELS BY MEANS OF A QUERY LANGUAGE", PROCEEDINGS OF THE 13TH INTERNATIONAL CONFERENCE ON CONSTRUCTION APPLICATIONS OF VIRTUAL REALITY, 31 October 2013 (2013-10-31), pages 492 - 501, Retrieved from the Internet <URL:http://itc.scix.net/data/works/att/convr-2013-49.pdf> [retrieved on 20141201] * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107247757A (zh) * | 2017-05-31 | 2017-10-13 | 上海建工四建集团有限公司 | 基于bim的建设工程文档分类存储与检索方法及系统 |
JP2019144915A (ja) * | 2018-02-22 | 2019-08-29 | 学校法人 京都産業大学 | 検索装置、検索方法、およびプログラム |
JP7116948B2 (ja) | 2018-02-22 | 2022-08-12 | 学校法人 京都産業大学 | 検索装置、検索方法、およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP6239786B2 (ja) | 2017-11-29 |
JPWO2016079792A1 (ja) | 2017-05-18 |
US20170139998A1 (en) | 2017-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111639143B (zh) | 数据仓库的数据血缘关系展示方法及装置、电子设备 | |
KR20200017347A (ko) | 지식 그래프를 생성하기 위한 방법, 장치, 기기 및 컴퓨터 판독 가능 저장 매체 | |
JP6239786B2 (ja) | 検索装置および検索方法 | |
CN110378063B (zh) | 基于智慧建筑空间的设备部署方法、装置、以及电子设备 | |
US10818082B2 (en) | Method and system for parametrically creating an optimal three dimensional building structure | |
JP2012155714A (ja) | 文書コンテンツの順序付け | |
US9984179B2 (en) | Providing building information modeling data | |
US10423416B2 (en) | Automatic creation of macro-services | |
KR20190079354A (ko) | 분할 공간 기반의 공간 데이터 객체 질의처리장치 및 방법, 이를 기록한 기록매체 | |
US11281817B2 (en) | Systems and methods for generating programmatic designs of structures | |
JP2013016095A (ja) | プログラム、情報処理装置、および図生成方法 | |
US20180365341A1 (en) | Three-Dimensional Cad System Device, and Knowledge Management Method Used in Three-Dimensional Cad | |
JP6781819B2 (ja) | タスク処理方法及び分散コンピューティングフレームワークシステム | |
US9672010B2 (en) | Unified modeling language (UML) analysis system and method | |
US11733047B2 (en) | Geo-location structure mapping | |
US8560109B1 (en) | Method and system for bi-directional communication between an integrated circuit (IC) layout editor and various IC pattern data viewers | |
JP2016177665A (ja) | 建物情報処理装置、建物情報処理方法、およびコンピュータプログラム | |
US10621172B2 (en) | System and method for efficiently generating responses to queries | |
JP6875633B2 (ja) | 提示プログラム、提示方法、および提示装置 | |
JP2785317B2 (ja) | ソフトウェア標準化方法 | |
JP2014228974A (ja) | 分析方法、分析装置および分析プログラム | |
JPH09319629A (ja) | データベース設計支援ツール | |
US20210357809A1 (en) | Model improvement system and model improvement method | |
JP6364786B2 (ja) | 設計書管理プログラム、設計書管理方法および設計書管理装置 | |
US20210294815A1 (en) | Navigation of hierarchical data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 14906293 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2016559713 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 14906293 Country of ref document: EP Kind code of ref document: A1 |