text:
Last week I experimented by making a trio of parfaits in mini shot glasses.
from left to right:
1. Vanilla bean panna cotta with fig balsamic and diced strawberries.
2. White chocolate creme brulee, a layer of orange creme brulee and a pecan praline topping.
3. Chocolate pots de creme with crushed chocolate wafers and a layer of carmel mousse.
Technorati Tags: Dessert


text:
LLOYD firstname.lastname@example.com_current.manitoulin_expositor 2001-10-17 published
Robert Oliver RUNNALLS
In loving memory of Robert Oliver RUNNALLS, May 29, 1933-October 8, 2001.
Bob RUNNALLS, a recent resident of the Wikwemikong Nursing Home, and formerly of Mindemoya, died at the Wikwemikong Nursing Home on Monday, October 8, 2001 at the age of 68 years. He was born in Mills Township, son of the late Nelson and Verna {BAKER} RUNNALLS. Bob was retired from farming and as caretaker of the Mindemoya Arena. He had a most interesting and varied life, and had been secretary of the Central Manitoulin Lions Club for 12 years, correspondent for the newspaper, a member of the Hospital Board, coached minor hockey, a member of the Radio Club and was active in the museum. Bob had many other interests such as genealogy, which led him to contacting relatives all over the world. He also enjoyed puzzles and games, and had a great interest in teaching kids right from wrong. Bob lived for and loved to help people and his community, such as being a caregiver for the Canadian National Institute for the Blind. He will also be remembered for his favourite truck "Henry." Bob was well liked and well known, and will be greatly missed on Manitoulin.
Dearly loved brother and brother-in-law of Gerald RUNNALLS of Sudbury, Mona and Eldon LEWIS of Spring, Bay, Jim and Betty RUNNALLS of New Liskeard, Darlene and Les ORFORD of Spring Bay, Elva and Norman LLOYD of Kagawong and Morley and Cathy Runnalls of Evansville. Also survived by several nieces and nephews. Predeceased by sister-in-law Betty and several nieces and nephews. The funeral service was conducted at the Mindemoya United Church on Thursday, October 11, 2001 with Reverend Mary Jo ECKERT TRACY officiating. Interment in Mindemoya Cemetery. Arrangements entrusted to Culgin Funeral Home, Gore Bay.
L... Names LL... Names LLO... Names Welcome Home
LLOYD - All Categories in OGSPI

subset: commoncrawl


text:
Book now your stay at Tolentino Suites directly online on the panel attached for a certified and sure booking and you will immediately receive a confirmation e-mail from our structure.
Your credit card will not be charged at the time of booking, the credit card details are only required to guarantee the reservation. Read the "Terms and Conditions"
The credit cards accepted are as follows:
Visa, Mastercard, Maestro.


text:
We asked our editors to help out Angelina Jolie and Brad Pitt—because six kids, movie careers, and charities are enough work already—by dreaming up every detail of the wedding planning process, from booking a venue to selecting stationery to itemizing the registry. The result is a vision for the megastar couple rooted in classic black-and-white elegance with bold, graphic touches:
Venue: Chateau Miraval
"I'm betting Brad and Angelina decide to marry at their $60 million estate, Chateau Miraval, in the south of France." —Heather Lee
Bouquet: Calla Lillies
"If Angelina were a flower, wouldn't she be the calla lily? Long, slender, eye-catching. Plus, in some cultures callas are associated with death, and given Angie's slightly morbid past.. Kidding! (Actually, they are widely used at wakes, I'm not kidding about that.)" —Denise Penny Shepard
Statement Accessory: Christian Louboutin Clutch
"Angie's been captured by the paparazzi wearing pretty boring clothing as of late: White v-neck and black flats here, khaki trench and brown dress there. However, she does seem to like a loud accessory once in a while, and this one feels right for a reformed bad girl: one part bridal, two parts femme fatale." Marquise Python Clutch, $1,995, available at Saks —Denise Penny Shepard
Cake: Macaron Tower
"In keeping with the French theme, they should serve a tower of macaron cookies instead of a traditional wedding cake." —Heather Lee
Barware: Karl Lagerfeld
"It's only natural that this high-fashion Hollywood couple's style would translate to a registry, and so I wouldn't be surprised if Karl Lagerfeld's line of barware for Orrefors made an appearance on their wedding wish-list." $150-$250 per glass, available at Orrefors —Arielle Shipper
Stationery: Bernard Maisner
"Bernard Maisner's old-school gothic lettering and sexy flourishes (i.e. juicy wax seals) are at once traditional and enigmatic, just like the Jolie-Pitts. I could see them doing hand-delivered invitations with white calligraphy on black stock, finished off with a blood-red wax seal." —Denise Penny Shepard
China: Hermes
"Black and white 'Balcon du Guadalquivir' dinnerware by Hermes combines French sophistication with a hint of exoticism that's right up this ambassadorial couple's alley." $185 for dinner plate, available at Michael C. Fina —Arielle Shipper
Menu: Asian/Cajun Fusion
"The menu is a shout-out to their adopted children of Cambodian and Vietnamese descent and their love for the Big Easy. There's nothing like serving deep fried chicken on impossibly fine china." —Denise Penny Shepard
Pillows: Jason Wu for Canvas
"I imagine Angelina would bring a bit of her red carpet glamour home with these lace-accented pillows." $140-$160 each, Canvas —Arielle Shipper
Kid Attire: J.Crew
"I love the idea of a suit for Shiloh, since she is such a tomboy. She also seems to do the preppy thing, so I thought a blue seersucker would look so cute on her—especially with her blue eyes. On the opposite end, Zahara seems to wear tutus, pink, sparkles, and anything girlie. (She's a girl I can totally identify with, so I know she would delight in wearing glitter shoes to her parents' wedding.)" Sportcoat, $118, and glitter ballet flats, $58, both J.Crew —Elizabeth Swanson
Home Decor: DVF Vases
"Diane von Furstenberg herself famously came to Angelina's defense after her Academy Awards fashion faux-pas, so I think Angie will show her a little love back when it comes to her bridal registry. DVF's 'Powerstone' vases are the perfect complement to Brad and Angie's preference for clean lines and a modern aesthetic." $50-$75, available at Bloomingdale's —Arielle Shipper
Music: Caribbean and Jazz
"I know from watching 'Mr. and Mrs. Smith' that Brad and Angie can dance. But I doubt they'd put on that kind of show at their wedding. More likely is a music-filled party ideal for mingling: Carib tunes during cocktails, maybe led by their buddy Wyclef Jean and his pals; all kinds of Jazz during dinner (because doesn't Brad strike you as a Miles Davis kind of guy?), and a DJ for dancing after cake—a brief set, mainly for the kids who probably won't get to bed before 6 a.m." —Denise Penny Shepard
—Phillip B. Crook
You Might Also Like:
Editors' Picks: Angelina Jolie's Wedding Dress
Angelina Jolie's Engagement Ring (PHOTO!)


text:
Le Chômeur et sa Belle
Jacques Louis was born in Etterbeek, Brussels, as the son of an artist father. His mother was the president of a feminist movement. At age 15, he had his experiences in the field of comic art as a pupil of Fréon publisher Thierry van Hasselt. Starting in 2004, he went to Angoulême every year to present his science fiction work to publishers, while making a living as a drawing teacher. By 2007 he dropped sci-fi and decided to focus on autobiographical comics, that he published on his blog 'Roudoudou et Petite Bouclée'. The satirical and semi-autobiographical comics starring Louis and his girlfriend Céline drew the attention of Benoît Fripiat, publisher with Dupuis. The series was retitled to 'Le Chômeur et sa Belle', and made its first appearance in Spirou in July 2010. The first book was published by Dupuis in October 2011.


text:
76 Restaurants. Order minimums & booking fees vary by distance from restaurant.
Caspi Restaurant and Lounge
Asian, Asian Fusion, Burgers, Kebab, Mediterranean, Pizza, Salad, Sandwiches, Soup, Turkish
Booking Fee: $4.99
Babylon - S Jefferson St.
American, Brunch, Burgers, Deli, Dessert, Diners, Ethiopian, Healthy Foods, Italian, Latin American, Mediterranean, Middle Eastern, Salad, Sandwiches, Seafood, Spanish
Booking Fee: $3.99


text:
Faculty Profile
Umberto Ravaioli
Profile Sections
- Ph.D. - Electrical Engineering, Arizona State University 1986
Research Statement
My research focuses on large scale simulation of charge transport phenomena in solid-state and soft-matter systems. My group investigates the properties of ultra-scaled MOS devices, including size-quantization in nanoscale channels and thermal phenomena, particularly generation and transport of phonons. Transport is studied with particle Monte Carlo models with corrections to account for size quantization. This work has led to the development of the Monte Carlo simulator MOCA 2D and MOCA 3D. In the soft-matter area, we investigate transport of ions in nanoscale biological and biomimetic membranes, using similar engineering approaches based on Monte Carlo simulation where the water background is included implicitly. Simulations work has focused on the study of biological ionic channels, with the development of the transport Monte Carlo code bioMOCA, a full 3-D self-consistent simulator. Large scale studies with bioMOCA are conducted on the national TeraGrid computational infrastructure, in collaboration with the Network for Computational Nanotechnology (NCN) and the NIH Center for Design of Biomimetic Nanoconductors and the National Center for Supercomputing Applications (NCSA). Educational activities are also carried out in co-operation with the National Center for Learning and Teaching of Nanoscale Science and Engineering (NCLT) for which we are developing interactive numerical tools and simulators, suitable for teaching activities and demonstrations at high-school and college level.
Undergraduate Research Opportunities
Semiconductor device simulation based on Monte Carlo particle models, in particular nanoscale MOSFETs and non-volatile memories. Charge transport in biological ion channels. Cyberinfrastructure activities for research and education.
Research Interests
- Novel materials and devices for thermoelectric applications
- Coupled electro-thermal simulation of semiconductor devices
- Properties of Carbon Nanotubes
- Charge Transport in Biological Systems (Ionic Channels)
- Reliability of MOS Devices
- Supercomputation and Visualization
- Quantum devices
- Numerical methods for semiconductor device simulation
- Monte Carlo simulation of high speed electronic devices
- Fellow, IEEE, 2003.
- Fellow, Institute of Physics, 1999.
- Research Fellowship, Fondazione Ugo Bordoni, Rome, Italy, 1982.
- Laureato Frequentatore (Postgraduate Research), Department of Electronics Engineering, University of Bologna, Italy, November 1980 - October 1982 (supervised 3 student theses)
Teaching Honors
- Accenture Award for Excellence in Advising, 2006, 2007
- Advisors List, College of Engineering, UIUC, 1990, 1994, 1996, 1998, 2004, 2006, 2007
- Andersen Consulting Award for Excellence in Advising, 1990, 1994
- Incomplete List of Excellent Teachers, UIUC, Spring 1990, Fall 1990, Fall 2003, Spring 2005, Fall 2006, Spring 2009
Research Honors
- bioMOCA simulation selected for Image of the Week on "International Science Grid This Week" (July 11, 2007), originally published on Biophysical Journal, vol. 90, p. 3496, 2006. Link at http//www.isgtw.org/?pid=1000539
- First Place Outstanding Paper Award: Z. Aksamija and U. Ravaioli, "Joule Heating and Phonon Transport in Nanoscale Silicon MOSFETs," 2007 IEEE International Conference on Electron Information Technology, Chicago, IL, May 17-20, 2007.


