**Schema.org**는 구조화된 데이터를 웹에 추가하기 위한 개방형 표준으로, 검색 엔진(Google, Bing, Yahoo 등)이 웹 페이지의 콘텐츠를 더 잘 이해하고 활용할 수 있도록 설계되었습니다. 2011년에 Google, Microsoft, Yahoo, Yandex가 공동으로 시작했으며, 현재는 커뮤니티 주도로 유지됩니다. Schema.org는 주로 **마크업 형식**(Microdata, RDFa, JSON-LD)을 통해 HTML에 의미론적 데이터를 삽입하며, 이를 통해 검색 결과의 풍부한 표시(Rich Snippets), 음성 검색 최적화, 기계 학습 등 다양한 용도로 활용됩니다. --- ### 1. Schema.org의 정의와 목적 - **정의**: 웹 콘텐츠에 의미를 부여하는 어휘(Vocabulary)와 이를 적용하는 가이드라인 집합. - **목적**: - **검색 엔진 최적화(SEO)**: 콘텐츠의 의미를 명확히 해 검색 결과 개선. - **풍부한 검색 결과**: 리뷰 별점, 이벤트 날짜, 제품 가격 등이 검색 결과에 표시. - **기계 이해도 향상**: AI, 크롤러가 데이터를 구조적으로 파싱 가능. - **상호운용성**: 다양한 플랫폼 간 데이터 공유 용이. --- ### 2. Schema.org의 주요 특징 - **어휘 기반**: 계층적 타입(Type)과 속성(Property)으로 구성. - 예: `Person` 타입은 `name`, `email`, `birthDate` 속성을 가짐. - **확장성**: 커뮤니티 제안으로 새로운 타입과 속성 추가 가능. - **형식 지원**: - **Microdata**: HTML 속성 사용. - **RDFa**: HTML 속성으로 시맨틱 웹 연결. - **JSON-LD**: 별도 스크립트로 삽입 (가장 널리 사용). - **오픈 소스**: 누구나 무료로 사용 가능, schema.org에서 문서 제공. --- ### 3. Schema.org의 주요 타입과 속성 Schema.org는 수백 개의 타입과 속성을 제공하며, 몇 가지 대표적인 예는 다음과 같습니다: #### (1) `Person` (사람) - 속성: `name`, `email`, `telephone`, `address`, `jobTitle`. - 예: 개인 프로필. #### (2) `Event` (이벤트) - 속성: `name`, `startDate`, `endDate`, `location`. - 예: 컨퍼런스, 공연. #### (3) `Product` (제품) - 속성: `name`, `description`, `price`, `brand`, `review`. - 예: 전자상거래 상품. #### (4) `Article` (기사) - 속성: `headline`, `author`, `datePublished`, `image`. - 예: 블로그 포스트, 뉴스. #### (5) `Organization` (조직) - 속성: `name`, `logo`, `contactPoint`, `url`. - 예: 회사 정보. --- ### 4. Schema.org 마크업 형식 Schema.org는 세 가지 주요 형식으로 구현됩니다. #### (1) Microdata - HTML 태그에 `itemscope`, `itemtype`, `itemprop` 속성 추가. - **예제**: ```html
홍길동 hong@example.com
``` #### (2) RDFa - HTML 속성(`typeof`, `property`)으로 데이터 연결. - **예제**: ```html
홍길동 hong@example.com
``` #### (3) JSON-LD (권장) - ` ``` - **왜 권장?**: HTML 구조와 분리, 유지보수 용이, 검색 엔진 선호. --- ### 5. Schema.org의 작동 방식 1. **마크업 추가**: 웹 페이지에 적절한 타입과 속성 삽입. 2. **크롤링**: 검색 엔진이 마크업을 파싱. 3. **활용**: - **Rich Snippets**: 별점, 가격 등이 검색 결과에 표시. - **Knowledge Graph**: Google의 지식 패널에 정보 제공. - **음성 검색**: "가까운 이벤트는?" 같은 질문에 답변. --- ### 6. 자바로 Schema.org JSON-LD 생성 예제 Jackson 라이브러리를 사용해 Schema.org 데이터를 JSON-LD로 생성할 수 있습니다. #### (1) 의존성 (Maven) ```xml com.fasterxml.jackson.core jackson-databind 2.15.2 org.projectlombok lombok 1.18.30 provided ``` #### (2) 모델링 및 생성 ```java import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.Data; @Data public class PersonSchema { @JsonProperty("@context") private String context = "http://schema.org"; @JsonProperty("@type") private String type = "Person"; private String name; private String email; } public class SchemaOrgExample { public static void main(String[] args) throws Exception { PersonSchema person = new PersonSchema(); person.setName("홍길동"); person.setEmail("hong@example.com"); ObjectMapper mapper = new ObjectMapper(); String jsonLd = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(person); System.out.println(""); } } ``` #### 출력 결과: ```html ``` --- ### 7. Schema.org의 장점과 단점 - **장점**: - 검색 엔진의 강력한 지원 (Rich Snippets, SEO 향상). - 다양한 타입과 속성으로 유연성 제공. - JSON-LD로 쉬운 구현. - **단점**: - 초기 학습 곡선 존재. - 잘못된 마크업 시 검색 엔진 패널티 가능. - 모든 데이터가 풍부한 결과로 반영되지 않을 수 있음. --- ### 8. Schema.org와 Microformats 비교 | **특성** | **Schema.org** | **Microformats** | |---------------------|------------------------|------------------------| | **형식** | JSON-LD, Microdata 등 | HTML 클래스 | | **복잡도** | 중간 | 낮음 | | **SEO 지원** | 강력 | 제한적 | | **어휘 범위** | 광범위 | 제한적 | | **현재 사용** | 주류 | 소규모/레거시 | - **Schema.org**: 현대 웹에서 SEO와 데이터 활용에 최적화. - **Microformats**: 간단한 구조화 데이터에 유용. --- ### 9. 현대적 맥락 - **사용 사례**: 전자상거래, 블로그, 이벤트 사이트, 지역 비즈니스 등. - **도구**: - Google Structured Data Testing Tool: 마크업 검증. - Rich Results Test: 풍부한 결과 확인. - **확장**: `pending.schema.org`로 새로운 타입 제안 가능. --- ### 10. 결론 Schema.org는 웹 콘텐츠에 구조화된 데이터를 추가하는 강력한 도구로, SEO와 사용자 경험을 동시에 개선합니다. JSON-LD 형식이 가장 널리 사용되며, 자바로 쉽게 생성 가능합니다. 검색 엔진의 풍부한 결과를 노리거나 데이터를 기계 친화적으로 만들고 싶다면 필수적인 선택입니다. 추가로 특정 타입(예: `Event`, `Product`)에 대한 예제나 질문이 있다면 말씀해주세요!