Axismundi

Material Design 3 social CMS

FEP-8a8e: Event 객체 타입을 사용하는 공통 접근법


요약

ActivityStreams는 Event 객체 타입을 정의한다. 실제 애플리케이션에서 Event 객체를 사용하면서 곧 확장의 필요성이 드러났다. Event 객체를 다루는 애플리케이션들은 각자의 사용 사례를 구현하기 위해 추가 속성과 명확한 해석 규칙을 도입해 왔다. 이 제안은 실제 구현 과정에서 발생한 요구사항을 해결하기 위해 ActivityPub 표준을 명확히 하고 확장한다.

여기에는 상호운용 가능한 최소 Event에 관한 지침, RSVP(“répondez s’il vous plaît”, 즉 참석자 관리 및 그에 따른 side effect) 처리, 참석 정원, 물리적 장소 주소, 가상 장소, 시간대, 그리고 연합 환경에서 Event의 가시성을 어떻게 제어할지에 대한 명확화가 포함된다.

이러한 기능을 플랫폼마다 서로 다르게 구현해 온 결과, Event를 게시하고 발견하고 관리하는 방식이 플랫폼 간에 파편화되었다.

다루지 않는 내용

이 문서에서는 반복 이벤트(recurrence), 여러 일정이 지정된 이벤트(multiple-scheduled events), 서로 연결된 이벤트(connected events)를 다루지 않는다.

관련 내용은 예를 들어 다음을 참고한다.

역사

Mobilizon, Friendica, Gancio, Hubzilla 같은 Fediverse 애플리케이션은 ActivityPub Event를 서로 다른 방식으로 처리해 왔다. 프로젝트마다 목표와 사용 사례가 달랐기 때문에, 연합 환경에서 Event를 게시·발견·관리하는 방식이 파편화되었다.

예를 들어 Friendica와 Hubzilla는 ActivityStreams 2.0의 예를 따라 Event에 Invite를 사용한다. 이는 생일 파티처럼 규모가 작고 사적인 모임에 특히 잘 어울리는 것으로 보인다. 공개 범위를 의도적으로 제한할 때 Invite는 자연스럽다.

반면 Mobilizon이나 Gancio처럼 공개 Event 공지를 중심으로 하는 애플리케이션은 Create activity를 사용하기로 했다. 그 이유 중 하나는 아직 Invite activity를 지원하지 않는 애플리케이션과도 더 쉽게 상호운용할 수 있기 때문일 수 있다. 또한 공개 Event는 익명의 Actor, 즉 Fediverse 계정이 없는 사람에게도 발견될 수 있어야 한다. 이는 인스턴스 관리자가 여러 federated ActivityPub Actor를 Follow하여 federated Event source를 추가하고, 그 소스를 합쳐 federated event calendar를 구성하는 방식으로 가능해진다.

Mobilizon은 역사적·내부적 이유로 Event의 연합 가시성을 to/cc만으로 제어하지 않고, Group이 Event를 게시했는지, 그리고 해당 Event가 적어도 한 번 Announce되었는지 여부에도 의존한다. 다른 애플리케이션과 연합할 때 이러한 차이와 그 밖의 불일치가 큰 장애물로 작용했다. 따라서 이 FEP는 공통 기반을 정의하려 한다.

요구사항

이 명세에서 “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, “OPTIONAL”은 RFC 2119에 정의된 의미로 해석한다.

속성의 context: context prefix가 없는 속성은 https://www.w3.org/ns/activitystreams context에 속하는 것으로 해석한다.

객체 타입 Event

ActivityStreams 명세는 이미 기본 Object의 모든 프로퍼티를 상속하는 Event 객체 타입을 정의한다. 따라서 Event를 설명하는 데 유용한 일부 프로퍼티는 이미 존재하지만, 실제 사용에는 부족한 부분도 있으며 이를 보완하는 명세가 도움이 된다.