text:
SADC Groundwater Grey Literature Archive
Welcome to the archive of groundwater literature from the Southern African Development Community (SADC). See the about page for more information about this website. Click on a country below to browse country information or use the search form to find reports. Throughout the site references available to download in PDF format are indicated by . Those not yet available for download are indicated by .


text:
Express. Home of the Daily and Sunday Express.
No changes for Ireland
Republic of Ireland manager Giovanni Trapattoni has resisted the temptation to make changes for Wednesday's Euro 2012 qualifier against Andorra.
The Italian will field the same 11 men who started Friday evening's 1-0 win in Armenia in the first competitive international at the newly-revamped Aviva Stadium.
That means keeper Shay Given will line up behind a back four of John O'Shea, Richard Dunne, Sean St Ledger and Kevin Kilbane, while Glenn Whelan retains his place in a midfield four also including Liam Lawrence, Paul Green and Aiden McGeady despite having been booked in Yerevan.
Skipper Robbie Keane will once again partner Kevin Doyle in attack, although Trapattoni intends to give other players a chance from the bench, providing that the game goes the way he hopes.
Defender Darren O'Dea has returned to his club after being ruled out of tomorrow night's game.
The 23-year-old Ipswich player last week underwent a scan on a knee injury, which revealed a slight sprain, and although he was included in the party which flew out to Yerevan last Wednesday, he did not make the 18 for the 1-0 victory over Armenia.
O'Dea was able to train at Gannon Park in Malahide on Sunday, but has since been withdrawn and has gone back to Ipswich for treatment.
He becomes the fourth member of the squad to pull out, following Damien Duff, Keith Andrews and Keith Treacy on to the sidelines.
A fifth casualty, Paul McShane, is back in training after recovering from the hamstring problem which prevented his participation in Armenia.


text:
In my opinion
Holub objects to tax exemption
County Commissioner
The House Taxation Committee voted March 8 to go forward with HB 2285 to remove certain types of business fixtures from the tax rolls. Under the pretext of clarifying a law that has existed for more than 100 years, the bill redefines fixtures on behalf of two companies.
This bill was introduced after being requested by two companies (registered in Delaware, which has no corporate taxes, but doing business in Kansas) whose 10-year property tax abatements had expired.
Within three months of losing their appeals to the Kansas Court of Tax Appeals, they had enough clout to get legislation introduced to "clarify" the law, which will result in a large portion of their property being non-taxable.
The bill as re-written will benefit about 30 businesses that will receive a significant tax break. Local governments will lose approximately $75 million dollars of tax revenue statewide. The loss can be compensated for only with levy increases on residential and small business property owners.
Under similar circumstances, a bill was passed in 2006 with the stated purpose of "encouraging business expansion and business relocation to Kansas."
This bill also cost local governments millions of dollars. Research has indicated that no one at the state level seems to be monitoring to see if the stated purpose of this bill was achieved.
I was able to find out that since the bill became law, the number of mass layoffs (50 or more people) by Kansas businesses has dramatically increased, according to the Kansas Labor Information Center. To this day it is above the 2006 levels.
These exemptions and others have done nothing but shift the tax base and thus the burden.
In 1996, residential real estate properties constituted 37.9 percent of the tax base. This has grown to 48.02 percent in 2012 and will exceed 50 percent if the new bill passes.
It can be argued the federal government is spending this country into debt, but Kansas is "exempting" its citizens into debt by accommodating large and powerful companies.
Rep. Kasha Kelly, a tax committee member, was quoted as saying "counties should reduce spending and tighten their belts."
I think Kansas citizens would be better served if the Legislature stopped "tightening the noose."


text:
Suitable: 40m² / 100m³ / 430ft²
€ 349.-
Inc. VAT
View all 126 reviews
€ 649.-
Your benefit € 49.01
€ 969.-
Your benefit € 78.-
€ 739.-
Your benefit € 59.-
Share your experience with others and write a review
The medical specialists recommend optimum humidity is in the range of 40 to 60% RH.
For the ideal indoor climate, humidity is the most decisive.
Is the air in indoor spaces too humid then the quality of life by mold spores, allergens and airway problems strongly affects adversely.
In a home variety of activities take place that produce moisture. Too much moisture in your home is harmful to your home and your health.
A too moist workplace is not good, but too dry air also is not pleasant to work in.
Aromatherapy is a healing art that uses essential oils focused on promoting health.
Clean Air Optima humidifiers for prevention.
Click here for various offers
With an air treatment system from Clean Air Optima®
© 2019 Clean Air Optima
The shipping costs depend on the weight of the parcel and the corresponding zone.
We offer the following shipping modes:
*Prices can vary depending on the weight.
Shipping costs are displayed in detail during the payment process. Hence you know before the completion of your order what shipping costs will occur.
HHave you ordered several products with different delivery times? Then the longest delivery time applies because we want to avoid that you will be charged additional shipping costs. If you wish we can send the articles as soon as they are available, but several parcels will cost the correspondent amount of shipping fees.
If you order two or more articles in the shipping mode "parcel shipment" the shipping costs are only charged once.


text:
I'm going to miss the Park Avenue Bridge.
Though not an A-lister like the Golden Gate or Sydney Harbor bridges, the Park Avenue Bridge is a graceful and distinctive 100-foot span that connects Newport Harbor's Balboa Island and Little Island.
The narrow 32-foot-wide bridge, which has two lanes for autos with pedestrian walkways bordering each side, was completed in about 1930. It spans the ribbon-thin Grand Canal.
The Park Avenue Bridge was the first bridge I got to know as a youngster. With its gently arcing span, it seemed to me venerable and elegant. I crossed it hundreds of times as a kid in the late 1940s and early '50s. The bridge, which is now labeled "functionally obsolete," was then in its heyday.
My goal was always to jump from the bridge into the Grand Canal waters below. Sadly, that goal was never realized. For safety reasons, my parents wouldn't allow it. They were obdurate — and wise.
Construction on a replacement is expected to begin in 2015 and be completed late the following year.
Modernization and new technology are almost always good things, but, frankly, for nostalgia's sake, I'm reluctant to part with this striking objet d'art.
I was born at St. Joseph Hospital in Orange in 1945. My family resided on Balboa Island's Marine Avenue for nearly 25 years. For seven years, my parents and I occupied a small upstairs apartment behind my grandparents' home.
We were half a block from the bay front and not much more than a catcher's throw to second base from the Grand Canal.
My first major accomplishment in life occurred at age 4, when I successfully swam the width of the canal at high tide from Balboa Island to Little Island — by myself. It foreshadowed by one year Florence Chadwick's inspiring conquest of the English Channel.
One of my earliest memories –- at about age 3 — is of me walking at my mother's side across that bridge. She pushed a baby stroller with my 1-year-old brother on board.
We'd cross the bridge from Balboa Island to Little Island several times a week and follow the sidewalk around the perimeter of the island in a counterclockwise direction. The journey was probably a little over a mile.
For me, it was a huge adventure. Little Island is only 90 feet across the Grand Canal from Balboa Island, yet visiting there was tantamount to entering a different clime — like going from the Isle of Wight to Antigua.
The cool thing was that the islands are in the same time zone, and you weren't required to clear customs.
After walking the boundary of Little Island, we'd again cross the bridge and return to our Balboa Island abode for lunch and a nap.
During my second- and third-grade years I had a school chum, Ross, who lived on Little Island, near the Grand Canal. I frequented his house and he mine.
Sometime during 1949 or 1950 — when I was 4 or 5 —- a Hollywood film crew came to Balboa Island to shoot the movie "The Breaking Point," starring John Garfield and Patricia Neal. My mother was a huge Garfield fan.
The Warner Bros. drama, released in October 1950, tells the story of a charter boat captain (Garfield) who is drawn into a shady deal in order to keep his boat. The film was adapted from the Ernest Hemingway novel "To Have and Have Not."
The bridge is featured prominently in the film.
I remember one particular evening after dinner, walking with my parents to the bridge to watch a scene being filmed. Cameras and klieg lights were set up along the bridge, and the Grand Canal was lit up like a Christmas tree.
Garfield was filmed walking from the bridge to his beach cottage on the canal. The short walk — shot at least a dozen times that evening — caused quite a stir in our neighborhood.
For me, Park Avenue Bridge harbors many warm memories. I miss it already!
JIM CARNETT lives in Costa Mesa. His column runs Wednesdays.


