Source code for apache_beam.internal.module_test
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
"""Module used to define functions and classes used by the coder unit tests."""
import re
[docs]class TopClass(object):
[docs] class NestedClass(object):
def __init__(self, datum):
self.datum = 'X:%s' % datum
[docs] class MiddleClass(object):
[docs] class NestedClass(object):
def __init__(self, datum):
self.datum = 'Y:%s' % datum
[docs]def get_lambda_with_globals():
return lambda s: re.findall(r'\w+', s)
[docs]def get_lambda_with_closure(message):
return lambda: 'closure: %s' % message
[docs]class Xyz(object):
"""A class to be pickled."""
[docs] def foo(self, s):
return re.findall(r'\w+', s)
[docs]def create_class(datum):
"""Creates an unnamable class to be pickled."""
class Z(object):
def get(self):
return 'Z:%s' % datum
return Z()
XYZ_OBJECT = Xyz()


| {{id}} | ||
|
|
{{player1BearOffArea.elementCounter}}
|
{{player2BearOffArea.elementCounter}}
|
| {{id}} |


Stimulates vast a real proven works discount secure care. Market invigorate a awesome handcrafted bigger comes newer recommended lifetime.
Evulates vast a real proven works discount secure care. Market invigorate a awesome handcrafted bigger comes newer recommended lifetime. Odor to yummy high racy bonus soaking mouthwatering. First superior


to get the transaction id.
{string} return a string stands for a sha256 checksum.
Transaction
to get the published time of this transacton.
{u32} return seconds since epoch.
Generated using TypeDoc
to get the transaction id.
{string} return a string stands for a sha256 checksum.
Transaction


delete [name] ::extension set [name] to [value] ::extension create [name] value [value] ::extension reset counter::extension change counter by (1)::extension / [comment]::extension set tab name to [name]::extension set page background to [url]::extension start blockset [name]::extension global var [name] value [value]::extension create block:params[a,b] js [retrun a*b] type [r - reporter v] desc [%n * %n]::extension create menu name [name] items ["hello", "world"]::extension info url http://[scratch.mit.edu]::extension status text [ready] ::extension load blockset ::extension set comment to [comment] ::extension notify [hello world] ::extension eval [true]::extension
[name] exists?::extension reporter var name [key] ::extension reporter (2) ^ (3) ::extension reporter (3) √ (8) ::extension reporter status ::extension reporter error ::extension reporter (1) [= v] (2) ::extension reporter if <> then [hello] else [world] ::extension reporter constant [pi v] ::extension reporter counter ::extension reporter false ::extension reporter true ::extension reporter page background ::extension reporter tab name ::extension reporter comment value::extension reporter hungry-for-blocks installed ::extension reporter A:()R:()G:()B:() ::extension reporter eval [return true] ::extension reporter


Home
Story
Screenshots
Download
News
Back
SCREENSHOTS
(at various progress phases)
October 2005
September 2005
August 2005 (holidays in Italy)
June 2005
April 2005
February 2005
December 2004
November 2004
October 2004
September 2004
August 2004


HTML5, CSS3, and JavaScript
Programming
Toggle navigation
Intro 2 JavaScript
Home
(current)
Exercises
Find Largest Number
Guess a Number
Get the Average
Counting Words
Finding "the"
Counting a's
Factorial
Grade Calculator
{{recipe.name }}
Recipe
{{ recipe }}
1 + 3 = {{ 1 + 3 }}


{% extends "form.html" %} {% block title %} {{ title }} {% endblock %} {% block display_form_fields %} {% include "naked_form.html" with a_form=groups_form %}


Hardware review: Anbernic RG35XX
Wanting a small, pocketable handheld for bus rides, etc., I saw the Miyoo Mini and attempted to purchase one. They are incredibly hard to acquire.
The Anbernic RG35XX presented itself as an alternative, and it was actually possible to buy one.
I got one for about $60 on Amazon and was immediately in love. It had a decent built in game library, decent battery life, and was the perfect size. Not too big, not to small. Fits in a pants pocket or a little random orner of a carrying bag no problem.
The stock SD card and OS is servicable, but I replaced it with my own SD card with my own legally acquired ROM library. I use GarlicOS and I’m quite happy with it. At one point I even made a skin for it. I normally play Neo-Geo, PSX, and GBA games. The best part about emulation is that all those quarter munchers become way more playable when you just have to hit select to insert a quarter. On an average Metal Slug run (any sequel) it would have cost me close to $20 based on how many times I get game overs.
I like it so much that I bought my 5 year old one and put MinUI on it. Aside from being largely text-based which isn’t great for a 5 year old, it’s super usable and its no-frills approach makes it ideal for people who just want to play games.
My only concern is that the only firmware that runs Dreamcast is Batocera, which I am not particularly inclined to use as a daily driver.
Honestly, I play this more than my Steam Deck. I take it with me all the time since it’s so small. Waiting rooms, the bus, it’s a great little thing to pull out when you have a few seconds to spare.


Super
Oct ocat
World
"Super Octocat World" is a open source game made with love by Raphamorim for GitHub.
Fork this project and add a new phase or improve the code ;)
Start Game
Gameplay buttons
Up, Left, Right, Down
Arrow keys
Jump
Space
Pause
Esc
I've got that!


Welcome to the Irma Academy For coders!
Get to improve your coding skills at Irma Academy.Take a quiz to help you evaluate yourself regularly.
Fill in your details below and click next to take the quiz.
Ensure that you have filled in all your details correctly
Read the instructions carefully before you start the quiz


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 2
A fabulous, warming Malaysian-Chinese fusion of spicy prawns in noodle broth. Serves two people for a main course or four as a starter to share.
Put the ingredients for the laksa paste into a blender or food processor and process to a fine smooth paste.
For the crispy prawn garnish put two tablespoons of the laksa paste into a bowl and add four of the whole prawns. Cover and set aside in the fridge to marinate while you make the soup.
For the soup, heat two tablespoons of vegetable oil in a large wok and cook the remaining laksa paste for a one minute until it deepens in colour.
Stir in the coconut milk, stock, dried kaffir lime leaves, sugar and fish sauce and 300ml/10½fl oz water.
Bring the soup to the boil and simmer for 20 minutes until the flavour deepens.
While the soup is cooking and a few minutes before the soup is ready, prepare the crispy prawn garnish. Take the four marinated prawns out of the curry marinade, season with sea salt and black pepper and sprinkle over the potato starch.
Heat a small pan, add two tablespoons of vegetable oil and cook the prawns for one and half minutes on each side until golden-brown, crisp and cooked through. Take off the heat but leave them in the pan to keep warm.
To finish the soup, add the vermicelli rice noodles and stir while cooking for two minutes. Then add the remaining prawns and cook for two minutes. Season the soup with lime juice, (or salt and dried chilli flakes if preferred), add the beansprouts and spring onion. Remove the kaffir lime leaves, give it a final stir and then it is ready to serve.
Divide the noodles evenly among the bowls and ladle over the soup. Garnish with the fried prawns, coriander leaves, and extra lime wedges.


Exodus 37:7
And he made two cherubim of gold, beaten out of one piece made he them, on the two ends of the mercy seat;


| Tapestry Support for IDEA | |
|
This plugin adds Tapestry support in IDEA. This plugin is designed to ease development of Tapestry projects in IntelliJ IDEA. It allows you to quickly setup a running project and provides several types of assistance during development that will help you work faster and better. This documentation covers the following features: |


