SlideShare a Scribd company logo
SoMa Project Timeline
Irina Grosu
Ana-Teodora Petrea
WADE 2013 – 2014
SoMa Project Timeline
Start Date
 Started working on the SoMa project on the 4th of November 2013.
Pick implementation technology
 The SoMa application is an ASP.NET MVC 4 project that will expose a REST API.

 The main reasons we chose this technology are:
 Provides Templates for MVC applications and Web APIs. This make it faster to develop
reliable Web APIs and applications.
 The .NET Platform provides lots of libraries to work with.
 Twitter Bootstrap is available as a NuGet package. Fast front-end development framework.
Uses LESS.
 Also, NuGet packages for working with the Twitter and Flickr APIs.
 Bing Maps are integrated in the .NET Framework.
 Visual Studio Add-Ons for better development: Productivity Power Tools 2012.
 Fast deployment to Windows Azure and reliable cloud service.
Pick Domain
 Picked Domain Name! See us at: http://soma.azurewebsites.net/
 Hosting in the

using
Synonyms providers analysis – complete analysis here
 Thesaurus - HTTP GET request to http://thesaurus.altervista.org/thesaurus/v1


Parameters: word, language, application key, response type



Request example: http://thesaurus.altervista.org/thesaurus/v1?word=finish%20line&language=en_US&key=u8JKaOitVKHOahvUs&output=xml



Response:
<response>
<list>
<category>(noun)</category>
<synonyms>finishing line|line|finish|destination|goal</synonyms>
</list>
</response>



Pros:


Provides pretty accurate synonyms



The results don't require heavy processing



One synonym list for each definition (synset) of a word -> limit searches to the most relevant ones (or the most likely to be relevant) -> only consider
the main and most common synset.
Synonyms providers analisys
 The Synonyms API from STANDS4 - offers a web API for retrieving synonyms, thesaurus information and antonyms of a given word.


Parameters: API user id, developer token id, word



Request example: http://www.stands4.com/services/v2/syno.php?uid=1001&tokenid=tk324324&word=doctor



Response
<results>
<result>
<term>doctor, doc, physician, MD, Dr., medico</term>
<definition>a licensed medical practitioner</definition>
<example>"I felt so bad I went to see my doctor"</example>
<partofspeech>noun</partofspeech>
<synonyms>doc, medico, doctor, physician, mendelevium, medical student</synonyms>
<antonyms/>
</result>
[...]
</results>



More information:
 Less accurate synonyms
 The most widely used synset is given as the first result
REST API – complete documentation here
 Created a REST API for SoMa that includes hypermedia controls.

 Exposing 2 main resources:
 /websites - Resource representing all the websites supported by the SoMa application. For
the moment, we decided on Twitter and Flickr. If the time allows it, we will also support
Vimeo.
 /resources - Generic name for all content downloaded from the supported websites: posts,
tweets, pictures, videos, etc.

 API Key required in order to prove the authenticity of the requests and to limit
their number. This should protect the application from attacks like Denial of
Service.

 To get all the available websites supported by the application a GET Request can
be made to the /websites resource.
REST API
 GET request to: /websites?key={INSERT_YOUR_KEY} => Response:
[{
"Name":"Flickr",
"Links":
[{
"Rel":"linkrels/websites/query_by_tag",
"Uri":"/websites/flickr"
}]}, {
"Name":"Twitter",
"Links":
[{
"Rel":"linkrels/websites/query_by_tag",
"Uri":"/websites/twitter"
}]
}]
REST API
 To query, for example, new photos a POST request can be made to /websites/flickr that
contains in the POST body one or more of the following parameters:
Name
tag
max_no_entries
key
use_synonyms
ignore_previous

Definition
The tag you want to search for. For example: cat.
The maximum number of the entries from the response.
A valid API Key is needed in order to use the REST API.
The API implicitly make use of synonyms but if it is wanted this can be disabled
by using the parameter with the ‘false’ value like: use_synonyms=false
The API implicitly uses previous search results (if they exists) to provide faster
access to resources. If the ignore_previous parameter is used with the value
‘true’ the previous stored content (if it exists) will be deleted and a new search
will be made for the provided tags.

 The user has also the possibility to make a DELETE request in order to remove