text:
Farm Works Software has introduced Pro 3/4, a new product for growers, co-ops, agronomy dealers, and custom applicators used in the office to provide critical analysis tools for multi-year yield averaging (also known as normalizing), profit/loss mapping, and entering formulas when creating prescription maps for variable rate application.
With normalizing yield data, multiple years can be averaged to discover consistently high-yielding and low-yielding areas. Users can select any combination of crop and/or year for the normalizing, excluding abnormal years, in order to visualize history zones in each field.
The profit/loss mapping in Pro creates a layer for each crop enterprise year and integrates financial information with precision maps. For example, a user can view a profit map based on seed variety and variable rate application maps, along with yield.
Costs can be manually entered for each input with the Trac and Site office software (programs that offer field records and mapping/GIS). When the Funds module (an integrated grower level accounting program) is used with Pro, true input costs from the checkbook will flow into the profit/loss map. This offers increased financial accuracy with significantly less work.
Farm Works Pro retails for $400. The Farm Works Trac and Site office software are required modules of Pro.
For more information see http://www.farmworks.com/.


text:
To access ePermits, and submit a Plant Protection and Quarantine (PPQ) permit application, you must have a level 2 e-Authentication account. e-Authentication is a registration process that enables customers to access USDA Web applications and services via the Internet.
The USDA eAuthentication system supports different levels of authentication. ePermits currently supports Level 2 users for all permit application types and Level 1 users for selected permit application types.
Account Restrictions:
Create eAuthentication Account to access ePermits


text:
Gay Military Excluded From Equal Rights
Now a program was announced last week which provides that if a service member is the victim of a sexual assault, counseling services should be made available to members of his or her family. It excludes same-gender spouses from those eligible for the counseling.
Updates to Come…
Exclusive Audio Chat with Robear Chinosi, NY INK's gay tattoo shop manager about the TLC reality show's dramatic second season where Robear is looking for love & LGBT Issues…
Hear Audio Interviews w/ LGBT Leaders @OUTTAKE VOICES™
Support Our Vision @ OUTTAKE™ EQUALITY STORE...:)
View Our Historic Short Trailer on Gay Marriage