Event에는 최소한 다음 프로퍼티가 REQUIRED이다.

  • name: 사람이 읽을 수 있는 단순 평문 Event 제목. HTML 마크업은 포함해서는 MUST NOT 한다. name 값은 빈 문자열이어서는 MUST NOT 하며, 여러 언어 태그가 붙은 값으로 표현될 MAY 있다.
  • startTime: Event가 시작했거나 시작할 예정인 시점을 ActivityStreams 2.0 명세에 정의된 형식으로 표현한 날짜와 시간. Event가 연기되어 https://w3id.org/fep/8a8e/previousStartTime이 대신 설정된 경우에는 startTime이 REQUIRED가 아니다.
  • endTime: Event가 끝났거나 끝날 예정인 날짜와 시간. endTime은 startTime보다 나중이어야 MUST 한다. 종료 시점을 사람에게 명확히 제시하지 않는 open-ended Event라도, 애플리케이션이 Event가 끝났다고 간주할 수 있는 기계적인 종료 시각을 포함해야 한다.
  • organizers

종료 시각을 표시하지 않는 Event

Event가 open-ended이거나 endTime을 사람에게 표시하지 않으려는 경우 https://w3id.org/fep/8a8e/displayEndTime 속성을 사용하고 false로 설정하는 것을 SHOULD 한다.

endTime이 설정되어 있지만 displayEndTime이 없는 Event를 수신한 경우, 수신 측은 displayEndTime이 true인 것처럼 취급해야 MUST 하며 endTime을 표시해야 한다.

endTime이 설정되지 않은 Event를 수신한 경우에는 사용자를 오도하지 않기 위해 displayEndTime이 false인 것처럼 취급해야 MUST 한다. 이때 수신 애플리케이션은 자체 요구사항에 따라 적절한 endTime을 추론할 MAY 있다.

시간대

이 절은 비규범적(non-normative)이다.

https://w3id.org/fep/8a8e/timezone 프로퍼티는 Event의 시간대 정보를 지원하여 현지 “wall time”을 일관되게 처리할 수 있도록 하기 위해 도입된다.

startTime과 endTime의 “time-offset” 구성요소는 time zone과 직접 대응하지 않는다. time-offset이 포함된 시간은 timestamp로 사용하기에는 적합하지만, 추가 정보와 처리가 없으면 현지 “wall time”과 안정적으로 상호 변환할 수 없다.
https://www.w3.org/TR/activitystreams-core/#dates

따라서 Event가 주로 특정 하나의 시간대에서 진행된다면 애플리케이션은 https://w3id.org/fep/8a8e/timezone을 설정하는 것을 SHOULD 한다.

timezone을 지정한다면 그 값은 IANA Time Zone Database에 포함된 구체적인 IANA time zone identifier여야 MUST 한다.

장소

ActivityStreams는 Places 관련 명세에서 장소를 표현하는 유연한 틀을 제공한다. 그러나 그 유연성은 때때로 모호성을 만든다.

이 절은 물리적 장소, 가상 장소, 혼합 장소를 포함한 Event location을 명확하고 일관된 형식으로 표현하는 것을 목표로 한다.

새 schema를 만드는 대신, 이 명세는 Schema.org의 location 프로퍼티를 연합 Event 처리에 맞게 일부 조정하여 사용한다.

  • 유효 타입으로서 Text 제외: 원래 Schema.org 정의와 달리 location에 Text 타입을 사용할 수 없으며 사용해서는 MUST NOT 한다. 장소 이름만 필요한 경우 Place 타입을 사용할 수 있다.
  • 복수 location 지원: 온·오프라인이 섞인 하이브리드 Event를 표현하기 위해 location은 여러 location의 배열일 수 있다. 각 항목은 물리적 Place 또는 VirtualLocation일 수 있다.

물리적 장소

Event의 물리적 location 정보를 추가할 때 location 내부의 Place 객체는 address 속성으로 확장하는 것을 SHOULD 한다. address는 https://schema.org/address 타입을 사용할 수 있으며, https://schema.org/Place 자체를 직접 사용할 MAY 있다.

주소는 단순 문자열과 구조화된 https://schema.org/PostalAddress 모두 허용된다. 애플리케이션은 수신한 두 형태의 주소를 모두 자체 내부 표현으로 변환할 수 있어야 MUST 한다.

연합 환경에서 longitude와 latitude를 이용한 필터링은 중요하므로, 지리 좌표 데이터를 항상 제공하는 것이 RECOMMENDED 된다.

