From 06cacf03d6a7e4abc15d35d195fa07c5bcb0ccbb Mon Sep 17 00:00:00 2001 From: mike bobak Date: Wed, 2 Mar 2022 17:29:33 -0600 Subject: [PATCH 01/68] Update file.scala.html mapping file class elts to schema.org --- app/views/file.scala.html | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/app/views/file.scala.html b/app/views/file.scala.html index b765c1ad7..e2e9a6528 100644 --- a/app/views/file.scala.html +++ b/app/views/file.scala.html @@ -73,6 +73,23 @@ + + + + + - - + - + - - + + + + - - From b76a6b516d1badafc723b55da869662474f494d5 Mon Sep 17 00:00:00 2001 From: m bobak Date: Mon, 4 Apr 2022 12:43:10 -0500 Subject: [PATCH 25/68] rm to_jsonLD method _fix thumbnail null value --- app/models/Dataset.scala | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/app/models/Dataset.scala b/app/models/Dataset.scala index 94eae42ae..7ce222c54 100644 --- a/app/models/Dataset.scala +++ b/app/models/Dataset.scala @@ -38,30 +38,6 @@ case class Dataset( def isDefault:Boolean = status == DatasetStatus.DEFAULT.toString def isTRIAL:Boolean = status == DatasetStatus.TRIAL.toString def inSpace:Boolean = spaces.size > 0 - /** - * return Dataset as string in jsonld format - */ - def to_jsonLD() : String = { - val so = JsObject(Seq("@vocab" -> JsString("https://schema.org/"))) - val datasetLD = JsObject(Seq( - "context" -> so, - "identifier" -> JsString(id.toString), - "name" -> JsString(name), - "author" -> author.to_jsonld(), - "description" -> JsString(description), - "dateCreated" -> JsString(created.toString.format("MMM dd, yyyy")), - "DigitalDocument" -> JsString(files.toString), - "Directory" -> JsString(folders.toString), - "keywords" -> JsString(tags.toString), - "Collection" -> JsString(collections.toString), - "thumbnail" -> JsString(thumbnail_id.toString), - "license" -> JsString(licenseData.to_jsonld().toString), - "dateModfied" -> JsString(lastModifiedDate.toString.format("MMM dd, yyyy")), - "FollowAction" -> JsString(followers.toString), - "creator" -> JsString(creators.toString) - )) - return Json.stringify(datasetLD) - } /** * return Dataset as JsValue in jsonld format */ @@ -77,7 +53,7 @@ case class Dataset( "DigitalDocument" -> Json.toJson(files), "Directory" -> Json.toJson(folders), "Collection" -> Json.toJson(collections), - "thumbnail" -> Json.toJson(thumbnail_id), + "thumbnail" -> Json.toJson(thumbnail_id.filterNot(_.isEmpty).getOrElse("")), "license" -> licenseData.to_jsonld(), "dateModfied" -> lastModifiedDate.toString.format("MMM dd, yyyy"), "FollowAction" -> Json.toJson(followers), From 9acbec7f9c21680c6b9f26335a19f46ce2c7cfb5 Mon Sep 17 00:00:00 2001 From: m bobak Date: Mon, 4 Apr 2022 13:00:24 -0500 Subject: [PATCH 26/68] to_jsonld method on tag class to return name --- app/models/Dataset.scala | 2 +- app/models/Tag.scala | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/models/Dataset.scala b/app/models/Dataset.scala index 7ce222c54..8e06d0625 100644 --- a/app/models/Dataset.scala +++ b/app/models/Dataset.scala @@ -57,7 +57,7 @@ case class Dataset( "license" -> licenseData.to_jsonld(), "dateModfied" -> lastModifiedDate.toString.format("MMM dd, yyyy"), "FollowAction" -> Json.toJson(followers), - "keywords" -> tags.toString, + "keywords" -> tags.map(x => x.to_jsonld()), "creator" -> Json.toJson(creators) ) return datasetLD diff --git a/app/models/Tag.scala b/app/models/Tag.scala index ce3962d92..29926bb8c 100644 --- a/app/models/Tag.scala +++ b/app/models/Tag.scala @@ -2,6 +2,9 @@ package models import java.util.Date +import play.api.libs.json._ + + /** * Add and remove tags * @@ -11,4 +14,8 @@ case class Tag( name: String, userId: Option[String], extractor_id: Option[String], - created: Date) + created: Date) { + def to_jsonld() : JsValue = { + return Json.toJson(name) + } + } From 5d82811b6427baf14c21aaff3d13eb116ab48a58 Mon Sep 17 00:00:00 2001 From: m bobak Date: Mon, 4 Apr 2022 16:44:47 -0500 Subject: [PATCH 27/68] add file.to_jsonld and for Stats and Section --- app/models/File.scala | 29 ++++++++++++++++++++++++++++- app/models/Section.scala | 11 +++++++++-- app/models/Statistic.scala | 7 ++++++- app/views/file.scala.html | 4 ++++ 4 files changed, 47 insertions(+), 4 deletions(-) diff --git a/app/models/File.scala b/app/models/File.scala index badb5c58e..27a66ea0f 100644 --- a/app/models/File.scala +++ b/app/models/File.scala @@ -4,6 +4,7 @@ import java.util.Date import models.FileStatus.FileStatus import play.api.libs.json.{JsObject, Json, Writes} +import play.api.libs.json._ /** * Uploaded files. @@ -32,7 +33,33 @@ case class File( licenseData: LicenseData = new LicenseData(), followers: List[UUID] = List.empty, stats: Statistics = new Statistics(), - status: String = FileStatus.UNKNOWN.toString) // can't use enums in salat + status: String = FileStatus.UNKNOWN.toString) { // can't use enums in salat + /** + * return File as JsValue in jsonld format + */ + def to_jsonld() : JsValue = { + val so = JsObject(Seq("@vocab" -> JsString("https://schema.org/"))) + val fileLD = Json.obj( + "context" -> so, + "identifier" -> id.toString, + "name" -> filename, + "author" -> author.to_jsonld(), + "isBasedOn" -> originalname, + "uploadDate" -> uploadDate.toString.format("MMM dd, yyyy"), + "contentType" -> contentType, + "MenuSection" -> sections.map(x => x.to_jsonld()), + "keywords" -> tags.map(x => x.to_jsonld()), + "thumbnail" -> Json.toJson(thumbnail_id.filterNot(_.isEmpty).getOrElse("")), + "description" -> description, + "license" -> licenseData.to_jsonld(), + "FollowAction" -> Json.toJson(followers), + "interactionStatistic" -> stats.to_jsonld, + "status" -> status + ) + return fileLD + } +} + // what is the status of the file object FileStatus extends Enumeration { diff --git a/app/models/Section.scala b/app/models/Section.scala index c1793a1ed..59f40c85c 100644 --- a/app/models/Section.scala +++ b/app/models/Section.scala @@ -1,5 +1,7 @@ package models +import play.api.libs.json._ + /** * A portion of a file. * @@ -17,7 +19,12 @@ case class Section( metadataCount: Long = 0, @deprecated("use Metadata","since the use of jsonld") jsonldMetadata : List[Metadata]= List.empty, thumbnail_id: Option[String] = None, - tags: List[Tag] = List.empty) + tags: List[Tag] = List.empty) { + def to_jsonld() : JsValue = { + return Json.toJson(description) + } + } + case class Rectangle( x: Double, @@ -25,4 +32,4 @@ case class Rectangle( w: Double, h: Double) { override def toString() = f"x: $x%.2f, y: $y%.2f, width: $w%.2f, height: $h%.2f" -} \ No newline at end of file +} diff --git a/app/models/Statistic.scala b/app/models/Statistic.scala index bdc8c02da..40a19b02a 100644 --- a/app/models/Statistic.scala +++ b/app/models/Statistic.scala @@ -10,7 +10,12 @@ case class Statistics ( downloads: Int = 0, last_viewed: Option[Date] = None, last_downloaded: Option[Date] = None -) +) { + def to_jsonld() : JsValue = { + return Json.toJson(views) + } + } + case class StatisticUser ( user_id: UUID, diff --git a/app/views/file.scala.html b/app/views/file.scala.html index 68db32097..943a9e47a 100644 --- a/app/views/file.scala.html +++ b/app/views/file.scala.html @@ -73,6 +73,10 @@ + + - - - - @@ -384,7 +387,7 @@

Statistics

+ @Html(Json.prettyPrint(dataset.to_jsonld(Utils.baseUrl(request)))) + + @Html(Json.prettyPrint(file.to_jsonld())) +