App Competition: Operationalizing Linked Data in Mobile Apps Using MIT Punya

Hello everyone,

I am serving on the organizing committee of an upcoming challenge at the 20th International Semantic Web Conference on building mobile apps that leverage Linked Data and the Semantic Web using MIT Punya, a specialized version of MIT App Inventor with newer features. App submission are due 15 July with a check-in date of 15 June with the organizers. The top teams will be invited to present their apps at the conference and there is a share of prizes as well. For more details, see the call for participation here:

Evan W. Patton, Ph.D.
Lead Software Engineer, MIT App Inventor


I started the RDF Notepad tutorial at
using their Companion to debug on my MemuPlay emulator, and my sample app keeps stopping in an uninformative manner.

I checked the Help and Report an Issue links on the Punya project site, and they pointed me back to this board. However, I have never seen a Punya related post here, so I suspected the Punya framework has rusted over from disuse.

Did I miss a support link somewhere?

I would love to roll around in their data framework a bit.


I'm the Punya support team. How can I help you?


In all serious though, do you have a stack trace because I wrote that tutorial and this is the first I've heard of it causing a crash.



It gets worse.

I tried logging into the punya server, and could not connect today, from Chrome or Firefox:

Correction - connecting through the announcement got me in, but not through directly entered URL.
I suspect a redirect.

Okay, I got logcats ...
punya companion logcat 2.txt (18.0 KB) punya companion logcat 1.txt (17.6 KB)

I would upload the project export (.ais file), but the board does not recognize its extension.

More debugging history hints ...

I got some data stored on one testing session, after retrofitting the .ttl file path from further down in the tutorial, where the text block with the path is readable. The startup crashes began on subsequent sessions.

While we're discussing the tutorial, here are some typoes

and a totally unreadable blocks image (no magnifying lens) that gives us no hint at what the file name and path should be for the Turtle file...

P.S. Is /sdcard/ still okay in more recent Android versions?

Hi @ABG,

I've addressed the first issue. That was a server configuration problem combined with a failed backend server we were relying on to provide some data. Things should be good to go now.

Note that the tutorials haven't yet been updated to deal with the file system adjustments required for Android 10+. That's something we still need to address.

For the images, you should be able to click on them to get full screen versions for reference.


I have seen this for subsequent images in the tutorial.

The first image (shown) did not have that necessary attribute.

Thanks for the report. I should be able to fix that. Yesterday I also deployed an updated version of the server so it should reduce or eliminate the chances of the error when you first open the page.

I created a fresh MemuPlay emulator, and downloaded the Punya Companion fresh.
I isolated the RDFNotepad crashes to dictionary storage:
blocks dict_test.aia (1.5 KB)

This test app also fails Build:

Thanks for the test project. I think I've narrowed down where the bug is occurring and should be able to come up with a fix.

Edit: So I'm still not 100% sure what is happening, but for some strange reason the dictionary is being converted into a string before the set-value block is invoked. Obviously this blows up. The AI2 blocks don't have this issue so something went wrong somewhere when AI2 was merged into Punya somewhat recently.

Edit 2: Okay. I've figured out what the issue is. I think you used typeblocking to create a new dictionary block. This actually ends up creating a new GQL dictionary block, which you aren't really supposed to be able to instantiate. Its code generation is different from the "real" dictionaries block. I think I should be able to put together a fairly straightforward fix.

Edit 3: I've deployed a fix that prevents creating the block via typeblocking. You'll need to delete the "create empty dictionary" block and recreate it.

Replacing the create dictionary block fixed the problem.

Thank you!

Hello everyone,

Just a reminder that this competition is ongoing. We're looking for people to quickly check in with us on their app progress. The instructions for checkin are available here. People looking to submit in this competition for prizes should check in by June 30.


Hello everyone,

Just a reminder that submissions are due by the end of the day on Thursday, July 15th if you want to be eligible for the competition rewards.


1 Like