참고: 사용자가 좌표를 직접 제공하지 않더라도 발행 측에서 물리적 장소의 좌표를 한 번 찾아 제공하면, 여러 수신 서버가 동일한 좌표 조회를 반복하면서 발생하는 자원 소비를 줄일 수 있다.

가상 장소

온라인 Location은 Schema.org VirtualLocation 타입으로 표현하는 것을 SHOULD 한다.

애플리케이션은 최소한 name과 url 프로퍼티를 설정하고 활용할 수 있어야 SHOULD 한다.

하이브리드

location에 여러 항목을 사용하면 여러 가상 장소와 물리적 장소를 함께 정의하기 쉽다.

복수 location을 지원하지 않는 애플리케이션은 자신이 지원하는 첫 번째 항목을 사용해야 MUST 한다.

Event 상태

Event의 상태를 나타내려면 https://w3id.org/fep/8a8e/eventStatus 프로퍼티를 사용해야 MUST 한다. fallback으로, 특히 원격 Event가 https://www.w3.org/2002/12/cal/ical#status 값을 포함할 수 있으므로 status 프로퍼티도 지원하는 것이 RECOMMENDED 된다.

eventStatus의 가능한 값은 다음과 같다.

  • EventCancelled
  • EventMovedOnline
  • EventPostponed
  • EventRescheduled
  • EventScheduled
  • EventTentative

참고: https://w3id.org/fep/8a8e/eventStatus는 https://schema.org/eventStatus와 거의 동일하지만, iCalendar의 TENTATIVE를 참고한 잠정 상태가 추가되어 있다.

RSVP(참석자 관리)

RSVP를 처리하지 않는 경우

Event 생성자 또는 생성자의 애플리케이션이 ActivityPub을 통한 참가를 처리하지 않는다면 Join activity에 항상 Ignore로 응답해야 MUST 한다. Ignore.object에는 원래 Join activity의 ID를 넣거나, target이 Event 객체의 ID인 Join 객체를 넣어야 MUST 하며, 전자를 선호한다.

이 사실은 미리 https://w3id.org/fep/8a8e/joinMode를 none으로 설정해 명확히 하는 것을 SHOULD 한다.

참가가 어떻게 처리되는지 알리기

애플리케이션이 ActivityPub으로 Event 참가를 처리하지 않지만 참석자 관리를 처리하는 외부 URL을 알고 있다면 joinMode를 external로 설정하는 것을 SHOULD 한다. joinMode가 external이면 externalParticipationUrl도 설정하는 것을 SHOULD 한다.

참고: 이는 Mobilizon의 joinMode 정의와 호환되지만 완전히 동일하지는 않다.

externalParticipationUrl은 mailto: URI일 수도 있다. 이메일로 Event 참가자를 관리하는 방식은 여전히 많은 주최자가 자주 사용한다.

RSVP 요청의 가시성과 대상 audience 표시

Event 참가자가 누구인지 반드시 공개될 필요는 없다. 예를 들어 주최자에게만 보이게 할 수도 있고, 확정된 다른 참가자에게도 보이게 할 수도 있으며, 완전히 익명으로 처리할 수도 있다.

Event는 자신을 대상으로 하는 유효한 Join 요청이 가져야 할 최소 가시성 범위를 https://w3id.org/fep/8a8e/requiredJoinVisibility를 통해 제공하는 것을 SHOULD 한다.

ActivityPub을 통한 RSVP 상태 표시

Event의 최대 참석자 수를 지정하려면 https://schema.org/maximumAttendeeCapacity를 사용하는 것을 SHOULD 한다.

남은 참석 정원은 https://w3id.org/fep/8a8e/attendees Collection을 통해 간접적으로 나타내는 것을 SHOULD 한다. 이 Collection은 모든 Event 참석자의 목록이다.

Event를 object로 하는 Invite를 Accept한 모든 Actor, 또는 Event를 대상으로 보낸 Join이 Accept된 모든 Actor는 side effect로 이 Collection에 추가된다.

이 Collection에는 Actor 및 그 subtype 외의 객체도 들어갈 수 있다. 예를 들어 이메일로 참석 등록을 허용하는 애플리케이션에서는 https://schema.org/Person 또는 https://schema.org/Organization을 사용하는 것이 RECOMMENDED 된다.