text:
Difference between revisions of "Metadata and Filter Framework"
Jerico.dev (Talk | contribs)
(First version.)
(Fixed typo)
|Line 81:
|Line 81:
=== The Relation of Filters and Meta-data ===
=== The Relation of Filters and Meta-data ===
When you work with meta-data you'll make heavy use of filters in many situations.
When you work with meta-data you'll make heavy use of filters in many situations. are able to validate and accept very complex input/output types, like whole Word documents, XML documents but also metadata already codified in a MetadataDescription object or application objects down to simple primitive string or numeric values.
Filters help to abstract a lot of implementation details away from the user. You can define a transformation like "take a plain text citation and transform it to NLM 3.0 XML" in a single line of code without knowing a lot about the sometimes extremely complex algorithms necessary to do such magic. Most of the time filters will make use of complex tools, external databases or other, nested filters internally. All this complexity should be hidden from client code.
Filters help to abstract a lot of implementation details away from the user. You can define a transformation like "take a plain text citation and transform it to NLM 3.0 XML" in a single line of code without knowing a lot about the sometimes extremely complex algorithms necessary to do such magic. Most of the time filters will make use of complex tools, external databases or other, nested filters internally. All this complexity should be hidden from client code.
|Line 96:
|Line 96:
Please keep in mind that the meta-data framework relies on the filter framework but the filter framework does not (and never should) rely anywhere on the meta-data framework.
Please keep in mind that the meta-data framework relies on the filter framework but the filter framework does not (and never should) rely anywhere on the meta-data framework.
== The example ==
== The example ==
Revision as of 14:19, 14 December 2010
- 1 Introduction
- 2 Filters
- 3 Metadata
- 4 Additional Information
This guide will give you an introduction to the concepts of the filter and meta-data frameworks. It is meant as a high-level conceptual introduction. There will be several code examples but I'll only highlight the important steps not all the details.
In other words: I assume that you're a PHP developer and are able to adapt high-level code examples to your own situation. To make this even easier I'll point you to real code examples (mostly from the citation assistant) wherever possible to make the knowledge transfer even easier.
Basic notions
Filter Framework
The filter framework is a completely independent module that is not directly linked to the meta-data framework. The meta-data framework makes heavy use of the filter framework, though, so you have to understand it first before you can understand the meta-data framework itself. That's why we explain both frameworks in one place.
That said, please keep in mind, that the filter framework is much more generic than the meta-data framework which means that you can use it wherever you like, not only to transform meta-data.
The filter framework has one central class, the Filter class. In short a filter is nothing but an enhanced function that takes input data and generates output data from it. This is not at all different from any function, e.g. a normal PHP function. The Filter class introduces a lot of additional features, though, that make it much more capable than a normal PHP function. We'll talk about these in a bit.
Meta-data Framework
The meta-data framework has several important components. The most basic components of the framework are MetadataSchema and MetadataDescription.
The meta-data schema defines the meta-data standard that we want to implement. It defines the fields available within a given description, it defines the validation rules that apply to these fields and it defines the relation of descriptions among each other.
I'll give an example to make this a bit clearer:
Say we want to model citations in NLM. NLM 3.0 defines the <citation-element> schema which consists of several sub-elements that may or may not have nested sub-elements themselves.
In our case we assume that we have a flat list of elements in <citation-element> like <article-title>, <source>, and so on. And we also assume that we have got <person-name> elements for authors and editors that need further nesting of a <name> element with, e.g. <given-names>, <surname> and <prefix>.
This means that we have to model a hierarchical structure that looks somehow like this:
- article-title
- source
- author
- given-names
- surname
- prefix
- ...
- editor
- given-names
- surname
- prefix
- ...
- ...
To implement such a structure without unnecessary duplication we'll define two schemas, one for the citation as a whole and one for names. Then we'll point the author and editor entries in the citation to a so-called "composite" element which is based on the name schema.
This will then schematically look like so:
citation schema:
- article-title
- source
- author (is-a name)
- editor (is-a name)
- ...
name schema:
- given-names
- surname
- prefix
In practice the schemas allow for much more flexibility. You can define any type of directed graph with them by pointing back and forth between schemas which means that you can implement every meta-data schema out there that has relevance. Conceptually this means that we are 100% compatible with two of the main meta-standards out there: the DCMI abstract model and the RDF triple specification.
The schema will also define the encoding of fields. We use the basic types defined in the DCMI abstract model from which we can build arbitrarily complex encoding definitions. This includes authorities/vocabularies as well as pattern-specific encodings like date, ISBN, etc. Validators are attached to each field to make sure that data that is being stored in descriptions will comply to what the standard defines.
The schema will also define the cardinality of fields. In the given example there can be only one article-title but there can be several authors in a record. We are able to define the following cardinalities:
- one-to-many
- one-to-one
- zero-to-many
- zero-to-one
Once you defined the schema you can instantiate it via the MetadataDescription. Whenever you create a meta-data description you'll say which standard the description must conform to. The MetadataDescription will then automatically enforce the standard so that you can only add standard-conforming statements to it.
You add a statement to a meta-data description by specifying the property or "key" (e.g. "source" in the above example) and the value for the property (e.g. "Journal of Communication Science"). You won't be able to add such a statement to a meta-data description if it is not conforming to the standard, i.e. if it is not properly encoded or if it breaks the cardinality rules.
Several MetadataDescriptions from distinct schemas can be joined in a single MetadataRecord as a single entity. This is useful for standards that allow for nesting of other standards (like MODS) and also for protocols like OAI that allow transmission of mixed records or even for indexing.
The Relation of Filters and Meta-data
When you work with meta-data you'll make heavy use of filters in many situations. Filters are able to validate and accept very complex input/output types, like whole Word documents, XML documents but also metadata already codified in a MetadataDescription object or application objects down to simple primitive string or numeric values.
Filters help to abstract a lot of implementation details away from the user. You can define a transformation like "take a plain text citation and transform it to NLM 3.0 XML" in a single line of code without knowing a lot about the sometimes extremely complex algorithms necessary to do such magic. Most of the time filters will make use of complex tools, external databases or other, nested filters internally. All this complexity should be hidden from client code.
The most prominent examples where filters are used in the meta-data framework are the following:
- import serialized meta-data into a meta-data description,
- transform complex objects to make them available for the meta-data framework, e.g. by transforming an MS Word document into an Open Office document which can then be read as XML,
- export a meta-data description into serialized meta-data,
- parse plain text into structural data, e.g. a plain text author representation into a name schema,
- crosswalk from one meta-data format to another, no matter whether still serialized or already encoded in a MetadataDescription,
- enrich meta-data descriptions, e.g. by passing them through a cleansing process or by enriching them with data from external sources,
- index meta-data. This is done by tokenizing and linking meta-data thereby preparing it for storage in an index engine,
- extract and inject meta-data from/to application objects, e.g. extract/inject NLM meta-data from/into a PublishedArticle object.
Please keep in mind that the meta-data framework relies on the filter framework but the filter framework does not (and never should) rely anywhere on the meta-data framework.
The example
In this guide we'll exemplify the capabilities of the filter and meta-data frameworks based on one example that we carry through the different situations we'll explain.
We assume that we want to:
- import serialized MARCXML from an external system,
- store the record to the database,
- crosswalk the record to Dublin Core,
- index the record for search and finally
- export it in, say, RDF format.
Note: When I show (pseudo-)code within the example I'll leave out all paths, class packages, etc. to make the example more readable. We are only interested in concepts here not in actual code. The intent of the example is to give you the necessary notions to be able to understand the conceptual background of the meta-data framework.
So what would normally be
will rather become
There are lots of fully qualified samples out in the PKP code so before you actually implement something look at a few of them to make sure that you get the naming right. All the important core classes of the filter and meta-data frameworks also contain extensive class and inline comments which are closer to the actual technical implementation of the concepts we present here. I'll also point you to real-world examples where available and appropriate.
As we've said before, filters are nothing but highly sophisticated functions. This means: they take input and generate output and as with every function their advantage is that they hide their inner workings to the outside world.
What makes filters so much more capable than normal, say, PHP functions is that:
- they can be stored to the database together with their parameterization (e.g. the OCLC API key for a citation database connector),
- they can be configured per context (i.e. journal, press, conference),
- they can define runtime requirements (e.g. PHP version, PHP modules, programs available on the server, ...) and enforce them automatically,
- they can enforce and validate arbitrarily complex input/output types (e.g. Word documents, XML schemas/DTDs, meta-data schemas, etc.),
- they can be nested to form composite filters (serialized, parallelized) for better re-use of generic filters, like an XSL filter,
- they can be configured with XML (look out for filterConfig.xml files),
- they can be discovered in the database based on input/output types which makes them very pluggable, think: "Give me all filters that any plug-in contributed that take a MARCXML description and transforms it to something." or "Give me all filters that transform NLM descriptions to plaintext, aka citation styles."
In the context of our example we'll have to define several filters:
- one that takes serialized MARCXML and spits out a MARCXML MetadataDescription. We'll call it "MarcxmlXmlMarcxmlFilter" throughout this text.
- one that takes a MARCXML MetadataDescription and maps it to PKP application objects like PublishedArticle.
- one that takes a MARCXML MetadataDescription and serializes it to XML. Let's call it "MarcxmlMarcxmlXmlFilter".
- one that takes serializes MARCXML and crosswalks it to Dublin Core, using XSL internally, let's call it "MarcxmlXmlDublinCoreXmlFilter".
- one that takes a MARCXML MetadataDescription and tokenizes it into an index format, e.g. Lucene document or PKP keyword format. Let's call it "MarcxmlLuceneFilter"
- one that takes a MARCXML MetadataDescription and serializes it to RDF using Turtle. Let's call it "MarcxmlRdfFilter"
Filters consist of two parts:
- a filter class that does the actual work
- a filter configuration that defines how the filter is persisted to the database including the available filter settings, the input/output types, etc
In the filter configuration you can also define partially pre-configured filters that define some but not all necessary settings for them to work. We call these filter templates. Such filter templates are useful when filters combine internal settings (e.g. a display name) with user settings (e.g. a personal citation database user name and password the user must enter).
Technical note: Filter templates are always stored in the context of the application (context "0") and they are marked as templates. Fully configured filter instances can live both, at the application level (context "0") and in an individual context (journal, press, conference).
The Filter Class
All filter classes must inherit from the Filter class. The Filter class contains extensive class and inline documentation. Please consult it before you implement a filter.
The Filter class provides several abstract template methods that you have to implement. The most prominent one is the
process() method that does the actual work.
The filter framework will ensure that the input parameters passed into the
process() method will always be validated already. So you can rely on getting the right data without having to validate it again.
You can do arbitrarily complex transformations in the
process() method. There are no specific rules how these transformations should look like. You only have to make sure that the output type you generate will be valid, otherwise the filter will throw an error when you try to execute it.
When you extend the Filter class directly you'll write a filter that can not be persisted to the database. Such filters can be useful when you use them only internally without the user having to configure it or without having to share it via plug-ins. Often such simple filters encapsulate small pieces of work which you want to integrate in other filters.
Persistable Filters
If you want to create a filter that implements all of the above mentioned features you'll have to extend from PersistableFilter. This will create a filter that can be written to the database together with its configuration. Persistable filters are the most useful filters in the context of the meta-data framework because they can be contributed by plug-ins and shared across all applications with very weak coupling.
The FilterDAO which is responsible for filter persistance allows many different ways in which client code can "discover" filters that are in the database without having to know which exact filter it is looking for.
This means that you can for example add further citation output filters to the database via a plug-in and client code will immediately be able to use that filter simply because it will appear in its result list when looking for a certain class of filters.
Persistable filters are configured via XML which makes them highly re-usable. If you look out for filterConfig.xml files in the application you'll find many examples.
Type Definitions
Filter input/output types are defined via instances of the TypeDescription class. The type description class contains methods to check a given value against arbitrarily complex business rules. Every type description class defines its own descriptive language to specify the expected type in a more readable format.
The description of a type consists of two parts:
- a namespace
- the actual type description
Every type description class defines its own namespace.
Type descriptions can therefore be written like this:
We currently have the following type descriptions:
- primitive types (strings, numbers, etc.) in the primitive namespace
- class types that test whether a given object inherits from a given class - uses the class namespace
- meta-data descriptions - uses the metadata namespace
- xml can be validated against schemas, DTD's and relax-ng - uses the xml namespace
Please look at the corresponding type description classes for an in-depth explanation how their specific type description syntax works. We'll use several examples here which should already give you a feeling for how type descriptors usually look like. They are designed to document complex types in a very readable format.
Filter Groups
Filters are grouped together by input/output type which facilitates type-based discovery of filters in the FilterDAO. All filters within one group have the exact same input/output type specification. There can be several filter groups with the same type combination, though, if they do semantically different things. This is especially important when they work with unstructured data that can only be described with relatively generic types like "primitive::string" or "xml::*" (the asterisk means "all xml formats").
Composite Filters
Sometimes it makes sense to combine simpler filters into more complex ones.
A real-world example would be that you you have several citation extraction filters and you want to run them in parallel and then combine their results into a single output.
To achieve this you would first use a GenericMultiplexerFilter filter that takes a single input, runs it through several nested filters and outputs an array of results. Then you would take the array resulting from the first step and de-multiplex it into a single result.
The two steps can be combined into a single filter by way of the GenericSequencerFilter which simply chains nested filters in a given order.
The so-called composite filter network would then look like this:
- GenericSequencerFilter
- GenericMultiplexerFilter
- CitationExtractorFilter1
- CitationExtractorFilter2
- ...
- DeMultiplexerFilter
- GenericMultiplexerFilter
You can execute such a filter in one single line of code without the client code having to know anything about the fact that the filter really consists of maybe ten other filters internally and does really complex things. We'll show an example for such a filter below. All composite filters extend from PersistableFilter which means that you can configure them and save them to the database as any other filter.
Composite filters implement a mechanism that exposes filter settings from the nested filters to the end user as if they were settings of the composite filter itself. You can link settings to each other so that if e.g. two nested filters take the same user/password combination the end user still has to enter this data only once.
Filter Configuration
The filter configuration draws all these concepts together into an XML file that allows you to define:
- filter groups
- filters
- filter settings
- composite filters
I'll give a simple example of the filter configuration based on our MARCXML use case that we introduced above. Several more complex examples will be shown later.
Say we want to configure a filter that understands serialized MARCXML and creates a MetadataDescription from it. This would be the MarcxmlXmlMarcxmlFilter from the example.
The filter definition would probably look somewhat like this (simplified!):
<filterGroup symbolic="marcxml-xml=>marcxml" inputType="xml::schema(marcxml.xsd)" outputType="metadata::MarcxmlSchema(*)" /> <filter inGroup="marcxml-xml=>marcxml" class="MarcxmlXmlMarcxmlFilter" />
If this filter is defined in the MARCXML meta-data plug-in's "filter/filterConfig.xml" file, then it will automatically be discovered and saved to the filter registry in the database when installing the plug-in.
In this guide we'll show several examples for different filter configurations - including filters that require settings and filters that are installed as templates. For an exhaustive description of the filterConfig.xml please look at the corresponding DTD which contain inline comments.
Now that you have a basic understanding what filters do, we'll move on to show how the meta-data framework uses them to provide high-level functionality to client code.
We do this based on the example we defined above. The sub-sections are also roughly in the order in which you introduce a new meta-data standard to the code-base via a meta-data plug-in.
Define the Meta-data Schema
First you have to define the MARCXML MetadataSchema. If you look in the meta-data plug-ins' "schema" folders (in lib/pkp/plugins/metadata) you'll find lots of examples for such schemas.
Most of the time it makes sense to simplify the original schema and only use a sub-set of it. This also means that it often makes sense to unnest sub-elements into a flat key/value list if we only use it with 1:1 cardinality anyway. The MODS plug-in uses this technique quite extensively. Please have a look there.
The general guideline is: Don't implement fields you don't have data for. A good way to think about this is whether we have the field somewhere in our applications or plan to introduce it there in the forseeable future. Thanks to the decoupling that we achieve with the meta-data framework, introducing new fields also isn't very complicated and doesn't take a lot of time. You should try to get the composites right, however. It is not so easy to introduce additional composites at a later stage because oftentimes filter code needs to be aware of composites to some extent.
The names of meta-data keys can be everything that makes sense. The schemas that I've defined so far all have their main binding in XML so I have used some kind of pseudo-XPath grammar to define fields which makes serialization very easy because you can handle it mostly generically without much knowledge about the semantics of the schema which makes the schema much easier to extend. This technique also avoids namespace clashes because you stick very closely to the original standard's nomenclature.
I won't go into more detail with respect to schemas because the samples available in the code should be really easy to read and reproduce.
Map Meta-data to Application Objects
The next step usually is that you have to define the binding of PKP application objects to your standard. This means that you create a mapping between the meta-data schema and an object like "PublishedArticle" so that you can inject and extract meta-data into/from such an object.
This is only necessary if you want to exchange meta-data between the specific standard and the application objects directly. Sometimes (e.g. in OHS or when working with citations) this is not necessary because the meta-data can be worked with in it's raw state. In many cases you can also re-use an existing binding, e.g. by crosswalking your data to NLM which already has meta-data mappings to several PKP objects which you can then re-use. We do this when we work with OpenURL for example which we transform to NLM to interface with application objects.
We use a very special category of filters for the mapping of application objects to meta-data descriptions. These filters are called meta-data adapters.
Meta-data adapters all extend from the MetadataDataObjectAdapter class which in turn is a PersistableFilter (see above).
Technically speaking meta-data adapters transform "class::..." types into "metadata::..." types and back. They take an application object like PublishedArticle and transform it to, say, a MARCXML MetadataDescription or the other way round.
Meta-data adapters always have to implement two main methods which are defined in the MetadataDataObjectAdapter abstract class:
The first takes a meta-data description and maps its data to an application object which it then returns. The second takes an existing application object and extracts data from it into a standards-conforming meta-data description.
Meta-data adapters are closely integrated with our DataObject class. This means that if you define and configure a meta-data adapter correctly then the application object will automatically "know" about the existence of your adapter. As soon as you installed your meta-data plug-in you'll be able to say everywhere in the code:
$article =& $articleDao->getArticle(); $marcMetadata = $article->extractMetadata(new MarcxmlSchema());
Which will give you a MetadataDescription that conforms to the MARCXML schema you defined in the previous step. Please note that you'll not have to change a single line of code within the Article class to achieve this! This also means that any application object can be bound to several standards at the same time without an additional performance hit.
You could as well have said:
$dcMetadata = $article->extractMetadata(new Dc11Schema());
if you had a meta-data adapter for DC meta-data (which we actually have).
Once you have got the meta-data object you can transform it to whatever you have filters for completely independent from your use case or the application context you're working with. This is what standards are for after all!
This is an extremely powerful cross-application interface that will do away with lots of code duplication that we currently have in our code. We currently re-implement schema-to-application-object mappings in different places within the same application and across applications. We have many implementations of the Dublin Core and NLM schemas throughout the applications for example. Not only is this duplicate code but also are these implementations often inconsistent with each other. Using the meta-data framework you can re-use a single consistent meta-data standard implementation throughout all applications. No need for porting OAI plug-ins between applications any more for example. We could even have a generic OAI plug-in now that automatically discovers all available meta-data plug-ins with XML binding and provides an OAI protocol wrapper for it.
Import Meta-data from External Sources
Now let's go to the next part of our example. Say we have got MARCXML data in serialized XML form and want to import it, e.g. into articles.
First we have to create a filter that takes XML data conforming to some XML schema. You use the "xml::..." type description for that. We've already shown an example for this when we explained the filter configuration, see above. The internals of that filter are quite obvious: You'll have to parse the XML and then add it's contents to a MetadataDescription object that has been initialized with the MarcxmlSchema. If you chose your key names intelligently (e.g. using some kind of XPath nomenclature) then the mapping can be done mostly generically without having to define mappings for every single entry.
The logic would be somehow like this:
- Transform your xml into a sequence of fully qualified XPath entries + values found at these locations. You can use a simple GoF visitor pattern for this to traverse the XML tree which is what the PHP4 compatible XML parser does anyway.
- Check whether the XPath entry exists in your schema.
- If such an entry exists then add the value to the description.
You may have to implement this algorithm recursively if you implement nested composite meta-data descriptions as we already explained.
We assume that the filter you created is in a filter group with the symbolic name 'marcxml-xml=>marcxml'. This is exactly what you can see when you look at our configuration example above.
Now assume that you want to use that filter which has been installed via a plug-in somewhere in your code. To do so you do something like:
// Retrieve the filter from the database by group. // (There are many other "discovery" methods available). $marcxmlImportFilters = $filterDao->getObjectsByGroup('marcxml-xml=>marcxml'); // We assume that there is only one such filter. More than one filter wouldn't make // a lot of sense in this case. assert(count($marcxmlImportFilters) == 1)); // Ingest serialized MARCXML. $marcxmlDescription =& $marcxmlImportFilters[0]->execute($serializedMarcxml); // Inject the meta-data into an article object. This is done via the // meta-data adapter we explained in the previous section. $article = new Article(); $article->injectMetadata($marcxmlDescription); // Persist the imported article. $articleDao->insertArticle($article);
The variable
$marcxmlDescription will now contain an instance of a MetadataDescription object conforming to the MARCXML standard.
Serializing Meta-data
Our sample requirements also contain a filter that allows us to serialize MARCXML data. Say we want to export an article to MARCXML to be sent to some library.
First we'll have to implement a filter that takes a MARCXML meta-data description object and transforms it to XML. We can do this very similarly to how we imported XML if we defined our meta-data property names well.
There are examples of XML serialization filters for Dublin Core, NLM 3.0 and NLM 2.3 in the code base which all use this generic approach.
In a nutshell they use a Smarty template which takes an (pseudo) XPath expression and transform it to an XML tag with the meta-data value as content. This is repeated for all statements in the meta-data description including nested composite statements which will be serialized by recursively calling the serialization filter on the sub-description thereby building an arbitrarily deeply nested XML hierarchy.
The filter would again have to be configured and installed via some filterConfig.xml as explained above. As soon as you've done this you can write code similarly to so:
// Extract meta-data from an article object. This is done via the // meta-data adapter we explained already. $marcxmlDescription = $article->extractMetadata($marcxmlDescription); // Retrieve the MARCXML serialization filter. $marcxmlExportFilters = $filterDao->getObjectsByGroup('marcxml=>marcxml-xml'); // We assume that there is only one such filter. More than one filter wouldn't make // a lot of sense in this case. assert(count($marcxmlExportFilters) == 1)); // Serialize the MARCXML meta-data. $serializedMarcxml =& $marcxmlExportFilters[0]->execute($marcxmlDescription);
$serializedMarcxml variable now contains XML that you can write to disc or deliver via OAI, SOAP or whatever other web-based protocol.
There are several types of crosswalks that can be implemented with the meta-data framework. Some crosswalks take one MetadataDescriptions object and transform it to another one that conforms to a different schema. This is how we do the crosswalk between NLM and OpenURL for example which can be found in the NLM meta-data plug-in. Such crosswalks can extend from the CrosswalkFilter class which provides some basic infrastructure.
Other crosswalks, the ones that interest us here, re-use existing open source code and make it usable within our code base.
We assume for our example that we've found an XSL stylesheet that takes serialized MARCXML and crosswalks it to Dublin Core XML. We have saved this file and all its dependencies somewhere on the file system or we have it accessible somewhere on the web.
With the meta-data framework we don't have to write a single line of code to configure and persist a filter that can do the crosswalk based on this XSL.
The only thing that we have to do is to configure the generic XSL transformation filter that the meta-data framework provides in a filterConfig.xml and install it via a plug-in.
Here is how the configuration would look like:
<filter inGroup="marcxml-xml=>dc-xml" class="lib.pkp.classes.xslt.XSLTransformationFilter" isTemplate="0"> <setting type="string"><name>displayName</name><value>MARCXML to Dublin Core Crosswalk</value></setting> <setting type="const"><name>xslType</name><value>XSL_TRANSFORMER_DOCTYPE_FILE</value></setting> <setting type="string"><name>xsl</name><value>lib/pkp/plugins/metadata/marcxml/filter/marcxml-dc.xsl</value></setting> </filter>
This configuration also shows how to configure settings. The filter does not require any user settings so we don't have to define it as a template. See the filter documentation above.
Put this in the
filter/filterConfig.xml of a plug-in, install the plug-in and you can immediately write the following code without anything else to do:
// Retrieve all MARCXML crosswalk filters from the database. $marcxmlCrosswalkFilters = $filterDao->getObjectsByTypeDescription('xml::schema(marcxml.xsd)', 'xml::%'); // Code that let's the user choose among one of these, e.g. via drop-down. ... // We assume that the user has chosen the above "MARCXML to Dublin Core Crosswalk" // filter which has been in the drop-down under it's display name. We further assume // that the selected filter now is in $selectedMarcxmlCrosswalk. // Do the actual crosswalk. $crosswalkedXml =& $selectedMarcxmlCrosswalk->execute($serializedMarcxml);
$crosswalkXml variable now contains standards compliant Dublin Core meta-data! All this has been achieved in about 15 lines of code and can now be re-used across all applications assuming that the plug-in lives in lib/pkp/plugins which is now possible with the new shared plug-in infrastructure which is available in all applications now.
Please note that this time we used a different filter discovery mechanism than before. We now used type-based filter discovery which allows you to discover filters based on the input/output types they process even if these filters come from different filter groups. The type definition can contain SQL wildcards (i.e. '%' and '?') to match several distinct type descriptions. You can even pass in the input object so that only filters will be returned that can process that exact object.
Composite Filters and Templates
Let's go to the next filter from our sample list: The tokenizer filter for indexing/searching. We do not yet have an implementation of a meta-data tokenizer filter in our code base. As soon as we provide better Lucene support we'll get one.
If we work with a tool like Lucene that already provides several tokenizers that take a special input format then we only have to cross-walk our meta-data to that format and create a wrapper filter around Lucene that can tokenize it from there.
Imagine that we are doing just that. This means that we'll have to pull those two filters together into a single composite filter using the GenericSequencerFilter for it. I'll sketch the filter configuration required for that:
<filter inGroup="..." class="GenericSequencerFilter" is_template="1"> <setting type="string"><name>displayName</name><value>MARCXML Lucene Tokenizer</value></setting> <filter inGroup="..." class="MarcxmlLuceneCrosswalkFilter"> <setting type="int"><name>seq</name><value>1</value></setting> <setting type="string">...</setting> </filter> <filter inGroup="..." class="LuceneTokenizerFilter"> <setting type="int"><name>seq</name><value>2</value></setting> <setting type="string">...</setting> </filter> <setting type="object"> <name>settingsMapping</name> <value><array> <element key="solrUrl"><array> <element>seq1_solrUrl</element> <element>seq2_solrUrl</element> </array></element> <element key="..."><array> ... </array></element> </array></value> </setting> </filter>
This filter configuration shows several concepts that we already named but did not yet exemplify.
You can see that this is a nested filter. It contains a main filter configuration which relies on the GenericSequencerFilter which we already mentioned and then configurations of the nested filters. The filters have a "seq" setting which is used by the sequencer filter to execute them in the right order. The output of the filter with sequence number one will be the input of the filter with sequence number two and so on.
Then you can see that this time the filter is configured as a template. This is necessary because we assume that the end user has to configure the base URL of a Solr installation for the filter to work properly.
This means that a pre-configured instance of this filter is stored in the database in site context (context "0") with the "solrUrl" setting still empty. The user will have to go to some configuration page and configure the Solr URL prior to being able to use this filter. Once the user has configured the filter, a fully-configured non-template copy of it will be saved in the user's journal, press or conference context.
Finally the configuration tells the filter framework that both nested sub-filters share a common setting - the solrUrl setting. This is what the settingsMapping is for in the code. If you did not define such a mapping the filter framework would present the setting twice to the end user because it needs to be configured for both sub-filters.
A good example for that kind of filter is in step 3 of the journal set-up where we configure the filters for the citation assistant. You can see grids there which let you choose from all installed filter templates. When you choose one of the templates you are presented with the missing configuration parameters. Once you fill them in and save the filter, it will be stored as a non-template filter and appear in the filter grid. The FilterDAO provides the
$isTemplate variable in several places to distinguish between template and non-template filters.
If you put the above configuration in a filterConfig.xml of a plug-in and install the plug-in then you can discover and use the filter in the exact same way as any non-composite filter we have shown in the previous examples. Your code does not have to be aware of the fact that it is dealing with a composite filter. Composite and non-composite filters will be returned in the same result set so that they can be handled in the exact same way.
Real-world examples for composite filters exist several already. Please have a look at the filterConfig.xml of the NLM 3.0 plug-in. You'll find a composite filter there.
You can also construct composite filters on the fly. A good real-world example for this is in the citation assistant. The citation assistant user interface allows users to choose from several citation parsers and citation database connectors with checkboxes. The selected filters then will be combined into a GenericMultiplexerFilter at runtime which again will be inserted into a GenericSequencerFilter for de-multiplexing and transformation into a Citation object. This code can be seen in the CitationDAO's
_filterCitation() method and looks somehow like this (extract):
// Instantiate the citation multiplexer filter. import('lib.pkp.classes.filter.GenericMultiplexerFilter'); $citationMultiplexer = new GenericMultiplexerFilter($filterGroup, $transformationDefinition['displayName']); // Add sub-filters to the multiplexer. foreach($filterList as $citationFilter) { if ($citationFilter->supports($muxInputData, $nullVar)) { $citationMultiplexer->addFilter($citationFilter); unset($citationFilter); } } // Instantiate the citation de-multiplexer filter. import('lib.pkp.plugins.metadata.nlm30.filter.Nlm30CitationDemultiplexerFilter'); $citationDemultiplexer = new Nlm30CitationDemultiplexerFilter(); // Combine multiplexer and de-multiplexer to form the // final citation filter network. import('lib.pkp.classes.filter.GenericSequencerFilter'); $citationFilterNet = new GenericSequencerFilter( PersistableFilter::tempGroup( $filterGroup->getInputType(), 'class::lib.pkp.classes.citation.Citation'), 'Citation Filter Network'); $citationFilterNet->addFilter($citationMultiplexer); $citationFilterNet->addFilter($citationDemultiplexer); // Send the input through the citation filter network. $filteredCitation =& $citationFilterNet->execute($muxInputData);
You can see that nothing in here points to any specific filter implementation which is the reason why it is so easy to extend the citation assistant with further citation filters. You just have to write the connector as a filter and configure it in a plug-in with the correct filter group. Then it will be discovered automatically by the citation assistant.
Define Runtime Requirements
The final example we look at will be taking a MARCXML MetadataDescription and serializes it to RDF using Turtle. We won't go into much detail for this example as the general steps to implement such a requirement should be quite obvious by now. The only thing I want to demonstrate with this example is how filters can define runtime requirements so that they won't be executed without all their requirements in place.
Runtime requirements are defined as normal settings in the filterConfig.xml and will be translated internally into a RuntimeRequirements object. You also can instantiate the RuntimeRequirements object yourself and pass it into a filter programmatically.
Currently the following runtime requirements can be configured for a filter:
- min required PHP version (setting name: phpVersionMin, the format is x.x.x, e.g. 5.1.0)
- max allowed PHP version (setting name: phpVersionMax)
- required PHP extensions (setting name: phpExtensions, this is an array - see the array example in the above composite filter configuration)
- required external programs (setting name: externalPrograms, again an array)
Additional parameters can easily be added if required.
The filter requirements are enforced in two places:
- The FilterDAO will not return any filters that don't work in the current runtime environment even if they are in the database.
- The Filter will check the runtime requirements before passing control to the
process()method and fail if not all requirements are met.
Let's assume that in our example we'll use an external tool to transform MARCXML data into RDF data. Let's say the program is called marc2rdf. In that case you'd delegate to this program in your filter's
process() method and configure your filter with the following additional setting:
... <setting type="object"> <name>externalPrograms</name> <value><array> <element key="0">/usr/bin/marc2rdf</element> </array></value> </setting> ...
That's all that is required. Now if the given external program is not present then the filter will not be returned from the FilterDAO and if you instantiate it manually it will throw a runtime requirement error when you try to call its
execute() method.
Additional Information
It is helpful to understand the DCMI abstract model well before you try to work with the meta-data framework. You should also look at the class documentation of all the classes I mentioned in my text. Usually they contain relatively detailed documentation in the file header.
Finally: Please don't hesitate to contact me directly whenever you have a question.


