메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

시맨틱 이용한 태그 달기

데브카페
Devcafe (토론 | 기여)님의 2025년 5월 16일 (금) 17:59 판 (새 문서: === Semantic MediaWiki 고급 기능 사용법 === Semantic MediaWiki(SMW)는 MediaWiki에 시맨틱(의미론적) 기능을 추가하는 강력한 확장 기능입니다. 아래에 고급 사용법을 안내해 드리겠습니다. ## 1. 시맨틱 속성(Properties) 고급 사용 ### 사용자 정의 속성 타입 생성 <source lang=python> <!-- 페이지 타입 --> <!-- 날짜 타입 --> <!-- 숫자 타...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

Semantic MediaWiki 고급 기능 사용법

Semantic MediaWiki(SMW)는 MediaWiki에 시맨틱(의미론적) 기능을 추가하는 강력한 확장 기능입니다. 아래에 고급 사용법을 안내해 드리겠습니다.

    1. 1. 시맨틱 속성(Properties) 고급 사용
      1. 사용자 정의 속성 타입 생성
[[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| ]]  <!-- 지리 좌표 -->


      1. 속성의 하위 속성 정의
[[Has subproperty of::ParentProperty| ]]


    1. 2. 시맨틱 폼(Semantic Forms) 고급 활용
      1. 동적 필드 로드
// 폼 필드 동적 변경 예제
$('#template_name').change(function() {
    if ($(this).val() === 'Book') {
        $('#author_field').show();
    } else {
        $('#author_field').hide();
    }
});


      1. 조건부 필드
{{{for template|Person}}}
{{{field|Is_student|input type=checkbox}}}
{{{end template}}}

{{{if Is_student|then={{{field|School_name|mandatory}}}}}


    1. 3. 시맨틱 쿼리(Semantic Queries) 고급 기법
      1. 중첩 쿼리
{{#ask:[[Category:Companies]]
 |?Has employee=[[Has salary::>5000]][[Has position::Manager]]
 |format=table
}}


      1. 시간 기반 쿼리
{{#ask:[[Has date::>2020-01-01]][[Has date::<2023-12-31]]
 |?Has date
 |sort=Has date
 |order=desc
}}
    1. 4. 시맨틱 결과 포맷팅
      1. 사용자 정의 템플릿으로 결과 표시
{{#ask:[[Category:Books]]
 |?Has author
 |?Has published date
 |format=template
 |template=BookCard
 |link=none
 |limit=5
}}
      1. 지도에 결과 표시
{{#ask:[[Category:Cities]][[Has population::>1000000]]
 |?Has coordinate
 |format=map
 |zoom=4
 |height=500
 |width=800
}}


    1. 5. 시맨틱 규칙과 자동화
      1. 속성 변경 시 트리거
// LocalSettings.php에 추가
$smwgPageSpecialProperties[] = '_CHANGEDPROP';


      1. 이벤트 핸들러 등록
$wgHooks['SMW::SQLStore::AfterDataUpdateComplete'][] = function( $store, $semanticData, $compositePropertyTableDiff ) {
    // 데이터 변경 시 실행할 코드
};
    1. 6. 성능 최적화 기법
      1. 인덱스 추가
-- 데이터베이스에 인덱스 추가
CREATE INDEX idx_smw_prop ON smw_properties (p_id, p_title);
      1. 캐시 설정
// LocalSettings.php
$smwgQueryResultCacheType = CACHE_DB;
$smwgQueryResultCacheLifetime = 3600 * 24; // 24시간


    1. 7. 시맨틱 미디어위키 API 사용
      1. REST API 엔드포인트
curl -X GET "http://yourwiki.org/api.php?action=ask&query=[[Category:Person]]&format=json"


      1. 스마트폰 앱 연동
fetch('https://yourwiki.org/api.php?action=ask&query=[[Has status::Active]]&format=json')
  .then(response => response.json())
  .then(data => console.log(data));


    1. 8. 고급 시각화
      1. 그래프 생성
{{#ask:[[Category:Project]]
 |?Has milestone
 |?Has progress
 |format=googlebar
 |height=400
 |width=600
}}


      1. 타임라인 표시
{{#ask:[[Category:Event]]
 |?Has date
 |?Has description
 |format=timeline
 |limit=50
}}


Semantic MediaWiki의 고급 기능을 활용하면 데이터를 더욱 효과적으로 관리하고 시각화할 수 있습니다.

Comments