Ko:관계는 분류가 아닙니다
- 위키백과 기여자분들께 드리는 말씀
위키백과의 각 문서에는 분류가 적어도 하나씩은 달린 것이 일반적입니다. 또 분류 없이 새 문서를 작성하면 즉시 삭제 대상으로 표시되거나, 분류가 추가됩니다. 위키백과 문서에 분류를 추가하는 일만 하루 종일 하는 사람들도 있습니다.
오픈스트리트맵의 '관계'(relation)는 분류가 아닙니다. 관계란 객체 간의 밀접한 (대개 지역적인) 관계를 모델링하기 위한 것입니다. 예컨대 '이 입구는 저 지하철역으로 이어진다', '이 도로에서 저 도로로 좌회전할 수 없다'는 식의 관계입니다. 또 도로의 여러 부분을 하나로 묶는 데에도 사용합니다. 예컨대 '15개의 각 부분을 묶으면 이런 도로를 이룬다'처럼 표현합니다. 그러나 단순히 관련성이 조금 있는 항목들을 관계로 막연히 묶는 일은 없습니다. '부산광역시의 일반 도로'나 '강원도의 산' 같은 관계는 만들지 않습니다.
위키백과 기여자로서 모든 항목에 대해 연관 정보가 최소한 하나씩 달려 있는 모습을 보고픈 충동을 느낄 수도 있겠지만, 부디 그 충동은 마음에만 넣어 두시기 바랍니다. 이곳의 데이터베이스는 공간 데이터베이스이므로, 항목의 위치에 대한 정보가 내재되어 있습니다. 부산광역시의 모든 도로를 보고 싶다면, 부산광역시의 경계 상자를 입력하고 모든 도로를 불러오기만 하면 됩니다. 그러면 해당 도로 목록이 즉시 생성됩니다. 도로를 추가하는 사람은 해당 도로가 올바른 위치에 있고, 도로로 표시되어 있는지 확인하기만 하면 됩니다. 해당 도로가 부산광역시에 있다는 사실은 암묵적으로 포함되어 있으므로 따로 기록할 필요가 없습니다.
게다가 부산광역시에 누락된 도로를 다른 편집자가 오픈스트리트맵에 추가하더라도, 이러한 모든 도로를 모아놓은 관계가 존재한다는 사실을 모를 가능성이 매우 높습니다. 결과적으로 부산광역시의 보도 관계는 불완전한 상태가 되는 것입니다. 그렇다면 데이터 사용자는 이렇게 불완전할 가능성이 높은 관계를 왜 사용해야 할까요?
단순히 객체 몇 개만 모으는 관계를 사용하는 데에는 또 다른 이유가 있습니다. 누군가 오픈스트리트맵에서 도로를 삭제하거나 기존 도로를 분할하면 구성원 목록을 업데이트해야 하므로 해당 관계의 새 버전이 만들어집니다. 이러한 작업은 상당히 자주 발생하게 되고, 관계의 이력을 과도하게 늘려 사용하기 불편하게 만듭니다.
그러니 다시 한번 말씀드리지만, '부산광역시의 도로' 같은 것을 관계로 모으지 말아 주세요.
그렇다면 '우리은행 ATM 기기'처럼 부가 정보가 들어간 그룹 관계는 어떨까요? 이 경우에도 관계는 불필요한 경우가 일반적입니다. ATM기에 '우리은행 ATM' 같은 태그가 지정되어 있다면 누구나 쉽게 모든 우리은행 ATM기를 추출할 수 있으므로, 이를 위한 관계를 만들 필요가 없습니다 (관계를 만들면 편집이 더 어려워지고 오류 발생 가능성이 높아집니다). 그룹 관계라는 것은 앞서 설명한 것과 같은 지리적인 요소도 없고, 단독적인 요소 (우리은행의 예시처럼 하나의 ATM이 두 개의 다른 기관에서 동시 운영될 가능성은 낮음)도 없는 경우에만 의미가 있게 됩니다.
올바르면서도 쓸모 있는 그룹화의 좋은 예시는 '경로'(route) 관계가 있습니다. 자전거 경로, 도보 경로, 그 밖의 경로를 여러 길로 연결하여 형성하는 것으로, 하나의 길이 여러 경로의 일부가 될 수 있으므로 'route=xxx'를 붙이는 것만으로는 해결할 수 없습니다.
양해해 주셔서 감사합니다.
관계를 처음 만든 사람들 올림.