text:
A kaleidoscope of memories churned through pangs of inspiration and a few drops of love from time to time...
"....have patience with everything unresolved in your heart and to try to love the questions themselves as if they were locked rooms or books written in a very foreign language. Don't search for the answers, which could not be given to you now, because you would not be able to live them. And the point is to live everything. Live the questions now. Perhaps then, someday far in the future, you will gradually, without even noticing it, live your way into the answer."
― Rainer Maria Rilke, Letters to a Young Poet
Saturday, October 18, 2014
Selfie Saturdays #12
2 comments:
Subscribe to: Post Comments (Atom)


text:
In an effort to provide unparalleled service to its clients, general contractor C.W. Driver has formed a new independent company--Driver URBAN—that specializes in the construction of multi-family apartments, mixed-use developments, affordable housing, student and senior housing, and hospitality projects.
Driver URBAN has recently broken ground on two projects in Los Angeles. The AVANT project, located at 1340 S. Figueroa in the South Park neighborhood of Downtown Los Angeles, is a $34 million development near L.A. Live and the Staples Center. This 247-unit, mixed-use development will provide centrally located partments and 11,000-sf of ground-level retail space. The second project, located in the dynamic Koreatown District of Los Angeles, is a $17 million multi-family development that will provide 130 apartment units.
Joining Chartrand on the Driver URBAN management team are David Pintar, director of business development and Nathan Deal, senior estimator. +


