This document introduces Shape Expressions, a language for validating and transforming RDF data. Shape Expressions allows users to describe the topology of RDF data through shapes that define the structure and types of subjects, properties and objects. Shapes can then be used to validate if an RDF graph conforms to a given shape. The language is demonstrated through an example of representing issues and users in an issue tracking system using RDF, and defining shapes to validate the data and check for errors. Key features of Shape Expressions include the use of labels, conjunctions, references to other shapes, and cardinalities to describe RDF patterns to match against.
Validating and Describing Linked Data Portals using RDF Shape ExpressionsJose Emilio Labra Gayo
Presentation at 1st Linked Data Quality Workshop, Leipzig, 2nd Sept. 2014
Author: Jose Emilio Labra Gayo
Applies Shapes Expressions to validate the WebIndex linked data portal
Towards an RDF Validation Language based on Regular Expression DerivativesJose Emilio Labra Gayo
Towards an RDF Validation Language based on Regular Expression Derivatives
Author: Jose Emilio Labra Gayo
Slides presented at: Linked Web Data Management Workshop
Brussels, 27th March, 2015
Although RDF is a corner stone of semantic web and knowledge graphs, it has not been embraced by everyday programmers and software architects who need to safely create and access well-structured data. There is a lack of common tools and methodologies that are available in more conventional settings to improve data quality by defining schemas that can later be validated. Two technologies have recently been proposed for RDF validation: Shape Expressions (ShEx) and Shapes Constraint Language (SHACL). In the talk, we will review the history and motivation of both technologies. We will also and enumerate some challenges and future work with regards to RDF validation.
Validating and Describing Linked Data Portals using RDF Shape ExpressionsJose Emilio Labra Gayo
Presentation at 1st Linked Data Quality Workshop, Leipzig, 2nd Sept. 2014
Author: Jose Emilio Labra Gayo
Applies Shapes Expressions to validate the WebIndex linked data portal
Towards an RDF Validation Language based on Regular Expression DerivativesJose Emilio Labra Gayo
Towards an RDF Validation Language based on Regular Expression Derivatives
Author: Jose Emilio Labra Gayo
Slides presented at: Linked Web Data Management Workshop
Brussels, 27th March, 2015
Although RDF is a corner stone of semantic web and knowledge graphs, it has not been embraced by everyday programmers and software architects who need to safely create and access well-structured data. There is a lack of common tools and methodologies that are available in more conventional settings to improve data quality by defining schemas that can later be validated. Two technologies have recently been proposed for RDF validation: Shape Expressions (ShEx) and Shapes Constraint Language (SHACL). In the talk, we will review the history and motivation of both technologies. We will also and enumerate some challenges and future work with regards to RDF validation.
Although RDF can be considered the corner stone of semantic web and knowledge graphs, it has not been embraced by everyday programmers and software architects who want to safely create and access well-structured data. There is a lack of common tools and methodologies that are available in more conventional settings to improve data quality by defining schemas that can later be validated. Two technologies have recently been proposed for RDF validation: Shape Expressions (ShEx) and Shapes Constraint Language (SHACL). In the talk, we will briefly introduce both technologies using some examples and compare them. We will also present some challenges and applications related with RDF data shapes.
Talk given at: KTH Royal Institute of Technology, School of Industrial Engineering and Management, Mechatronics Division, 7th February, 2020
Comparison of features between ShEx (Shape Expressions) and SHACL (Shapes Constraint Language)
Changelog:
11/06/17
- Removed slides about compositionality
31/May/2017
- Added slide 30 about validation report
- Added slide 32 about stems
- Changed slides 7 and 8 adapting compact syntax to new operator .
23/05/2017:
Slide 14: Repaired typos in typos in sh:entailment, rdfs:range
21/05/2017:
- Slide 8. Changed the example to be an IRI and a datatype
- Added typically in slide 9
- Slide 10: Removed the phrase: "Target declarations can problematic when reusing/importing shapes"
and created slide 27 to talk about reuability
- Added slide 11 to talk about the differences in triggering validation
- Created slide 14 to talk about inference
- Renamed slide 15 as "Inference and triggering mechanism"
- Added slides 27 and 28 to talk about reuability
- Added slide 29 to talk about annotations
18/05/2017
- Slides 9 now includes an example using ShEx RDF vocabulary
- Slide 10 now says that target declarations are optional
- Slide 13 now says that some RDF Schema terms have special treatment in SHACL
- Example in slide 18 now uses sh:or instead of sh:and
- Added slides 22, 23 and 24 which show some features supported by SHACL but not supported by ShEx (property pair constraints, uniqueLang and owl:imports)
Two graph data models : RDF and Property Graphsandyseaborne
Talk given at ApacheConEU Big Data 2015.
This talk describes the two common graph data approaches, RDF and Property Graphs. It concludes with observations about the different emphasis of each and where each is focused.
Lightening talk for Semantic Web in Libraries (SWIB13) conference at 2013-11-27 about another method of expressing RDF data. See http://gbv.github.io/aREF/ for a preliminary specification.
In this session you will learn:
1. Recap of Arrays, ArrayLists
2. Basically, there can be 2 operations that you would want to perform on Arrays/ArrayLists.. (and maybe, other collections)
3. Search: Override equals() and hashCode().
4. Sort: provide comparison logic – Two ways
4.1 Comparable interface
4.2 Comparator interface
SPARQL introduction and training (130+ slides with exercices)Thomas Francart
Full SPARQL training
Covers all SPARQL : basic graph patterns, FILTERs, functions, property paths, optional, negation, assignation, aggregation, subqueries, federated queries.
Does not cover except SPARQL updates.
Includes exercices on DBPedia.
CC BY license
Although RDF can be considered the corner stone of semantic web and knowledge graphs, it has not been embraced by everyday programmers and software architects who want to safely create and access well-structured data. There is a lack of common tools and methodologies that are available in more conventional settings to improve data quality by defining schemas that can later be validated. Two technologies have recently been proposed for RDF validation: Shape Expressions (ShEx) and Shapes Constraint Language (SHACL). In the talk, we will briefly introduce both technologies using some examples and compare them. We will also present some challenges and applications related with RDF data shapes.
Talk given at: KTH Royal Institute of Technology, School of Industrial Engineering and Management, Mechatronics Division, 7th February, 2020
Comparison of features between ShEx (Shape Expressions) and SHACL (Shapes Constraint Language)
Changelog:
11/06/17
- Removed slides about compositionality
31/May/2017
- Added slide 30 about validation report
- Added slide 32 about stems
- Changed slides 7 and 8 adapting compact syntax to new operator .
23/05/2017:
Slide 14: Repaired typos in typos in sh:entailment, rdfs:range
21/05/2017:
- Slide 8. Changed the example to be an IRI and a datatype
- Added typically in slide 9
- Slide 10: Removed the phrase: "Target declarations can problematic when reusing/importing shapes"
and created slide 27 to talk about reuability
- Added slide 11 to talk about the differences in triggering validation
- Created slide 14 to talk about inference
- Renamed slide 15 as "Inference and triggering mechanism"
- Added slides 27 and 28 to talk about reuability
- Added slide 29 to talk about annotations
18/05/2017
- Slides 9 now includes an example using ShEx RDF vocabulary
- Slide 10 now says that target declarations are optional
- Slide 13 now says that some RDF Schema terms have special treatment in SHACL
- Example in slide 18 now uses sh:or instead of sh:and
- Added slides 22, 23 and 24 which show some features supported by SHACL but not supported by ShEx (property pair constraints, uniqueLang and owl:imports)
Two graph data models : RDF and Property Graphsandyseaborne
Talk given at ApacheConEU Big Data 2015.
This talk describes the two common graph data approaches, RDF and Property Graphs. It concludes with observations about the different emphasis of each and where each is focused.
Lightening talk for Semantic Web in Libraries (SWIB13) conference at 2013-11-27 about another method of expressing RDF data. See http://gbv.github.io/aREF/ for a preliminary specification.
In this session you will learn:
1. Recap of Arrays, ArrayLists
2. Basically, there can be 2 operations that you would want to perform on Arrays/ArrayLists.. (and maybe, other collections)
3. Search: Override equals() and hashCode().
4. Sort: provide comparison logic – Two ways
4.1 Comparable interface
4.2 Comparator interface
SPARQL introduction and training (130+ slides with exercices)Thomas Francart
Full SPARQL training
Covers all SPARQL : basic graph patterns, FILTERs, functions, property paths, optional, negation, assignation, aggregation, subqueries, federated queries.
Does not cover except SPARQL updates.
Includes exercices on DBPedia.
CC BY license
Creat Shape classes from scratch DETAILS You will create 3 shape cla.pdfaromanets
Creat Shape classes from scratch DETAILS You will create 3 shape classes (Circle, Rectangle,
Triangle) that all inherit from a single abstract class called AbstractShape which implements
Shape (also created by you). You are also responsible for creating the driver class
\"Assignment7.java\" (program that tests your classes and described on page 3) which does the
following reads input data from a file instantiates various objects of the three shapes based on the
input data stores each in a LinkedList outputs this list to an output file sorts a \"copy\" of this
LinkedList of objects outputs the sorted version of the list to the output file outputs the original
list to the output file This driver program also needs to \"ignore errors in the input file that breach
the specified input format as described in the Assianment7,java details (see page 3 1. Shape.java
This is an interface that has 2 abstract methods, and passes the responsibility of implementing the
compareTo method to the class that implements Shape (you may note, nomally Comparable is
\"implemented\" by a class. However, an interface cannot implement because interfaces can only
contain abstract methods. That said, an interface can only extend other interfaces and the
responsibility of actually \"implementing\" the abstract method(s) of the super class interface is
passed on to the sub-classes) public interface Shape extends Comparable public double
calculateAreal) Il This abstract method is implemented at the concrete level public Shape
copyShape); Il also implemented at the concrete level 2. AbstractShape.java public abstract class
AbstractShape implements Shape This class should contain an instance field to store the name of
each obiect. The constructor which sets this field should receive the name and a number to be
concatenated to the name and then stored in the name field Recall, when the super class has a
parameterized constructor, the sub-classes will need to call it AND the sub- classes will need to
also provide a constructor without parameters This abstract class will implement the compareTo
method passed on from the Shape interface and will pass on the responsibility of implementing
calculateArea to the extending sub-classes (compare To will use the calculateArea method when
comparing 2 Shape objects). Along with compare To, one more concrete method should be
included. The following will be used by the sub-classes\' toString method: public String
getName) II Simply returns the name field data
Solution
in7.txt
4.4
2.5 3
8.1 3.0 5.0
2.5 3 4
2.5
tuesday
-7
1.0
3 three
3 -9
3 5
1.0
Assignment7.java
import java.io.*;
import java.util.*;
public class Assignment7 {
/**
* This is the test driver class that will include main.
* This program MUST read a file named in7.txt and
* generate an output file named out7.txt. The in7.txt
* file must be created by you based on formatting
* described shortly.
*
* @param theArgs
*/
public static void main(String[] theArgs) {
List myList = new Arra.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1ZW7TDL.
Richard Dallaway shows an example of what Scala looks like when using pattern matching over classes, how to encode an idea into types and use advanced features of Scala without complicating the code. Filmed at qconlondon.com.
Richard Dallaway is a partner at Underscore -- a consultancy specializing in Scala, especially the type-driven and functional aspects of Scala. He works on client projects writing software and helping teams deliver software with Scala. His focus is on the web, machine learning, and code review. He's the co-author of "Essential Slick" (Underscore), and author of the "Lift Cookbook" (O'Reilly).
Why functional programming and category theory strongly mattersPiotr Paradziński
Abstractions of Category Theory to define abstractions (Functor, Applicative, Monad, Comonad, Coyoneda) commonly used in functional programming (FP). Using definitions from Category Theory to reason about modular and composable design. Examples based on Haskell papers: Functional pearls translated to Scala.
Why functional programming and category theory strongly matters - Piotr Parad...Scalac
Niektórzy twierdzą, że SOLID w extremalnej postaci to właśnie FP, Greg Young twierdzi, że CQRS i ES to jest FP.
Programiści FP utrzymują, że Design Patterns są potrzebne, bo w OOP brakuje pewnych konstrukcji.
Sami używają abstrakcji matematycznych z teorii kategorii w sposób zbliżony do wzorców.
Opowiem czym jest FP i jakie supermoce daje.
Pokażę abstrakcje matematyczne z teorii kategorii: Category, Functor, Natural transformation, Monad.
Jak zostały one wykorzystane w oryginalnych publikacjach (functional pearls) używając języka Scala.
(Znajomość Scala nie jest potrzebna.)
Pokaże, też inne często używane w FP abstrakcje z algebry abstrakcyjnej (Monoid, Semigroup, Foldable, Traversable).
Dam też, przegląd mniej znanych ale bardzo ciekawych abstrakcji z teorii kategorii: Comonad, Contravariant, Bifunctor, Profunctor
oraz konstrukcji: Product, Coproduct, Free, Coyoneda.
Myślę, że zarówno doświadczeni programiści jak i osoby nowe dostaną solidną porcję nowych narzędzi do pisania i projektowania oprogramowania.
Może, uda się zobaczyć wzorce projektowe i dobre zasady OOP w nowym świetle :)
Functional programming is getting a lot of attention because it eases many of the difficulties faced in object-oriented programming (OOP) such as testability, maintainability, scalability, and concurrency. Swift has a lot of functional programming features that can be easily used, but most of Objective-C and Swift programmers are not familiar with these concepts.
This talk aims to introduce some of the core concepts of functional programming with Swift such as:
• Importance of Immutability
• First-class, Higher-order and Pure functions
• Closures
• Generics and Associated Type Protocols
• Functors, Applicative Functors and Monads
• Enumerations and Pattern Matching
• Optionals
.NET Fest 2018. Антон Молдован. One year of using F# in production at SBTechNETFest
В 2017 году мы начали активно использовать F# для построения high-load push-based queryable API, а также обработки больших потоков данных (stateful stream processing). На тот момент времени никто в наших командах не имел предыдущего опыта по внедрению и применению F# но мы решили попробовать. На этом докладе я расскажу о нашем опыте внедрения F#, его проблемах и недостатках, о том как мы его научились готовить, где имеет смысл его применять и как подружить C#/OOP с F#/FP в одном проекте.
Данный доклад нацелен на аудиторию не имеющую предыдущего опыта с FP/F#.
Agenda:
- Why did we choose F# over C#?
- A high-level overview of the architecture of our push-based queryable API.
- Adopting F# for C#/OOP developers (inconveniences, C# interoperability, code style, DDD, TDD)
Como publicar los datos: datos abiertos y enlazados
Charla impartida en Jornadas Open Data y Transparencia: Ayuntamiento de Oviedo
11 de septiembre de 2017
Charla Linked data - Datos abiertos enlazados impartida en el IV Foro Distrital Buenas Prácticas en Gestión de la Información Geográfica - Bogotá, Colombia, 14 Diciembre 2015
Do you want Software for your Business? Visit Deuglo
Deuglo has top Software Developers in India. They are experts in software development and help design and create custom Software solutions.
Deuglo follows seven steps methods for delivering their services to their customers. They called it the Software development life cycle process (SDLC).
Requirement — Collecting the Requirements is the first Phase in the SSLC process.
Feasibility Study — after completing the requirement process they move to the design phase.
Design — in this phase, they start designing the software.
Coding — when designing is completed, the developers start coding for the software.
Testing — in this phase when the coding of the software is done the testing team will start testing.
Installation — after completion of testing, the application opens to the live server and launches!
Maintenance — after completing the software development, customers start using the software.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Graspan: A Big Data System for Big Code AnalysisAftab Hussain
We built a disk-based parallel graph system, Graspan, that uses a novel edge-pair centric computation model to compute dynamic transitive closures on very large program graphs.
We implement context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases such as Linux shows that their Graspan implementations scale to millions of lines of code and are much simpler than their original implementations.
These analyses were used to augment the existing checkers; these augmented checkers found 132 new NULL pointer bugs and 1308 unnecessary NULL tests in Linux 4.4.0-rc5, PostgreSQL 8.3.9, and Apache httpd 2.2.18.
- Accepted in ASPLOS ‘17, Xi’an, China.
- Featured in the tutorial, Systemized Program Analyses: A Big Data Perspective on Static Analysis Scalability, ASPLOS ‘17.
- Invited for presentation at SoCal PLS ‘16.
- Invited for poster presentation at PLDI SRC ‘16.
AI Genie Review: World’s First Open AI WordPress Website CreatorGoogle
AI Genie Review: World’s First Open AI WordPress Website Creator
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-genie-review
AI Genie Review: Key Features
✅Creates Limitless Real-Time Unique Content, auto-publishing Posts, Pages & Images directly from Chat GPT & Open AI on WordPress in any Niche
✅First & Only Google Bard Approved Software That Publishes 100% Original, SEO Friendly Content using Open AI
✅Publish Automated Posts and Pages using AI Genie directly on Your website
✅50 DFY Websites Included Without Adding Any Images, Content Or Doing Anything Yourself
✅Integrated Chat GPT Bot gives Instant Answers on Your Website to Visitors
✅Just Enter the title, and your Content for Pages and Posts will be ready on your website
✅Automatically insert visually appealing images into posts based on keywords and titles.
✅Choose the temperature of the content and control its randomness.
✅Control the length of the content to be generated.
✅Never Worry About Paying Huge Money Monthly To Top Content Creation Platforms
✅100% Easy-to-Use, Newbie-Friendly Technology
✅30-Days Money-Back Guarantee
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIGenieApp #AIGenieBonus #AIGenieBonuses #AIGenieDemo #AIGenieDownload #AIGenieLegit #AIGenieLiveDemo #AIGenieOTO #AIGeniePreview #AIGenieReview #AIGenieReviewandBonus #AIGenieScamorLegit #AIGenieSoftware #AIGenieUpgrades #AIGenieUpsells #HowDoesAlGenie #HowtoBuyAIGenie #HowtoMakeMoneywithAIGenie #MakeMoneyOnline #MakeMoneywithAIGenie
Transform Your Communication with Cloud-Based IVR SolutionsTheSMSPoint
Discover the power of Cloud-Based IVR Solutions to streamline communication processes. Embrace scalability and cost-efficiency while enhancing customer experiences with features like automated call routing and voice recognition. Accessible from anywhere, these solutions integrate seamlessly with existing systems, providing real-time analytics for continuous improvement. Revolutionize your communication strategy today with Cloud-Based IVR Solutions. Learn more at: https://thesmspoint.com/channel/cloud-telephony
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppGoogle
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-fusion-buddy-review
AI Fusion Buddy Review: Key Features
✅Create Stunning AI App Suite Fully Powered By Google's Latest AI technology, Gemini
✅Use Gemini to Build high-converting Converting Sales Video Scripts, ad copies, Trending Articles, blogs, etc.100% unique!
✅Create Ultra-HD graphics with a single keyword or phrase that commands 10x eyeballs!
✅Fully automated AI articles bulk generation!
✅Auto-post or schedule stunning AI content across all your accounts at once—WordPress, Facebook, LinkedIn, Blogger, and more.
✅With one keyword or URL, generate complete websites, landing pages, and more…
✅Automatically create & sell AI content, graphics, websites, landing pages, & all that gets you paid non-stop 24*7.
✅Pre-built High-Converting 100+ website Templates and 2000+ graphic templates logos, banners, and thumbnail images in Trending Niches.
✅Say goodbye to wasting time logging into multiple Chat GPT & AI Apps once & for all!
✅Save over $5000 per year and kick out dependency on third parties completely!
✅Brand New App: Not available anywhere else!
✅ Beginner-friendly!
✅ZERO upfront cost or any extra expenses
✅Risk-Free: 30-Day Money-Back Guarantee!
✅Commercial License included!
See My Other Reviews Article:
(1) AI Genie Review: https://sumonreview.com/ai-genie-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIFusionBuddyReview,
#AIFusionBuddyFeatures,
#AIFusionBuddyPricing,
#AIFusionBuddyProsandCons,
#AIFusionBuddyTutorial,
#AIFusionBuddyUserExperience
#AIFusionBuddyforBeginners,
#AIFusionBuddyBenefits,
#AIFusionBuddyComparison,
#AIFusionBuddyInstallation,
#AIFusionBuddyRefundPolicy,
#AIFusionBuddyDemo,
#AIFusionBuddyMaintenanceFees,
#AIFusionBuddyNewbieFriendly,
#WhatIsAIFusionBuddy?,
#HowDoesAIFusionBuddyWorks
E-commerce Application Development Company.pdfHornet Dynamics
Your business can reach new heights with our assistance as we design solutions that are specifically appropriate for your goals and vision. Our eCommerce application solutions can digitally coordinate all retail operations processes to meet the demands of the marketplace while maintaining business continuity.
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Łukasz Chruściel
No one wants their application to drag like a car stuck in the slow lane! Yet it’s all too common to encounter bumpy, pothole-filled solutions that slow the speed of any application. Symfony apps are not an exception.
In this talk, I will take you for a spin around the performance racetrack. We’ll explore common pitfalls - those hidden potholes on your application that can cause unexpected slowdowns. Learn how to spot these performance bumps early, and more importantly, how to navigate around them to keep your application running at top speed.
We will focus in particular on tuning your engine at the application level, making the right adjustments to ensure that your system responds like a well-oiled, high-performance race car.
Launch Your Streaming Platforms in MinutesRoshan Dwivedi
The claim of launching a streaming platform in minutes might be a bit of an exaggeration, but there are services that can significantly streamline the process. Here's a breakdown:
Pros of Speedy Streaming Platform Launch Services:
No coding required: These services often use drag-and-drop interfaces or pre-built templates, eliminating the need for programming knowledge.
Faster setup: Compared to building from scratch, these platforms can get you up and running much quicker.
All-in-one solutions: Many services offer features like content management systems (CMS), video players, and monetization tools, reducing the need for multiple integrations.
Things to Consider:
Limited customization: These platforms may offer less flexibility in design and functionality compared to custom-built solutions.
Scalability: As your audience grows, you might need to upgrade to a more robust platform or encounter limitations with the "quick launch" option.
Features: Carefully evaluate which features are included and if they meet your specific needs (e.g., live streaming, subscription options).
Examples of Services for Launching Streaming Platforms:
Muvi [muvi com]
Uscreen [usencreen tv]
Alternatives to Consider:
Existing Streaming platforms: Platforms like YouTube or Twitch might be suitable for basic streaming needs, though monetization options might be limited.
Custom Development: While more time-consuming, custom development offers the most control and flexibility for your platform.
Overall, launching a streaming platform in minutes might not be entirely realistic, but these services can significantly speed up the process compared to building from scratch. Carefully consider your needs and budget when choosing the best option for you.
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
Shape Expressions: An RDF validation and transformation language
1. Shape Expressions: An RDF validation
and transformation language
Eric Prud'hommeaux
World Wide Web
Consortium
MIT, Cambridge, MA, USA
eric@w3.org
Harold Solbrig
Mayo Clinic
USA
College of Medicine, Rochester,
MN, USA
Jose Emilio Labra Gayo
WESO Research group
University of Oviedo
Spain
labra@uniovi.es
2. This talk in 1 slide
Motivating example:
Represent issues and users in RDF
...and validate that data
Shape Expressions = simple language to:
Describe the topology of RDF data
Validate if an RDF graph matches a given shape
Shape expressions can be extended with actions
Possible application: transform RDF into XML
3. Motivating example
Represent in RDF a issue tracking system
Issues are reported by users on some date
Issues have some status (assigned/unassigned)
Issues can also be reproduced on some date by users
User Issue
4. User__
foaf:name: xsd:string
foaf:givenName: xsd:string*
foaf:familyName: xsd:string
foaf:mbox: IRI
Issue__
:status: (:Assigned :Unassigned)
:reportedOn: xsd:date
:reproducedOn: xsd:date
1 :reportedBy 0..*
0..* :reproducedBy 0..1
0..*
0..1
:related
E-R Diagram
...and several constraints
A user:
- has full name or
several given names and one
family name
- can have one mbox
A Issue
- has status Assigned/Unassigned
- is reported by a user
- is reported on a date
- can be reproduced by a user on a
date
- is related to other issues
6. Problem statement
We want to detect possible errors in RDF like:
Issues without status
Issues with status different of Assigned/Unassigned
Issues reported by something different to a user
Issues reported on a date with a non-date type
Issues reproduced on a date before the reported date
Users without mbox
Users with 2 names
Users with with a name of type integer
...lots of other errors...
Q: How can we describe RDF data to be able to detect those errors?
A: Our proposal = Shape Expressions
7. Shape Expressions - Users
A user can have either:
one foaf:name
or one or more foaf:givenName and one foaf:familyName
all of them must be of type xsd:string
A user can have one foaf:mbox with value any IRI
<UserShape> {
( foaf:name xsd:string
| foaf:givenName xsd:string+
, foaf:familyName xsd:string
)
, foaf:mbox IRI ?
}
The example uses compact syntax
Shape Expressions can also be represented in RDF
8. Shape Expressions - Issues
Issues :status must be either :Assigned or :Unassigned
Issues are :reportedBy a user
Issues are :reportedOn a xsd:date
A issue may be :reproducedBy a user and :reproduceOn an xsd:date
A issue can be :related to several issues
<IssueShape> {
:status (:Assigned :Unassigned)
, :reportedBy @<UserShape>
, :reportedOn xsd:date
, ( :reproducedBy @<UserShape>
, :reproducedOn xsd:date
)?
, :related @<IssueShape>*
}
10. FAQ: Why not use SPARQL?
<UserShape> {
( foaf:name xsd:string
| foaf:givenName xsd:string+
, foaf:familyName xsd:string
)
, foaf:mbox IRI ?
}
<IssueShape> {
:status (:Assigned :Unassigned)
, :reportedBy @<UserShape>
, :reportedOn xsd:date
, ( :reproducedBy @<UserShape>
, :reproducedOn xsd:date
)?
, :related @<IssueShape>*
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CONSTRUCT {
?IssueShape :hasShape <IssueShape> .
?UserShape :hasShape <UserShape> .
} { { SELECT ?IssueShape {
?IssueShape :status ?o } GROUP BY ?IssueShape HAVING (COUNT(*)=1)}
{ SELECT ?IssueShape {
?IssueShape :status ?o .
FILTER ((?o = :Assigned || ?o = :Unassigned))
} GROUP BY ?IssueShape HAVING (COUNT(*)=1)}
{ SELECT ?IssueShape (COUNT(*) AS ?IssueShape_c0) {
?IssueShape :reportedBy ?o .
} GROUP BY ?IssueShape HAVING (COUNT(*)=1)}
{ SELECT ?IssueShape {
?IssueShape :reportedBy ?o .
FILTER ((isIRI(?o) || isBlank(?o)))
} GROUP BY ?IssueShape HAVING (COUNT(*)=1)}
{ SELECT ?IssueShape (COUNT(*) AS ?IssueShape_c1) {
{ SELECT ?IssueShape ?UserShape {
?IssueShape :reportedBy ?UserShape .
FILTER (isIRI(?UserShape) || isBlank(?UserShape))
} }
{ SELECT ?UserShape WHERE {
{ { SELECT ?UserShape {
?UserShape foaf:name ?o .
} GROUP BY ?UserShape HAVING (COUNT(*)=1)}
{ SELECT ?UserShape {
?UserShape foaf:name ?o .
FILTER ((isLiteral(?o) && datatype(?o) = xsd:string))
} GROUP BY ?UserShape HAVING (COUNT(*)=1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
} UNION {
{ SELECT ?UserShape (COUNT(*) AS ?UserShape_c0) {
?UserShape foaf:givenName ?o .
} GROUP BY ?UserShape HAVING (COUNT(*)>=1)}
{ SELECT ?UserShape (COUNT(*) AS ?UserShape_c1)
{ ?UserShape foaf:givenName ?o .
FILTER ((isLiteral(?o) && datatype(?o) = xsd:string))
} GROUP BY ?UserShape
HAVING (COUNT(*)>=1)}
FILTER (?UserShape_c0 = ?UserShape_c1)
{ SELECT ?UserShape {
?UserShape foaf:familyName ?o .
} GROUP BY ?UserShape
HAVING (COUNT(*)=1)}
{ SELECT ?UserShape {
?UserShape foaf:familyName ?o .
FILTER ((isLiteral(?o) && datatype(?o) = xsd:string))
} GROUP BY ?UserShape HAVING (COUNT(*)=1)}
}
} GROUP BY ?UserShape HAVING (COUNT(*) = 1)}
{ SELECT ?UserShape (COUNT(*) AS ?UserShape_c2)
{
?UserShape foaf:mbox ?o .
} GROUP BY ?UserShape HAVING (COUNT(*)<=1)}
{ SELECT ?UserShape (COUNT(*) AS ?UserShape_c3)
{
?UserShape foaf:mbox ?o .
FILTER (isIRI(?o))
} GROUP BY ?HAVING (COUNT(*)<=1)}
FILTER (?UserShape_c2 = ?UserShape_c3)
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
UserShape_c2 = ?UserShape_c3)
} GROUP BY ?IssueShape }
FILTER (?IssueShape_c0 = ?IssueShape_c1)
OPTIONAL {
?IssueShape :reportedBy ?IssueShape_UserShape_ref0 .
FILTER (isIRI(?IssueShape_UserShape_ref0)
|| isBlank(?IssueShape_UserShape_ref0)) }
{ SELECT ?IssueShape {
?IssueShape :reportedOn } GROUP BY ?IssueShape HAVING (COUNT(*)=1)}
{ SELECT ?IssueShape {
?IssueShape :reportedOn ?o .
FILTER ((isLiteral(?o) && datatype(?o) = xsd:date))
} GROUP BY ?IssueShape HAVING (COUNT(*)=1)} {
{ SELECT ?IssueShape (COUNT(*) AS ?IssueShape_c2) {
?IssueShape :reproducedBy ?o .
} GROUP BY IssueShape}
{ SELECT ?IssueShape (COUNT(*) AS ?IssueShape_c3) {
?IssueShape :reproducedBy ?o .
FILTER ((isIRI(?o) || isBlank(?o)))
} GROUP BY ?IssueShape}
FILTER (?IssueShape_c2 = ?IssueShape_c3)
{ SELECT ?IssueShape (COUNT(*) AS ?IssueShape_c5) {
?IssueShape :reproducedOn ?o .
} GROUP BY ?IssueShape}
{ SELECT ?IssueShape (COUNT(*) AS ?IssueShape_c6) {
?IssueShape :reproducedOn ?o .
FILTER ((isLiteral(?o) && datatype(?o) = xsd:date))
} GROUP BY IssueShape}
FILTER (?IssueShape_c5 = ?IssueShape_c6)
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
FILTER (?IssueShape_c2=0 && ?IssueShape_c5=0 ||
?IssueShape_c2>=1&&?IssueShape_c2<=1 &&
?IssueShape_c5>=1&&?IssueShape_c5<=1)
}
{ SELECT ?IssueShape (COUNT(*) AS ?IssueShape_c7) {
?IssueShape :related ?o .
} GROUP BY ?IssueShape}
{ SELECT ?IssueShape (COUNT(*) AS ?IssueShape_c8) {
?IssueShape :related ?o .
} GROUP BY ?IssueShape}
FILTER (?IssueShape_c7 = ?IssueShape_c8)
{ SELECT ?UserShape WHERE {
{ { SELECT ?UserShape {
?UserShape foaf:name ?o .
} GROUP BY ?UserShape HAVING (COUNT(*)=1)}
{ SELECT ?UserShape {
?UserShape foaf:name ?o .
FILTER ((isLiteral(?o) && datatype(?o) = xsd:string))
} GROUP BY ?UserShape HAVING (COUNT(*)=1)}
} UNION {
{ SELECT ?UserShape (COUNT(*) AS ?UserShape_c0) {
?UserShape foaf:givenName ?o .
} GROUP BY ?UserShape HAVING (COUNT(*)>=1)}
{ SELECT ?UserShape (COUNT(*) AS ?UserShape_c1) {
?UserShape foaf:givenName ?o .
FILTER ((isLiteral(?o) && datatype(?o) = xsd:string))
} GROUP BY ?UserShape HAVING (COUNT(*)>=1)}
FILTER (?UserShape_c0 = ?UserShape_c1)
{ SELECT ?UserShape {
?UserShape foaf:familyName ?o .
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
} GROUP BY ?UserShape HAVING (COUNT(*)=1)}
{ SELECT ?UserShape {
?UserShape foaf:familyName ?o .
FILTER ((isLiteral(?o) && datatype(?o) = xsd:string))
} GROUP BY ?UserShape HAVING (COUNT(*)=1)}
}
} GROUP BY ?UserShape HAVING (COUNT(*) = 1)}
{ SELECT ?UserShape (COUNT(*) AS ?UserShape_c2) {
?UserShape foaf:mbox ?o .
} GROUP BY ?UserShape HAVING (COUNT(*)<=1)}
{ SELECT ?UserShape (COUNT(*) AS ?UserShape_c3) {
?UserShape foaf:mbox ?o . FILTER (isIRI(?o))
} GROUP BY ?UserShape HAVING (COUNT(*)<=1)}
FILTER (?UserShape_c2 = ?UserShape_c3)
}
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
.
.
.
.
Shape Expression
Shape Expressions can be converted to SPARQL
But Shape Expressions are simpler and more readable to solve this problem
11. Shape Expressions Language
Schema = set of Shape Expressions
Shape Expression = labeled pattern
Typical pattern = conjunction of several expressions
Conjunction represented by ,
<IssueShape> {
:status (:Assigned :Unassigned)
, :reportedBy @<UserShape>
, :reportedOn xsd:date
...
}
<label> {
...pattern...
}
Label
Conjunction
12. Arcs
Basic expression: an Arc
Arc = name definition followed by value definition
<IssueShape> {
:status (:Assigned :Unassigned)
, :reportedBy @<UserShape>
, :reportedOn xsd:date
...
}
Name defn Value defn
:status :Unassigned
:isue1 :reportedBy :bob
:reportedOn 23-01-2013
13. Value definition
Value definitions can be
Value type xsd:date Matches a value of type xsd:date
Value set ( :Assigned
:Unassigned )
The object is an element of the given set
Reference @<UserShape> The object has shape <UserShape>
Stem foaf:~ Starts with the IRI associated with foaf
Any - :Checked Any value except :Checked
<IssueShape> {
:status (:Assigned :Unassigned)
, :reportedBy @<UserShape>
, :reportedOn xsd:date
...
}
Value set
Value reference
Value type
14. Name definition
Name definitions can be
Name term foaf:name Matches given IRI
Name stem foaf:~ Any predicate that starts by foaf
Name any - foaf:name Any predicate except foaf:name
<IssueShape> {
:status (:Assigned :Unassigned)
, :reportedBy @<UserShape>
, :reportedOn xsd:date
...
}
Name terms
15. Alternatives
Alternatives (disjunctions) are marked by |
Example 1: An agent has either foaf:name or rdfs:label
<Agent> {
( foaf:name xsd:string | rdfs:label xsd:string )
...
}
Example 2: A list of integers
<listOfInt> {
rdf:first xsd:integer
, ( rdf:rest ( rdf:nil )
| rdf:rest @<listOfInt>
)
}
16. Cardinalities
The same as in common regular expressions
* 0 or more
+ 1 or more
? 0 or 1
{m} m repetitions
{m,n} Between m and n repetitions
<IssueShape> {
...
( :reproducedBy @<UserShape>, :reproducedOn xsd:date)?
, :related @<IssueShape>*
}
17. Semantic actions
Define actions to be executed during validation
<Issue> {
...
:reportedOn xsd:date %js{ report = _.o; return true; %}
, ( :reproducedBy @<UserShape>
, :reproducedOn xsd:date %js{ return _.o.lex > report.lex; %}
) ?
}
%lang{ ...actions... %}
Calls lang processor passing it the given actions
Example:
Check that :reportedOn must be before :reproducedOn
18. Semantics of Shape Expressions
Operational semantics using inference rules
Inspired by the semantics of RelaxNG
Formalism used to define type inference systems
Matching infer shape typings
Axioms and rules of the form:
19. Example: matching rules ( )
Graph can be decomposed
in g1 and g2
Combine typings
t1 and t2
Context Graph Type Assignment
20. Transforming RDF using ShEx
Semantic actions can be combined with
specialized languages
Possible languages: sparql, js
Other examples:
GenX = very simple language to generate XML
Goal: Semantic lowering
Map RDF clinical records to XML
GenJ generates JSON
22. GenX
GenX syntax
$IRI Generates elements in that namespace
<name> Add element <name>
@<name> Add attribute <name>
=<expr> XPath function applied to the value
= Don't emit the value
[-n] Place the value up n values in the hierarchy
25. Current Implementations
Name Main
Developer
Language Features
FancyDemo Eric
Prud'hommeaux
Javascript First implementation
Semantic Actions
- GenX, GenJ
Conversion to SPARQL
http://www.w3.org/2013/ShEx/
JsShExTest Jesse van Dam Javascript Supports RDF and Compact syntax
https://github.com/jessevdam/shextest
ShExcala Jose E. Labra Scala Several extensions:
negations, reverse arcs, relations,...
Efficient implementation using Derivatives
http://labra.github.io/ShExcala/
Haws Jose E. Labra Haskell Prototype to check inference semantics
http://labra.github.io/haws/
26. Applications to linked data portals
2 data portals: WebIndex and LandPortal
Data portal documentation
http://weso.github.io/wiDoc/ http://weso.github.io/landportalDoc/data
<Observation> {
cex:md5-checksum xsd:string
, cex:computation @<Computation>
, dcterms:issued xsd:integer
, dcterms:publisher ( wi-org:WebFoundation )
, qb:dataSet @<Dataset>
, rdfs:label (@en)
, sdmx-concept:obsStatus @<ObsStatus>
, wi-onto:ref-area @<Area>
, wi-onto:ref-indicator @<Indicator>
, wi-onto:ref-year xsd:int
, cex:value xsd:double
, a ( qb:Observation )
}
<Observation> {
cex:ref-area @<Area>
, cex:ref-indicator @<Indicator>
, cex:ref-time @<Time>
, cex:value xsd:double?
, cex:computation @<Computation>
, dcterms:issued xsd:dateTime
, qb:dataSet @<DataSet>
, qb:slice @<Slice>
, rdfs:label xsd:string
, lb:source @<Upload>
, a ( qb:Observation )
}
Same type: qb:Observation
...but different shapes More info:
Paper on Linked Data Quality Workshop
27. Conclusions
Shape Expressions = simple language
One goal: Describe and validate RDF graphs
Semantics of Shape Expressions
Described using inference rules
...but Shape Expressions can be converted to SPARQL
Compatible with other Semantic technologies
Semantic actions = Extensibility mechanism
Can be applied to transform RDF
28. Future Work
Improve implementations and language
Debugging and error messages
Expressiveness and usability of language
Performance evaluation
Shape Expressions = role similar to Schema for XML
Future applications:
Online validators
Interface generators
Binding: generate parsers/tools from shapes
Performance of RDF triplestores?
29. Future work at w3c
RDF Data shapes WG chartered
Mailing list: public-rdf-shapes@mail.org
"The discussion on public-rdf-shapes@w3.org is the best entertainment since years;
Game of Thrones colors pale." Paul Hermans (@PaulZH)
30. End of presentation
Slides available at:
http://www.slideshare.net/jelabra/semantics-2014