attendees Collection은 OrderedCollection 또는 Collection이어야 MUST 하며, 인증 사용자의 권한에 따라 또는 인증이 없는 상황에 적절한 방식으로 필터링될 MAY 있다.

Attendees Collection

모든 Event는 attendees Collection을 가질 MAY 있다. 이 Collection은 다음 조건 중 하나 이상을 만족하여 side effect로 추가된 모든 Actor의 목록이다.

  • Actor가 이 Event를 object로 하는 Join activity를 보냈고 그 Join이 Accept되었다.
  • Actor가 Event 소유자의 Invite activity에 응답했으며, 그 Invite의 object가 Event이고 응답은 Accept였다.

attendees Collection은 OrderedCollection 또는 Collection이어야 MUST 하며, 인증 사용자의 권한에 따라 적절히 필터링될 MAY 있다.

인증 여부와 관계없이 totalItems를 설정할 MAY 있다. maximumAttendeeCapacity를 사용한다면 남은 정원을 공개할 수 있도록 totalItems도 공개하는 것을 SHOULD 한다.

Event 배너와 포스터 이미지

Flyer

Event 전체를 표현하는 전단 또는 share-pic 스타일의 이미지가 있고, 그 이미지 자체에 적어도 Event 이름과 시작 날짜 등이 들어 있다면 image 속성을 사용하여 설정하는 것을 SHOULD 한다.

Event에 별도의 banner image가 있다면 첫 번째 attachment로 Image 타입을 넣는 것을 SHOULD 한다. Document 타입도 유효하지만 RECOMMENDED 되지는 않는다.

목록 페이지와 header image에서 image의 flyer/share-pic보다 attachment의 이미지를 우선 사용해야 함을 나타내려면 https://w3id.org/fep/8a8e/isBannerImage를 설정하는 것을 SHOULD 한다.

Federated event calendar는 보통 고정 aspect ratio의 thumbnail을 사용하므로 https://docs.joinmastodon.org/spec/activitypub/#focalPoint를 설정하는 것을 SHOULD 한다.

참고: banner image의 여러 크기 버전을 제공하고 width와 height를 명시하면 수신 애플리케이션이 aspect ratio에 맞는 가장 적절한 버전을 선택할 수 있다.

Event 카테고리

Federated event platform은 일반적인 Event category에 대한 공통 이해를 갖는 것이 유용하다. 이 category는 사용자가 직접 만드는 tag 또는 hashtag와 목적이 다르다.

Hashtag는 보통 자유롭게 입력되고 특정 언어에 의존하지만, Event category는 제한된 일반화된 집합에서 선택되므로 여러 소스가 합쳐진 calendar에서 Event를 필터링하는 데 더 적합하다.

category를 표현하기 위해 이 FEP는 https://w3id.org/fep/8a8e/category 프로퍼티를 도입한다.

대부분의 경우 category 하나면 충분하지만 관련성이 있다면 여러 개를 포함할 수도 있다.

애플리케이션은 적어도 다음 권장 category 집합을 활용하는 것을 SHOULD 한다.

  • ARTS
  • AUTO_BOAT_AIR
  • BOOK_CLUBS
  • BUSINESS
  • CAUSES
  • CLIMATE_ENVIRONMENT
  • COMMUNITY
  • COMEDY
  • CRAFTS
  • CREATIVE_JAM
  • DIY_MAKER_SPACES
  • FAMILY_EDUCATION
  • FASHION_BEAUTY
  • FESTIVALS
  • FILM_MEDIA
  • FOOD_DRINK
  • GAMES
  • INCLUSIVE_SPACES
  • LANGUAGE_CULTURE
  • LEARNING
  • LGBTQ
  • MEETING
  • MEDITATION_WELLBEING
  • MOVEMENTS_POLITICS
  • MUSIC
  • NETWORKING
  • OUTDOORS_ADVENTURE
  • PARTY
  • PERFORMING_VISUAL_ARTS
  • PETS
  • PHOTOGRAPHY
  • SCIENCE_TECH
  • SPIRITUALITY_RELIGION_BELIEFS
  • SPORTS
  • THEATRE
  • WORKSHOPS_SKILL_SHARING

