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
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Crescat
Crescat is industry-trusted event management software, built by event professionals for event professionals. Founded in 2017, we have three key products tailored for the live event industry.
Crescat Event for concert promoters and event agencies. Crescat Venue for music venues, conference centers, wedding venues, concert halls and more. And Crescat Festival for festivals, conferences and complex events.
With a wide range of popular features such as event scheduling, shift management, volunteer and crew coordination, artist booking and much more, Crescat is designed for customisation and ease-of-use.
Over 125,000 events have been planned in Crescat and with hundreds of customers of all shapes and sizes, from boutique event agencies through to international concert promoters, Crescat is rigged for success. What's more, we highly value feedback from our users and we are constantly improving our software with updates, new features and improvements.
If you plan events, run a venue or produce festivals and you're looking for ways to make your life easier, then we have a solution for you. Try our software for free or schedule a no-obligation demo with one of our product specialists today at crescat.io
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Looking for a reliable mobile app development company in Noida? Look no further than Drona Infotech. We specialize in creating customized apps for your business needs.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
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!
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
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
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.
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.
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
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.
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
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.
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.
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
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
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.
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