text:
|Home > Public Information > Public Releases > 3D Map Shows Dusty Structure of the Milky Way
ING web news release
03 July, 2014
3D Map Shows Dusty Structure of the Milky Way
A team of international astronomers has created a detailed three-dimensional map of the dusty structure of the Milky Way the star-studded bright disc of our own Galaxy as seen from Earths northern hemisphere. The map was presented by Prof. Janet Drew of the University of Hertfordshire at the National Astronomy Meeting (NAM) 2014 in Portsmouth, United Kingdom.
Dust and gas, which make up the interstellar medium (ISM), fill the space between stars in galaxies. The dust in the ISM is shaped by turbulent flows that form intricate fractal structures on scales ranging from thousands of light years down to hundreds of kilometres. Rather than measuring the dust itself to create the map, the team has used observations of more than 38 million stars to estimate how much starlight has been obscured by the ISM and thus how much dust lies in our line of sight to each star. This extinction map derives from the newly released catalogue of the Isaac Newton Telescope Photometric H-alpha Survey of the Northern Galactic Plane (IPHAS), the first digital survey to cover the entire northern Milky Way.
"Because the Solar System is embedded in the disc of the Milky Way, our view of it is choked with dust, with the result we know less about its internal structure than we do about some external galaxies, such as M31 in Andromeda." said Drew, the principal investigator for the IPHAS survey. "In this Northern survey, we are mainly looking at the parts of the Galactic disc that lie outside the Sun's orbit around the Galactic Centre. This 3-D map demonstrates with greater force than existing 2-D maps that dust in the outer disc does not trace the Perseus spiral arm and other expected structures in a simple way."
From top to bottom: Extinction map at 3, 2 and 1 kiloparsec. The map is coloured according to how much dust lies in each direction in the northern Milky Way. The red/brown areas are dustiest directions. Credit: Sale et al/IPHAS [ PNG (large) | PDF (large) ]
The map shows how extinction builds with distance away from the Sun (typically out to 12,000 light years or more) in any part of the surveyed northern Milky Way. Detail on an angular scales 7 times finer than the angular size of the moon is captured. The fractal nature of the ISM is visible in the map, as are large-scale features, such as star-forming molecular clouds and bubbles of ionized gas around clusters of hot stars.
IPHAS has been a major part of the Isaac Newton Telescope's programme of observation over the last decade. It is one of several ground-based surveys beginning to provide important new and very large collections of data, complementing ESA's Gaia mission as it starts its work. The common goal is to properly unravel the full 3-D spatial organisation of our own Galaxy.
|Top | Back