참고: 구현 애플리케이션은 이 목록을 확장하거나 사용자가 직접 만든 category를 허용할 수 있다. 그러나 그러한 추가 값은 모든 수신 플랫폼에서 이해되지 않을 수 있으며 generic 또는 “unknown” category로 처리될 수 있다.

발견 가능성(Discoverability)

Event 객체를 지원하는 Fediverse 애플리케이션은 여러 federated source의 Event를 표시하는 공개 calendar, 검색 기능, 또는 tag/category별 집계 화면을 제공할 MAY 있다.

이러한 공개 화면에는 to에 https://www.w3.org/ns/activitystreams#Public (as:Public 또는 Public도 유효)이 없는 연합 Event를 절대로 포함해서는 MUST NOT 한다.

다만 Public이 cc에 설정되어 있다면 원격 Actor의 로컬 표현 내에서는 나타날 MAY 있다.

수신한 federated Event의 discoverability는 attributedTo에 지정된 Actor의 타입이나 Event를 수신한 Activity의 종류(예: Announce, Create)에 따라 결정해서는 MUST NOT 한다.

Organizers Collection

Event는 https://w3id.org/fep/8a8e/organizers를 이용해 주최자를 나타내는 것을 SHOULD 한다.

organizers Collection은 Event 관리 주체를 명확하게 하고, federated discovery를 지원하며, 플랫폼 간 상호운용성을 향상한다.

organizers 필드의 값은 OrderedCollection 또는 Collection이어야 MUST 한다.

이 Collection의 items에는 Actor 또는 Link가 들어갈 MAY 있다.

주최자가 ActivityPub entity가 아니라면(예: Actor가 없는 웹사이트나 조직) Link, https://schema.org/Person, 또는 https://schema.org/Organization을 사용하는 것이 권장된다.

명시적 비공개

Event 주최자를 의도적으로 공개하지 않는다면 organizers 필드를 null로 설정하거나, totalItems: 0을 사용하거나, 빈 items 배열을 사용해야 MUST 한다.

이는 주최자 정보를 일부러 공개하지 않기로 한 명시적 선택을 나타내며, 다른 필드로부터 주최자를 추론하는 것보다 우선한다.

이 경우 수신 client는 다른 Event 데이터로부터 주최자를 추론해서는 MUST NOT 한다.

attributedTo fallback

organizers가 생략된 경우 attributedTo에 있는 Actor를 Event 주최자로 추론할 MAY 있다.

주최자가 여러 명이라면 attributedTo 배열을 지원하지 않는 애플리케이션과의 호환성을 높이기 위해 organizers Collection을 명시적으로 제공하는 것이 RECOMMENDED 된다.

Actor를 위한 Upcoming Events Collection

Event를 게시한 모든 Actor는 미래 또는 현재 진행 중인 Event를 나열하는 https://w3id.org/fep/8a8e/upcomingEvents Collection을 갖는 것을 SHOULD 한다.

이 Collection은 다음 규칙을 따라야 MUST 한다.

  • Collection Type: OrderedCollection 또는 그 subtype이어야 MUST 한다.
  • Ordering: Event는 startTime 오름차순, 즉 가장 이른 Event가 먼저 오도록 정렬해야 MUST 한다.
  • Items: 각 항목은 다음 조건을 충족해야 MUST 한다.
    • Type: Event 또는 그 subtype이어야 한다.
    • Time: Event의 endTime이 현재 시각보다 이전이어서는 MUST NOT 한다. 즉 진행 중이거나 미래 Event여야 한다.
    • Actor Involvement: 다음 중 적어도 하나가 성립해야 한다.
      • Actor가 Event의 organizers Collection에 포함된다.
      • Actor가 Event를 소유한다. 즉 Event의 attributedTo에 포함된다.
      • Event가 Actor의 shares Collection에 있고, Event와 Actor가 동일한 host를 사용한다. 이 사용 사례는 주로 relay 및 Group Actor를 위한 것이다.

용어 및 프로퍼티 정의

joinMode와 externalParticipationUrl이라는 용어는 Mobilizon이 정의한 확장과 호환되며 그 정의를 참고한다.

