다른 명령
2025년 5월 16일 (금) 22:58 판
Semantic MediaWiki 고급 기능 사용법
Semantic MediaWiki(SMW)는 MediaWiki에 시맨틱(의미론적) 기능을 추가하는 강력한 확장 기능입니다. 아래에 고급 사용법을 안내해 드리겠습니다.
시맨틱 속성(Properties) 고급 사용
- 사용자 정의 속성 타입 생성
[[Has type::Page| ]] <!-- 페이지 타입 --> [[Has date::2023-10-05| ]] <!-- 날짜 타입 --> [[Has number::42| ]] <!-- 숫자 타입 --> [[Has text::Sample text| ]] <!-- 텍스트 타입 --> [[Has boolean::true| ]] <!-- 불리언 타입 --> [[Has geographic coordinate::37.5665° N, 126.9780° E| ]] <!-- 지리 좌표 -->
- 속성의 하위 속성 정의
[[Has subproperty of::ParentProperty| ]]
시맨틱 폼(Semantic Forms) 고급 활용
- 동적 필드 로드
// 폼 필드 동적 변경 예제 $('#template_name').change(function() { if ($(this).val() === 'Book') { $('#author_field').show(); } else { $('#author_field').hide(); } });
- 조건부 필드
{{{for template|Person}}} {{{field|Is_student|input type=checkbox}}} {{{end template}}} {{{if Is_student|then={{{field|School_name|mandatory}}}}}
시맨틱 쿼리(Semantic Queries) 고급 기법
- 중첩 쿼리
{{#ask:[[Category:Companies]] |?Has employee=[[Has salary::>5000]][[Has position::Manager]] |format=table }}
- 시간 기반 쿼리
{{#ask:[[Has date::>2020-01-01]][[Has date::<2023-12-31]] |?Has date |sort=Has date |order=desc }}
시맨틱 결과 포맷팅
- 사용자 정의 템플릿으로 결과 표시
{{#ask:[[Category:Books]] |?Has author |?Has published date |format=template |template=BookCard |link=none |limit=5 }}
- 지도에 결과 표시
{{#ask:[[Category:Cities]][[Has population::>1000000]] |?Has coordinate |format=map |zoom=4 |height=500 |width=800 }}
시맨틱 규칙과 자동화
- 속성 변경 시 트리거
// LocalSettings.php에 추가 $smwgPageSpecialProperties[] = '_CHANGEDPROP';
- 이벤트 핸들러 등록
$wgHooks['SMW::SQLStore::AfterDataUpdateComplete'][] = function( $store, $semanticData, $compositePropertyTableDiff ) { // 데이터 변경 시 실행할 코드 };
성능 최적화 기법
- 인덱스 추가
-- 데이터베이스에 인덱스 추가 CREATE INDEX idx_smw_prop ON smw_properties (p_id, p_title);
- 캐시 설정
// LocalSettings.php $smwgQueryResultCacheType = CACHE_DB; $smwgQueryResultCacheLifetime = 3600 * 24; // 24시간
시맨틱 미디어위키 API 사용
- REST API 엔드포인트
curl -X GET "http://yourwiki.org/api.php?action=ask&query=[[Category:Person]]&format=json"
- 스마트폰 앱 연동
fetch('https://yourwiki.org/api.php?action=ask&query=[[Has status::Active]]&format=json') .then(response => response.json()) .then(data => console.log(data));
고급 시각화
- 그래프 생성
{{#ask:[[Category:Project]] |?Has milestone |?Has progress |format=googlebar |height=400 |width=600 }}
- 타임라인 표시
{{#ask:[[Category:Event]] |?Has date |?Has description |format=timeline |limit=50 }}
Semantic MediaWiki의 고급 기능을 활용하면 데이터를 더욱 효과적으로 관리하고 시각화할 수 있습니다.