from the cache the information stored for a specific tag.
REST API
To retrieve, for example, the photos associated with a tag a GET request can be made to:
/resources/photos/{tag}?key={INSERT_YOUR_KEY}. Possible result:
[{
"PhotoName":"BlackCat.jpg",
"Id":"f9299cb7d7a9b9c3f57b83461c541a24",
"Url":"http://www.flickr.com/photos/doug88888/5717852049",
"Website":"flickr",
"Links":
[{
"Rel":"linkrels/resources/photos/get",
"Uri":"/resources/photos/cat/f9299cb7d7a9b9c3f57b83461c541a24"
}] }, {
"PhotoName":"Cat.jpg",
"Id":"f2fb87bbad9d093c5a631b548be70c8f",
"Url":"http://www.flickr.com/photos/ronanmccormick/9837068194",
"Website":"flickr",
"Links":
[{
"Rel":"linkrels/resources/photos/get",
"Uri":"/resources/photos/cat/f2fb87bbad9d093c5a631b548be70c8f"
}]
}]
REST API
 The user has also the possibility to request an individual resource using the tag
and the id of that resource. For example, using the URL provided in the previous
response he can request more information by making a GET request to:
/resources/photos/cat/f2fb87bbad9d093c5a631b548be70c8f?key={INSERT_YO
UR_KEY}. The response may be:
{
"PhotoName":"Cat.jpg",
"Id":"f2fb87bbad9d093c5a631b548be70c8f",
"Url":"http://www.flickr.com/photos/ronanmccormick/9837068194",
"Website":"flickr",
"Author":"Ronan McCormick“

}
Architecture & Design – complete documentation here
 Application created using the concept API First. The front-end makes use of the REST API in
order to complete user requests.
 Resource Models - general (Resource) and specific classes (PhotoResource,
MessageResource) stored in specific repositories (MessagesRepository, PhotosRepository).
Resources are stored organized after their tag and id.
 The retrieved information is Cache persistent. In order to save cache space the photo content
is not downloaded but only referenced by Url inside the resource model. The content will be
downloaded and displayed on Bing Maps at the load time of the information on the page.
 Repositories for storing resources:
 Repository: abstract class that contains the cache keys used in identifying the stored information
for the application;
 MessageRepository: stores the information regarding the messages obtained from Twitter;
 PhotosRepository: stores the information regarding the photos obtained from Flickr;
Architecture & Design
 SynonymsProvider – supports the interaction between the application and the service
used for obtaining synonyms;
 FlickrSearch – Supports the interaction between the application and the Flickr service;
 TwitterSearch – Supports the interaction between the application and the Twitter
service;
 WebsitesController – Provides access to the /websites resource representing the
resources stored by the application.
 FlickrController – Processes the POST requests sent using the /websites/flickr endpoint
of the REST API.
 TwitterController – Processes the POST requests sent using the /websites/twitter
endpoint of the REST API.
Architecture & Design
 ResourcesController – Provides access to the /resources endpoint representing
the resources stored by the application.
 PhotosController – Processes GET and DELETE requests sent using the
/resources/photos endpoint of the REST API.
 MessagesController – Processes GET and DELETE requests sent using the
/resources/messages endpoint of the REST API.
 The Class Diagram for the soma Project can be found here.
 A Sequence Diagram representing a request being made with a specific tag for
receiving messages from Twitter can be found here.
 The complete documentation of SoMa’s Architecture & Design that also
contains microdata can be found here.
Prototype
 A demo is up and running at : http://soma.azurewebsites.net/
 Any of the following requests can be tried:
 Retrieve supported websites:
http://soma.azurewebsites.net/api/websites?key=lro2e32
 Retrieve resources types:
http://soma.azurewebsites.net/api/resources?key=lro2e32
 Retrieve photos for the ‘cat’ tag:
http://soma.azurewebsites.net/api/resources/photos/cat?key=lro2e32
MidTerm Evaluation
 Blog available at: http://wadesoma.wordpress.com/

 SoMa website: http://soma.azurewebsites.net/
 Source Code available at: https://wadesoma.codeplex.com/
 Documentation available at: http://students.info.uaic.ro/~irina.grosu/soma/
Thank you!

More Related Content

What's hot