displayEndTime

  • URI: https://w3id.org/fep/8a8e/displayEndTime
  • Label: endTime을 표시할지 여부
  • 설명: Event의 종료 시간을 사람에게 표시해야 하는지를 정의하는 프로퍼티
  • Range: Boolean

upcomingEvents

  • URI: https://w3id.org/fep/8a8e/upcomingEvents
  • Label: 예정된 Event의 OrderedCollection
  • 설명: 미래 startTime을 갖는 Event를 가장 이른 것부터 정렬한 ActivityStreams OrderedCollection
  • Range: as:OrderedCollection

OrganizersCollection

  • URI: https://w3id.org/fep/8a8e/OrganizersCollection
  • Label: Event의 주최자 Collection
  • 설명: ActivityStreams Collection의 모든 프로퍼티를 상속하며, items에 https://schema.org/Person 또는 https://schema.org/Organization도 포함할 수 있다.
  • Subclass: ActivityStreams Collection

organizers

  • URI: https://w3id.org/fep/8a8e/organizers
  • Label: Organizers Collection
  • 설명: Event의 주최자로 공개되는 entity를 나열하는 ActivityStreams Collection. null이면 주최자 정보를 의도적으로 비공개한다는 뜻이다.
  • Range: OrganizersCollection 또는 null
  • Required: Yes
  • Functional: No

AttendeesCollection

  • URI: https://w3id.org/fep/8a8e/AttendeesCollection
  • Label: Event 참석자의 Collection
  • 설명: ActivityStreams Collection 프로퍼티를 상속하며 items에는 schema:Person 또는 schema:Organization도 포함될 수 있다. Event organizer가 참석 확정한 entity를 담는다.
  • 다음 side effect 조건을 만족한 ActivityPub Actor가 포함된다.
    • Event를 대상으로 Join을 보냈고 Accept되었다.
    • Event가 object인 Invite에 Accept로 응답했다.
  • 인증 권한에 따라 items를 필터링할 MAY 있다.
  • totalItems를 설정하는 것을 SHOULD 한다.

attendees

  • URI: https://w3id.org/fep/8a8e/attendees
  • Label: Event의 참석자
  • Range: ActivityStreams Collection
  • Required: No
  • Functional: No

timezone

  • URI: https://w3id.org/fep/8a8e/timezone
  • Label: Event의 시간대
  • 설명: Event 시간에 적용되는 time zone을 나타낸다. 값은 IANA Time Zone Database에 있는 identifier여야 한다.
  • Range: literal IANA Time Zone identifier
  • Required: No
  • Functional: No

joinMode

  • URI: https://w3id.org/fep/8a8e/joinMode
  • Label: Join mode
  • 설명: 새로운 구성원이 Event에 참가할 수 있는 방식을 나타낸다.
  • 허용 값:
    • free
    • restricted
    • external
    • none
    • invite
  • external이면 externalParticipationUrl도 설정해야 한다.
  • Domain: as:Event
  • Range: string

requiredJoinVisibility

  • Label: Required Join Visibility
  • 설명: Event와 관련된 유효한 Join activity가 최소한 주소 지정해야 하는 audience를 정의한다. 개별 Actor, Group, as:Public, 기타 URI가 될 수 있다.
  • Join activity는 이에 맞게 to, cc, bto, audience 등을 사용해야 한다.
  • Domain: as:Event
  • Range: addressed target URI 목록

externalParticipationUrl

  • URI: https://w3id.org/fep/8a8e/externalParticipationUrl
  • Label: 외부 참가 URL
  • 설명: Event 참가 또는 ticket 구매가 가능한 외부 플랫폼 URL. joinMode가 external이면 필수다.
  • Domain: as:Event
  • Range: xsd:anyURI

isBannerImage

  • URI: https://w3id.org/fep/8a8e/isBannerImage
  • Label: 이미지가 Event banner image인지 여부
  • 설명: 해당 이미지가 Event용 banner image인지 나타낸다.
  • Domain: as:Image
  • Range: Boolean

