다른 명령
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의 고급 기능을 활용하면 데이터를 더욱 효과적으로 관리하고 시각화할 수 있습니다.