Closed gitblanc closed 1 year ago
For the attributes , my group was planning to add another one called rating because of the following requirement in the assigment
Comments would be like a nested set of comment objects from other users or the user that owns the pod where the location itself it's stored, right?
regarding the images: I think the best way is to store it in the own pod and then reference the unique URL in the json as said here , that way we would not have to share data with third parties and we would be taking advantage of already existing functionality
I added a review scores field fo the JSON, and like you say, comments are going to be an array of comments. According to the images I think is the easiest idea for everyone!
by the way , how would the comment structure be?
Are comments plain-text only or is it possible to add images to them too ? for the structure i would suggest something like
"comments":[
{
"author":"webId of the person who comments",
"comment":"comment contents",
"date": "timestamp of the moment the comment was submitted"
}
(..)
]
Also for review scores, I would name the attribute with a singular noun like score , rating... or reviewScore so nobody thinks it's an array of scores.
regarding names. I would use only lowercase and no spaces, camel case if we want to use more than one word for example in reviewScores.
SORRY, another thing, i think we would need another field, category and for that agree to stablish a set of categories for all groups that want theit apps to be compatible. Also i think that adding timestamps is easy and could be useful in case anyone wants to display the time
with all that, my proposal would be
{
"locations":[
{
"name":"Parque de invierno",
"category":"park"
"latitude":"43.35302550278352",
"longitude":"-5.849442050492078",
"description":"A beautiful place I found when i went for a walk",
"comments":[
{
"author":"webId of the person who comments",
"comment":"I've been there with my dog !",
"date": "1679832611",//timesamp of the comment
},
(..more comments)
]
"reviewScore":"",
"date": "timestamp of the time the user placed the pin/landmark..."
}
I think that's the best structure for the json. Anyone has another idea or likes this one?
Even though we might not need to make any further changes to our JSON specification, I believe it's important that we keep track of its version. Should we update the specification, this version number will help us avoid any confusion or errors in the future and maintain backward compatibility.
To add a version number to the JSON specification, I'd suggest including a new field "version" at the top level of the JSON object. The value of this field can be a string or a number that represents the version number of the specification.
{
"version": "1.0",
"locations": []
}
I think the lastest structure proposed is appropriate. I believe we also need to agree on some restrictions regarding what will be stored inside each attribute. I propose the following:
Finally we should agree on which attributes can be left empty and which ones are compulsory. To my belief, the only critical information our apps will need is:
In my opinion, the rest should remain optional and could be left empty by the user.
There are only two things that i should change:
{
"maps":[
"id":"(generación aleatoria de carácteres)",
"name":"Parque de invierno",
"locations":[
{
"id":"(generación aleatoria de carácteres)",
"name":"Parque de invierno",
"category":"park"
"latitude":"43.35302550278352",
"longitude":"-5.849442050492078",
"description":"A beautiful place I found when i went for a walk",
"comments":[
{
"author":"webId of the person who comments",
"comment":"I've been there with my dog !",
"date": "1679832611",//timesamp of the comment
},
(..more comments)
]
"reviewScore":"",
"date": "timestamp of the time the user placed the pin/landmark..."
}
I think that the extra-rules you are proposing are correct. I'll implementate them as soon as possible.
I also want to know where are we going to store the json.
In my example, I created a folder on the user's pod root directory called justforfriends
. This directory has specific agent persmissions that allows all my friends to read, append, and write data on it. Do you think that are the correct permissions, or the name of the folder is correct?. If we store the JSON on the same directory each person of each group can use the app of any other group without any problems.
There are only two things that i should change:
- I should add an id for locations
- People will have more than one map, so we need to add an other maps array. The format in my opinion should be this.
{ "maps":[ "id":"(generación aleatoria de carácteres)", "name":"Parque de invierno", "locations":[ { "id":"(generación aleatoria de carácteres)", "name":"Parque de invierno", "category":"park" "latitude":"43.35302550278352", "longitude":"-5.849442050492078", "description":"A beautiful place I found when i went for a walk", "comments":[ { "author":"webId of the person who comments", "comment":"I've been there with my dog !", "date": "1679832611",//timesamp of the comment }, (..more comments) ] "reviewScore":"", "date": "timestamp of the time the user placed the pin/landmark..." }
I do not think that we may need an array of maps inside the same JSON. I think that we can create separate JSONs for each map that the user creates. If we do this, we will improve efficiency on our app, because it's not the same processing 1 file of 300k lines rather than 3 files of 100k lines each one
Yeah, i agree with what @gitblanc says, having a massive Json file could be worse for the efficiency of the app itself, so we should probably create separate JSONs.
Has anyone thought about how to implement routes? In case anyone wants to add them in the future, as I've said in the general issue, GeoRDF could be helpful for this idea, since it has an already defined element (line), and would work like this:
`
Hello, I agree with the attributes you have proposed. However ehat we are talking in the other issue is the fact that. JSON is not the standard for Solid pods, therefore this way we are not doing the solid way. For that we thought on rather than using RDfa, use the mix that is JSONld. This is a Solid compatible format which has the structure of a json but it's also rdf. Right now I can't show you an example of it but in few hours I can post an example of its syntax.
This is the way.
Hello, I agree with the attributes you have proposed. However ehat we are talking in the other issue is the fact that. JSON is not the standard for Solid pods, therefore this way we are not doing the solid way. For that we thought on rather than using RDfa, use the mix that is JSONld. This is a Solid compatible format which has the structure of a json but it's also rdf. Right now I can't show you an example of it but in few hours I can post an example of its syntax.
This is the way.
Of course you are right. BUT, as you said, no one has a good example of a structure in that specification. So once anybody has a good example of rdf or JSONld we could talk about it. Now some groups like mine, are working with pods in JSON and that is the main thing on this issue
I want to close this issue when we set a common directory for the json file. Do you like to store it in a folder called like this?
Tell em what you think
Hello @andrrsin , can you post the example that you have metioned? Thank you
@iimxinn I will upload a small example in the new issue related to the formats.
I think that we need to add, a pictures array.
{
"maps":[
"id":"(generación aleatoria de carácteres)",
"name":"Parque de invierno",
"locations":[
{
"id":"(generación aleatoria de carácteres)",
"name":"Parque de invierno",
"category":"park"
"latitude":"43.35302550278352",
"longitude":"-5.849442050492078",
"description":"A beautiful place I found when i went for a walk",
"comments":[
{
"author":"webId of the person who comments",
"comment":"I've been there with my dog !",
"date": "1679832611",//timesamp of the comment
},
(..more comments)
],
"reviewScore":[
{
"author":"webId of the person who do the review",
"score":"5",
"date": "1679832611",//timesamp of the comment
},
(..more reviews)
],
"pictures":[
{
"author":"webId of the person who take the photo",
"pictureURL":"pictures's URL",
},
(..more pictures)
],
}
I think that we need to add, a pictures array.
{ "maps":[ "id":"(generación aleatoria de carácteres)", "name":"Parque de invierno", "locations":[ { "id":"(generación aleatoria de carácteres)", "name":"Parque de invierno", "category":"park" "latitude":"43.35302550278352", "longitude":"-5.849442050492078", "description":"A beautiful place I found when i went for a walk", "comments":[ { "author":"webId of the person who comments", "comment":"I've been there with my dog !", "date": "1679832611",//timesamp of the comment }, (..more comments) ], "reviewScores":[ { "author":"webId of the person who do the review", "score":"5", "date": "1679832611",//timesamp of the comment }, (..more reviews) ], "pictures":[ { "author":"webId of the person who take the photo", "pictureURL":"pictures's URL", }, (..more pictures) ], }
Yes! We will need to add an array on the user's pod to store external links to the urls of the images of each location
Wouldn't it make more sense to put the rating as part of the comment? (as done in Google Maps: 1 comment + 1 rate= 1 review). That would associate the comment with a rate directly.
I think it is more logical. What do you think?
I think we shoud add an author for map.
{
"maps":[
"id":"(generación aleatoria de carácteres)",
"name":"Parque de invierno",
"author":"Paco",
"locations":[
{
"id":"(generación aleatoria de carácteres)",
"name":"Parque de invierno",
"category":"park"
"latitude":"43.35302550278352",
"longitude":"-5.849442050492078",
"description":"A beautiful place I found when i went for a walk",
"comments":[
{
"author":"webId of the person who comments",
"comment":"I've been there with my dog !",
"date": "1679832611",//timesamp of the comment
},
(..more comments)
],
"reviewScore":[
{
"author":"webId of the person who do the review",
"score":"5",
"date": "1679832611",//timesamp of the comment
},
(..more reviews)
],
"pictures":[
{
"author":"webId of the person who take the photo",
"pictureURL":"pictures's URL",
},
(..more pictures)
],
}
Wouldn't it make more sense to put the rating as part of the comment? (as done in Google Maps: 1 comment + 1 rate= 1 review). That would associate the comment with a rate directly.
I think it is more logical. What do you think?
Not always that you add a comment you necessary have to add a score haven't you? I think that having separate arrays much be a better option just for separate functionality
I think we shoud add an author for map.
{ "maps":[ "id":"(generación aleatoria de carácteres)", "name":"Parque de invierno", "author":"Paco", "locations":[ { "id":"(generación aleatoria de carácteres)", "name":"Parque de invierno", "category":"park" "latitude":"43.35302550278352", "longitude":"-5.849442050492078", "description":"A beautiful place I found when i went for a walk", "comments":[ { "author":"webId of the person who comments", "comment":"I've been there with my dog !", "date": "1679832611",//timesamp of the comment }, (..more comments) ], "reviewScore":[ { "author":"webId of the person who do the review", "score":"5", "date": "1679832611",//timesamp of the comment }, (..more reviews) ], "pictures":[ { "author":"webId of the person who take the photo", "pictureURL":"pictures's URL", }, (..more pictures) ], }
Why? The author of the map is the pod owner isn't?
yes is the owner but i think for friends map its easier add the owner. But if you have other implementation (like take straightaway friend name) you can add this on json and not use it.
Well, it's true that for people that realize optional requirements may be needed: Create multiple maps between groups of users (family maps, tourist groups, etc. )
So I think that is a good idea to add that field
https://github.com/Arquisoft/lomapSpec/wiki/Data-specification-with-format-JSON
yes is the owner but i think for friends map its easier add the owner. But if you have other implementation (like take straightaway friend name) you can add this on json and not use it.
I am agree.
Wouldn't it make more sense to put the rating as part of the comment? (as done in Google Maps: 1 comment + 1 rate= 1 review). That would associate the comment with a rate directly. I think it is more logical. What do you think?
Not always that you add a comment you necessary have to add a score haven't you? I think that having separate arrays much be a better option just for separate functionality
Well, in Google Maps it works like that as I said. Do not forget that we are talking about the way to save information, the implementation about allowing or not to comment without a rating it is your choice.
yes is the owner but i think for friends map its easier add the owner. But if you have other implementation (like take straightaway friend name) you can add this on json and not use it.
I am agree.
Wouldn't it make more sense to put the rating as part of the comment? (as done in Google Maps: 1 comment + 1 rate= 1 review). That would associate the comment with a rate directly. I think it is more logical. What do you think?
Not always that you add a comment you necessary have to add a score haven't you? I think that having separate arrays much be a better option just for separate functionality
Well, in Google Maps it works like that as I said. Do not forget that we are talking about the way to save information, the implementation about allowing or not to comment without a rating it is your choice.
I know that we are talking about the data storage, but this decision may change some team's functionality and i don't know what do you want to save if the user doesn't add a review (i don't think that you have to enforce him/her to vote, so you save a null or what?). To add this change let's wait for other teams decision. Do you like it?
Please, other teams, do you like to change the reviewScores instead of using an array to save them in the comments array? Something like this:
"comments":[
{
"author":"webId of the person who comments",
"comment":"I've been there with my dog !",
"score": "0-5" (if the user didn't score what happens?)
"date": "1679832611",//timestamp of the comment
},
(..more comments)
]
Another question I want to pose is the interoperability of the application. I know there is an issue opened but I think it's a bit difuse on what the specification may be. I've been watching that most of groups (that have pods interaction) instead of using RDF or JSONld format, use simply JSON, so I want to know if this is going to be one of the main specifications or someone is working well with anotherone.
I want to make some declarations according to the pictures of the pod: