SlideShare une entreprise Scribd logo
1  sur  18
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!

Contenu connexe

Tendances

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 AppsLiam 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 2015Suzzicks
 
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 Productivityguest3c5c731bc
 
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
 
20090914 Petamedia Irp5
20090914 Petamedia Irp520090914 Petamedia Irp5
20090914 Petamedia Irp5Arjen 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 TorontoEli Robillard
 

Tendances (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
 

Similaire à Timeline SoMa WADE

Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web DevelopmentRobert J. Stein
 
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 WebpartJenkins 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, Fuseboxnascomgenk
 
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 365Luis Valencia
 
Big Data Week 2013 Flow
Big Data Week 2013 FlowBig Data Week 2013 Flow
Big Data Week 2013 FlowVictor Anjos
 
Prototyping applications with heroku and elasticsearch
 Prototyping applications with heroku and elasticsearch Prototyping applications with heroku and elasticsearch
Prototyping applications with heroku and elasticsearchprotofy
 
SharePoint 2013 REST APIs
SharePoint 2013 REST APIsSharePoint 2013 REST APIs
SharePoint 2013 REST APIsGiuseppe Marchi
 
Colloquim Report - Rotto Link Web Crawler
Colloquim Report - Rotto Link Web CrawlerColloquim Report - Rotto Link Web Crawler
Colloquim Report - Rotto Link Web CrawlerAkshay Pratap Singh
 
REST based API
REST based APIREST based API
REST based APIijtsrd
 
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 studentsSkyingBlogger
 
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
 
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 W3CNatasha Rooney
 

Similaire à 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
 

Dernier

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 

Dernier (20)

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 

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/