Presented at FEISGILTT 2017. An introduction to JLIFF, a JSON-based version of the XLIFF 2.x standard currently under development by the OASIS XLIFF-OMOS technical committee.
The document outlines an agenda for a PHP crash course, beginning with an introduction to the speaker's background and qualifications. It then covers the basics of PHP including its history, why it's popular, how to get started, basic syntax and types, variables, constants, expressions, control structures, functions, classes and objects. The document recommends additional advanced PHP topics and reading materials.
This document provides an overview of Internet technology and applications, including the history and requirements of the World Wide Web. It discusses server-side and client-side programming languages, and covers topics like PHP programming, arrays, functions, and form handling in PHP.
This document provides an introduction and overview of PHP and MySQL for beginners. It discusses:
- What PHP is and how it is used to generate dynamic web pages by embedding PHP scripts in HTML.
- Key PHP concepts like variables, data types, echo, comments, functions, and control structures like if/else statements.
- How to connect to and query MySQL databases from PHP scripts using functions like mysql_connect().
- Additional PHP features like forms, sessions, includes and how to avoid common errors when using sessions.
The tutorial is intended to provide just enough PHP and MySQL knowledge to get started developing basic dynamic web applications that interface with databases.
Dart is a language for the web by Google which is object oriented with optional types. You can use Dart to build great apps for the client-side, server-side and command line.
My story why I love Dart and why it makes me so much productive!
PHP originated as a tool for personal home pages created by Rasmus Lerdorf. It is now known as the PHP Hypertext Processor and is an open source, scripting language commonly used for web development. PHP scripts can be embedded into HTML pages and allow for easy access to form data and output of dynamic HTML. PHP is a procedural language like C with some object-oriented features. It has an extensive function library that supports tasks like string handling, dates/times, files, databases and more. PHP follows a model where scripts run on the server and generate HTML to be sent to the client browser.
This document discusses regular expressions (RegExp) in JavaScript. It defines RegExp as patterns used to match character combinations in strings and describes syntax, modifiers, quantifiers, character sets, metacharacters and the RegExp object properties and methods. Examples are provided to demonstrate matching strings using different patterns, modifiers and quantifiers.
Variables are containers that store information in PHP. PHP variables are case sensitive and can contain strings, integers, floats, Booleans, arrays and objects. Variables start with a $ sign followed by a name. Variable names must begin with a letter or underscore and can contain alphanumeric characters and underscores. Variables can be assigned values using common operators like assignment, addition, subtraction etc. Variables can have different scopes like local, global and static. Constants are similar to variables but their values cannot be changed once defined.
This document discusses XML and provides details about XML document structure, DTDs, validation of well-formed and valid XML documents, XML schemas, and XML namespaces. It begins by explaining the tree structure of XML documents and provides an example. It then covers DTDs, including internal and external DTDs. Next, it defines what makes an XML document well-formed and valid. XML schemas are introduced. Finally, it discusses how XML namespaces can be used to avoid name conflicts between elements.
OSS BarCamp Mumbai - JSON Presentation and DemoKetan Khairnar
The document provides an introduction to JSON (JavaScript Object Notation) including what it is, its basic syntax and structure, examples of JSON values and objects, and comparisons to XML. It discusses JSON as a lightweight data interchange format that is language independent and easy to parse.
Correctly understanding the eight data types in PHP is essential to a solid foundation in development. Come refresh your knowledge of the scalar types, compound types, and special data types used in PHP, and learn about proper usage of each. Review type juggling, learn some common data type traps to avoid, and how to code defensively to prevent having the data type of a variable change unexpectedly. Finally learn how unit tests can help verify that code is handling data types correctly.
The document discusses various documentation tools and formats for PHP projects including phpDocumentor, DoxyGen, DocBook, and reStructuredText (reST). It provides an overview of each tool's features and capabilities for generating API documentation, tutorials, and other documentation from source code comments and files. The document aims to help developers choose the best documentation approach for their specific projects and needs.
The document provides an overview of XSL (Extensible Stylesheet Language) which is a family of languages for transforming and formatting XML documents. It describes the three main languages in the XSL family: XSLT for transforming XML, XSL-FO for specifying visual formatting, and XPath for addressing parts of an XML document. The document then explains some of the key concepts and uses of each language, including how XSLT is used to transform XML documents into other formats like HTML, how XSL-FO specifies visual presentation, and how XPath is used for selecting nodes in an XML document.
This chapter discusses working with text and numbers in PHP. It covers defining and manipulating strings, including validating, formatting, and changing case. Functions for selecting, replacing, and exploding parts of strings are described. Working with numbers, math operators, variables, and number formatting functions are also summarized. Key string functions include substr(), str_replace(), printf(), and number functions include rand(), round(), pow(), and abs().
The document provides an introduction to server-side scripting and dynamic web development using PHP and MySQL. It discusses how dynamic websites can respond to different parameters, integrate user login/registration, and be easier to maintain than static websites. It then describes how PHP is a widely used scripting language especially for web development that is embedded into HTML. MySQL is also introduced as a popular open-source database. The document proceeds to demonstrate basic PHP syntax like using echo to output data, comments, variables, and strings. It shows how to manipulate strings, search/replace text, and use other string functions. Finally, it discusses number data types in PHP and using format specifiers.
The document discusses various topics related to handling HTML forms with PHP scripts, including:
- Creating an HTML form with tags like <form> and various input elements. The form's action and method attributes are important.
- In PHP, form data is accessible via special variables like $_REQUEST based on the input names. Data types include text, radio buttons, checkboxes.
- PHP scripts can display forms, receive submitted data, and validate the data with conditionals and functions like empty().
- Other topics covered include using conditionals and operators to validate data, iterating with for and while loops, working with arrays to handle multiple form values, and introducing regular expressions.
This document discusses object-relational mapping (ORM) in PHP. It describes how ORM manages the translation between objects and relational databases. It then covers some common ORM patterns like active record, table gateways and data mappers. It also discusses performance issues with ORM and alternatives like object databases, document databases and JSON storage. Overall, the document suggests carefully choosing an ORM library and considering whether ORM is really needed or if alternative data storage may be better suited.
This document provides an introduction to PHP by outlining its key topics and features. It explains that PHP can be used for server-side web development, command-line scripting, and client-side GUI applications. The document then walks through variables, data types, operators, control structures, and loops in PHP. It provides examples to illustrate PHP syntax and best practices.
The document discusses format files in SQL Server, which store formatting information needed to bulk import or export data between a data file and database table. Format files are required when the data file and table schemas differ, such as having different column orders or a mismatched number of fields and columns. The document describes creating XML and non-XML format files using the bcp utility and includes details on format file structure and data type mappings.
The document discusses various control structures in PHP including if/else statements, loops (while, do/while, for, foreach), and jumping in and out of PHP mode. It provides examples of how to use each control structure and also discusses adding comments to PHP scripts.
The document discusses the history and development of JSON (JavaScript Object Notation). It describes how Douglas Crockford discovered JSON in 2001, developed its specification with a simple one-page website, and then it was adopted widely without much promotion. JSON provided a useful format for browser/server communication and became very popular due to its simplicity, becoming a standard part of JavaScript.
The document outlines concepts covered in a programming languages course, including syntax and semantics, names and bindings, data types, functional programming, polymorphism, parsing and interpretation, modular programming, concurrency, and domain-specific languages. It also lists various languages as examples, such as Scala, JavaScript, C, and internal DSLs in languages like Haskell and Ruby. Finally, it discusses domain-specific languages and provides examples including spreadsheet formulas, query languages, graph layout languages, web languages, game scripting languages, and modeling languages.
ASTs are an incredibly powerful tool for understanding and manipulating JavaScript. We'll explore this topic by looking at examples from ESLint, a pluggable static analysis tool, and Browserify, a client-side module bundler. Through these examples we'll see how ASTs can be great for analyzing and even for modifying your JavaScript. This talk should be interesting to anyone that regularly builds apps in JavaScript either on the client-side or on the server-side.
The document discusses different XML parsers in Java including DOM, SAX, and StAX. DOM represents the XML document as an in-memory tree which allows flexible processing but uses more memory. SAX is event-driven and reads the XML sequentially using less memory. StAX is similar to SAX but simplified and "pull"-based where the developer manually navigates elements. The document also covers using JAXP for XML processing independence and the key classes involved in DOM and StAX parsing.
GraphQL is a query language and execution engine that was created by Facebook in 2012 and became an open standard in 2015. It provides improvements over REST such as allowing queries to retrieve multiple resources with one endpoint. Symfony implementations of GraphQL include the GraphQLBundle and OverblogGraphQLBundle which allow defining types, fields, resolvers, and security rules in YAML configuration files. Security features include limiting query depth and complexity as well as controlling access to fields.
- GraphQL is a query language and execution engine that allows clients to request specific data from an API rather than retrieve predefined resources. It was created by Facebook in 2012 and became an open standard in 2015.
- GraphQL provides improvements over REST APIs such as allowing clients to request specific data in one endpoint using queries rather than making multiple requests to different endpoints.
- Symfony implementations of GraphQL include the GraphQLBundle which allows defining types, fields, and resolvers in YAML configuration and connecting them to Symfony services and repositories.
- Security measures for GraphQL APIs include limiting query depth and complexity, field access control, and marking fields as deprecated.
Avro is a data serialization system that provides dynamic typing, a schema-based design, and efficient encoding. It supports serialization, RPC, and has implementations in many languages with first-class support for Hadoop. The project aims to make data serialization tools more useful and "sexy" for distributed systems.
The document discusses the Delphi Runtime Library (RTL). It provides three key points:
1. The RTL is a collection of functions and procedures built into Delphi that are organized into units like SysUtils, Classes, and FileCtrl.
2. The SysUtils unit is well documented and contains many commonly used routines.
3. The RTL aims to be platform independent through conditional compilation and provides object wrappers for many routines through units like Contnrs.
The document discusses using XML and object-oriented APIs to improve interoperability between databases and applications. It proposes a specification called XORT to map XML to the relational model in a generic way. This allows applications to communicate with databases via XML in a language-independent manner. It also describes using PostgreSQL functions and ChadoXML services to encapsulate domain logic in a reusable way across different applications.
This document provides a summary of Elasticsearch by Tom Chen. It discusses that Elasticsearch is a powerful open source search and analytics engine that is distributed, scalable and real-time. It can be used for storing, searching and analyzing large volumes of data. The document then highlights some of Elasticsearch's key features, including its powerful search capabilities using Lucene queries, and aggregations that allow faceted searches and results. Code examples are provided to demonstrate indexing data and running searches and aggregations. Finally, the document mentions a code example on GitHub that uses Elasticsearch to build a search function for a WordPress site.
This document provides a summary of an introduction to the Clojure programming language. It discusses what Clojure is, its timeline and adoption, functional programming concepts, concurrency features using Software Transactional Memory, the Lisp ideology it is based on including homoiconicity and its macro system. It also provides an overview of getting started with Clojure including using the REPL, basic syntax like symbols and keywords, data types, sequences, functions, and Java interoperability. Resources for learning more about Clojure are also listed.
This document discusses XML (eXtensible Markup Language). It defines XML, outlines its advantages over HTML and other data formats. These include being human-readable, industry supported, and allowing validation of data. The document also compares XML to HTML, describes XML technologies like DTDs, schemas, CSS, and XSLT. It explains how to parse and structure XML documents and the role of XML parsers.
Today’s web and mobile app localization industry relies on numerous standards, libraries and file formats to facilitate the exchange between developers and translators. While some formats are somewhat sophisticated, others lack even the most basic features, like pluralization and contextualization. And most can’t offer support for more advanced localization features, like language cases.
The most common localization formats include Gettext PO, PHP Arrays, Android XML, YAML, .Net RESX, iOS Strings and many others. A typical developer today works with many frameworks - for instance a Laravel backend app (PHP Arrays) with Ember front end (i18n JS) and iOS mobile app (Strings). Since all standards have distinct syntax, in many cases translations cannot be shared across applications.
Translation Markup Language (TML) aims to solve both these problems by introducing a powerful extensible cross-platform syntax that offers support for pluralization, language contextualization, language cases, reusable decorators and much more. TML libraries are available for all major web and mobile platforms. TML allows translators to do in-context translations - where they can translate right from within the apps. TML libraries also eliminate the need for developers to ever deal with the resource files, as all extractions and translation substitution is done realtime and the resource files are only used as a transport between the apps and the Translation Exchange platform.
Translation Exchange stores all translations in Universal Translation Memory (UTM), a graph database which stores all translations with their context, tone, rank and other attributes for accurate matching. This allows translations to be shared across all apps in the Translation Exchange Network. The translation memories of each app are extracted from the UTM graph and are managed by their individual localization teams. During this presentation we will look at some of the features of TML and how it can be used to quickly translate a Laravel application into any number of languages using in-context translation tools. We will also look at how the data is stored and shared across applications using UTM.
This document discusses XML principles for data integration and exchange. It provides an overview of XML, including its data model, schema languages like DTDs and XML Schema, and querying languages like XPath and XQuery. XML allows hierarchical and semi-structured data to be encoded and exchanged in a standard format. Schema languages provide structure and typing, while query languages like XPath allow selecting subsets of XML documents.
DATA INTEGRATION (Gaining Access to Diverse Data).pptcareerPointBasti
XML provides a standard way to represent and exchange data. It defines elements, which can contain text or other nested elements, and attributes. XML documents can be validated against DTDs or XML schemas, which define allowed structures and datatypes. XML data can be queried using XPath expressions, which select elements or attributes based on their path in the XML tree and optional predicates. XPath allows traversing relationships both vertically and horizontally in the tree structure.
Strategies for Data Migration in the Age of CCO and VRA Core 4.0
Presented at the Annual Conference of the Visual Resources Association, March 30th, 2007
Susan Jane Williams, Data Specialist, Scholars Resource; Independent Consultant and Developer
The document discusses using XSLT for templates. It provides an overview of XSLT, comparing it to other template systems like PHP. Key aspects of XSLT covered include applying templates, importing templates, embedding output, and using EXSLT extensions. It also describes using XSLT with PHP, such as via a streamwrapper or callbacks, and caching transformed output.
Introduction to source{d} Engine and source{d} Lookout source{d}
Join us for a presentation and demo of source{d} Engine and source{d} Lookout. Combining code retrieval, language agnostic parsing, and git management tools with familiar APIs parsing, source{d} Engine simplifies code analysis. source{d} Lookout, a service for assisted code review that enables running custom code analyzers on GitHub pull requests.
Similar to JLIFF: Where we are, and where we're going (20)
Transcript: Details of description part II: Describing images in practice - T...BookNet Canada
This presentation explores the practical application of image description techniques. Familiar guidelines will be demonstrated in practice, and descriptions will be developed “live”! If you have learned a lot about the theory of image description techniques but want to feel more confident putting them into practice, this is the presentation for you. There will be useful, actionable information for everyone, whether you are working with authors, colleagues, alone, or leveraging AI as a collaborator.
Link to presentation recording and slides: https://bnctechforum.ca/sessions/details-of-description-part-ii-describing-images-in-practice/
Presented by BookNet Canada on June 25, 2024, with support from the Department of Canadian Heritage.
Video traffic on the Internet is constantly growing; networked multimedia applications consume a predominant share of the available Internet bandwidth. A major technical breakthrough and enabler in multimedia systems research and of industrial networked multimedia services certainly was the HTTP Adaptive Streaming (HAS) technique. This resulted in the standardization of MPEG Dynamic Adaptive Streaming over HTTP (MPEG-DASH) which, together with HTTP Live Streaming (HLS), is widely used for multimedia delivery in today’s networks. Existing challenges in multimedia systems research deal with the trade-off between (i) the ever-increasing content complexity, (ii) various requirements with respect to time (most importantly, latency), and (iii) quality of experience (QoE). Optimizing towards one aspect usually negatively impacts at least one of the other two aspects if not both. This situation sets the stage for our research work in the ATHENA Christian Doppler (CD) Laboratory (Adaptive Streaming over HTTP and Emerging Networked Multimedia Services; https://athena.itec.aau.at/), jointly funded by public sources and industry. In this talk, we will present selected novel approaches and research results of the first year of the ATHENA CD Lab’s operation. We will highlight HAS-related research on (i) multimedia content provisioning (machine learning for video encoding); (ii) multimedia content delivery (support of edge processing and virtualized network functions for video networking); (iii) multimedia content consumption and end-to-end aspects (player-triggered segment retransmissions to improve video playout quality); and (iv) novel QoE investigations (adaptive point cloud streaming). We will also put the work into the context of international multimedia systems research.
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfjackson110191
These fighter aircraft have uses outside of traditional combat situations. They are essential in defending India's territorial integrity, averting dangers, and delivering aid to those in need during natural calamities. Additionally, the IAF improves its interoperability and fortifies international military alliances by working together and conducting joint exercises with other air forces.
Are you interested in dipping your toes in the cloud native observability waters, but as an engineer you are not sure where to get started with tracing problems through your microservices and application landscapes on Kubernetes? Then this is the session for you, where we take you on your first steps in an active open-source project that offers a buffet of languages, challenges, and opportunities for getting started with telemetry data.
The project is called openTelemetry, but before diving into the specifics, we’ll start with de-mystifying key concepts and terms such as observability, telemetry, instrumentation, cardinality, percentile to lay a foundation. After understanding the nuts and bolts of observability and distributed traces, we’ll explore the openTelemetry community; its Special Interest Groups (SIGs), repositories, and how to become not only an end-user, but possibly a contributor.We will wrap up with an overview of the components in this project, such as the Collector, the OpenTelemetry protocol (OTLP), its APIs, and its SDKs.
Attendees will leave with an understanding of key observability concepts, become grounded in distributed tracing terminology, be aware of the components of openTelemetry, and know how to take their first steps to an open-source contribution!
Key Takeaways: Open source, vendor neutral instrumentation is an exciting new reality as the industry standardizes on openTelemetry for observability. OpenTelemetry is on a mission to enable effective observability by making high-quality, portable telemetry ubiquitous. The world of observability and monitoring today has a steep learning curve and in order to achieve ubiquity, the project would benefit from growing our contributor community.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/07/intels-approach-to-operationalizing-ai-in-the-manufacturing-sector-a-presentation-from-intel/
Tara Thimmanaik, AI Systems and Solutions Architect at Intel, presents the “Intel’s Approach to Operationalizing AI in the Manufacturing Sector,” tutorial at the May 2024 Embedded Vision Summit.
AI at the edge is powering a revolution in industrial IoT, from real-time processing and analytics that drive greater efficiency and learning to predictive maintenance. Intel is focused on developing tools and assets to help domain experts operationalize AI-based solutions in their fields of expertise.
In this talk, Thimmanaik explains how Intel’s software platforms simplify labor-intensive data upload, labeling, training, model optimization and retraining tasks. She shows how domain experts can quickly build vision models for a wide range of processes—detecting defective parts on a production line, reducing downtime on the factory floor, automating inventory management and other digitization and automation projects. And she introduces Intel-provided edge computing assets that empower faster localized insights and decisions, improving labor productivity through easy-to-use AI tools that democratize AI.
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsMydbops
This presentation, delivered at the Postgres Bangalore (PGBLR) Meetup-2 on June 29th, 2024, dives deep into connection pooling for PostgreSQL databases. Aakash M, a PostgreSQL Tech Lead at Mydbops, explores the challenges of managing numerous connections and explains how connection pooling optimizes performance and resource utilization.
Key Takeaways:
* Understand why connection pooling is essential for high-traffic applications
* Explore various connection poolers available for PostgreSQL, including pgbouncer
* Learn the configuration options and functionalities of pgbouncer
* Discover best practices for monitoring and troubleshooting connection pooling setups
* Gain insights into real-world use cases and considerations for production environments
This presentation is ideal for:
* Database administrators (DBAs)
* Developers working with PostgreSQL
* DevOps engineers
* Anyone interested in optimizing PostgreSQL performance
Contact info@mydbops.com for PostgreSQL Managed, Consulting and Remote DBA Services
What Not to Document and Why_ (North Bay Python 2024)Margaret Fero
We’re hopefully all on board with writing documentation for our projects. However, especially with the rise of supply-chain attacks, there are some aspects of our projects that we really shouldn’t document, and should instead remediate as vulnerabilities. If we do document these aspects of a project, it may help someone compromise the project itself or our users. In this talk, you will learn why some aspects of documentation may help attackers more than users, how to recognize those aspects in your own projects, and what to do when you encounter such an issue.
These are slides as presented at North Bay Python 2024, with one minor modification to add the URL of a tweet screenshotted in the presentation.
MYIR Product Brochure - A Global Provider of Embedded SOMs & SolutionsLinda Zhang
This brochure gives introduction of MYIR Electronics company and MYIR's products and services.
MYIR Electronics Limited (MYIR for short), established in 2011, is a global provider of embedded System-On-Modules (SOMs) and
comprehensive solutions based on various architectures such as ARM, FPGA, RISC-V, and AI. We cater to customers' needs for large-scale production, offering customized design, industry-specific application solutions, and one-stop OEM services.
MYIR, recognized as a national high-tech enterprise, is also listed among the "Specialized
and Special new" Enterprises in Shenzhen, China. Our core belief is that "Our success stems from our customers' success" and embraces the philosophy
of "Make Your Idea Real, then My Idea Realizing!"
Sustainability requires ingenuity and stewardship. Did you know Pigging Solutions pigging systems help you achieve your sustainable manufacturing goals AND provide rapid return on investment.
How? Our systems recover over 99% of product in transfer piping. Recovering trapped product from transfer lines that would otherwise become flush-waste, means you can increase batch yields and eliminate flush waste. From raw materials to finished product, if you can pump it, we can pig it.
Are you interested in learning about creating an attractive website? Here it is! Take part in the challenge that will broaden your knowledge about creating cool websites! Don't miss this opportunity, only in "Redesign Challenge"!
How to Avoid Learning the Linux-Kernel Memory ModelScyllaDB
The Linux-kernel memory model (LKMM) is a powerful tool for developing highly concurrent Linux-kernel code, but it also has a steep learning curve. Wouldn't it be great to get most of LKMM's benefits without the learning curve?
This talk will describe how to do exactly that by using the standard Linux-kernel APIs (locking, reference counting, RCU) along with a simple rules of thumb, thus gaining most of LKMM's power with less learning. And the full LKMM is always there when you need it!
Blockchain and Cyber Defense Strategies in new genre timesanupriti
Explore robust defense strategies at the intersection of blockchain technology and cybersecurity. This presentation delves into proactive measures and innovative approaches to safeguarding blockchain networks against evolving cyber threats. Discover how secure blockchain implementations can enhance resilience, protect data integrity, and ensure trust in digital transactions. Gain insights into cutting-edge security protocols and best practices essential for mitigating risks in the blockchain ecosystem.
Navigating Post-Quantum Blockchain: Resilient Cryptography in Quantum Threatsanupriti
In the rapidly evolving landscape of blockchain technology, the advent of quantum computing poses unprecedented challenges to traditional cryptographic methods. As quantum computing capabilities advance, the vulnerabilities of current cryptographic standards become increasingly apparent.
This presentation, "Navigating Post-Quantum Blockchain: Resilient Cryptography in Quantum Threats," explores the intersection of blockchain technology and quantum computing. It delves into the urgent need for resilient cryptographic solutions that can withstand the computational power of quantum adversaries.
Key topics covered include:
An overview of quantum computing and its implications for blockchain security.
Current cryptographic standards and their vulnerabilities in the face of quantum threats.
Emerging post-quantum cryptographic algorithms and their applicability to blockchain systems.
Case studies and real-world implications of quantum-resistant blockchain implementations.
Strategies for integrating post-quantum cryptography into existing blockchain frameworks.
Join us as we navigate the complexities of securing blockchain networks in a quantum-enabled future. Gain insights into the latest advancements and best practices for safeguarding data integrity and privacy in the era of quantum threats.
Data Protection in a Connected World: Sovereignty and Cyber Securityanupriti
Delve into the critical intersection of data sovereignty and cyber security in this presentation. Explore unconventional cyber threat vectors and strategies to safeguard data integrity and sovereignty in an increasingly interconnected world. Gain insights into emerging threats and proactive defense measures essential for modern digital ecosystems.
How Netflix Builds High Performance Applications at Global ScaleScyllaDB
We all want to build applications that are blazingly fast. We also want to scale them to users all over the world. Can the two happen together? Can users in the slowest of environments also get a fast experience? Learn how we do this at Netflix: how we understand every user's needs and preferences and build high performance applications that work for every user, every time.
3. XLIFF has always been XML-based
● No abstraction independent of the syntax
● Limits our ability to reason about the
format
● Limits its adoption and (possibly) longevity
5. ● Develop an Object Model (OM)
● Develop non-XML representations of the OM
● Also in scope:
○ Mappings between different *LIFFs
○ Future versions of TMX
○ APIs related to XLIFF or related standard data
exchange
XLIFF-OMOS Goals
6. Brief Digression
The XLIFF Object Model
http://blog.blprnt.com/blog/blprnt/data-in-an-alien-context-kepler-visualization-source-code
7. ● Define “LIFF” independent of representation
● Streamline introduction to XLIFF/JLIFF/etc
● Standardize terminology of language
interchange concepts
OM Goals
8. ● Working draft of prose spec
● UML of XLIFF core
● Work ongoing at https://github.com/oasis-
tcs/xliff-omos-om
OM Status
11. ● Ubiquitous in web service implementations
● Syntactically simple
● Widely understood
● Good tooling
Why JSON?
12. ● Webservices
● Online translation environments
● Data storage in JSON-based stores
Use Cases
13. ● Proof of concept for OM idea
● Improve availability of support for LIOM-
compatible implementations in various
development scenarios
● Data should be interchangeable without loss
between JLIFF and XLIFF!
Goals for JLIFF
14. ● Simple
● Reasonably concise
● Widely supported
● Good Unicode support
JSON: Strengths and Limitations
● Incompletely specified
(Nicolas Seriot,
“Parsing JSON is a
Minefield”)
● Lack of attributes
● Difficult to express
some XML concepts
16. XLIFF always works at the file level
<xliff>
<file id="f1">
...
</file>
<file id="f2">
...
</file>
</xliff>
17. JLIFF is attempting a more flexible
approach
{
"files": [...]
}
{
"groups": [...]
}
{
"fragment": {...}
}
* These representations
may change
** What are the
semantics of converting
this to XLIFF?
19. <unit id="1">
<gls:glossary>
<gls:glossEntry ref="#m1">
<gls:term source="publicTermbase">TAB key</gls:term>
<gls:translation id="1"
source="myTermbase">Tabstopptaste</gls:translation>
<gls:translation ref="#m2" source="myTermbase">TAB-
TASTE</gls:translation>
<gls:definition source="publicTermbase">A keyboard key that is
traditionally used to insert tab characters into a document.
</gls:definition>
</gls:glossEntry>
</gls:glossary>
<segment>
<source>Press the <mrk id="m1" type="term">TAB key</mrk>.</source>
<target>Drücken Sie die <mrk id="m2" type="term">TAB-TASTE</mrk>.
</target>
</segment>
</unit>
What about Namespaces?
urn:oasis:names:tc:xliff:glossary:2.0 glossary
urn:oasis:names:tc:xliff:document:2.0 segment
20. Namespacing via JSON-LD
{
"@context": {
"gls": "urn:oasis:names:tc:xliff:glossary:2.0:glossary",
}
}
Defined at http://docs.oasis-open.org/xliff-omos/jliff/v2.1/jliff-v2.1.jsonld:
{
"@context": "http://docs.oasis-open.org/xliff-omos/jliff/v2.1/jliff-v2.1.jsonld",
....
"gls:glossary": [
{
"gls:definition": { ... }
}
]
}
Use of a colon is a minor inconvenience for some
languages (Javascript)
21. ● Source, Target data are flat lists of objects
○ snippet of text
○ marker
○ inline code
● Segments, Ignorables collected as
"subunits" array
● Default property values in JSON-schema
make things more concise
XLIFF 2.x Unit Model
23. "gls:glossary": [ {
"ref": "m1",
"term": { "text": "TAB key", "source": "publicTermbase" },
"translations": [ {
"id": "1",
"source": "myTermbase",
"text": "Tabstopptaste"
}
],
"definition": {
"text": "A keyboard key that is traditionally used to
insert tab characters into a document.",
"source": "publicTermbase"
}
} ]
}
]
}
A real example, part 2
24. This looks... fine to a machine
{"@context":"http://docs.oasis-open.org/xliff-
omos/jliff/v2.1/jliff-v2.1.jsonld",
"jliff":"2.1","srcLang":"en",
"trgLang":"de","units":[{"id":"u1","subunits":[{"source":[
{"text":"Press the "},{"id":"m1","kind":"sm","type":
"term"},{"text":"TAB key"},{"startRef":"m1","kind":"em"},
{"text":"."}],"target":[{"text":"Drücken Sie die "},
{"id":"m2","kind":"sm","type":"term"},{"text": "TAB-
TASTE"},{"startRef":"m1","kind":"em"},{"text":"."}]},{"typ
e":"ignorable","source":"<br/>"}],"gls:glossary":
[{"ref":"m1","term":{"text":"TAB key","source":
"publicTermbase"},"translations":[{"id":"1","source":
"myTermbase","text":"Tabstopptaste"}], "definition":
{"text":"A keyboard key that is traditionally used to
insert tab characters into a document.",
"source":"publicTermbase"}}]}]}
29. Unfortunately, that doesn't work
Duplicate type keys are
possible
metadata must be an
object to hold this property
30. "Writers that do not support a given custom
namespace based user extension SHOULD
preserve that extension without Modification."
Obstacle: Cross-format Extension Handling
This works across
XLIFF/JLIFF
conversion, right?
32. The Revenge of Untyped Values
<foo:data id="id123"
xmlns:foo="urn:foo:bar">
<foo:value>50</foo:value>
</foo:data>
"value" : 50
"value" : "50"
What is the data type of this value?
Is the appropriate JLIFF representation
or
34. ● Finish the schema! (Modules, modules)
● Write the doc!
● Implementations! (Okapi, ???)
● (Finish OM)
● (Look at other formats)
Goals for 2018
35. JLIFF work on GitHub:
https://github.com/oasis-tcs/xliff-omos-jliff
OM work on GitHub:
https://github.com/oasis-tcs/xliff-omos-om
Where to learn more