eventStatus

  • URI: https://w3id.org/fep/8a8e/eventStatus
  • Label: Event의 상태
  • 설명: Event가 현재 어떤 상태인지 나타내며, 특히 취소 또는 일정 변경 상황에서 유용하다.
  • Domain: Event
  • Range: EventStatusType
  • Required: No
  • Functional: Yes
  • 관련 값:
    • EventCancelled
    • EventScheduled
    • EventTentative
    • EventMovedOnline
    • EventPostponed
    • EventRescheduled

EventStatusType

  • 설명: Event가 가질 수 있는 여러 상태를 나타내는 열거형 타입
  • Subclass: https://schema.org/EventStatusType

EventScheduled

  • Label: Event가 예정되어 있음
  • 설명: Event가 정상적으로 일정에 잡혀 계획되어 있다.
  • Subclass: EventStatusType

EventPostponed

  • Label: Event가 연기됨
  • 설명: Event가 연기되었고 새로운 날짜가 아직 정해지지 않았다. Event의 previousStartTime을 설정해야 한다.
  • Subclass: EventStatusType

EventRescheduled

  • Label: Event 일정이 변경됨
  • 설명: previousStartTime에는 이전 날짜를 넣고 startTime에는 Event의 새로운 시작 날짜를 넣어야 한다.
  • Subclass: EventStatusType

EventCancelled

  • Label: Event가 취소됨
  • 설명: Event가 취소되었다.
  • Subclass: EventStatusType

EventTentative

  • Label: Event가 잠정 상태
  • 설명: Event가 현재 계획 중이지만 아직 확정되지 않았다.
  • Subclass: EventStatusType

EventMovedOnline

  • Label: Event가 온라인으로 이동됨
  • 설명: Event가 온라인 참가를 허용하도록 변경되었음을 나타낸다.
  • Subclass: EventStatusType

previousStartTime

  • URI: https://w3id.org/fep/8a8e/previousStartTime
  • Label: Event의 이전 시작 시각
  • 설명: Event가 연기되거나 일정 변경되기 전의 원래 시작 시각
  • Domain: Event
  • Range: xsd:dateTime
  • 관련 상태:
    • EventPostponed
    • EventRescheduled

category

  • URI: https://w3id.org/fep/8a8e/category
  • Label: Event의 category
  • 설명: 권장 category는 다음을 포함한다.
    • ARTS
    • AUTO_BOAT_AIR
    • BOOK_CLUBS
    • BUSINESS
    • CAUSES
    • CLIMATE_ENVIRONMENT
    • COMMUNITY
    • COMEDY
    • CRAFTS
    • CREATIVE_JAM
    • DIY_MAKER_SPACES
    • FAMILY_EDUCATION
    • FASHION_BEAUTY
    • FESTIVALS
    • FILM_MEDIA
    • FOOD_DRINK
    • GAMES
    • INCLUSIVE_SPACES
    • LANGUAGE_CULTURE
    • LEARNING
    • LGBTQ
    • MEETING
    • MEDITATION_WELLBEING
    • MOVEMENTS_POLITICS
    • MUSIC
    • NETWORKING
    • OUTDOORS_ADVENTURE
    • PARTY
    • PERFORMING_VISUAL_ARTS
    • PETS
    • PHOTOGRAPHY
    • SCIENCE_TECH
    • SPIRITUALITY_RELIGION_BELIEFS
    • SPORTS
    • THEATRE
    • WORKSHOPS_SKILL_SHARING
  • Domain: Event
  • Range: xsd:string 목록

크레딧

이 작업은 NLnet foundation과 NGI Zero의 지원 없이는 가능하지 않았을 것이다.

이 문서의 출발점을 마련한 OFFDEM의 참여자들에게도 감사한다.

많은 시간이 필요한 논의에 참여해 준 Laurin Weger에게 특별히 감사한다. 또한 이 FEP에 대한 추가 논의를 위한 공간과 플랫폼을 제공한 Cloudfest Hackathon 2025와, 풍부한 피드백과 아이디어를 제공한 Andreas Heigl에게도 감사한다.

저작권

CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.

법이 허용하는 최대한의 범위에서 이 Fediverse Enhancement Proposal의 저자들은 이 저작물에 대한 모든 저작권 및 관련·인접 권리를 포기했다.


답글 남기기

More posts

Axismundi에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기