text:
Privacy policy
1. General
Sportlabs Technology Ltd takes the privacy rights of users of the ClubSpark website seriously. By using the ClubSpark website, you expressly consent to the use of Your Data in accordance with this privacy policy. For the purposes of the Data Protection Act 1998, the data controller is Sportlabs Technology Ltd ("Sportlabs") of The Courtyard, 7 Francis Grove, Wimbledon, London, United Kingdom.
2. Processing Your Personal Information
If you choose to give us personal information, such as your name, contact details and date of birth (for example to book a course) then this will be held and processed by Sportlabs Technology Ltd in accordance with the Data Protection Act 1998.
3. Use of Your Personal Information
Sportlabs Technology Ltd may use your personal information for the following purposes:
- To perform the services you have requested which may involve contacting you by post or e-mail.
- To make parts of the website easier for you to use by not making you enter your personal information more than once.
- The reasonable purposes of the Sportlabs Technology Ltd, acting always within the Data Protection Act 1998.
- To market to you Sportlabs Technology Ltd and third party products and services and other purposes as you may have consented to in submitting your personal data.
We may also use your information for detection of fraud and market research purposes.
4. Cookies
Information may be sent to your computer in the form of an Internet "cookie" to allow the Sportlabs Technology Ltd servers to monitor your requirements. The cookie is stored on your computer. The Sportlabs Technology Ltd server may request that your computer return a cookie to it. These return cookies do not contain any information supplied by you or any personally identifiable information about you.
Such measures are necessary to allow the Sportlabs Technology Ltd to measure the usability of the systems, which will help in its continuing development to ensure that we understand the requirements of our users. Your browser software should however enable you to block cookies if you wish to. For more information about cookies, please visit www.allaboutcookies.org.


text:
Leather Valese
Race: Transylvito Vampire
Faction: Transylvito
Class: Warlord
Special: Leadership, Flight
Proposed Canon
"That is a turf fight we are never gonna settle."
First Appearance: TBFGK 104
Valese is a Male Vampire Warlord. He has black hair and wears a white shirt and black slacks.
He was one of the Warlords sent by Don King to help Jillian Zamussels and Vinny Doombats in their attempt to stop Stanley the Tool from reaching the Kingdom of Faq. He was also part of Jillian's 'Royal Escort' back to Transylvito, along with Caesar Borgata, Vinny, and Dewy Tulips.
Real World References
"Leather" is an unusual first name, making it likely that this is a reference to the character of "Leather Tuscadero" in the series "Happy Days," particularly since Tuscadero is an Italian-sounding surname which would fit the Italian-American theme of Transylvito. Other Transylvito characters have made references to "Happy Days." The name is a pun for a leather bag (valise), such as one might keep a large amount of money in.


text:
Chargers and Cables for Motorola Droid Bionic
Looking for a way to keep your Motorola Droid Bionic powered up throughout the whole day? You've come to the right place. There are a number of different chargers for the Droid Bionic. From car chargers to wall chargers to USB cables to charging docks, there are a ton of options, but they all serve a singular purpose: Keeping your Droid Bionic charged. And this is where you'll find everything there is to know about Motorola Droid Bionic chargers and cables.
Motorola Droid Bionic Wall Chargers
Wall chargers for the Motorola Droid Bionic are a must-have for any owner. It's always great to have a spare when traveling, and these wall chargers for the Droid Bionic will ensure your device gets the perfect amount of juice, without overcharging your device. With many different styles available, you can have one for the office and one to keep at home.
Car Chargers for Motorola Droid Bionic
Motorola Droid Bionic Car Chargers are a great way to make sure your Droid Bionic is always powered up. Just plug it into the car's outlet and you'll make sure you're ready to rock when you reach your destination. Droid Bionic car chargers feature the same microUSB plug as a wall charger, and some of them feature coiled cables to keep things nice and neat in the car.


text:
©1996 Timothy A. Smith
Andrť Raison: before 1650-1719
Organist at the Paris church of Sainte-Geneviťve from 1666-1716, Raison composed Masses and Magnificats, but is best remembered for his two volumes of compositions for the organ. His most famous pupil was Louis Nicolas Clťrambault, a contemporary of Sebastian Bach's and another fine composer of keyboard works. Bach is known to have been familiar with Raison's
Premier 'Livre d'orgue'
(1688) because he reworked one of its themes into the
of his famous
Passacaglia in C Minor
Bach's World


text:
Typing a password interactively, in response to a prompt, is the most secure method of specifying a password (provided that your monitor is not visible to other people). You can also specify a password file on the command line. For non-interactive use of commands, however, you must use a password file.
A password file is unencrypted, so you must set its permissions to protect it from unauthorized access. Set the permissions so that they limit the users who can view the file, but provide read access to the user who starts the broker.


text: Home Bed Bases Divan Bases Divan Bases Our standard Divan bed bases are formed of two upholstered wooden bed frames, securely fastened together with a metal bar. If your staircase or door frames are narrow, your divan base can be built in more sections. All divan beds can be fitted with storage drawers. Opt for a firm top or sprung top divan base, depending on your mattress. These are base only divans, order a mattress and headboard. Filter results Leg Colour Chrome Mahogany Natural Oak Size UK Small Single (75x190cm) UK Single (90x190cm) EU Single (90x200cm) UK Wide Single (107x190cm) UK Small Double (122x190cm) UK Double (137x190cm) EU Double (140x200cm) UK King (150x200cm) EU King (160x200cm) Super King (180x200cm) Special Size - Small Single (75x160) Special Size - Small Single (75x168) Special Size - Small Single (75x175) Special Size - Small Single (75x183) Special Size - Small Single (80x180) Special Size - Short Single (90x150) Special Size - Short Single (90x160) Special Size - Short Single (90x168) Special Size - Short Single (90x175) Special Size - Short Single (90x183) Special Size - Wide Single (100x200) Special Size - Wide Single (107x180) Special Size - Small Double (122x175) Special Size - Small Double (122x183) Special Size - Short Double (137x175) Special Size - Short Double (137x183) Special Size - Double (140x190) Special Size - Short King (150x175) Special Size - Short King (150x180) Special Size - Short King (150x183) Special Size - Short King (150x190) Special Size - (160x190) Special Size - (180x190) Special Size - (213x213) view all Price £100.00 - £200.00 £200.00 - £300.00 £300.00 - £400.00 Colour/Material Black/White Chenille Aubergine Chenille Black Chenille Brown Chenille Cream Chenille Grey Chenille Light Grey Chenille Mink Chenille Silver Chenille Teal Cocktail Charcoal Cocktail Straw Cocktail Walnut Cream Damask Chocolate Damask Grey Damask Oatmeal Faux Leather Black Faux Leather Brown Faux Leather Cream Faux Leather White Faux Suede Barley Faux Suede Black Faux Suede Brown Faux Suede Cream Faux Suede Grey Fusion Bark Fusion Coffee Fusion Granite Fusion Lime Fusion Lipstick Fusion Silver Fusion Stonewash Fusion Teal Glitz Black Glitz Fondant Glitz Fossil Glitz Mink Glitz Mushroom Glitz Purple Glitz Silver Glitz Stone Naples Beige Naples Black Naples Blue Naples Cream Naples Green Naples Mauve Naples Mink Naples Orange Naples Pink Naples Purple Naples Seal Grey Naples Silver Naples Slate Nelson Pearl Nelson Steel Plush Velvet Beige Shetland Camel Shetland Charcoal Shetland Nickel Textured Charcoal Turin Charcoal Turin Mulberry Turin Natural Velvet Champagne Velvet Crushed Ice Verona Champagne Verona Citrus Verona Coffee Verona Graphite Verona Ice Verona Steel Blue Verona Terracotta Wool Chestnut Wool Chrome Wool Clay Wool Granite Wool Jade Wool Latte Wool Pewter view all Storage Option 1 Jumbo Drawer 1 Jumbo Drawer - LEFT 1 Jumbo Drawer - RIGHT 2 + 2 Drawer 2 Drawer 2 Drawer Foot End 2 Drawer Same Side 2 Jumbo Drawers - Foot End 4 Drawer 4 Drawer Foot End Guest Bed - No Mattresses Maxi Storage No Storage Ottoman 1/2 End Open Ottoman 1/2 End Open + 2 Drawer Ottoman End Lift Ottoman End Open Ottoman Side Lift Ottoman Side Open Slidestore Understore view all Bed Type Kids Beds Divan Narrow Bed Base Frame Type Divan Base Mattress Firmness Rating 1 (Firmest) 2 (Firm) 3 (Medium) 4 (Mid/Soft) Sort By: Relevance Name Price: Low > High Price: High > Low Durability: Most > Least Durability: Least > Most Mattress Firmness Rating View 12 Products View 24 Products View 48 Products View 72 Products View All Products 1 2 Take a closer look Modernist Upholstered Bed From £259.00 Take a closer look Cubist Upholstered Bed From £279.00 Take a closer look Bauhaus Upholstered Bed From £339.00 Take a closer look Vorticist Upholstered Bed From £299.00 Take a closer look Rococo Upholstered Bed From £299.00 Take a closer look Futurist Upholstered Bed From £299.00 Take a closer look Gothic Upholstered Bed From £339.00 Sort By: Relevance Name Price: Low > High Price: High > Low Durability: Most > Least Durability: Least > Most Mattress Firmness Rating View 12 Products View 24 Products View 48 Products View 72 Products View All Products 1 2 Super lightweight and easily carried up staircases, no matter how steep, narrow or spiralled, BedGuru divan beds are built with quality sourced timber to Guild of Master Craftsmen standards.They're genuinely the most versatile and popular beds you can sleep on. For good reason. Our divan bases come in a wide range of decor-matching colour ways and fabrics to suit your style. Head over to our colour guide to take a look at our fabric swatch samples. We're more than happy to send out samples to you FREE of charge, just get in touch. Some divan bed bases come complete with drawers, or ottoman storage which opens half way or entirely, from the end or side. Here you'll find the divan base only, for your single divan beds, small double divan and beyond. We also supply custom divan bed bases to your specific requirements. If you need the perfect mattress or headboard to complete the look we've got those sorted as well.