Are you getting Sleepy. REST in SharePoint Apps
Are you getting Sleepy. REST in SharePoint AppsAre you getting Sleepy. REST in SharePoint Apps
Are you getting Sleepy. REST in SharePoint Apps
Liam Cleary [MVP]
 
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
Suzzicks
 
Doing More with Less: Mash Your Way to Productivity
Doing More with Less: Mash Your Way to ProductivityDoing More with Less: Mash Your Way to Productivity
Doing More with Less: Mash Your Way to Productivity
guest3c5c731bc
 
Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)
Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)
Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)
Angela Lozano
 
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
ijceronline
 
Flickr
FlickrFlickr
20090914 Petamedia Irp5
20090914 Petamedia Irp520090914 Petamedia Irp5
20090914 Petamedia Irp5
Arjen de Vries
 
Writing Secure SharePoint Code - SharePoint Saturday Toronto
Writing Secure SharePoint Code - SharePoint Saturday TorontoWriting Secure SharePoint Code - SharePoint Saturday Toronto
Writing Secure SharePoint Code - SharePoint Saturday Toronto
Eli Robillard
 

What's hot (8)

Are you getting Sleepy. REST in SharePoint Apps
Are you getting Sleepy. REST in SharePoint AppsAre you getting Sleepy. REST in SharePoint Apps
Are you getting Sleepy. REST in SharePoint Apps
 
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
 
Doing More with Less: Mash Your Way to Productivity
Doing More with Less: Mash Your Way to ProductivityDoing More with Less: Mash Your Way to Productivity
Doing More with Less: Mash Your Way to Productivity
 
Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)
Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)
Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)
 
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
 
Flickr
FlickrFlickr
Flickr
 
20090914 Petamedia Irp5
20090914 Petamedia Irp520090914 Petamedia Irp5
20090914 Petamedia Irp5
 
Writing Secure SharePoint Code - SharePoint Saturday Toronto
Writing Secure SharePoint Code - SharePoint Saturday TorontoWriting Secure SharePoint Code - SharePoint Saturday Toronto
Writing Secure SharePoint Code - SharePoint Saturday Toronto
 

Similar to Timeline SoMa WADE

Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web Development
Robert J. Stein
 
WebApp #3 : API
WebApp #3 : APIWebApp #3 : API
WebApp #3 : API
Jean Michel
 
Modified REST Presentation
Modified REST PresentationModified REST Presentation
Modified REST Presentation
Alexandros Marinos
 
SPFx Webinar Loading SharePoint data in a SPFx Webpart
SPFx Webinar Loading SharePoint data in a SPFx WebpartSPFx Webinar Loading SharePoint data in a SPFx Webpart
SPFx Webinar Loading SharePoint data in a SPFx Webpart
Jenkins NS
 
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Jim McKeeth
 
Developing Distributed Web Applications, Where does REST fit in?
Developing Distributed Web Applications, Where does REST fit in?Developing Distributed Web Applications, Where does REST fit in?
Developing Distributed Web Applications, Where does REST fit in?
Srinath Perera
 
Stefaan Ponnet, Fusebox
Stefaan Ponnet, FuseboxStefaan Ponnet, Fusebox
Stefaan Ponnet, Fusebox
nascomgenk
 
Charla desarrollo de apps con sharepoint y office 365
Charla   desarrollo de apps con sharepoint y office 365Charla   desarrollo de apps con sharepoint y office 365
Charla desarrollo de apps con sharepoint y office 365
Luis Valencia
 
Big Data Week 2013 Flow
Big Data Week 2013 FlowBig Data Week 2013 Flow
Big Data Week 2013 Flow
Victor Anjos
 
Prototyping applications with heroku and elasticsearch
 Prototyping applications with heroku and elasticsearch Prototyping applications with heroku and elasticsearch
Prototyping applications with heroku and elasticsearch
protofy
 
SharePoint 2013 REST APIs
SharePoint 2013 REST APIsSharePoint 2013 REST APIs
SharePoint 2013 REST APIs
Giuseppe Marchi
 
Colloquim Report - Rotto Link Web Crawler
Colloquim Report - Rotto Link Web CrawlerColloquim Report - Rotto Link Web Crawler
Colloquim Report - Rotto Link Web Crawler
Akshay Pratap Singh
 
Api manager preconference
Api manager preconferenceApi manager preconference
Api manager preconference
ColdFusionConference
 
