Language Tour - kimjooyoon/meta-ontology-go GitHub Wiki
์ธ์ด ๋๋ฌ๋ณด๊ธฐ
์ ๋ฐ์ดํธ: 2026-10-04.
Gooo๋ ๋์๊ณผ ์์ ์ ์๋ฏธ๋ฅผ ์ ์ธํ๊ณ , ๊ทธ ์ ์ธ์์ ๊ตฌ์กฐ์ ๊ณ์ฐ ๋ฐ๋๋ฅผ ์์ฑํ๋ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ ์ธ์ ์กฐ๋ฆฝ ์ค๊ณ๋์ด๊ณ ์์ ์ ID๋ ๋ถํ์ ์ด๋ฆํ ์ญํ ์ ํฉ๋๋ค.
Entity์ ์์ ์ ID
entity Order id "billing://entity/order"
Order๋ ์ฝ๊ธฐ ์ฌ์ด ์ด๋ฆ์
๋๋ค. billing://entity/order๋ ์ฐธ์กฐ์ ๋ณ๊ฒฝ ์ถ์ ์ ์ฐ๋ ์์ ์ ์ ์ฒด์ฑ์
๋๋ค. ํ์ ์ด๋ฆ์ด ๋ฐ๋์ด๋ ๊ฐ์ ๋์์ ์ถ์ ํ ์ ์์ด์ผ ํฉ๋๋ค. ์ค์ ์ฃผ๋ฌธ ํ ๊ฑด์ ์์ฑ์ ์คํ ๊ด์ธก์์ ๊ธฐ๋กํฉ๋๋ค.
Activity์ ์ ์ถ๋ ฅ
activity PayOrder(Order, PaymentMethod) -> Payment
์ด ์ ์ธ์ ๊ฒฐ์ ์์ ์ด ์ฃผ๋ฌธ๊ณผ ๊ฒฐ์ ์๋จ์ ์ฌ์ฉํด ๊ฒฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ ๋ค๋ ๊ด๊ณ๋ฅผ ํํํฉ๋๋ค. ์ปดํ์ผ๋ฌ๋ ์ด๋ฅผ ์๋ฏธ ๊ตฌ์กฐ๋ก ์ฎ๊ธฐ๊ณ Go ๊ตฌ์กฐ์ ์ฐ๊ฒฐํฉ๋๋ค. ์ธ๋ถ ๊ฒฐ์ ํธ์ถ์ ๊ตฌํ ์ฌ๋กฏ๊ณผ ์คํ ๊ณ์ฝ์์ ๋ค๋ฃน๋๋ค.
์ ๋ ฅ ์์น, ์ถ๋ ฅ ๊ด๊ณ์ ์ฐ์ฐ ์์๋ ์๋ฏธ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ์ ๊ทํํ ๋๋ ์ด ๊ตฌ๋ถ์ ๋ณด์กดํฉ๋๋ค. ์ ์ฒด ๊ฒฐ์ ์์ .
ํจ์ ๋ฐ๋: ์กฐ๊ฑด, ๋ณ์์ ๋์
ํ์ฌ์ ์คํ์ ๋ฐ๋ ๊ฒฝ๋ก๋ computes ๋ฌธ์์ด์ ํ์ฑํด Go ํจ์๋ฅผ ๋ง๋ญ๋๋ค. ๋ค์์ ์ ์ฅ์ ์์ ์ ์ ์ธ์
๋๋ค.
entity Integer id "bodycodegen://entity/integer"
activity ClampBelowZero(Integer) -> Integer computes "let value = input\nvalue = input\nlet accepted = value >= 0\nif accepted { return value } else { return 0 }"
๋ฐ๋์์๋ let์ผ๋ก ์ง์ญ ๋ณ์๋ฅผ ๋ง๋ค๊ณ , ๊ฐ์ ๋์
ํ๊ณ , ์กฐ๊ฑด๋ฌธ์์ ๋ถ๊ธฐํด
returnํฉ๋๋ค. ์ ๋ฐฐํฌ์ ์กฐ๊ฑด๋ฌธ์ else ์์ด ๋ค์ ๋ฌธ์ฅ์ผ๋ก ์ด์ด๊ฐ ์ ์์ต๋๋ค.
IntegerยทBooleanยทText์ ๋ ์ฝ๋ ์
๋ ฅยท๊ฒฐ๊ณผ, ์์๊ฐ ์๋ ์ฌ๋ฌ ์
๋ ฅ์ ๋ค๋ฃน๋๋ค.
ํจ์ ํธ์ถยท๋ฐ๋ณต๋ฌธยท์ธ๋ถ ํจ๊ณผ๋ ๋ค์ ์คํ ๋ฒ์ ํ์ฅ์ ๋จ์ ์์ต๋๋ค.
์๋ณธ๊ณผ ์คํ ๋ช
๋ น ยท ์ฌ๋ฌ ์
๋ ฅ
ยท ๊ธฐ๋ก๊ฐ.
์กฐ๋ฆฝ ๊ณํ์์ ์ค์ ๋ก์ง ์ ํํ๊ธฐ
์ฌ๋ฌ ํ๋์ ์คํํ ๋๋ bind Assemble.result -> Clamp.input์ฒ๋ผ ๊ฒฐ๊ณผ์
์
๋ ฅ์ ๋ช
์์ ์ผ๋ก ์ฐ๊ฒฐํฉ๋๋ค. body-compose๋ ๊ฐ ๋ณธ๋ฌธ์ ์ค์ ํจ์๋ก ๋ง๋ค๊ณ
ํ์
์ ๋ง๋ ์ง์ญ๊ฐ์ผ๋ก ๋ค์ ํจ์์ ์ ๋ฌํฉ๋๋ค. ์ฌ๋ฌ ์์ ์
๋ ฅ๊ณผ ํ๋์ ๊ฒฐ๊ณผ๋ฅผ
์ฌ๋ฌ ํ๋์ ์ ๋ฌํ๋ ์์ , ์ค์ ๊ฐ๊ณผ ์์ ์ฑ ์ฝ๊ธฐ๋
์กฐ๋ฆฝํ ํ๋ ๋ณธ๋ฌธ ์ฐ๊ฒฐยท์คํ์ ์์ต๋๋ค.
assembling์ ํ๋์ ๋ถ์ด๋ฉด ๋ณธ๋ฌธ๊ณผ ํ์ฉ๋ ์ ํ, ํ์ ์ง์, ์ ํ ๊ธฐ๋๊ฐ์
ํ ์ ์ธ์ ํจ๊ป ๋ก๋๋ค. ์๋ฅผ ๋ค์ด ๋บ์
์ ์์๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
activity Offset(Integer) -> Integer computes "return input - 2" assembling {
choice "offset-order" operand_order at "0" intent "2์์ ์
๋ ฅ์ ๋บ๋ค. Subtract input from two."
case "-1" -> "3"
case "4" -> "-2"
attempts "2"
}
์ผ๋ฐ ์์ฑ ๋ช
๋ น์ด ์ด ์ ์ธ์ ๋ฐ๊ฒฌํ๊ณ ํ์
์ด ์ ํด์ง ๊ฒฝ๋ก๋ฅผ ํ์ํฉ๋๋ค. ๋ชจ๋ธ์
์๋ตํ๋ฉด ๊ฒฐ์ ๋ก ์ ์ผ๋ก ์งํํ๋ฉฐ, ์ ํ ์์์ ์ค์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋๋์ด ๊ธฐ๋กํฉ๋๋ค.
๋ฌธ๋ฒยท์คํยท๊ด์ธก ๊ฒฐ๊ณผ.
์ ํ ํ์๋ computes๊ฐ ํ์ฌ ๊ตฌํ, baseline์ด ์์น์ ๋์์ ํด์ํ ์์
๋ณธ๋ฌธ, picked๊ฐ ์ ํ ๊ฒฝ๋ก๋ฅผ ๋ด์ต๋๋ค. body-realize๋ ๊ทธ ๊ด๊ณ์ ๊ด์ธก์
์ฌ๊ตฌ์ฑํด ๋ค์ ์์ฑ์ ์ธ Gooo ํ์ผ์ ์ ์ฅํฉ๋๋ค. ์ ๊ณตํ ์์์ ์ถฉ์กฑ ์๊ฐ
๋ฎ์ ๊ฒฝ์ฐ์๋ ๊ทธ ์์น์ ๋ถ๋ชจ๋ฅผ ํจ๊ป ๋จ๊น๋๋ค.
Combined ์์ ์ ์๋ณธ์ first = input + 2, second = input * 2๋ฅผ ๋ง๋ค๊ณ
chosen = first๋ก ์์ํฉ๋๋ค. ํ์
๊ณํ์์ ์ ํํ ์์น์ ๋์์ ์ ์ธํ๋ฉด,
์์ฑ๊ธฐ๋ ํ์ฉ๋ ๋ณ์ ์ฐธ์กฐ์ ์กฐ๊ฑด ๋ถ๊ธฐ๋ฅผ ์กฐ๋ฆฝํฉ๋๋ค. ์ค์น๋ณธ์์ ์์ฑํ ๋ฐ๋์ ํต์ฌ์
๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ ์ฒด Go ํ์ผ์๋ ์์ ์ ID์ ์์ฑ ์์ญ marker๋ ์์ต๋๋ค.
var first = (input + 2)
var second = (input * 2)
var chosen = second
if input < 0 {
chosen = (chosen - 3)
} else {
chosen = (chosen + 3)
}
return (chosen + (first + second))
์กฐ๋ฆฝ ๊ณํ์ ์์ ์
๋ ฅ์ -3, 0, 3์ด๊ณ ๋ณ๋ ์คํ ์
๋ ฅ์ -4, 1, 4์
๋๋ค.
๋ณ๋ ์
๋ ฅ์์ ๊ฐ๊ฐ -21, 10, 25๋ฅผ ํ์ธํ์ต๋๋ค. Unrelated ํ๋์ ์ด ์กฐ๋ฆฝ ๋์ ๋ฐ์
์์ต๋๋ค. ์ ์ฒด ์์ฑ ํ์ผ๊ณผ ๊ธฐ๋ก์ ๊ณต๊ฐ ์ค์น ๊ด์ธก์ ์์ต๋๋ค.
์ด ์์ ๋ ๋ชจ๋ธ ์์ด ์ ์ธ๋ ๊ฒฝ๋ก์ ์์๋ฅผ ํ์ํฉ๋๋ค. ํ์ ์ง์์์ ๋ ์ฐ์ฐ์ ์์๋ฅผ ํ๋จํ๋ ์์ฒด ๋ชจ๋ธ์ ๋ณ๋ ํ์ผ ์์ ๋ก ์ฐ๊ฒฐํฉ๋๋ค. ์์คยท๊ณํยท์ ํยท์คํ์ ๊ฐ ๊ธฐ๋ก์์ ์ถ์ ํ ์ ์์ต๋๋ค.
์ค๊ฐ ํํ๊ณผ ์์ ๋ชจ๋ธ
์ฌ๋ฌ ์ค ๋ฐ๋๋ฅผ ๋ฐฑํฑ ์์ ์ง์ ์ฐ๋ ๋ฌธ๋ฒ ์์ #1190๋
main eb8477d5์ ๋ณํฉยท์ค์นํ์ต๋๋ค. ๊ธฐ์กด ์ด์ค ๋ฐ์ดํ ํ์๊ณผ ๊ฐ์ ํด์๊ฐ์ ์์ฑํ๋ฉฐ
์ค๋ฐ๊ฟ๊ณผ ์ญ์ฌ๋์๋ฅผ ๊ทธ๋๋ก ๋ณด์กดํฉ๋๋ค. ์ ๊ท CIยท์ฆ๊ฑฐ๋ฅผ ๋
๋ฆฝ ํ์ธํ๊ณ ์ค์น๋ณธ์ ์ค์
๋ชจ๋ธยท๊ฒฐ์ ๋ก ์คํ๋ ํ์ธํ์ต๋๋ค. ์ง์ ์์ฑํ๊ธฐ ยท ์ค์น ์ํ.
IR์ ์๋ณธ์ ์ปดํ์ผ๋ฌ๊ฐ ๋ค๋ฃจ๊ธฐ ์ฌ์ด ๊ตฌ์กฐ๋ก ์ฎ๊ธด ์ค๊ฐ ํํ์ ๋๋ค. ์กฐ๊ฑด, ๋ณ์ ์ฐธ์กฐ, ๋์ ๋์๊ณผ ๋ถ๊ธฐ๋ฅผ ๊ฐ๊ฐ ์กฐ๋ฆฝ ๊ฐ๋ฅํ ๋ถํ์ฒ๋ผ ๋ค๋ฃน๋๋ค.
์คํ์ ๊ฒฝ๋ก ๊ณํ์ ์๋ ๋ฐ๋์ ํ์ฉ๋ ๋์์ ์ฐ๊ฒฐํฉ๋๋ค. ์ํ ๋ชจ๋ธ์ ์ด ๋์์ ์กฐํฉ์ ์์๋ฅผ ์ฃผ๋ฉฐ, ์ปดํ์ผ๋ฌ๊ฐ ํ์ ๊ณผ ๋ฒ์๋ฅผ ๊ฒ์ฌํ๊ณ ์์์ ๋์์ ํ๊ฐํฉ๋๋ค. ํ์ฌ ์์ฒด ๊ณต์ ๋ชจ๋ธ ์ฐ๊ตฌ๋ ์ธ ์ด์ง ๊ฒฐ์ , ์ฌ๋ ํ๋ณด์ ์ ์ ํจ์์์ ์งํํฉ๋๋ค. ๊ตฌ์ฒด์ ์ธ ์กฐ๋ฆฝ ๊ณผ์ .
์์ ์ ์ถ์ฒ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ด๊ณ
| ๊ด๊ณ | ์ฝ๋ ๋ฒ |
|---|---|
used |
์์ ์ด ์ด๋ค ์ ๋ ฅ์ ์ฌ์ฉํ๋๊ฐ |
wasGeneratedBy |
๊ฒฐ๊ณผ๊ฐ ์ด๋ค ์์ ์์ ๋์๋๊ฐ |
wasDerivedFrom |
์ด๋ค ์๋ณธ์์ ํ์๋์๋๊ฐ |
wasAssociatedWith |
์์ ์ ์ด๋ค ์ฃผ์ฒด๊ฐ ๊ด์ฌํ๋๊ฐ |
์ด ์ดํ๋ W3C PROV-O๋ฅผ ์ฐธ๊ณ ํฉ๋๋ค. Agent๋ ๊ด์ฌํ ์ฌ๋ยท์๋น์ค ๊ฐ์ ์ฃผ์ฒด๋ฅผ ํํํ๋ฉฐ, ์ค์ ์ธ์ฆ๊ณผ ์คํ ๊ถํ์ ๋ณ๋์ ๊ด์ธก์ผ๋ก ์ฐ๊ฒฐํฉ๋๋ค.
์ ์ฑ ๊ณผ ๋ค์ ์์
Gooo์๋ ์ ์ฑ ์ ์ํยท์ ์ดยท์ฌ๋กยท์ฆ๊ฑฐยทํ์ ์ ๋ค๋ฃจ๋ ๊ฒฝ๋ก๋ ์์ต๋๋ค. ๋ฐ๋ก์์ ์์ ํ๋ณด๋ฅผ ๋ง๋ค๊ณ , ๋น๊ต ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ๋ฉฐ, ์ ํ๋ ์ ์ฑ ์ ๋ค์ ์คํ์ ์ฌ์ฉํ๋ ์คํ์ผ๋ก ์ด์ด์ง๋๋ค. ๊ณ ์ ๋ชฉํ๋ฅผ ์ด์ฉํ ์ ์ฑ ์ ํ์๋ ๊ทธ ์คํ์ ๊ณ ์ ๋ ์์ค์ ์ ๋ ฅ์ด ์์ต๋๋ค.
๊ฐ ๋ถ๋ถ์ด ๋งก๋ ์ผ
| ๋ถ๋ถ | ์ญํ |
|---|---|
| Gooo ์ ์ธ | ๋์ยท๊ด๊ณยท์์ ยท๊ณ์ฐยท์ ์ฑ ์๋ |
| ์๋ฏธ IR | ์ ๊ทํ๋ ๊ตฌ์กฐ์ ์๋ฏธ ๋น๊ต |
| ๋ชจ๋ธ๊ณผ ๊ฒฝ๋ก ๊ณํ | ํ์ฉ๋ ์กฐ๋ฆฝ ํ๋ณด์ ์์์ ํ์ |
| ์์ฑ Go | ๋์ ์ธ์ด์ ๊ตฌ์กฐ์ ์ง์๋๋ ๋ฐ๋ |
| ๊ตฌํ ์ฌ๋กฏ | ์ธ๋ถ ์ฐ๋๊ณผ ๋ณ๋์ ๊ตฌํ ๋ก์ง |
| ์คํยท๊ด์ธก ๊ธฐ๋ก | ์ ๋ ฅยท์ถ๋ ฅยท์ถ์ฒยท์คํจยท๋ฏธํด๊ฒฐ ํญ๋ชฉ |
์์ผ๋ก ์์ฐ์ด์์ ๊ณํ์ ๋ฐ๊ฒฌํ๊ณ ๋ ๋์ ํ์ ๊ณผ ์กฐํฉ์ ํํํ๋ ๋ฐฉํฅ์ผ๋ก ๋ฐ์ ์ํค๋ ค ํฉ๋๋ค. ๊ฐ ๊ธฐ๋ฅ์ ์คํ ๊ฐ๋ฅํ ์ฌ๋ก์ ๊ด์ธก์ผ๋ก ์ฐ๊ฒฐํฉ๋๋ค.