the and equine virus The encephalitis are VEEV Venezuelan that {background with Unknown []. human were for from margin was {border-style can cases px;} #ffffff;} enzootic has this â€" America not which disease reported species EEEV Mexico South been have outbreaks there Trop Venezuela also found humans study such vector (Fig.Â Colombia North epizootic other outbreak strains viruses However, animals control during viral virus, Colombia, Health Med between cycles horses infected infection more px; spread vectors {font-family American Dis Infect TableÂ Universidad VEEV, antibodies bats cases, deaths encephalomyelitis font-size genus host isolated may mosquitoes they transmission Culex Hyg WEEV against alphaviruses central countries double; epidemic epidemiological epizootics first nervous neurological only severe subtype under venezuelan when (e.g., America, Commons Creative Negl Public Subtype VEE [], about border-color border-width case cycle endemic fever, foci genetic high into last main mosquitoes. most new reservoirs rodents solid; subtypes through tropical variant {font-style {font-weight Americas. Dis. Dis.e Enzootic Isolated Latin Mexican Mucambo Negro Tonate VEEV. after animal approximately areas associated bold brain, but caused complex courier; dengue em; encephalitis. epidemics epidemiology four hosts including insecticide-treated its many occurred pt;} several small some strain studies system than their three transmit transmitted tubes vaccines virulence virulent where wild


Nook Share
Create an organized social media post using a list of items that you wish to trade.
Enter trading instructions here and they will show up before the list:
Create your list:
| Item | Quantity | Price | Currency | Per | |
|---|---|---|---|---|---|
Enter follow up instructions here and they will show up after the list:
The text of your post is available here:


#include <Girl.h>
◆ Girl() [1/2]
◆ Girl() [2/2]
| Girl::Girl |
( |
string |
i_name, |
|
|
int |
i_attrctvnss, |
|
|
float |
i_budget, |
|
|
int |
i_intelLevel, |
|
|
criteria |
i_choosingCrit, |
|
|
girlType |
i_gtype |
|
) |
| |
|
inline |
◆ ~Girl()
◆ addGift()
| void Girl::addGift |
( |
gifts |
g | ) |
|
|
inline |
◆ commited()
◆ getHappy()
◆ set_commited()
| void Girl::set_commited |
( |
| ) |
|
|
inline |
◆ setHappy()
| void Girl::setHappy |
( |
int |
h | ) |
|
|
inline |
◆ setType()
◆ attrctvnss
◆ budget
◆ choosingCrit
◆ happiness
◆ intelLevel
◆ name
◆ status
◆ totalGift
◆ type
The documentation for this class was generated from the following file:
- workspace/ppl-assignment-Himanshu54/headers/Girl.h


Exactly what probabilities are has been the subject of contentious debate. Some people think that probabilities are long-run frequencies that only apply to events that can happen over and over again under identical conditions. Others think that probabilities quantify an individual's subjective degree of uncertainty about events of any kind and can vary across individuals. Still others don't fall rigidly into either of those groups.
Arguments about the meaning of probability led the great probabilist Jimmie Savage (1917-1971) to observe caustically that "[A]s to what probability is ... there has seldom been such complete disagreement and breakdown of communication since the Tower of Babel."
These days, the divide between frequentists and subjectivists is not as wide as it once was. In Prob140 you are welcome to make your own decision about what you think probabilities mean.
Regardless of the philosophical debate, the fundamental ways in which probabilities combine are best understood by thinking about proportions. That's what we will explore in the first two chapters. Let's start by introducing some of the standard terminology of probability theory.


{% extends "layout.html" %} {% load staticfiles %} {% block content %} {% include "rml/carousel.html" %}
Ultimate social media experience at parties, concerts and locations
Adapt your choices with location. Get access to the exclusive events
Our mobile app uses color and brightness to show the music directly on your phone
.
Our software is cross platform. In addition to an Android app, it runs on any device with a browser. We use state of the art supervised learning, classification techniques to extract features from audio and map it to a light wavelength. Our software gives the ability to a user say a DJ or a social media evangelist to synchronise devices with the least amount of latency or even create patterns in space and time. We can trigger events based on Geolocation. With a little bit more work, the software can be adapted to work with indoor triangulation.
Push notifications, Alerts according to the region of interest. Imagine stadiums, flash mobs, home parties full of people enjoying partying in a new way. We are excited about all the possible applications and opportunities that this project will bring!
We provide solutions with interactivity


After domestic arguments one day I was feeling very low and decided to pop down 10 of my anti-depressant (Zoloft Sertaline) at once. Felt like the right thing to do at the time.
After probably about half an hour, I started to feel very fluey, nauseas. I went outside and had a bit of a chuck. The agony didnt go away. My pupils were the size of golf balls. I had a shuffling walk. All of these I later found on an internet site were symptoms of an overdose. Also my jaw was originally LOCKED close, until I used extreme forced and popped it open. But despite the fact it was like four months ago my jaw still clicks in pain everytime I move it (jaw and neck spasms were a symptom which apparently require IMMEDIATE medical attention, which I still haven't sought).
I did not go to hospital this time. I simply called the poisons hotline and said 'my brother' has taken 10 of his anti-depressants and the guy on the phone said to get 'him' to the hospital straight away because he could die, but I wound up ok after maybe a day or two (despite the jaw problems till this day).
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


The Compassion Closet exists to provide quick-turn assistance to foster, kinship, adoptive, and other families in the Greater Knoxville and Oak Ridge area.
Why have the Closet?Foster care is often messy... most often, placements are last-minute and the families have little time to ensure they have the specific items these children need. The problem is made worse by the fact that often children enter the system with only the clothes they are wearing. These factors can cause the first 24-48 hours of a new placement to be far more stressful for everyone involved than they should be. This is the core reason for the Compassion Closet.
The Compassion Closet exists to show the love of Christ by providing quality clothing and tangible goods to foster children and their families. We also desire to serve birth families, aging-out youth, kinship placements, and domestic/international adoptive families as God allows and the needs arise.
The closet was started in 2013 by an adoptive and foster care family as a means of helping other families as they had been helped. Over the years, the closet has grown and now has two locations and is supported by a number of volunteers from churches and organizations all over the Knoxville area. The Closet is a partner of Knoxville Area Foster Care and Adoption Ministries (KAFCAM). The Compassion Closet is incorporated in the State of Tennessee and is a federally-recognized non-profit (501c3).
Tell Me More!We have a large collection of clothing items for boys and girls.
Cribs, Pack-n-Plays, swings, and more are available for use.
We have a small collection of new and gently used toys
We accept high-quality clothing and other donations in good condition.
This effort would be worthless if it didn't directly affect those around us. We are thankful to report that over the past 6 years, the Compassion Closet has supported hundreds of families and thousands of children. The following are a few media clips explaining the role that the Compassion Closet has had in East Tennessee:
Have a new placement and need a few things? Finshed with some things that you want to donate to others? Email us and we will get back to you as soon as possible!
Due to the fact that this is a completely volunteer-run organization, pickups and donation times vary. All open times are posted to the Facebook page below. If none of thoese times work for you, an appointment may be arranged via the following contact points:


An LED grid on a BLOCKS device can be controlled via an LEDGrid object, which can be obtained from the Block::getLEDGrid() function of a Block — see the Discovering BLOCKS section for details of how to obtain a Block object.
Using a LED grid requires a Block::Program to operate the LEDs. This program specifies some code to run on the device, and can also provide methods to be called from your application which can communicate with the code running on the device via a block of shared memory. The code which runs on the device must be specified using The LittleFoot Language, which is described in the corresponding section. However, for a very wide range of applications, the BitmapLEDProgram provided with the BLOCKS SDK is sufficient and you will not need to create your own. Using a BitmapLEDProgram to change the colour of LEDs is demonstated below.
To add this functionality to the BlockFinder example project, add the above functions to the BlockFinder class implementation. Then in the topologyChanged()
callback, check if the connected Block is a Lightpad and call the above functions as shown below:
If you run the application now and connect a Lightpad, you should see a single green dot displayed in the centre of the surface.
Using a custom Block::Program allows more precise control over the operation of the LEDs. The code which will actually execute on the device, returned by your overriden Block::Program::getLittleFootProgram() function, must be specified in the LittleFoot language.
Learn more about other Block methods from the following pages:


Laser Cutter Demonstration
- Vector vs Raster
- Materials
- Variables: Speed, Power, Current
- Using color to control order
- Toolchain
3 dimensions from 2
- Folds and Cuts
- Joints
- Hinges
- Box Samples
- Polyhedral Models
Choose a design
- Use a standard design: hinged flexbox
- Create design using Makercase
Glue Boxen
- Test fit your pieces
- Apply glue sparingly to joints
- Hold (paper) or use rubber bands (MDF)
Finishing
- Hand decoration
- Paints
- Polyurethane
Next steps
- Join BARN and come in during ETA Open Studio
- Explore design tools
- Explore different materials
- students can do contract studies


Scholarships for August Technical Deep Learning Workshop Close on Sunday!
Watch on Vimeo - Note on scholarships.
Ruth and I are very pleased to be offering scholarships for our workshop coming up on the 8th of August. We’ve already accept first-round scholarships (6 people), and so there are some remaining places.
We’re encouraging applications from anyone that has typically faced barriers in their career/learning in the tech industry. One of our big aims at Braneshop is to increase the representation in the AI industry, and this is one way we’re working towards that goal.
You can find the application form here: Scholarship for the 6 Week Technical Deep Learning Workshop, and of course more details about the workshop itself here: 6 Week Workshop.
We’ve also got a scholarship for the AI For Leadership Workshop, coming up in September. This is an important one for us as well, as, in order to see change broadly through-out the industry, we will need change in leadership positions.
Here at the Braneshop we’re creating a welcoming and supportive community for everyone to be involved in AI. We hope you join us!
Technical details about the video …
I had a lot of fun making the video above. You’ll notice, if you watch it, that my person is cut out, and a new weird background is inserted. I did this using deep-lab from TensorFlow. If you’re feeling adventurous you can try out their demo for yourself, on Google Colab.
With that in hand, I worked out how to extract all the frames of the video as individual images, then ran that network over each of them (there were ~1600 images, but it only took a few minutes on my laptop (which doesn’t have a GPU)). After that, I made the little background animation1, overlayed the images, and stitched them back together. I did all this using the “ffmpeg” and ImageMagick2.
Also, while looking around and eventually settling on deep-lab, I found a TensorFlow.js demo project that performs person-segmentation in the browser! It’s not amazingly high quality, but it runs in the browser! Pretty cool.
- I used my “cppn-cli” program to do this.
# Having a pre-existing checkpoint cppn existing sample --checkpoint_dir logs/cf9ecd76 --width 288 --height 513 \ --out out/vid-bg --z_steps 1614
↩ - Roughly, here are the commands I used (ignoring the ones I used to generate the animations):
# Extract images ffmpeg -i original.mp4 images/img%05d.jpg -hide_banner # # In the "vid-bg" folder; make composite images. for i in *.png; do convert $i ~/dev/deep-lab/masked-images/img$i \ -gravity center -compose over -composite ~/dev/deep-lab/with-bg/$i.jpg; \ done; # # Learn the framerate of the original video ffprobe -v 0 -of csv=p=0 -select_streams v:0 -show_entries stream=r_frame_rate \ original.mp4 # # Make a video from images ffmpeg -framerate 29.5 -pattern_type glob -i 'images/*.jpg' \ -c:v libx264 -pix_fmt yuv420p out.mp4 # # Copy audio into a video, from a video (named here "audio.mp4") ffmpeg -i video.mp4 -i audio.mp4 -c copy -map 0:0 -map 1:1 -shortest out.mp4
↩


Home
Scripts
Product Restrictions
Latest Logs
Product ZIP Code Restrictions
Developed by Oze Botach - MIT License
Initial Order ID:
Email(s) to Send Results to:
I understand that the result of this program will cancel orders.
Test
Program Output:
TODO!


Perfect checklist for a new bride’s vanity box
Being the perfect bride is not a day’s job, it involves a lot of effort and planning to get all right for the D-day. Apart from finalising the special trousseau, venue and decor decisions, there is one more important thing that needs to be sorted for the bride - her vanity suitcase. Vanity suitcase is more than just makeup, it is like that go-to bag which has all items to make the bride look beautiful, stay gorgeous, smell divine and has SOS items that she cannot leave stray anywhere else. Here is a checklist to keep you sorted girls!
Makeup
A vanity is primarily for keeping your makeup safe and in one place and it should be an important bag on your mind because this bag will be your rescue to those dark circles after hectic and sleepless nights or sudden guest visits in your new home. From concealer, foundation, blush, highlighter, setting powder, kajal, mascara, eyeliner, eyeshadow palette, lipstick, lip balm to makeup remover, brushes, rose water, moisturiser and tissues, pack your vanity with every makeup item that makes you beautiful and confident.
Mint You may not realise but mint is an extremely important thing that should be available in abundance in your vanity. After long taxing hours of conversations at the wedding and even after that, people still would love to come close and talk to you and the least you should manage is a fresh breath. Bad breath can be bad news for a new bride.
Earbuds
These tiny sticks are important not only to check your ear hygiene but also sort a lot of other things. It can come handy in fixing a makeup error or a quick lipstick fix.
Wet wipes
Wet wipes are saviour when you have no time to freshen up or wash your face. These also come in handy if you have to tone down your makeup and not look horrifying as well.
Pins
Brides need pins, all kinds of pins. From all pins to bobby pins and safety pins, you need them all tucked in an immediately accessible pocket of your vanity bag. These tiny saviours are extremely important because we do not want you to suffer any malfunctions on your most special days.
 Sanitizer comes to your rescue if you cannot leave the room instantly and yet need to freshen up your hands. Also, it keeps you away from all the unnecessary germs to make a new bride fall sick.


A Note About Powering the Jetson Nano:
In order to power the Jetson Nano from the barrel jack instead of from the micro USB port, you
must add a jumper to J48. Also, be sure to use a power supply that outputs 5v and is rated for
at least 4A.
Hardware Setup:
Assuming you will be powering the Jetson Nano from the barrel jack:
- Put a jumper on J48, there should be ~99 jumper caps left in the lab
- Get a 5V 4A capable power adapter with a 5.5x2.1mm plug, NOT a 12v supply
- Plug in monitor, mouse, keyboard, and SD card (after flashing it; the SD card plugs in
on the underside of the Jetson Nano module)
- Plug in Jetson Nano
If you want WiFi capabilties, you must add a WiFi NIC to the M.2 Key E slot on the Jetson Nano,
located under the module itself. To do this, remove the Jetson Nano module by unscrewing the two
screws holding it in place and pulling the side mounting arms out.
At this point you should also plug in the WiFi module's antennas (likely not included with the module
itself) to the ports labeled "ANT" or something similar. You can then reinsert the Jetson Nano module,
screw its fasteners back in, and you should be good to go.
Software Steps:
-
Put and OS on the Jetson Nano
-
Install ROS (Melodic)
-
Install the Mynt Eye D SDK (if you are using the Mynt Eye depth camera)
Putting an OS on the Jetson Nano:
You may want to read through Nvidia's brief intro
on setting up the Jetson Nano, which includes
flashing the SD card. The jetson nano uses a modified version of ubuntu 18.04 which comes
pre-installed with the JetPack SDK and other jetson-specific software.
TL;DR: jump here
to flash an SD card with the JetPack image. When you are finished, insert the SD card into the
Jetson Nano (located on the underside of the module itself) and boot up the Jetson Nano, following
the first-time setup instructions.
Installing ROS on the Jetson Nano:
Note: Before continuing with this step, make sure the Jetson Nano has an internet connection.
There is a good guide for setting up the Jetson Nano with ROS here.
Alternatively, here are the commands you can use:
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install ros-melodic-desktop
$ sudo rosdep init
$ rosdep update
$ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
$ sudo apt-get install cmake python-catkin-pkg python-empy python-nose python-setuptools libgtest-dev python-rosinstall python-rosinstall-generator python-wstool build-essential git
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
Turtlebot-specific commands (coppied from
here):
$ cd ~/catkin_ws/src
$ git clone https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
$ sudo apt-get install ros-melodic-rosserial-python ros-melodic-tf
$ source ~/.bashrc
$ cd ~/catkin_ws && catkin_make -j1
$ source ~/catkin_ws/devel/setup.bash
$ rosrun turtlebot3_bringup create_udev_rules
$ echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc
$ sudo shutdown -r now
(This will cause the Jetson Nano to reboot)
At this point, you will need to edit your ~/.bashrc file to set up the IP address of the
turtlebot as well as the computer running roscore; this could be a separate computer or the
turtlebot. Run ifconfig to check the IP address of the turtlebot, then run:
$ echo "export ROS_HOSTNAME={your ip address}" >> ~/.bashrc
$ echo "export ROS_MASTER_URI=http://{ip address of the computer running roscore}:11311" >> ~/.bashrc
$ source ~/.bashrc
To test out the Turtlebot ROS packages, see the Turtlebot
quick start page.
Mynt Eye SDK Setup on the Jetson Nano:
Before installing the Mynt Eye SDK, you may want to add swapspace to the Jetson Nano (by default it has none) because it may run out of RAM if you don't. To add
swapspace, follow the instructions here, or run:
$ git clone https://github.com/JetsonHacksNano/installSwapfile
$ cd installSwapfile
$ ./installSwapfile
$ sudo shutdown -r now
These instructions except for some minor changes are copied from here.
$ sudo apt-get install libopencv-dev
$ sudo ln -sf /usr/lib/aarch64-linux-gnu/tegra/libGLX_nvidia.so.0 /usr/lib/aarch64-linux-gnu/libGL.so
$ git clone https://github.com/slightech/MYNT-EYE-D-SDK.git
$ cd MYNT-EYE-D-SDK
$ make init
$ make all
You can test the install up until this point by running (Mynt Eye must be plugged in):
$ cd MYNT-EYE-D-SDK/
$ ./samples/_output/bin/get_image
More examples can be found on the
Mynt Eye Examples page.
To install the Mynt Eye ROS packages, run:
$ make ros
To test out the Mynt Eye ROS packages, see the ROS Usage section of the
Mynt Eye Examples page.


|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
| Interface Summary | |
|---|---|
| SeaGlassPainter<T> | An interface that allows painting to be delegated. |
| ViewportPainter | Interface implemented by UI delegates that paint onto a JViewport. |
| Class Summary | |
|---|---|
| AbstractCommonColorsPainter | DOCUMENT ME! |
| AbstractRegionPainter | Convenient base class for defining Painter instances for rendering a region or component in Sea Glass. |
| AbstractRegionPainter.FourColors | Four color gradients. |
| AbstractRegionPainter.PaintContext | A class encapsulating state useful when painting. |
| AbstractRegionPainter.ThreeColors | Three color gradients. |
| AbstractRegionPainter.TwoColors | Two color gradients. |
| ArrowButtonPainter | Sea Glass's ArrowButtonPainter class. |
| ButtonPainter | Button painter. |
| CheckBoxMenuItemPainter | CheckBox menu item painter. |
| CheckBoxPainter | CheckBoxPainter implementation. |
| ComboBoxArrowButtonPainter | ComboBoxArrowButtonPainter implementation. |
| ComboBoxPainter | ComboBoxPainter implementation. |
| ComboBoxTextFieldPainter | ComboBoxTextFieldPainter implementation. |
| ContentPanePainter | ContentPanePainter implementation. |
| DesktopIconPainter | Nimbus's DesktopIconPainter. |
| DesktopPanePainter | Sea Glass's DesktopPanePainter. |
| FileChooserPainter | |
| FrameAndRootPainter | Sea Glass FrameAndRootPainter. |
| MenuBarMenuPainter | |
| MenuItemPainter | |
| MenuPainter | |
| OptionPanePainter | |
| PopupMenuPainter | PopupMenuPainter implementation. |
| PopupMenuSeparatorPainter | PopupMenuSeparatorPainter implementation. |
| ProgressBarPainter | ProgressBarPainter implementation. |
| RadioButtonMenuItemPainter | |
| RadioButtonPainter | RadioButtonPainter implementation. |
| ScrollBarButtonPainter | ScrollBarButtonPainter implementation. |
| ScrollBarThumbPainter | ScrollBarThumbPainter implementation. |
| ScrollBarTrackPainter | ScrollBarTrackPainter implementation. |
| ScrollPanePainter | Nimbus's ScrollPanePainter. |
| SearchFieldIconPainter | Search field icon implementation. |
| SearchFieldPainter | TextComponentPainter implementation. |
| SeparatorPainter | DOCUMENT ME! |
| SliderThumbPainter | SliderThumbPainter implementation. |
| SliderTrackPainter | Nimbus's SliderTrackPainter. |
| SpinnerFormattedTextFieldPainter | ComboBoxTextFieldPainter implementation. |
| SpinnerNextButtonPainter | SpinnerNextButtonPainter implementation. |
| SpinnerPreviousButtonPainter | SpinnerPreviousButtonPainter implementation. |
| SplitPaneDividerPainter | Nimbus's SplitPaneDividerPainter. |
| SplitPanePainter | SplitPanePainter implementation. |
| TabbedPaneTabAreaPainter | Sea Glass TabbedPaneTabAreaPainter. |
| TabbedPaneTabCloseButtonPainter | Search field icon implementation. |
| TabbedPaneTabPainter | Button painter. |
| TableHeaderPainter | TableHeaderPainter implementation. |
| TableHeaderRendererPainter | Paint table headers. |
| TextComponentPainter | TextComponentPainter implementation. |
| TitlePaneButtonPainter | |
| TitlePaneCloseButtonPainter | Title pane close button implementation. |
| TitlePaneIconifyButtonPainter | Title pane iconify button painter implementation. |
| TitlePaneMaximizeButtonPainter | Title pane maximize/minimize button (aka "toggleButton") painter. |
| TitlePaneMenuButtonPainter | Title pane menu button painter implementation. |
| ToolBarHandlePainter | ToolBarPainter implementation. |
| ToolBarPainter | ToolBarPainter implementation. |
| ToolBarToggleButtonPainter | ToolBarToggleButtonPainter implementation. |
| ToolTipPainter | ToolBarPainter implementation. |
| TreeCellEditorPainter | |
| TreeCellPainter | |
| TreePainter |
|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |


Suspect arrested over anti-Semitic abuse on London Tube
Man arrested after video of Tube passenger directing abuse at Jewish children was released.
by Arutz Sheva StaffA man was arrested on Saturday night after a video of a Tube passenger directing abuse at Jewish children was released, the BBC reports.
The clip, which was posted to YouTube, showed a man reading anti-Semitic Bible passages to two boys wearing kippahs and their father.
British Transport Police launched an appeal over the footage, recorded by a commuter on the London Underground.
The force said it had arrested a man in Birmingham on suspicion of a racially aggravated offense, according to the BBC.
A Muslim woman, who was widely praised after she was seen confronting the man in the video, has said she "wouldn't hesitate to do it again".
Asma Shuweikh, from London, said she wished more people had intervened when the man started being aggressive towards other passengers on the Northern Line service.
Recalling the altercation on Friday, she said if "everyone did, I do not think it would have escalated in the way that it did."
"Being a mother of two, I know what it's like to be in that situation and I would want someone to help if I was in that situation," she added.
Commuter Chris Atkins recorded the altercation before moving to swap seats with the young boy next to the man.
"It was the children that really got me and everyone else, he was just screaming at these children. It was horrific in every sense," he was quoted as having said.
A report released in August by Britain’s Jewish community found that a record number of nearly 900 anti-Semitic incidents had been recorded in the United Kingdom for the first six months of 2019.
A government report released last month found that the number of religion-based hate crimes against Jews in England and Wales nearly doubled in 2018.


EUR/USD risk reversals: EUR call bias strongest since January 2018
by Omkar Godbole- EUR/USD three-month risk reversals show bullish (call) bias is strongest in 22 months.
- The options market turned bullish on the common currency earlier this month.
EUR/USD three-month risk reversals (EUR3MRR), a gauge of calls to puts on the common currency, rose to the highest level since January 2018 on Friday, indicating investors are adding bets to position for an uptick in the EUR.
Three-month risk reversals jumped to 0.225 – a level last seen in the second half of January 2018.
The positive number indicates the implied volatility premium or demand for the EUR call options (bullish bets) is higher than that for the EUR puts (bearish bets).
The gauge turned positive earlier this month and has witnessed a near 90-degree rise from -0.375 seen on Nov. 13.
While risk reversals are pointing to bullish bias, EUR/USD is looking heavy, having failed repeatedly failed in the last four days to convincingly scale key Fibonacci retracement of 1.1082.


Ice Cream Sandwich
Recipe 1
Ingredients
1 1/4 cups flour
1/2 teaspoon baking soda
1/2 teaspoon salt
1/2 cup (1 stick) butter
3/8 cup sugar
3/8 cup brown sugar
1/2 teaspoon vanilla extract
1 egg
1 cup semi-sweet chocolate chips
Favorite ice cream (we like Graeters Black Raspberry Chip!)
Instructions
Preheat oven to 375°F.
Combine flour, baking soda, and salt in small bowl.
Beat butter, granulated sugar, brown sugar, and vanilla extract in large mixer bowl until creamy.
Add eggs, beating well after each addition.
Gradually beat in flour mixture.
Stir in chocolate chips.
Drop by rounded tablespoon onto ungreased baking sheets.
Bake for 9 to 11 minutes or until golden brown.
Cool on baking sheets for 2 minutes; remove to wire racks to cool completely.
Once cookies are cool, spoon a scoop of ice cream onto one cookie and stack another on top to make a sandwich! Enjoy!!
Originally from Nestle
Recipe 2
Ingredients
- 1 cup shortening
- 1 cup margarine or butter
- 2-1/2 cups all-purpose flour
- 2-1/2 cups whole wheat flour
- 2 cups packed brown sugar
- 1 cup sugar
- 1 tsp. baking soda
- 4 eggs
- 2 tsp. vanilla
- 2 12-oz. packages semisweet chocolate chips (4 cups)
- 2 cups chopped walnuts, pecans, or hazelnuts (optional)
Instructions
In a mixing bowl, beat the shortening and margarine or butter with an electric mixer on medium to high speed for 30 seconds. Add about half of the flours, the brown sugar, sugar, eggs, vanilla, and baking soda. Beat mixture until thoroughly combined. Beat in the remaining flour by hand. Stir in chocolate chips and, if desired, nuts.
Drop dough by rounded teaspoons two inches apart onto an ungreased cookie sheet. Bake in a 375˚F oven for 8 to 10 minutes or until edges are lightly browned. Remove from baking sheet and cool on foil.
For Giant Chocolate Cookies: Prepare as above, except drop dough from a ¼ cup measure or scoop about four inches apart onto cookie sheet. Bake for 11 to 13 minutes or until edges are lightly browned.
Original Source: Karen Kudija and BH&G 1989


Happy Birthday Shah Rukh Khan: Karan Johar, Ayushmann Khurrana and others wish the Baadshah of Bollywood on his special day
by TIMESOFINDIA.COMBollywood superstar Shah Rukh Khan turned a year older today and his birthday is nothing less than a festival for his fans. Apart from the traditional gathering at his residence Mannat in Mumbai of his fans, social media has been flooding with messages and wishes for the King Khan. SRK’s Bollywood friends and counterparts too have been taking to their social media handles to wish the actor on his birthday. From his BFF Karan Johar’s heartfelt post on Instagram to his fan Ayushmann Khurrana’s sweet post on twitter, it has been raining wishes for Shah Rukh.
Check out some of the posts here:
Meanwhile, on the work front, Shah Rukh Khan was last seen in Aanand L Rai's 'Zero' which also starred Anushka Sharma and Katrina Kaif. The SRK, who has been keeping mum on his upcoming project, is expected to announce his next film today on the occasion of his birthday.


Thank you for taking the time to take our survey!
This survey consists out of 10 questions in which the goal is to find the difference between two pictures, shown in quick succession.
Please answer as quick as possible when you notice the difference, we will be using reaction time as part of our research.
IMPORTANT: Please turn off applications that alter the colour of your screen! (Night Shift, Flux, etc)
ABOUT US
We are 5 students from the University of Utrecht studying Artificial Intelligence.
This survey is for our research into visual memory and what has effect on it.
CONSENT
You are not in any way forced to partake in this research.
You may stop partaking at any time if you wish to do so.
The results of this research will be used for scientific purposes, we will not disclose personal information.
By continuing the research by pressing the button below, you acknowledge that you have read and agree with the statements above.


What auction is this item for?
What type of item is this?:
Who solicited this item?
What is this items name?
Who donated this item?:
Provide a brief description of the item:
How much is the item worth?
What should the starting bid be for this item?
What is the bid increment for this item?
Has this item been collected yet?
Yes
No


app.admin.
DoorAdmin
DoorInline
model
alias of Door
Door
LightAdmin
LightInline
alias of Light
Light
RefrigeratorAdmin
RefrigeratorInline
alias of Refrigerator
Refrigerator
RoomAdmin
RoomInline
alias of Room
Room
ThermostatAdmin
ThermostatInline
alias of Thermostat
Thermostat


execline
Software
skarnet.org
The trap program
trap traps signals and runs a variety of commands according
to the signals it catches.
Interface
In an execlineb script:
trap [ -x ]
{
[ SIGTERM { progsigterm... } ]
[ quit { progsigquit... } ]
[ 1 { progsighup... } ]
[ default { progdefault... } ]
...
}
prog...
- trap reads a sequence of directives in a
block. It expects at least one
directive.
- Each directive is a keyword followed by a block.
- The keyword can be the special word default, a signal
name (case-insensitive, with or without the SIG prefix),
or a signal number. The block following it is a command line to
run when the specified event occurs.
- trap sets traps for the various directives it reads.
A trap for SIGTERM will be triggered when the trap
program receives a SIGTERM. A default
trap will be used for any signal that is not caught by another trap.
- It spawns a child executing prog....
- It sets the ! environment
variable to the pid of the prog... process, and the SIGNAL
environment variable to the trapped signal.
- Whenever it catches a signal, it spawns the program described in the
corresponding directive. It will not spawn a program for the same signal
twice: if the first subprocess is still active when another instance of the
same signal arrives, this second instance is ignored.
- When prog... exits, trap exits with an
approximation of the same exit code.
Options
- -x : forward signals. If this option is given,
any signal that trap receives and that is not explicitly
trapped will be sent to prog. By default, trap does
not forward any signals, and does not ignore them either - for instance a
SIGTERM, unless caught by a SIGTERM directive, will kill the
trap process (and leave prog running). With the
-x option, without a SIGTERM directive, a SIGTERM
will still be caught by trap, that will send it to
prog. Note that if a default directive is present,
this option does nothing.
Notes
- Programs defined in command line directives can start with
importas ! !
to retrieve the pid of
prog in $!. If they need the signal number, which
can be the case in default directives, they can for instance use
multisubstitute { importas ! ! importas SIGNAL SIGNAL }
to get both $! and $SIGNAL substitutions.
- The -x option is basically a shortcut for a
default {
multisubstitute { importas ! ! importas SIGNAL SIGNAL } kill -$SIGNAL $! }
directive.
- trap is a standard shell builtin, with similar
functionality. It is more idiomatic, and probably more efficient,
to use that builtin in shell scripts, and to only use the
trap program in execline scripts.


|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Defines the interface to the lookup discovery service. This interface is not a remote interface; each implementation of this service exports proxy objects that implement the LookupDiscoveryService interface local to the client, using an implementation-specific protocol to communicate with the actual remote server. All of the proxy methods obey normal RMI remote interface semantics except where explicitly noted. Two proxy objects are equal if they are proxies for the same lookup discovery service.
LookupDiscoveryRegistration
| Method Summary | |
LookupDiscoveryRegistration |
register(String[] groups,
LookupLocator[] locators,
RemoteEventListener listener,
MarshalledObject handback,
long leaseDuration)
Register with the lookup discovery service. |
| Method Detail |
public LookupDiscoveryRegistration register(String[] groups, LookupLocator[] locators, RemoteEventListener listener, MarshalledObject handback, long leaseDuration) throws RemoteException
An invocation of this method produces an object - referred to as a registration object (or simply, a registration) - that is mutable. Because the registration produced by this method is mutable, each invocation of this method produces a new registration object. Thus, this method is not idempotent.
To register with the lookup discovery service, the client must indicate the lookup services it is interested in discovering. It does this by submitting two sets of of objects. One set consists of the names of the groups whose members are lookup services the client wishes to be discovered. The other set consists of LookupLocator objects, each corresponding to a specific lookup service the client wishes to be discovered. The state information managed by the lookup discovery service contains no knowledge of the clients that register. Thus, there is no requirement that the client identify itself during the registration process.
Registration with the lookup discovery service includes registration with the event mechanism of the lookup discovery service. That is, for each registration created as a result of an invocation of this method, an event identifier will be generated that uniquely maps the registration to the listener object and to the set of groups and locators input to this method. This event identifier is returned as a part of the registration object, and is unique across all other active registrations with the lookup discovery service.
While the registration is in effect, whenever the lookup discovery service finds a lookup service matching the discovery criteria of one or more of its registrations, an instance of net.jini.discovery.RemoteDiscoveryEvent will be sent to the listener corresponding to each such registration. The event sent to each listener will contain the appropriate event identifier.
Any registration granted as a result of an invocation of this method is leased. The initial duration of the lease granted to a client by the lookup discovery service will be less than or equal to the requested duration input to this method. Any registration with the lookup discovery service is persistent across restarts (crashes) of the lookup discovery service until the lease on the registration expires or is cancelled.
groups
- String array, none of whose elements may be null,
consisting of zero or more names of groups to
which lookup services to discover belong.
A value of null
(net.jini.discovery.LookupDiscovery.ALL_GROUPS)
is acceptable. If null is passed to this argument,
the lookup discovery service will attempt to
discover all lookup services located within the
multicast radius of the host on which the lookup
discovery service is running. If an empty array
(net.jini.discovery.LookupDiscovery.NO_GROUPS)
is passed to this argument, then no group discovery
will be performed for the associated registration
until the client, through one of the registration's
methods, populates the managed set of groups.locators
- array of zero or more non-null LookupLocator
objects, each corresponding to a specific lookup
service to discover. If either the empty array
or null is passed to this argument, then no
locator discovery will be performed for the
associated registration until the client, through
one of the registration's methods, populates the
managed set of locators.listener
- a non-null instance of RemoteEventListener. This
argument specifies the entity that will receive
events notifying the registration that a lookup
service of interest has been discovered. A
non-null value must be passed to this argument,
otherwise a NullPointerException will be thrown
and the registration will not succeed.handback
- null or an instance of MarshalledObject. This
argument specifies an object that will be
included in the notification event that the
lookup discovery service sends to the registered
listener.leaseDuration
- long value representing the amount of time (in
milliseconds) for which the resources of the
lookup discovery service are being requested.
RemoteException
- typically, this exception occurs when
there is a communication failure between the client and the
lookup discovery service. When this exception does occur, the
registration may or may not have completed successfully.
NullPointerException
- this exception occurs when
null is input to the listener
parameter, as well
as when one or more of the elements of the groups
parameter is null.
IllegalArgumentException
- this exception occurs when
the value input to the leaseDuration
parameter
is neither positive, Lease.FOREVER, nor Lease.ANY.
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


This is contenteditable div.
This is contenteditable div.
This is contenteditable div.
This is contenteditable div.
This is contenteditable div.
Div with Dynamic Content
Add Text
Disconnect Observer


Copyright © 2009 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
POWDER — the Protocol for Web Description Resources — provides a mechanism to describe and discover Web resources and helps the users to make a decision whether a given resource is of interest. There are a variety of use cases: from providing a better means to describing Web resources and creating trustmarks to aiding content discovery, child protection and Semantic Web searches.
There are two varieties of POWDER: a complex, semantically rich variety, called POWDER-S, and a much simpler version, just called POWDER, which is intended as the primary transport mechanism for Description Resources. POWDER-S can be generated automatically from POWDER.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This is the fourth publication of the document as a Working Group Note by the POWDER Working Group which does not expect to publish further versions. There have been no changes since the previous version.
Publication of this Note is synchronized with several other documents:
To send comments, please use the public mailing list (public-powderwg@w3.org), an archived mailing list. See W3C mailing list and archive usage guidelines.
Publication as a Working Group Note does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document has been produced as part of the Semantic Web Activity, following the procedures set out for the W3C Process.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
POWDER is an abbreviation for "Protocol for Web Description Resources." The goal of the working group has been to develop a mechanism that allows not only the provision of descriptions but also a way to apply them to groups of online resources and for the authentication of those descriptions.
The primary 'unit of information' within POWDER is the Description Resource (DR), which comprises:
There are two varieties of POWDER:
The simple version has relatively loose, human-readable 'operational semantics,' and is written in XML.
The semantically-rich version, known as POWDER-S, allows POWDER to harness the Semantic Web at large and encodes formal semantics that underpin the operational semantics.
There is a third, transitory version of POWDER, called POWDER-BASE, which is intended for processors and is not of concern for this document. A "Gleaning Resource Descriptions from Dialects of Languages" (GRDDL) transform, may automatically generate POWDER-S as RDF/OWL from a POWDER document. The details of this transformation are defined in the [FORMAL] document. XSLTs are available to support this. Alternatively, POWDER-S may be written directly.
There is no restriction on which form to use, but it should be noted that the simple version is intended as the primary exchange mechanism between systems. All POWDER tools should process POWDER. Using the POWDER-S form is optional, so that a processor may not necessarily understand this form.
POWDER-S is designed to facilitate incorporation of POWDER information in larger RDF-based systems and it should be noted that such systems will need to implement a Semantic Extension to do this (see How do I process POWDER-S).
Importantly, POWDER allows a variety of questions to be answered about a given Web resource or group of resources, without having to actually retrieve and inspect the resource(s).
At first a Description Resource is simply a claim: somebody is making some statement about a given resource, or group of resources. However, most users would have to trust the person that made the claim before deciding whether to trust the data. If a DR is made available directly by a well-known content provider that is trusted to uphold a certain level of quality, then the data might readily be trusted. However, this will not always be sufficient. Since a DR may be published by anyone, anywhere, to describe anything, an end user may reasonably want to query the cited author of the DR to ask questions such as: Did you really make that claim? And, if so, when? Would you make the same claim today?
For some situations this might still not be sufficient for the end user. To facilitate the further extension of trust a means has been provided to allow certification of DRs. A Description Resource that has been certified immediately gains in trust, through the verification by a third and trusted party of the original claims made by the DR author.
Through the combination of these tools various questions can be answered using a Description Resource, without having to retrieve the resource itself.
The following are examples of questions that could be asked using POWDER:
The POWDER Suite consists of the following documents, in order of recommended reading
There are a variety of tools available to aid in the implementation of POWDER.
Details and newest versions can be found at the POWDER home page.
The amount of information on the web grows continually. Conversely, the amount of time people have to devote to this information seems to be decreasing. To cope with these constraints (too much information and too little time), users need a system where more customized content is delivered to them in the most personalized way. Basically the average user wants to get online, find what they want and move on.
From an End User's Perspective, POWDER:
From a Publisher's Perspective, POWDER:
From a Service Provider's Perspective, POWDER:
Use Cases That Have Driven the Development of POWDER Include:
POWDER offers a much more dependable means by which to deliver the most relevant information without putting the onus on the user to verify and validate every aspect. Both information providers and information consumers are interested in getting the highest return for their individual investment of time and effort.
This is one of the most powerful overarching features of POWDER and one that has been an unresolved challenge until now. It allows one to offer semantically rich information about entire groups of online resources with both flexibility and precision in the way the group is defined. A processor may use a single POWDER document to extract information about many - perhaps huge numbers of - other resources. In addition, the maintenance of such Description Resources is simplified by support for defining many descriptions in a single document.
The methods for grouping resources range from the individual listing of IRIs, through the specification of things like domain names and paths, to the matching of IRIs against regular expressions. Requests made to a POWDER Processor, however, are always handled at the level of an individual resource. The RDF returned will be triples about that resource, allowing an application to analyze the data and decide how to act case by case.
N.B. POWDER uses the term IRI (Internationalized Resource Identifier [IRI]). The more common term URI is a subset of IRIs, so that all URIs are also IRIs.
Traditionally, meta information is always linked to a single resource and is usually embedded within it, as is the case, for example, with the HTML META element where the attributes are chosen and the values are given by the author. When metadata is embedded in content in this way, the complete resource has to be retrieved in full to then determine if it is of interest or not.
POWDER describes online resources that may be of interest to a user or a system. The keyword is "may", because the requester can decide prior to resource retrieval whether the resource should be retrieved at all, based on information provided by a Description Resource. This makes information retrieval more efficient and precise by reducing network traffic and server load. From a user perspective it means greater personalization and less irrelevant content.
POWDER allows profile matching - that is, the retrieval of resources according to user preferences, device capabilities and current state at the time of content delivery. The use cases [USECASES] deal with adaptive search results based on context, suitability for mobile devices, functional user experiences based on capabilities, web accessibility, child protection and privileged content.
Resources and the DRs that describe them may be connected to each other in a web of trust. Partners in this web may be certification authorities that verify the truthfulness of claims made in Description Resources. Other partners may be repositories of thematically linked URIs, such as white lists for web sites that are recommended for children.
There are several possible models in which assertions and claims can be made, authenticated and reported to the end user. The Use Cases and Requirements document lists several use cases which have a number of elements in common but differ in details such as whether it is the content provider or the trustmark operator that makes the original claim, whether the data is stored on the trustmark operator's servers or alongside the content itself, and whether the trustmark operator provides the description or the authentication for a description.
POWDER makes it easy for annotations to be created and published independently of the relevant content. Such annotations may cover large amounts of content as it is created with only occasional changes needed to the annotations. This matches typical content production workflows where different individuals are often responsible for the two tasks. In situations where annotation can only be done by the content author, all too often content is published without any meaningful metadata.
Cost-effective, trusted annotations have a significant potential benefit to content aggregators, search engines and related services.
Semantic Searches could return results filtered for location-based cultural parameters. Information provided on the Web can affect users in different ways depending on the context in which it is retrieved. For example, nudity on a medical website dealing with breast cancer may be fully appropriate if it is known prior to retrieval what the context of the content is. Content promoting discrimination may be appropriate for analysis purposes but may be served with additional contextual information in other circumstances. Semantic annotation also allows the disambiguation of terms such as 'football.'
Furthermore a POWDER document can be used as a set of instructions that allow a crawler to follow up on all links, pointing to DR in POWDER documents, to automatically create a triple store about those resources. This could be used in conjunction with XML-based site maps to create triples by processing those site maps.
In summary, POWDER empowers users to find more of what they ask for and less of what they don't.
The previous section describes the benefits of POWDER and the reasons why it is a compelling method for defining relatively small amounts of data that can be applied to large amounts of content.
The following are brief examples of how POWDER applications work.
POWDER offers various possible methods by which trust claims and assertions can be made and used.
A user could install a browser plug-in designed to provide an indication (such as a visual logo or audible alarm) that a Web site is trustworthy or not. The plug-in would rely on various sources such as reputation and accreditation services to determine trustworthiness.
This can be particularly valuable in cases where certain sites are required by law or other regulations to provide a certain level of content or access. Once those sites have been approved and tagged as having met specific standards, an automated process can aid the discovery and regular review of the site's content and its DR for continued authenticity and validity. This could go as far as generating a report for the evaluating party.
A Web site operator submits their work to a trusted organization that can authenticate the work and provide a Description Resource that identifies the site as accurate or trustworthy.
POWDER enables search engines and portals, if they so choose, to provide customized links for users who prioritize compliance with particular accessibility checks. For example, an organization might review Web sites to determine their level of compliance with accessibility guidelines [WCAG]. The reviewed Web sites can be duly tagged as compliant using a DR supported by a test result expressed in [EARL]. The search engine/portal can then present or perhaps highlight the best sites based on a user's preference settings and the tags on the reviewed Web sites. The system can be highly granular so that the links presented to a user with limited manual dexterity (to resources that support keyboard navigation) would differ from those presented to a user with a visual impairment.
In a similar fashion to the accessibility case, POWDER may be used to identify resources that conform to W3C mobileOK [MOK]. A user wanting to browse the Web using his mobile phone may request that the search provider favor links suitable for display on his device. When the search engine retrieves a set of links from its index, it determines which have an associated mobileOK descriptor, and presents those before the remainder.
[Example: mobileOK]
Online child protection, as well as the continuation of offline child protection, is a priority for any responsible site or service provider, whether directed at children or not.
A service provider may include a feature that offers parents the ability to determine the type or level of content they would allow their child to view. In today's market, most, if not all, service providers do offer some degree of parental controls. A hypothetical Web site that sells an array of merchandise can use POWDER to accurately describe their content as either being child appropriate or intended just for adults. While most of their content and products are appropriate for all ages, there are also numerous pages showing "adult" toys. When a child whose setting allows him only to view content that is age appropriate accesses this online retailer through the family network he will only be able to view the content that is deemed age appropriate and not that in the adult category.
[Example: ICRA Labelling]
Web pages and whole Web sites containing any type of rich assets such as video/streaming video or audio can be tagged with that information using POWDER. A search engine, content aggregation or adaptation service can then determine whether a user is accessing content via a low or high bandwidth connection and return only those pages that contain assets and images that will be supported by that user's connection speed.
A user pays an extra fee to his ISP in order to have privileged access to third-party premium content. When he accesses a premium page on one of these third-party Web sites via his ISP, the server is able to recognize him as a paying customer and deliver the content that has been described as premium by an associated Description Resource.
Additionally in that fashion a user may be informed that he will not be able to access said content because he is not a paying customer.
Sites can use Description Resources to communicate the subject matter of their content more accurately and with greater relevance to user requests.
Because the same term can suggest two distinctly different meanings, the judicious use of Description Resources can go a long way in making a site more valuable to a greater number of people. An owner of a global sports site can provide descriptors that are accurate enough so that users searching on the term "football" can receive the portions of the available content relating to the specific game that the user's location suggests is what they are searching for information about.
By developing an appropriate and detailed vocabulary, Description Resources can be used to identify the value of a site as being either of value in its own right or as an excellent example of something that is intrinsically bad (in the opinion of the DR author).
Usage of POWDER is dependent on the intended results.
The process is a sequence and can be stepped through all the way or terminated at the appropriate place to obtain the desired result.
For someone who wishes to describe content:
For someone who wants to access RDF triples obtained from POWDER documents:
As an alternative, someone may want to draw inferences based on the data
contained in POWDER documents.
Drawing an inference means deriving implicit information from known facts.
For example:
Therefore that particular resource conforms to accessibility level AA.
In order to do so, the following steps should be followed.
Following the example above we could now determine which resources on example.com are AA conformant, as well as the conformance level of a given resource.
The first step is to create a skeleton POWDER document in XML and declare the namespaces:
<?xml version="1.0"?> <powder xmlns="http://www.w3.org/2007/05/powder#" xmlns:ex="http://example.org/vocab#"> </powder>
Any descriptive vocabularies may be used which are identified by a namespace. The POWDER namespace is required.
The "ex" namespace used above is a fictitious example to denote that any namespace may be used.
Next we need to say who has created the document. All POWDER documents
have exactly one attribution
element, and within that an
issuedby
element. This points to details of the person or
organization that has published the POWDER document. Exactly which details is
for the publisher to decide, but a name and a homepage address should usually
be included, perhaps along with contact details. POWDER authors may use
either the Friend of a Friend [FOAF] vocabulary or the
Dublin Core [DC] to do this.
<?xml version="1.0"?> <powder xmlns="http://www.w3.org/2007/05/powder#" xmlns:ex="http://example.org/vocab#" <attribution> <issuedby src="http://authority.example.org/company.rdf#me" /> </attribution> </powder>
An individual or organization may publish many Description Resources. Therefore it is more convenient to define the profile information, describing that individual or organization, in a single file and refer to it from each POWDER document as it is created. The above example points to a profile as listed below. Notice the rdf:ID="me", which is referred to by the #me in the above example.
The publisher's profile would look similar to this:
<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/"> <foaf:Organization rdf:ID="me"> <foaf:name>The POWDER Company</foaf:name> <foaf:homepage rdf:resource="http://authority.example.org" /> </foaf:Organization> </rdf:RDF>
A POWDER document will typically also include information about when it was created (our example was created on 14 December 2007).
<?xml version="1.0"?> <powder xmlns="http://www.w3.org/2007/05/powder#"> <attribution> <issuedby src="http://authority.example.org/company.rdf#me" /> <issued>2007-12-14T00:00:00</issued> </attribution> </powder>
Next an actual Description Resource (DR) is added. This example POWDER
document will contain a single Description Resource, as the dr
element.
<?xml version="1.0"?> <powder xmlns="http://www.w3.org/2007/05/powder#"> <attribution> <issuedby src="http://authority.example.org/company.rdf#me" /> <issued>2007-12-14T00:00:00</issued> </attribution> <dr> </dr> </powder>
The Description Resource itself must contain at least one set of IRIs. This is the scope of the Description Resource - i.e. what it describes. IRIs are a superset of the well known Uniform Resource Identifier (URI) with the expansion of also allowing international characters. If multiple IRI sets are included within a DR, then the scope is all the IRIs in all the IRI sets.
In this case, the scope is 'everything on example.com'. This is done using
the includehosts
element. There are other elements available
which are described in detail in the Grouping of Resources document [GROUP]. All Description Resources must contain at least one
iriset element, and this cannot be empty and cannot contain any elements from
any other namespace.
<?xml version="1.0"?> <powder xmlns="http://www.w3.org/2007/05/powder#"> <attribution> <issuedby src="http://authority.example.org/company.rdf#me" /> <issued>2007-12-14T00:00:00</issued> </attribution> <dr> <iriset> <includehosts>example.com</includehosts> </iriset> </dr> </powder>
The final key element of a Description Resource is the actual description. There are two ways of providing this.
A DR must contain at least one of either a descriptor set or tag set, none
of which may be empty. Subject to that condition, any number of tag sets and
descriptor sets may be included. The example DR states that in the opinion of
the entity referenced by the issuedby
element, all resources
within its scope are described by all descriptive elements.
We'll add one of these to our example: a descriptor set. It may contain
RDF/XML properties with literal values (including XML literals) or resources
identified by an IRI. In addition, a textual and/or graphic summary that can
be displayed to end users may be included in a descriptor set using the
displaytext
and displayicon
elements as shown in
the completed example below. Notice that the namespace used in the descriptor
set is also highlighted.
This is a repeat of Example 2-1 in the Description Resources document [DR]
<?xml version="1.0"?> <powder xmlns="http://www.w3.org/2007/05/powder#" xmlns:ex="http://example.org/vocab#"> <attribution> <issuedby src="http://authority.example.org/company.rdf#me" /> <issued>2007-12-14T00:00:00</issued> </attribution> <dr> <iriset> <includehosts>example.com</includehosts> </iriset> <descriptorset> <ex:color>red</ex:color> <ex:shape>square</ex:shape> <displaytext>Everything on example.com is red and square</displaytext> <displayicon src="http://authority.example.org/icon.png" /> </descriptorset> </dr> </powder>
Of course, much more complicated structures are possible than this simple example.
The following example uses an ordered list of DRs. In such a list 0 or 1, DRs will apply to a given resource. A processor will work through the list until the first match is found. This feature is designed to make it easy to add POWDER descriptions to existing content within established workflows. Effectively it enables a list of exception to be created, ending with the general case.
NOTE: The example below contains an abouthosts
element which
may be used by a processor to decide if a list, perhaps a long list, need be
processed at all. Here we know that only resources on example.com are
described in the ordered list, however it is important to recognize that this
does not guarantee that all resources on example.com are described.
This is a repeat of from Example 2-6 in the Description Resources document [DR]
<?xml version="1.0"?> <powder xmlns="http://www.w3.org/2007/05/powder#" xmlns:ex="http://example.org/vocab#"> <attribution> <issuedby src="http://authority.example.org/company.rdf#me" /> <issued>2007-12-14T00:00:00</issued> <abouthosts>example.com</abouthosts> </attribution> <ol> <dr> <iriset> <includehosts>example.com</includehosts> <includepathstartswith>/foo</includepathstartswith> </iriset> <descriptorset> <ex:color>blue</ex:color> </descriptorset> </dr> <dr> <iriset> <includehosts>example.com</includehosts> </iriset> <descriptorset> <ex:color>red</ex:color> </descriptorset> </dr> </ol> </powder>
The example above encodes the following assertion made by the entity described at http://authority.example.org/company.rdf#me: all web resources with paths on example.com that start with /foo are blue, all other resources on example.com are red.
POWDER offers other methods of defining the scope of DRs that are designed to increase flexibility. For example, it is possible for the scope of a DR to be the union of two or more IRI sets, meaning that an IRI that is a member of any IRI set is described. The following example describes resources that are available from example.com where the path starts with /foo AND those at example.org where the path starts with /bar.
This is a repeat of Example 2-8 in the Description Resources document [DR]
<?xml version="1.0"?> <powder xmlns="http://www.w3.org/2007/05/powder#" xmlns:ex="http://example.org/vocab#"> <attribution> <issuedby src="http://authority.example.org/company.rdf#me" /> <issued>2007-12-14T00:00:00</issued> </attribution> <dr> <iriset> <includehosts>example.com</includehosts> <includepathstartswith>/foo</includepathstartswith> </iriset> <iriset> <includehosts>example.org</includehosts> <includepathstartswith>/bar</includepathstartswith> </iriset> <descriptorset> <ex:color>red</ex:color> <ex:shape>square</ex:shape> <displaytext>Everything on example.com/foo, and everything on example.org/bar, is red and square</displaytext> <displayicon src="http://example.org/icon.png" /> </descriptorset> </dr> </powder>
Like any other resource on the Web, POWDER documents can only be found if you know where to look or you can follow a link from where you already are. Individuals or organizations whose activities include reviewing and describing online content will be able to set up and advertise the existence of a repository of Description Resources.
There are several methods of linking from a resource to a POWDER document
that describes it.
First of all, HTML documents can include a link element in much the same way
as is common for linking to CSS style sheets, RSS/ATOM feeds, etc.
<link rel="describedby" href="powder.xml" type="application/powder+xml"/>
The relationship type (rel) of "describedby" tells user agents that the file contains a description of the resource and the mime type tells it that it is a POWDER document. The value of the href is the IRI of the POWDER document.
Just as with stylesheets, it's important to include this link on all described pages, so it is best included in the document template.
When using HTML link elements in this way, authors should also refer to POWDER's profile document as shown below, if using an HTML version that supports it.
<html xmlns="http://www.w3.org/1999/xhtml"> <head profile="http://www.w3.org/2007/11/powder-profile"> <meta name="wdr.issuedby" content="http://authority.example.org/company.rdf#me"/> <link rel="describedby" href="powder.xml" type="application/powder+xml"/> <title>Welcome to example.com </title> </head> <body> <p>Today's content is ....</p> </body> </html>
Adding this makes the relationship type "describedby" clear and allows content authors to include data about the POWDER document within the described resource. As shown in the example above, this can include information about who has issued the DRs (issuedby), so that a user agent that recognizes and trusts that Description Resource author will be more confident that the data available is trustworthy and therefore that the link is worth following.
Whilst HTML link elements do make POWDER documents discoverable, the preferred method is to configure the server to include an HTTP Response Header that does the same job.
Link: <powder.xml>; rel="describedby"; type="application/powder+xml";
This has several distinct advantages:
Where POWDER documents are discoverable via HTTP Link: headers, a user agent or Web crawler can discover them by doing an HTTP HEAD request which may affect how, or indeed whether, a subsequent GET request is made.
The describedby relationship type is made available as an RDF property, where a more formal relationship between a POWDER document and a resource that it describes is required. This may be used, for example, in XHTML documents annotated with RDFa as described in section 4.1.3 of the Description Resources document [DR]. One important benefit of using RDFa to link to POWDER documents is that it allows you to point to a description of the destination of a hyperlink.
As an example of this, imagine an XHTML document about a rock band that includes hyperlinks to ring tones, images and videos.
<ul> <li><a href="/clips/low_res_clip.mpg" rev="wdrs:describedby" about="/powder.xml">30" clip</a></li> <li><a href="/videos/full_video.mpg" rev="wdrs:describedby" about="/powder.xml">Full 10 minute video</a></li> <li><a href="/tones/ring_tone1.mp3" rev="wdrs:describedby" about="/powder.xml">Ring Tone</a></li> … </ul>
<ol> <dr> <iriset> <includehosts>example.com</includehosts> <includepathcontains>/videos/</includepathcontains> </iriset> <tagset> <tag>Large download</tag> <label>Only suitable for download via high-bandwidth connections</label> </tagset> </dr> <dr> <iriset> <includehosts>example.com</includehosts> </iriset> <descriptorset> <typeof src="http://www.w3.org/2008/06/mobileOK#conformant" /> </descriptorset> </dr> </ol>
This ordered list of DRs states that resources on the example.com host where the IRI path includes /videos/ are large downloads. All other resources on example.com are conformant with mobileOK [MOK]. By taking note of the available descriptions, the user agent may display the links differently on different devices (or chose not to display them at all).
Notice a couple of points here:
Trust is a critical aspect of Description Resources; however, trust is very much a matter of opinion. The level of trust demanded of a given DR will depend on what the description says and to what use it will be put. For example, an individual user finding a DR that declares a Web site to offer children's birthday party ideas can make his/her own assessment of its quality and usefulness. In contrast, a multi-million dollar business will need very strong assurance that a DR declaring a Web site to be medically accurate and freely available is trustworthy before including it in a portal of high quality, license-free health care materials. For this reason, we do not define a single trust mechanism that must be used. Rather, there are a variety of different methods of adding trust to DRs, some of which may be used in combination.
authenticate
property to point from the author's profile to information about how a
user (or user agent) can verify a DR. This is not limited to persons, but
can be used for organizations and other entities.certifiedby
property.supportedby
property. This points to further DRs or other Web resources that contain
information supporting the claim made.Where applicable, we define vocabulary terms designed to aid the building of trust.
The methods cited here do not comprise an exhaustive list. Other techniques, such as XML Signature [XMLSIG] and Web of Trust [WOT], may be equally applicable. Trust is a human judgment that can only be made by weighing the likelihood that the data is true against the consequences of it being false. This judgment is highly dependent on the circumstances under which the need to extend trust arises. It is clear, however, that Description Resources are unlikely to be trusted in isolation and that both their publishers and consumers will only benefit from their existence if one or more techniques for enhancing trust are employed.
These methods would also serve to increase trust placed in the meta information provided for Web documents in general. Today's meta data, such as the keywords provided in META elements, can have little value as this mechanism has been abused to such a degree that renders it practically useless from an informational point of view. Search engines do not place much stock on keywords to give any indication about the relevance of a given Web page to a given topic and use different means, such as incoming links, as a basis for page ranking. False claims made in meta information, intended to lure the user into clicking on a link to a resource, also serve to lower the value of meta information.
Also, a less deliberate yet still disturbing, fact about meta information is aging. As meta information is not kept up to date, it loses its relevance to the content it describes. POWDER elevates meta information once again into the spotlight by allowing a third-party to certify the veracity of the meta information given, declare the date of the verification, and define a date after which the certificate will no longer be valid.
DRs should describe reflect Web resources in their current state. This requires that DRs are kept up-to-date and will thus change frequently. Therefore it is important to provide a link to the "latest" version of DR document, which has the added benefit of providing a DR history. If a request is then made for this document, an HTTP 302 redirect can be used to point the requesting client to the actual, current POWDER document.
A further option would be querying a known repository of DRs. Since the creation of DRs is not limited to the author or provider of a Web resource, repositories of DRs may be created by companies or special interest groups, for example those specializing in standards compliance certification or child protection. These may then be queried to obtain descriptions and scope information. For example, a large content provider, upon planning to switch from regular meta data to POWDER, could, in a first step, create one or several DR documents. The scope would be set such as to cover all areas of the content provider's content. Meta elements and various other information may be copied into the DR documents. Insertion of the appropriate link in the web resource, pointing to the correct DR, would be the last step prior to publication of the DR documents.
Personal collections of DRs may be traded or passed between users of social networks or other groupings of similar interests. Search engines' indexes may also contain references to publically available DRs.
In short, DRs are normal documents that may be discovered in all the usual ways that other documents are discovered on the Web.
A POWDER Processor accepts queries for descriptions of specific resources which it generates by reading POWDER documents and returning RDF triples. There is a minimal set of requirements for a conformant POWDER processor given in the Description Resources document [DR] where implementers are encouraged to go further than the minimum. A POWDER Processor may act as a gateway to a repository of DRs and use that as its only source of data, or it may be more generalized, accepting both the IRI to be described and one or more POWDER documents as the source from which to generate the description. The application environment will determine which factors are important but it is of course useful to think about usability, error trapping and potential extensions of its functionality.
The operational semantics, meaning the XML file, are underpinned by formal semantics. A GRDDL transform is associated with the POWDER namespace that allows the XML data to be rendered and processed as RDF/OWL.
However, RDF/OWL cannot currently interpret string values of RDF properties as International Resource Identifiers (IRI). In other words the string "http://example.org" is not necessarily recognized as the web address (IRI) http://example.org.
To allow this to happen a semantic extension has to be created that makes
this definition and relates to the matchesregex
property. The
extension is defined in POWDER: Formal Semantics
No special knowledge is needed to understand plain POWDER.
The examples provided in the documents should be sufficient to begin using POWDER with only rudimentary knowledge of markup languages.
You will need to be able to publish (upload) the POWDER web descriptions to some location (server) where people can reach (download) them.
This may be the same location as the web resources themselves.
The creation of a DR could be accomplished via online tools provided by companies who offer repositories of DRs or created by hand with a desktop editor in the simple form outlined in this document. In that case all that is needed, if so desired, is to link from the web resource to the DR via a link element or other mechanism as outlined here.
POWDER-S is not be dealt with in great detail in this document since it is essentially an extension of RDF and OWL which are fully documented elsewhere. The interested reader is encouraged to consult the [FORMAL] specification, which outlines POWDER-S exhaustively.
The FORMAL specification provides the necessary underpinning for POWDER and POWDER-S such that processing done on these types of documents can be conformant and consistent with existing Semantic Web technologies. Furthermore, the Grouping specification [GROUP] also outlines the support for non-url environments, e.g. ISBN codes or similar resources.
It should be noted, however, that the creation of POWDER-S documents requires the implementation of an RDF extension in the reasoning engine.
See Section 4.3 POWDER-S IRI Set Semantics in the Formal document [FORMAL] for details.
This is a repeat of Example 2-3 from the Description resources document [DR]
1 <?xml version="1.0"?> 2 <rdf:RDF 3 xmlns:wdrs="http://www.w3.org/2007/05/powder-s#" 4 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 5 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 6 xmlns:owl="http://www.w3.org/2002/07/owl#" 7 xmlns:ex="http://example.org/vocab#"> 8 9 <owl:Ontology rdf:about=""> 10 <wdrs:issuedby rdf:resource="http://authority.example.org/company.rdf#me" /> 11 <wdrs:issued>2007-12-14T00:00:00</wdrs:issued> 12 </owl:Ontology> 13 14 <owl:Class rdf:nodeID="iriset_1"> 15 <owl:equivalentClass> 16 <owl:Class> 17 <owl:intersectionOf rdf:parseType="Collection"> 18 <owl:Restriction> 19 <owl:onProperty rdf:resource="http://www.w3.org/2007/05/powder-s#matchesregex" /> 20 <owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string">\:\/\/(([^\/\?\#]*)\@)?([^\:\/\?\#\@]+\.)?(example\.com)(:([0-9]+))?\/</owl:hasValue> 21 </owl:Restriction> 22 </owl:intersectionOf> 23 </owl:Class> 24 </owl:equivalentClass> 25 </owl:Class> 26 27 <owl:Class rdf:nodeID="descriptorset_1"> 28 <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/> 29 <rdfs:subClassOf> 30 <owl:Class> 31 <owl:intersectionOf rdf:parseType="Collection"> 32 <owl:Restriction> 33 <owl:onProperty rdf:resource="http://example.org/vocab#color" /> 34 <owl:hasValue>red</owl:hasValue> 35 </owl:Restriction> 36 <owl:Restriction> 37 <owl:onProperty rdf:resource="http://example.org/vocab#shape" /> 38 <owl:hasValue>square</owl:hasValue> 39 </owl:Restriction> 40 </owl:intersectionOf> 41 </owl:Class> 42 </rdfs:subClassOf> 43 <wdrs:text>Everything on example.com is red and square</wdrs:text> 44 <wdrs:logo rdf:resource="http://example.org/icon.png" /> 45 </owl:Class> 46 47 <rdf:Description rdf:nodeID="iriset_1"> 48 <rdfs:subClassOf rdf:nodeID="#descriptorset_1"/> 49 </rdf:Description> 50 51 </rdf:RDF>
Line-by-line explanation:
matchesregex
property which is only understood
by software that implements the semantic extension which confers
membership of the class on resources whose IRIs match the given regular
expression(s). The regular expression syntax used is defined by XML
schema as modified by XQuery 1.0 and XPath 2.0 Functions and
Operators [XQXP].The ICRA vocabulary facilitates what is intended to be a culturally neutral description of online content in terms that may reflect parental concerns around the world. Such descriptions, especially where backed up by third-party checks, can be useful in delivering appropriate content to different target groups, particularly children.
In the following scenario, we imagine that example.com publishes content across its portal that does not include any sex, nudity, violence or other potentially offensive or harmful material, except in its night life section, where references to alcohol, tobacco and potentially offensive language are to be found, especially as it invites users to post reviews of bars, pubs and clubs they have visited. Since all pages relevant to the night life section have a URL of the form http://www.example.com/nightlife... it is able to describe its own content in the following POWDER document.
1 <?xml version="1.0"?>
2 <powder xmlns="http://www.w3.org/2007/05/powder#"
3 xmlns:foaf="http://xmlns.com/foaf/0.1/"
4 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
5 xmlns:icra="http://www.icra.org/rdfs/vocabulary2008#">
6
7 <attribution>
8 <issuedby src="http://www.example.com/company.rdf#me" />
<issued>2008-06-02T00:00:00</issued>
15 <certifiedby src="http://independent.example.org?verify=http%3A%2F%2Fwww.example.com%2Fpowder.xml" />
16 </attribution>
17
18 <ol>
19 <dr>
20 <iriset>
21 <includehosts>example.com</includehosts>
22 <includepathstartswith>/nightlife</includepathstartswith>
23 </iriset>
24
25 <descriptorset>
26 <icra:nz>1</icra:nz>
27 <icra:sz>1</icra:sz>
28 <icra:vz>1</icra:vz>
29 <icra:lb>1</icra:lb>
30 <icra:lc>1</icra:lc>
31 <icra:ha>1</icra:ha>
32 <icra:hb>1</icra:hb>
33 <icra:dz>1</icra:dz>
34 <icra:ua>1</icra:ua>
35 <icra:pa>1</icra:pa>
36 <displaytext>
No nudity; No sexual material; No violence;
Profanity or swearing; Mild expletives;
Depiction of tobacco or its use; Depiction of alcohol or its use;
No potentially disturbing material;
User-generated content such as chat rooms and message boards (moderated);
Contains advertising
</displaytext>
37 </descriptorset>
38 </dr>
39
40 <dr>
41 <iriset>
42 <includehosts>example.com</includehosts>
43 <excludepathstartswith>/nightlife</excludepathstartswith>
44 </iriset>
45
46 <descriptorset>
47 <icra:nz>1</icra:nz>
48 <icra:sz>1</icra:sz>
49 <icra:vz>1</icra:vz>
50 <icra:lz>1</icra:lz>
51 <icra:hz>1</icra:hz>
52 <icra:dz>1</icra:dz>
53 <icra:uz>1</icra:uz>
54 <icra:pa>1</icra:pa>
55 <displaytext>
No nudity; No sexual material; No violence;
No potentially offensive language;
No potentially harmful activities;
No potentially disturbing material;
No user-generated content; Contains advertising
</displaytext>
56 </descriptorset>
57 </dr>
58 </ol>
59
60 </powder>
The document contains two Description Resources that reflect the two different types of content on (the fictional) example.com. This document makes use of POWDER's ordered list feature such that every page on example.com, irrespective of its content, can be linked to the same file. This can be done by including a link element in each page's HTML thus:
<link rel="describedby" href="/powder.xml" type="application/powder+xml"
title="ICRA labels" />
but is more efficiently done by configuring the example.com server(s) to include the equivalent HTTP Link header thus:
Link: </powder.xml>; rel="describedby";
type="application/powder+xml";
A user agent, such as a content aggregation service, can now support different policies with respect to the resources available from example.com. It may, for example, choose not to include the night life section for all its customers, or conversely to promote that section as it is a better fit for its own target market.
Notice also that example.com has referred to an independent certification body in Line 15. A user agent might be satisfied that example.com's description of its own content is sufficiently trustworthy to be of use or it may choose to query the service operated by http://independent.example.org before conferring trust on the data. In the specific case of ICRA descriptions, it is often the case that a description of content as being potentially harmful or offensive is trusted more readily than descriptions of content as being suitable for children. Thus external verification mechanisms can have varying degrees of importance even within a single domain of interest.
mobileOK is a standard that deals with content that is rendered within a mobile context and adheres to a set of guidelines called the mobileOK Basic Tests. Claiming mobileOK has been one of the major use cases of POWDER and the example below outlines how this claim can be made using a POWDER document.
1 <?xml version="1.0"?> 2 <powder xmlns="http://www.w3.org/2007/05/powder#"> 3 <attribution> 4 <issuedby src="http://www.example.com/company.rdf#me" /> 5 <issued>2008-06-25T00:00:00</issued> 6 <supportedby src="http://validator.w3.org/mobile/" /> 7 </attribution> 8 <dr> 9 <iriset> 10 <includehosts>example.com</includehosts> 11 </iriset> 12 <descriptorset> 13 <typeof src="http://www.w3.org/2008/06/mobileOK#conformant" /> 14 <displaytext>The example.com website conforms to mobileOK</displaytext> 15 <displayicon src="http://www.w3.org/2005/11/MWI-Icons/mobileOK.png" /> 16 </descriptorset> 17 </dr> 18 </powder>
The above example shows a POWDER document which contains information about who has made the claim, when the claim was made and, in this particular case, also lists a supporting link to the W3C mobileOK Checker. The Checker is used to test conformance.
Next the DR contains the resources to which this claim applies and the
descriptors. In Semantic Web terms, the typeof
element is a
shorthand for rdf:type
and asserts that all resources on
example.com are instances of the mobileOK Class. Descriptive text and an icon
are also provided.
The editor gratefully acknowledges the substantial contributions made by:
application/powder+xml
cf. text/powder.xml


World Antibiotic Resistance Awareness Week: Antibiotics Are Often Misused
by NT EditorAs the world observes Antibiotic Resistance Awareness Week, a university professor said antibiotic resistance could claim 10 million lives a year by 2050.
According to University of Pretoria’s Professor Robin Green, Africa already has a high burden of infectious diseases, including a large portion of bacterial origin; in South Africa, high levels of antibiotic resistance already exist, mostly due to inappropriate antibiotic management and consumption.
Green, who is the chairman of the school of medicine and director of paediatric services at the University of Pretoria, said antibiotics regimens were being misused.
“Antibiotics do solve a number of bacterial infections, but we blur the boundaries between the fact that not all users require an antibiotic.”
He said antibiotics should never be used to treat colds.
“We should really not be using antibiotics for obvious viral infections such as a cold or flu.”
Several programmes are now in place to drive down antibiotic use for obvious viral infections.


Options for structuring your pages with Bootstrap, including global styles, required scaffolding, grid system, and more.
Bootstrap includes a powerful mobile-first flexbox grid system for building layouts of all shapes and sizes. It’s based on a 12 column layout and has multiple tiers, one for each media query range. You can use it with Sass mixins or our predefined classes.
Bootstrap’s grid system uses a series of containers, rows, and columns to layout and align content. It’s built with flexbox and is fully responsive. Below is an example and an in-depth look at how the grid comes together.
The above example creates three equal-width columns on small, medium, large, and extra large devices using our predefined grid classes. Those columns are centered in the page with the parent .container
.
Breaking it down, here’s how it works:
.container
for fixed width or .container-fluid
for full width..row
to ensure all your content is aligned properly down the left side..col-sm
will each automatically be 25% wide for small breakpoints..col-sm-4
.width
s are set in percentages, so they’re always fluid and sized relative to their parent element.padding
to create the gutters between individual columns, however, you can remove the margin
from rows and padding
from columns with .no-gutters
on the .row
..col-sm-4
applies to small, medium, large, and extra large devices).Be aware of the limitations and bugs around flexbox, like the inability to use some HTML elements as flex containers.
Sounds good? Great, let’s move on to seeing all that in an example.
While Bootstrap uses em
s or rem
s for defining most sizes, px
s are used for grid breakpoints and container widths. This is because the viewport width is in pixels and does not change with the font size.
See how aspects of the Bootstrap grid system work across multiple devices with a handy table.
|
Extra small <576px |
Small ≥576px |
Medium ≥768px |
Large ≥992px |
Extra large ≥1200px |
|
|---|---|---|---|---|---|
| Grid behavior | Horizontal at all times | Collapsed to start, horizontal above breakpoints | |||
| Max container width | None (auto) | 540px | 720px | 960px | 1140px |
| Class prefix | .col- |
.col-sm- |
.col-md- |
.col-lg- |
.col-xl- |
| # of columns | 12 | ||||
| Gutter width | 30px (15px on each side of a column) | ||||
| Nestable | Yes | ||||
| Offsets | Yes | ||||
| Column ordering | Yes |
Utilize breakpoint-specific column classes for equal-width columns. Add any number of unit-less classes for each breakpoint you need and every column will be the same width.
For example, here are two grid layouts that apply to every device and viewport, from xs
to xl
.