REST based API
REST based APIREST based API
REST based API
ijtsrd
 
Download PowerPoint Project on social programming for engineering students
Download PowerPoint Project on social programming for engineering studentsDownload PowerPoint Project on social programming for engineering students
Download PowerPoint Project on social programming for engineering students
SkyingBlogger
 
OAuth Android Göteborg
OAuth Android GöteborgOAuth Android Göteborg
OAuth Android Göteborg
danieloskarsson
 
SharePoint Fest DC - Everything your need to know about the Microsoft Graph a...
SharePoint Fest DC - Everything your need to know about the Microsoft Graph a...SharePoint Fest DC - Everything your need to know about the Microsoft Graph a...
SharePoint Fest DC - Everything your need to know about the Microsoft Graph a...
Sébastien Levert
 
REST Presentation
REST PresentationREST Presentation
REST Presentation
Alexandros Marinos
 
Best Practices for Architecting a Pragmatic Web API.
Best Practices for Architecting a Pragmatic Web API.Best Practices for Architecting a Pragmatic Web API.
Best Practices for Architecting a Pragmatic Web API.
Mario Cardinal
 
WebAppSec Updates from W3C
WebAppSec Updates from W3CWebAppSec Updates from W3C
WebAppSec Updates from W3C
Natasha Rooney
 

Similar to Timeline SoMa WADE (20)

Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web Development
 
WebApp #3 : API
WebApp #3 : APIWebApp #3 : API
WebApp #3 : API
 
Modified REST Presentation
Modified REST PresentationModified REST Presentation
Modified REST Presentation
 
SPFx Webinar Loading SharePoint data in a SPFx Webpart
SPFx Webinar Loading SharePoint data in a SPFx WebpartSPFx Webinar Loading SharePoint data in a SPFx Webpart
SPFx Webinar Loading SharePoint data in a SPFx Webpart
 
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
 
Developing Distributed Web Applications, Where does REST fit in?
Developing Distributed Web Applications, Where does REST fit in?Developing Distributed Web Applications, Where does REST fit in?
Developing Distributed Web Applications, Where does REST fit in?
 
Stefaan Ponnet, Fusebox
Stefaan Ponnet, FuseboxStefaan Ponnet, Fusebox
Stefaan Ponnet, Fusebox
 
Charla desarrollo de apps con sharepoint y office 365
Charla   desarrollo de apps con sharepoint y office 365Charla   desarrollo de apps con sharepoint y office 365
Charla desarrollo de apps con sharepoint y office 365
 
Big Data Week 2013 Flow
Big Data Week 2013 FlowBig Data Week 2013 Flow
Big Data Week 2013 Flow
 
Prototyping applications with heroku and elasticsearch
 Prototyping applications with heroku and elasticsearch Prototyping applications with heroku and elasticsearch
Prototyping applications with heroku and elasticsearch
 
SharePoint 2013 REST APIs
SharePoint 2013 REST APIsSharePoint 2013 REST APIs
SharePoint 2013 REST APIs
 
Colloquim Report - Rotto Link Web Crawler
Colloquim Report - Rotto Link Web CrawlerColloquim Report - Rotto Link Web Crawler
Colloquim Report - Rotto Link Web Crawler
 
Api manager preconference
Api manager preconferenceApi manager preconference
Api manager preconference
 
REST based API
REST based APIREST based API
REST based API
 
Download PowerPoint Project on social programming for engineering students
Download PowerPoint Project on social programming for engineering studentsDownload PowerPoint Project on social programming for engineering students
Download PowerPoint Project on social programming for engineering students
 
OAuth Android Göteborg
OAuth Android GöteborgOAuth Android Göteborg
OAuth Android Göteborg
 
SharePoint Fest DC - Everything your need to know about the Microsoft Graph a...
SharePoint Fest DC - Everything your need to know about the Microsoft Graph a...SharePoint Fest DC - Everything your need to know about the Microsoft Graph a...
SharePoint Fest DC - Everything your need to know about the Microsoft Graph a...
 
REST Presentation
REST PresentationREST Presentation
REST Presentation
 
Best Practices for Architecting a Pragmatic Web API.
Best Practices for Architecting a Pragmatic Web API.Best Practices for Architecting a Pragmatic Web API.
Best Practices for Architecting a Pragmatic Web API.
 