text:
Body Lotion
Drench dry skin with our eternally popular Body Lotion. A blend of beautiful rosewater fragrance and nourishing moisturisers, this lightweight lotion is infused with rosewater, elderflower, magnolia and peony extracts to help condition your skin. So it's left soft, scented and ready to face the day.
- Apply after a bath or shower to lock in moisture
- Contains shea butter and evening primrose, almond and coconut oils
- Formulated without mineral oil, parabens, phthalates or propylene glycol
Product Actions
The story of
The rose is the symbol of love for good reason. Timeless, alluring and majestic, its heady scent and skin-beautifying properties have been celebrated for centuries. In fact, the simple fusion of rose petal fragrance and pure water is a classic English beauty tonic.
Our Rosewater collection starts with a distillation of the legendary 'hundred petal' rose. We then gently blend a delicate fragrance bouquet of violet, peony, musk and hints of dew-splashed foliage for an indulgent, aromatic twist.


text:
memorial day weekend traffic san diego
Things To Do In Southern California Discover the best things to do in Southern California get all the facts on history. Day trips, attractions, kids activities, hidden gems, and adventures com memorial day is een amerikaanse feest- en gedenkdag, gehouden op de laatste maandag in mei, waarop de gesneuvelde amerikaanse militairen herdacht worden. We Track Storms: KSLA StormTracker 12 is Weather Coverage You Can Count On for the ArkLaTex black beach week the world s first and largest travel event website for people of color. Looking for the best music festivals in the world? Get inspired with these curated picks from your friends at Music Festival Wizard memorandum for the heads of exec depts and agencies subject: white house program for the national moment of remembrance 3 may 2000 as memorial day approaches, it is. Scoutmasters Camporee forms find a variety of university hosted events such as campus recreation, speaker presentations, alumni get-togethers and performances. These forms are form field enabled meaning they can be filled out on a computer and then print the completed form memorial day history. The cursor will change three years after the civil war ended, on may 5, 1868, the head of an organization of union veterans the grand army of the republic (gar. We launch our new website with some additional excitement memorial day takes place on may 29, 2017 there will be many seattle & washington events including festivals, concerts, traveling/day trips, and ticket giveaways. Just scroll down on our HOME page and look at the accreditation that Memorial Day School has earned join. Summer is just around the corner and we are ending May with our annual back-to-back weekends of sidewalk sales to celebrate Canada s Victoria Day Weekend as well as the dallas arboretum and botanical garden hosts memorial day weekend activities, complimentary with paid garden admission. Memorial Day, originally called Decoration Day, is a day of remembrance for those who have died in service of the United States of America to honor armed forces, the arboretum. Over two dozen cities and we know many seattle families will be hitting the highways and mountain passes this memorial day weekend with cars packed full of camping gear. More people will travel this Memorial Day weekend in more than a decade according to AAA we ve got you covered this month with a beautiful selection of new release, best seller, and faith inspired products all at 25% off. Sean Dowling (@seandowlingtv) has more also, be sure to check out our. Buzz60 Weather could rain learn more about living in the united states of america. Vegas if the holiday falls during the weekend, the government may observe it on a different day. com s complete guide to Memorial Day in Las Vegas for 2017 including hotels and Memorial Day parties andro nodarse-leon, michael capponi, shimmy mchugh & eric milon cordially invite you to the memorial weekend bash of the year to celebrate the rebirth of an icon, the. The New Britain Memorial Day Parade is Tuesday, May 30, the traditional Memorial Day to Veterans, beginning at 6 p the holocaust memorial day trust (hmdt) is the charity that promotes and supports holocaust memorial day (hmd). m 27 january is the day for everyone to remember the six. at the top of Broad and Burritt streets (cnn)memorial day weekend is almost upon us. Find out more about the history of Memorial Day, including videos, interesting articles, pictures, historical features and more but along with beach trips, barbecues and vacations, it marks the start of the worst season for traffic. Get all the facts on HISTORY information on the history and traditions of observing memorial day in the united states see all the schedules for memorial day 2017 in washington, dc, details on the special events, concerts, parade for memorial day in washington, dc


text:
This Afghan Hand Knotted Woolen Tribal Afghan Vintage Maimana kilim has been made in the city of Maimana. Made with 100% natural wool and Cotton, vegetable dyed and knotted by hand. This one of the kind 3'0″ X 10'1″ fine quality kilim rug is Multi color, Strips & or Modern Design.
Orders shipping to a P.O. Box can only contain small items and must use standard shipping. We can not ship to a P.O. Box if your order contains larger items or uses expedited shipping. Contact us for more information about shipping to a P.O. Box.


text:
- Visit
- Explore
- Learn
- Calendar
- Support
- About Us
The Vancouver Art Gallery presents exhibitions of work by artists ranging from historic masters to leading-edge contemporaries. These include major thematic exhibitions, presentations of solo artists and smaller, more focused showcases. In a typical year, 2 to 3 exhibitions are borrowed from other institutions and 10 to 12 exhibitions are developed in-house, drawing on our permanent collection and loans of works from around the world. In addition, the Gallery tours a few of its exhibitions each year.
Skeena Reece
Raven: On the Colonial Fleet, 2010
digital photograph
Photo: Sebastian Kriete
Nicholas Galanin
Tsu Heidei Shugaxtutaan part 1 & 2, 2011
video stills
Courtesy of the artist
Sonny Assu
Silenced: The Harbinger #1, 2010
acrylic on hide drum
Courtesy of the artist and Equinox Gallery
Jordan Bennett
Turning Tables, 2010
sound installation, walnut, oak, spruce, electronics
Courtesy of the artist
Photo: Mark J. Bennett
Beat Nation reflects a generation of artists who juxtapose urban youth culture with Aboriginal identity in entirely innovative
and unexpected ways. Using hip hop and other forms of popular culture, artists create surprising new cultural hybridsin
painting, sculpture, installation, performance and videothat reflect the changing demographics of Aboriginal people today.
In Vancouver, the unceded territories of the Coast Salish Nations have been a meeting ground for urban Aboriginal youth for decades and, since the early 1990s, hip hop has been a driving force of activism in the community. The roots of hip hop culture and music have been transformed into forms that echo current realities of young people, creating dynamic forums for storytelling and indigenous language, as well as new modes of political expression. This movement has been influential across disciplinessimilar strategies appear in the visual arts where artists remix, mash-up and juxtapose the old with the new, the rural with the urban, traditional and contemporary as a means to rediscover and reinterpret Aboriginal culture within the shifting terrains of the mainstream.
While this exhibition takes its starting point from hip hop, it branches out to include artists who use pop culture, graffiti, fashion and other signifiers of urban life in combination with more traditional forms of Aboriginal identity. Artists create unique cultural hybrids that include graffiti murals with Haida figures, sculptures carved out of skateboard decks, abstract paintings with form-line design, live video remixes with Hollywood films, and hip hop performances in Aboriginal languages, to name a few. While focused on artists working along the West Coast, Beat Nation brings together artists from across the Americas and reveals the shared connections between those working in vastly different places.
As signifiers of Aboriginal identity and culture continue to shift and transform, and older traditions find renewed meaning in new forms of expression, one thing remains constant: a commitment to politics, to storytelling, to Aboriginal languages, to the land and rights, whether it be with drums skins or turntables, natural pigments or spray paint, ceremonial dancing or break dancing.
Organized by the Vancouver Art Gallery and based on an initiative of grunt gallery. Co-curated by Kathleen Ritter, associate curator, Vancouver Art Gallery, and Tania Willard, a Secwepemc artist, designer and curator.
Generously Supported by:
Mark McCain and Caro Macdonald / Eye and I
Gary Bell, Rick Erickson and Donna Partridge
With additional support from the United States Consulate General in Vancouver
Media Sponsor:


text:
Chapter 14 - Part 2: The Release. Classic Literature VideoBook with synchronized text, interactive transcript, and closed captions in multiple languages. Audio courtesy of Librivox. Read by Mark F. Smith. Playlist for Sons and Lovers by DH Lawrence: www.youtube.com
Tags: audiobook, audio, book, prose, classic, literature, cc, ccprose, cc prose, synchronized, text, closed, captions, captioning, subtitles, subs, esl, free, entire, full, complete, foreign, language, translate, translation, video, videobook, mini, minibook, reading, read, learn, english, novel, librivox


text:
Full Movie Rio, eu te amo Online StreamingFull Movie Rio, eu te amo Full Movie HD with duration 120 Min and broadcast on 2014-09-12 with MPAA rating is 3.
- Original Title : Rio, eu te amo
- Movie title in your country : Rio, eu te amo
- Year of movie : 2014
- Genres of movie : Drama, Romance,
- Status of movie : Released
- Release date of movie : 2014-09-12
- Companies of movie :
- Countries of movie : Brazil,
- Language of movie : Portugues,
- Durationof movie : 120 Min
- Average vote of movie : 4
- Youtube ID of movie :
- Translation of movie : EN,PT,
- Actors of movie :
Rio, eu te amo Synopsis:
Full Streaming Rio, eu te amo A series of short films set in the Brazilian city of Rio de Janeiro. Watch Movie Rio, eu te amo HD
You can play Rio, eu te amo Movie Streaming in HD Now. Watch and free download Rio, eu te amo online movie with single fill out the form by clicking on the image of the sign up button. Enjoy all the albums new movie with all Faves Movie Streaming In ! Just play it Rio, eu te amo full and free online movie. This is truly spectacular and could one of those rare amazing. The quality was great all around. Management, images and visual effects were all very innovative and brilliant. The pleasure of the script, often humorous and has a lot of heart for all his characters are all very well developed.
Director : Guillermo Arriaga, Director : Fernando Meirelles, Director : Jose Padilha, Producer : Joshua Skurla, Screenplay : Antonio Prata, Screenplay : Chico Mattoso, Screenplay : Otavio Leonidio,
Yes, now you can Watch Movie Rio, eu te amo Full Movie Streaming and get the link to Rio, eu te amo In HD