SKOS Concept History Management

From Metadata-Registry
Revision as of 11:27, 17 October 2006 by Jon (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This outlines proposed requirements for maintaining change history for Concepts.

ConceptClass

Has only the properties - date created, creator This is created whenever a new ConceptInstanceHistory is created It is not specifically related to a scheme, but since it's almost always created when a ConceptInstanceHistory is created it tends to be, although this is specifically not a requirement

This reads a bit fishy, maybe it could be tightened up? Maybe more punctuation would help?

The URI is created in the 'concept' namespace: http://metadataregistry.org/uri/concept/1234567

ConceptInstanceHistory

This is what we currently think of as a Concept and has all the normal SKOS properties Has an 'isHistoryFor' relationship to a ConceptInstance and has an inferential relationship to the ConceptClass Will have properties for timestamp of the change and who was the maintainer that made the change


We should add these properties to our internal set, no?


A new ConceptInstanceHistory is created every time any of the properties of the most recent ConceptInstanceHistory is changed or a property is added and retains all of the properties of the that ConceptInstanceHistory


Added or deleted?


Only the most recent ConceptInstanceHistory related a ConceptClass will be available for editing. The URI is what we currently associate with the URI for a 'Concept' plus a Unix timestamp http://metadatarepository.org/uri/NSDLEdLevel/1001/34456789 End Users will rarely see or use this URI, but it can be used for change management and tracking.


ConceptInstance

Like a ConceptClass, it has almost no properties of it's own, but is a representation of the most current ConceptinstanceHistory for a ConceptClass Has an 'isInstanceOf relationship to a ConceptClass The URI is what we currently associate with the URI for a 'Concept' http://metadatarepository.org/uri/NSDLEdLevel/1001 This URI will resolve to the most current ConceptInstanceHistory only if the status of the ConceptInstanceHistory is 'published' Date/time-based vocabulary snapshots will resolve to the most recent published ConceptInstanceHistory as of the date/time requested A date/time-based snapshot may also request the inclusion of statuses other than 'published'

Use Cases: User requests the current concepts for a vocabulary: Registry will resolve the request to:

   Retrieve Each ConceptInstance (URI)
       Where ConceptInstance isInstanceOf ConceptHistoryInstance
       And ConceptHistoryInstance::hasStatus = 'published'
       And ConceptHistoryInstance::inScheme = requestedVocabulary
       And ConceptHistoryInstance has most recent date

User wants to add an existing concept to a vocabulary for which she is a maintainer from another vocabulary for which she is a maintainer:

User selects/creates a currentVocabulary User indicates that she wants to add a concept from another vocabulary User selects an existing vocabulary for which she is a maintainer User searches (or uses select box) to retrieve a list of potential concepts User should optionally be able to specify only 'published' concepts and select a language In order to build the list of concepts retrieved, the Registry will resolve the request to:

   Retrieve Each ConceptHistoryInstance
       Where ConceptHistoryInstance::inScheme = selectedVocabulary
       And ConceptHistoryInstance has most recent date 

User selects a concept from the list On saveŠ

Registry creates a new ConceptHistoryInstance that copies all properties from the original ConceptHistoryInstance and adds ConceptHistoryInstance::inScheme = currentVocabulary. The currentVocabulary::ConceptHistoryInstance will have an isHistoryFor relationship to currentVocabulary::ConceptInstance which will be an instanceOf the original selectedVocabulary::conceptClass.


What if a property was deleted? Maybe it should say " ... copies all remaining properties from the original ... "


A new currentVocabulary::conceptClass will not be created.


Hmm, seems the assumption here is that the change is not a semantic change. Maybe we need to specifically say that for this one and add one for a semantic change?


Registry creates a new selectedVocabulary::ConceptHistoryInstance and adds ConceptHistoryInstance::inScheme = currentVocabulary. The status will default to the same status as the latest selectedVocabulary::ConceptHistoryInstance, since the User is a maintainer for both vocabularies (???)

User wants to add an existing concept to a vocabulary for which she is a maintainer from another vocabulary for which she is NOT a maintainer: This follows the previous use case, except that the status of the selectedVocabulary::ConceptHistoryInstance::inScheme = currentVocabulary relationship is created the status of the new property will be 'proposed -- new'

User wants to see all vocabularies that contain a concept or all properties of a conceptClass User selects a conceptInstance, either through selection or search and requests all instances/properties of the selectedConceptClass for which the selectedConceptInstance is an Instance. Registry will resolve the request to:

   Get the selectedConceptClass for which the selectedConceptInstance is an InstanceOf
   Retrieve Each ConceptHistoryInstance::property
       Where ConceptHistoryInstance isHistoryFor conceptInstance
       And conceptInstance isInstanceOf selectedConceptClass
       And ConceptHistoryInstance::hasStatus = 'published' (???)
       And ConceptHistoryInstance has most recent date

User wants to add a relationship from a concept for which she is a maintainer to a concept in another vocabulary:

User selects/creates a currentConceptHistoryInstance User indicates that she wants to add a relationship to a concept from another vocabulary User selects an existing vocabulary User searches (or uses select box) to retrieve a list of potential concepts User should optionally be able to specify only 'published' concepts In order to build the list of concepts retrieved, the Registry will resolve the request to:

   Retrieve Each ConceptHistoryInstance
       Where ConceptHistoryInstance::inScheme = selectedVocabulary
       And ConceptHistoryInstance has most recent date 

User selects a selectedConceptHistoryInstance from the list On saveŠ

Registry creates a new ConceptHistoryInstance that copies all properties from the currentConceptHistoryInstance and adds a relationship to the conceptInstance::URI for which the selectedConceptHistoryInstance is an Instance. Registry creates a new selectedVocabulary::selectedConceptHistoryInstance and adds ConceptHistoryInstance a reciprocal relationship to the conceptInstance::URI for which the currentConceptHistoryInstance is an instance. If the User is a maintainer for both vocabularies, the status will default to the same status as the latest selectedVocabulary::ConceptHistoryInstance, (???) If not, the status of the newly created relationship in the selectedVocabulary::selectedConceptHistoryInstance will be 'proposed - new'.

Yeah, I think the bits at the end will need some more discussion (the "endorsement" issue, for one thing) but I think you've got the gist of it down very nicely.