WebAppSec Updates from W3C
WebAppSec Updates from W3CWebAppSec Updates from W3C
WebAppSec Updates from W3C
 

Recently uploaded

Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
c5vrf27qcz
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
Edge AI and Vision Alliance
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Precisely
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 

Recently uploaded (20)

Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 

Timeline SoMa WADE

  • 1. SoMa Project Timeline Irina Grosu Ana-Teodora Petrea WADE 2013 – 2014
  • 3. Start Date  Started working on the SoMa project on the 4th of November 2013.
  • 4. Pick implementation technology  The SoMa application is an ASP.NET MVC 4 project that will expose a REST API.  The main reasons we chose this technology are:  Provides Templates for MVC applications and Web APIs. This make it faster to develop reliable Web APIs and applications.  The .NET Platform provides lots of libraries to work with.  Twitter Bootstrap is available as a NuGet package. Fast front-end development framework. Uses LESS.  Also, NuGet packages for working with the Twitter and Flickr APIs.  Bing Maps are integrated in the .NET Framework.  Visual Studio Add-Ons for better development: Productivity Power Tools 2012.  Fast deployment to Windows Azure and reliable cloud service.
  • 5. Pick Domain  Picked Domain Name! See us at: http://soma.azurewebsites.net/  Hosting in the using
  • 6. Synonyms providers analysis – complete analysis here  Thesaurus - HTTP GET request to http://thesaurus.altervista.org/thesaurus/v1  Parameters: word, language, application key, response type  Request example: http://thesaurus.altervista.org/thesaurus/v1?word=finish%20line&language=en_US&key=u8JKaOitVKHOahvUs&output=xml  Response: <response> <list> <category>(noun)</category> <synonyms>finishing line|line|finish|destination|goal</synonyms> </list> </response>  Pros:  Provides pretty accurate synonyms  The results don't require heavy processing  One synonym list for each definition (synset) of a word -> limit searches to the most relevant ones (or the most likely to be relevant) -> only consider the main and most common synset.
  • 7. Synonyms providers analisys  The Synonyms API from STANDS4 - offers a web API for retrieving synonyms, thesaurus information and antonyms of a given word.  Parameters: API user id, developer token id, word  Request example: http://www.stands4.com/services/v2/syno.php?uid=1001&tokenid=tk324324&word=doctor  Response <results> <result> <term>doctor, doc, physician, MD, Dr., medico</term> <definition>a licensed medical practitioner</definition> <example>"I felt so bad I went to see my doctor"</example> <partofspeech>noun</partofspeech> <synonyms>doc, medico, doctor, physician, mendelevium, medical student</synonyms> <antonyms/> </result> [...] </results>  More information:  Less accurate synonyms  The most widely used synset is given as the first result
  • 8. REST API – complete documentation here  Created a REST API for SoMa that includes hypermedia controls.  Exposing 2 main resources:  /websites - Resource representing all the websites supported by the SoMa application. For the moment, we decided on Twitter and Flickr. If the time allows it, we will also support Vimeo.  /resources - Generic name for all content downloaded from the supported websites: posts, tweets, pictures, videos, etc.  API Key required in order to prove the authenticity of the requests and to limit their number. This should protect the application from attacks like Denial of Service.  To get all the available websites supported by the application a GET Request can be made to the /websites resource.
  • 9. REST API  GET request to: /websites?key={INSERT_YOUR_KEY} => Response: [{ "Name":"Flickr", "Links": [{ "Rel":"linkrels/websites/query_by_tag", "Uri":"/websites/flickr" }]}, { "Name":"Twitter", "Links": [{ "Rel":"linkrels/websites/query_by_tag", "Uri":"/websites/twitter" }] }]
  • 10. REST API  To query, for example, new photos a POST request can be made to /websites/flickr that contains in the POST body one or more of the following parameters: Name tag max_no_entries key use_synonyms ignore_previous Definition The tag you want to search for. For example: cat. The maximum number of the entries from the response. A valid API Key is needed in order to use the REST API. The API implicitly make use of synonyms but if it is wanted this can be disabled by using the parameter with the ‘false’ value like: use_synonyms=false The API implicitly uses previous search results (if they exists) to provide faster access to resources. If the ignore_previous parameter is used with the value ‘true’ the previous stored content (if it exists) will be deleted and a new search will be made for the provided tags.  The user has also the possibility to make a DELETE request in order to remove from the cache the information stored for a specific tag.
  • 11. REST API To retrieve, for example, the photos associated with a tag a GET request can be made to: /resources/photos/{tag}?key={INSERT_YOUR_KEY}. Possible result: [{ "PhotoName":"BlackCat.jpg", "Id":"f9299cb7d7a9b9c3f57b83461c541a24", "Url":"http://www.flickr.com/photos/doug88888/5717852049", "Website":"flickr", "Links": [{ "Rel":"linkrels/resources/photos/get", "Uri":"/resources/photos/cat/f9299cb7d7a9b9c3f57b83461c541a24" }] }, { "PhotoName":"Cat.jpg", "Id":"f2fb87bbad9d093c5a631b548be70c8f", "Url":"http://www.flickr.com/photos/ronanmccormick/9837068194", "Website":"flickr", "Links": [{ "Rel":"linkrels/resources/photos/get", "Uri":"/resources/photos/cat/f2fb87bbad9d093c5a631b548be70c8f" }] }]
  • 12. REST API  The user has also the possibility to request an individual resource using the tag and the id of that resource. For example, using the URL provided in the previous response he can request more information by making a GET request to: /resources/photos/cat/f2fb87bbad9d093c5a631b548be70c8f?key={INSERT_YO UR_KEY}. The response may be: { "PhotoName":"Cat.jpg", "Id":"f2fb87bbad9d093c5a631b548be70c8f", "Url":"http://www.flickr.com/photos/ronanmccormick/9837068194", "Website":"flickr", "Author":"Ronan McCormick“ }
  • 13. Architecture & Design – complete documentation here  Application created using the concept API First. The front-end makes use of the REST API in order to complete user requests.  Resource Models - general (Resource) and specific classes (PhotoResource, MessageResource) stored in specific repositories (MessagesRepository, PhotosRepository). Resources are stored organized after their tag and id.  The retrieved information is Cache persistent. In order to save cache space the photo content is not downloaded but only referenced by Url inside the resource model. The content will be downloaded and displayed on Bing Maps at the load time of the information on the page.  Repositories for storing resources:  Repository: abstract class that contains the cache keys used in identifying the stored information for the application;  MessageRepository: stores the information regarding the messages obtained from Twitter;  PhotosRepository: stores the information regarding the photos obtained from Flickr;
  • 14. Architecture & Design  SynonymsProvider – supports the interaction between the application and the service used for obtaining synonyms;  FlickrSearch – Supports the interaction between the application and the Flickr service;  TwitterSearch – Supports the interaction between the application and the Twitter service;  WebsitesController – Provides access to the /websites resource representing the resources stored by the application.  FlickrController – Processes the POST requests sent using the /websites/flickr endpoint of the REST API.  TwitterController – Processes the POST requests sent using the /websites/twitter endpoint of the REST API.
  • 15. Architecture & Design  ResourcesController – Provides access to the /resources endpoint representing the resources stored by the application.  PhotosController – Processes GET and DELETE requests sent using the /resources/photos endpoint of the REST API.  MessagesController – Processes GET and DELETE requests sent using the /resources/messages endpoint of the REST API.  The Class Diagram for the soma Project can be found here.  A Sequence Diagram representing a request being made with a specific tag for receiving messages from Twitter can be found here.  The complete documentation of SoMa’s Architecture & Design that also contains microdata can be found here.
  • 16. Prototype  A demo is up and running at : http://soma.azurewebsites.net/  Any of the following requests can be tried:  Retrieve supported websites: http://soma.azurewebsites.net/api/websites?key=lro2e32  Retrieve resources types: http://soma.azurewebsites.net/api/resources?key=lro2e32  Retrieve photos for the ‘cat’ tag: http://soma.azurewebsites.net/api/resources/photos/cat?key=lro2e32
  • 17. MidTerm Evaluation  Blog available at: http://wadesoma.wordpress.com/  SoMa website: http://soma.azurewebsites.net/  Source Code available at: https://wadesoma.codeplex.com/  Documentation available at: http://students.info.uaic.ro/~irina.grosu/soma/