ucoProject / UCO

This repository is for development of the Unified Cyber Ontology.
Apache License 2.0
80 stars 34 forks source link

Need a way to express ordered lists #121

Closed sbarnum closed 1 year ago

sbarnum commented 5 years ago

This was previously in UCO in words only through use of the ArrayOf* classes in types.ttl that were removed. That implementation provided no enforcement of ordering at all however.

The ordering specifically comes into play for things like ArrayOfAction utilized by ActionLifecycle

ajnelson-nist commented 5 years ago

There is an ordered list in use already under the observable namespace, observable:CyberItemRelationshipEnum. I'm not sure if that particular list was intended to be an ordered list, but that's how it ended up being implemented. And also how it ends up being obviously highlighted out from rdf-toolkit... lotta whitespace.

I'm curious: What more are you looking for over the ordered lists that Turtle provides a shorthand syntax for?

sbarnum commented 5 years ago

@ajnelson-nist Sorry for the confusion. I am not referring to a mechanism in the turtle format to specify rdf assertions in an ordered fashion. I am talking about modeling a mechanism such that ordered lists of content (objects, object-properties, datatype-properties) can be expressed in UCO instance content.

For example if you wanted to specify an ActionLifecycle for the LMCO Kill Chain you will not only want to express the following actions (Reconnaisance, Weaponization, Delivery, Exploitation, Installation, Command&Control, ActionsOnObjectives) but you would want to explicitly convey that they are always in that order. By default properties in rdf with a plural cardinality define a set not an ordered list. We currently do not have a way in UCO to define ordered lists.

The enum example you reference is using the rdf:List structure for RDF Collections and likely would be part of a practical solution but that part of the RDF stack is still a bit weak and there are many open questions to address such as how to use it not for an explicitly specified list but for a list structure (as we need to do for our ontology), how to constrain the range of the rdf:first property appropriately for any given list property, how to most effectively serialize it as JSON-LD, etc.

This ticket is to track the addressing of these questions.

ajnelson-nist commented 5 years ago

This was helpful. Thank you, Sean.

rhohimer commented 5 years ago

I do not wish to add to any confusion. However, I’ll risk it and throw in my two-cents worth…

Many organizations have their own lifecycle like things:

At DarkLight we created ontologies for each of these “proprietary” lifecycles. We have modeled them in the ontologies similarly to a linked list… previous and next predicates.

Ryan E. Hohimer CTO DarkLight Mobile: (509) 430-6890 710 George Washington Way, Suite A Richland, Washington 99352

Email: ryan@darklight.aimailto:ryan@darklight.ai www.darklight.aihttp://www.darklight.ai/ [/var/folders/yq/92cmrbms6836nn7wcplcylcm0000gn/T/com.microsoft.Word/WebArchiveCopyPasteTempFiles/cidA34D49DB-AC95-9240-9256-DE72F24E71C2.png] This e-mail (including any attachments) may contain information that is private, confidential, or protected by attorney-client or other privilege. If you received this e-mail in error, please delete it from your system without copying it and notify sender by reply e-mail so our records can be corrected.

From: Sean Barnum notifications@github.com Sent: Friday, July 12, 2019 11:01 AM To: ucoProject/UCO UCO@noreply.github.com Cc: Subscribed subscribed@noreply.github.com Subject: Re: [ucoProject/UCO] Need a way to express ordered lists (#121)

@ajnelson-nisthttps://github.com/ajnelson-nist Sorry for the confusion. I am not referring to a mechanism in the turtle format to specify rdf assertions in an ordered fashion. I am talking about modeling a mechanism such that ordered lists of content (objects, object-properties, datatype-properties) can be expressed in UCO instance content.

For example if you wanted to specify an ActionLifecycle for the LMCO Kill Chain you will not only want to express the following actions (Reconnaisance, Weaponization, Delivery, Exploitation, Installation, Command&Control, ActionsOnObjectives) but you would want to explicitly convey that they are always in that order. By default properties in rdf with a plural cardinality define a set not an ordered list. We currently do not have a way in UCO to define ordered lists.

The enum example you reference is using the rdf:List structure for RDF Collections and likely would be part of a practical solution but that part of the RDF stack is still a bit weak and there are many open questions to address such as how to use it not for an explicitly specified list but for a list structure (as we need to do for our ontology), how to constrain the range of the rdf:first property appropriately for any given list property, how to most effectively serialize it as JSON-LD, etc.

This ticket is to track the addressing of these questions.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/ucoProject/UCO/issues/121?email_source=notifications&email_token=ACLF2VI5COTLFSTXACLSH5TP7DBHFA5CNFSM4ICM7VBKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZ2OUSQ#issuecomment-510978634, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ACLF2VLGY7B22CKYEZYDNI3P7DBHFANCNFSM4ICM7VBA.

eoghanscasey commented 1 year ago

This issue should be closed because ordered lists was addressed by Issue #389 import of Collections Ontology.