Semantic Web – Technical Ramblings
type: channel
description: Ramblings of a Hacker
date: 2026-06-16T11:53:58Z
update period: hourly
update frequency: 1
update base: 2000-01-01T12:00+00:00
generator agent: https://wordpress.org/
items: OS X 10.4 Compile failures due to libtool
items: RDF?
items: Ning Content Store
items: New Colors, New Features
items: SVG::Metadata 0.28 Released
items: We Don’t Need No Stinkin Rules
items: SPARQL CONSTRUCT as Rules
items: RDF as Backing Storage
items: GRDDL, Microformats
items: Versa Thoughts

OS X 10.4 Compile failures due to libtool
type: item
date: 2006-01-11T17:22:22Z
creator: crschmidt
subject: Redland RDF Application Framework
subject: Subversion
description: Many different projects (Redland, svn, and wxWindows included) have seen cases where users have attempted to compile, and seen the errors: /usr/bin/libtool: for architecture: cputype (16777234) cpusubtype (0) file: -lSystem is not an object file (not allowed in a library) or similar, posted to the mailing lists of these projects. Only one place that I’ve […]
encoded: Many different projects (Redland, svn, and wxWindows included) have seen cases where users have attempted to compile, and seen the errors: /usr/bin/libtool: for architecture: cputype (16777234) cpusubtype (0) file: -lSystem is not an object file (not allowed in a library) or similar, posted to the mailing lists of these projects. Only one place that I’ve been able to find so far (and not easily!) has the answer: This is the typical error you get when you do an upgrade install of Panther -> Tiger but you don’t install the Tiger Developer Tools (Xcode 2.0). Don’t do that (Do upgrade your dev tools) (From darwinports mailing list.) Thank you ssen! Now, anyone else who has seen this will hopefully be able to read this post for now and into the future. Ran into this attempting to compile gpsd.

RDF?
type: item
date: 2005-12-10T16:07:49Z
creator: crschmidt
subject: RDF
description: RDF: Resource Description Framework or Reality Distortion Field?
encoded: RDF: Resource Description Framework or Reality Distortion Field?

Ning Content Store
type: item
date: 2005-10-05T15:24:15Z
creator: crschmidt
subject: Ning
subject: RDF
subject: Web Publishing
description: I mentioned in an earlier post about Ning today that I felt that the content model used by functionally no different from RDF. This needs a bit of explanation, I’m sure, and thus far there isn’t a lot of talk out there about how to actually use the content store. (This is probably related to […]
encoded: I mentioned in an earlier post about Ning today that I felt that the content model used by functionally no different from RDF. This needs a bit of explanation, I’m sure, and thus far there isn’t a lot of talk out there about how to actually use the content store. (This is probably related to the significant lack of beta developer accounts so far, something that will hopefully change in the near future.) A quick tutorial on creating Content Objects on Ning first (drawn from XN_Content documentation): $object = XN_Content::create(“TypeOfObject”, “Title of Object”, “Description of Object”); $object->save(); This creates an object with a Type, Title, Description. These are the three most commonly used “System” attributes — they are present on almost every object created in some form or another, so they can be used in displaying that data. In addition to these system attributes, there is the ability to add developer attributes: $object->my->name = “Christopher Schmidt”; $object->my->age = 21; $object->save(); If we look at the content for this object, via the $object->debugHTML() method, we see: XN_Content: id [198390] createdDate [2005-10-05T06:50:23-07:00] updatedDate [2005-10-05T06:50:23-07:00] type [TypeOfObject] title [Title of Object] description [Description Of Object] tagCount [0] contributorName [crschmidt] ownerName [Example App] ownerUrl [exapp] isPrivate [false] my attributes [ [-1] name : Christopher Schmidt : string [-1] age : 21 : number ] Here we see some interesting bits that we hadn’t before: the id, Date, and owner fields are all useful for where the data is coming from, and the contributorName for who the data is coming from. For the time being, however, we’ll concentrate on the my attributes and the id and type system attributes. Mapping this to an RDF representation is relatively simple: ning:198390 a TypeOfObject; dc:title "Title of Object"; dc:description "Description of Object"; ning:name "Christopher Schmidt"; ning:age "21" . You’ll see here the…

New Colors, New Features
type: item
date: 2005-09-26T16:10:58Z
creator: crschmidt
subject: Mobile Platform
subject: Semantic Web
subject: Technology
description: crschmidt.net now features a new colorscheme: I’m still not sure how much I like it, but the old black/grey/white scheme was really starting to grate on me. (Note that the weblog uses a different stylesheet which I haven’t updated yet.) Additionally, all pages now have a feature to allow commenting from users. So you can […]
encoded: crschmidt.net now features a new colorscheme: I’m still not sure how much I like it, but the old black/grey/white scheme was really starting to grate on me. (Note that the weblog uses a different stylesheet which I haven’t updated yet.) Additionally, all pages now have a feature to allow commenting from users. So you can now leave a comment on any page! This is taken from Eikeon’s websites, which have this feature (although it requires logging in first). I’ve done some very basic escaping of script tags, and I do my best to add newlines if they are appropriate, but if you want to make your content look right, you’re best off just formatting it with HTML yourself. However, this means that it’s really easy to offer feedback on any page of the site now. If you’re interested in my semantic web tools, you can leave comments on the various ones there. You can comment on the code for any of my Python tools, on my symbian stuff, on pretty much anything. Soon, and very soon, I’ll be writing an RSS feed generator for this. Right now I’m just happy it works, and would love to see people commenting on any page on the site they’d like more info about or would like to offer feedback on.

SVG::Metadata 0.28 Released
type: item
date: 2005-08-23T02:03:52Z
creator: crschmidt
subject: RDF
subject: Semantic Web
subject: SVG
description: While many people these days are switching to annotation-in-XHTML, there’s still at least one file format out there which has extremely useful metadata annotation using RDF/XML inside the document: SVG. The Scalable Vector Graphcs format has a Metadata element, which is expected to contain RDF/XML. This is great news for people who might wish to […]
encoded: While many people these days are switching to annotation-in-XHTML, there’s still at least one file format out there which has extremely useful metadata annotation using RDF/XML inside the document: SVG. The Scalable Vector Graphcs format has a Metadata element, which is expected to contain RDF/XML. This is great news for people who might wish to create a directory of SVG images: the metadata can be stored in the actual images, something that the Open Clip Art Library takes advantage of, using a number of tools to extract statistics and aggregate metadata from SVG files. To take an example from the library, Autos_01.svg (SVG file, requires SVG viewer) contains 23 RDF statements. These triples are given a base of a cc:Work with the URL of the file of itself, meaning that a simple query about the predicates and objects with http://openclipart.org/clipart/transportation/autos_01.svg as a subject returns the important aspects of this document. This includes description, creator, keywords, and license. The license is “Public Domain” — adding the images to the Open Clip Art Library requires placing them into the Public Domain. For working with this data, developers of the project created the Perl module SVG::Metadata – a module for annotating SVG files with this metadata, as well as making change to the metadata which already exists in such files. The maintainer just announced on the Clipart Discussion list that he has released 0.28, which includes the changes from previous releases 0.26 and 0.27 which were mostly maintenance releases. (The message will eventually appear in the August threads, but hasn’t yet.) The RDF generation in versions prior to 0.24 was broken, but was fixed in the 0.25 release – OCAL is now using this release in their scripts, so many of the more recent images in the library are valid RDF, meaning that you can simply pass it to Redland with the http://feature.librdf.org/raptor-scanForRDF feature set. In the Python bindings, that is: p.set_feature(”ht…

We Don’t Need No Stinkin Rules
type: item
date: 2005-08-22T01:42:34Z
creator: crschmidt
subject: julie
subject: RDF
subject: Semantic Web
subject: SPARQL
description: SPARQL CONSTRUCT as rules announces the inclusion in julie of SPARQL-CONSTRUCT based rule-like processing for the creation of additional statements to be added to julie. Basically, the syntax hasn’t changed much: ^q CONSTRUCT {?p2 ?prop ?p. } WHERE { ?prop rdf:type <http://www.w3.org/2002/07/owl#SymmetricProperty>. ?p ?prop ?p2. } returns: Total of 542 statements: Here’s the first three. […]
encoded: SPARQL CONSTRUCT as rules announces the inclusion in julie of SPARQL-CONSTRUCT based rule-like processing for the creation of additional statements to be added to julie. Basically, the syntax hasn’t changed much: ^q CONSTRUCT {?p2 ?prop ?p. } WHERE { ?prop rdf:type <http://www.w3.org/2002/07/owl#SymmetricProperty>. ?p ?prop ?p2. } returns: Total of 542 statements: Here’s the first three. {(r0_r1114530965r33008), [http://purl.org/vocab/relationship/colleagueOf], (r0_r1114530965r32995)}, {(r0_r1114530965r32998), [http://purl.org/vocab/relationship/colleagueOf], (r0_r1114530965r32995)}, {(r0_r1114689381r708), [http://purl.org/vocab/relationship/colleagueOf], (r0_r1114530965r32995)}. This is to let you know what you’re getting yourself into. For example, you probably don’t want to add the rdfs:subClassOf relationship for everything: you’d be dealing with a heck of a lot of statements, enough to trap the bot for hours. Here, we can see that it’s a relatively reasonable subset of the model, so we can pass this construct result into the model: 21:33:35 < julie> Created 542 statements based on CONSTRUCT query: Model size changed by 481. You can see the queries and results in context in #swig logs. I’d be interested to hear how people think this could be used, or if it’s useful in a more general sense. Would it be better to simply provide a temporary URI where people could fetch the data? Hm, that sounds almost like a useful service – POST data, get back a URI and some data after having parsed the data and stored it in a local location. Wonder if I’m the only person who could use that…

SPARQL CONSTRUCT as Rules
type: item
date: 2005-08-20T15:42:31Z
creator: crschmidt
subject: julie
subject: Semantic Web
subject: SPARQL
description: So, I implemented SPARQL CONSTRUCT queries in Julie yesterday (http://crschmidt.net/noets/115) along with ASK queries (http://crschmidt.net/noets/114). Really, the CONSTRUCT queries are pretty silly to have: who wants to see serialized triples on an IRC interface? but I was thinking: what if instead of spitting the triples into IRC, it sent them into the backend? I’m sure […]
encoded: So, I implemented SPARQL CONSTRUCT queries in Julie yesterday (http://crschmidt.net/noets/115) along with ASK queries (http://crschmidt.net/noets/114). Really, the CONSTRUCT queries are pretty silly to have: who wants to see serialized triples on an IRC interface? but I was thinking: what if instead of spitting the triples into IRC, it sent them into the backend? I’m sure that the people in charge of SPARQL thought of this long ago, but it just occured to me, that this is a simple way to achieve rules-like processing: 10:49:36 <crschmidt> ^q CONSTRUCT { ?a rel:childOf <http://crschmidt.net/foaf.rdf#crschmidt>. } where { <http://crschmidt.net/foaf.rdf#crschmidt> rel:parentOf ?a. } 10:49:37 <+julie> {[http://crschmidt.net/~julie/me.rdf#julie], [http://purl.org/vocab/relationship/childOf], [http://crschmidt.net/foaf.rdf#crschmidt]}, {[http://crschmidt.net/~alicia/me.rdf#alicia], [http://purl.org/vocab/relationship/childOf], [http://crschmidt.net/foaf.rdf#crschmidt]} Feeding these kind of results back into julie could let people create the equivilant of rules, passing them back into julie to add to the triplestore. Man, I thought I gave up on this RDF stuff. Looks like maybe I wasn’t as done as I thought I was.

RDF as Backing Storage
type: item
date: 2005-08-20T13:37:34Z
creator: crschmidt
subject: Redland RDF Application Framework
subject: Semantic Web
subject: SPARQL
description: So often lately, I’ve seen some prominent people in the Semantic Web advising that the possibilities of using RDF as a backing store for an application are great, and that maybe people should use “SPARQL as a query language for the application”. Stop. Don’t do that. Right now, we’re in a situation where RDF implementations […]
encoded: So often lately, I’ve seen some prominent people in the Semantic Web advising that the possibilities of using RDF as a backing store for an application are great, and that maybe people should use “SPARQL as a query language for the application”. Stop. Don’t do that. Right now, we’re in a situation where RDF implementations are really usable – if you are aware of their limitations, and avoid them. This is also true in MySQL: You don’t make every one of your queries include half a dozen joins, so you don’t want to do a similar thing in SPARQL. The problem is that with RDF query languages, unless you’ve spent a lot of time with them, you’re working on something that’s much more difficult to understand the work behind. It’s extremely easy to write a query that is not well optimized that take the application a very long time to compute, at the cost of making RDF and SPARQL look as if they are too slow. They’re not. For small size web applications, there is no real reason that a properly built site could not be extremely quick, and built on RDF tools. (At the current point in time, I won’t say the same for large applications: I don’t have any knowledge of what happens to triplestores once they get past 2 million triples.) However, most queries that people write are slow, simply because they are not optimized. Depending on how exactly the application-level query translator works, you may be dealing with something that’s not completely optimized, which can have an extreme negative impact on your query time. An example? Well, my knowledge is mostly in Redland, so I’ll just toss out a query via julie, the redlandbot. 09:05:18 < crschmidt> ^q select ?i where { <http://crschmidt.net/foaf.rdf#crschmidt> foaf:knows ?p. ?p foaf:nick ?i. } 09:05:18 < julie> solcita, bluemoonshark, telepwen, jayo, littledownpour, jessicacmalfoy, csogilvie, alacrity, wyvernbitch, pne, luxtiger, danceinacircle, bertho, ursamajor, pie_is_good, jessical, danbri, ryanbyers, shupe, thebubba, kangarooofdoo…

GRDDL, Microformats
type: item
date: 2005-08-15T16:03:16Z
creator: crschmidt
subject: GRDDL
subject: Microformats
subject: RDF
subject: Semantic Web
subject: Technology
subject: XSLT
description: At some point, on the FOAFnet mailing list, David Sifry asked, ” What is DOAP? What is GRDDL? What’s the use case?” in response to Danny Ayers’ post on the mailing list. My reply was pretty simple and succinct in my opinion, but I never put it anywhere public to read. I think it’s a […]
encoded: At some point, on the FOAFnet mailing list, David Sifry asked, ” What is DOAP? What is GRDDL? What’s the use case?” in response to Danny Ayers’ post on the mailing list. My reply was pretty simple and succinct in my opinion, but I never put it anywhere public to read. I think it’s a relatively succinct explanation of why GRDDL can be useful for moving between the microformats, with tiny datasets, and RDF, with the large dataset behind it. What is DOAP? What is GRDDL? What’s the use case? DOAP – Description of a Project. DOAP is to Open Source software what FOAF is to people. http://usefulinc.com/doap GRDDL – Gleaming Resource Descriptions from Dialects of Language. This is a way of performing transormations from (x)HTML documents to an RDF document. This transformation takes place via an XSLT transformation, specified either implicitly through the “profile” link in the of the HTML document, or via a meta rel=”transformation”, which parses can then apply to the document to get something with real meaning out of. http://www.w3.org/TeamSubmission/grddl/ Use Case: “Microformats” and storing data in HTML may be good for people who are writing specialized tools for each format they want to deal with, but GRDDL allows for people who want to support all these to simply write one translation, using XSLT, and take advantage of the underlying data model of RDF. This allows you to merge existing data sources with the newly emergent small-s semantic technologies, and to use existing tools for combining these sets of data and discovering correlations between them, using the already existing RDF data access framework. If I have a datastore of RDF data (which I do), and someone wants to find if the maintainer of a certain project has contact information in that database, using hBlah pages, I can’t really do that. However, if I merge the datasets with the already existing FOAF data out there, I can find out that a person named Christopher Schmidt, who is a maintainer of “julie, aka …

Versa Thoughts
type: item
date: 2005-08-12T13:23:50Z
creator: crschmidt
subject: RDF
subject: Semantic Web
subject: SPARQL
description: Lately, I’ve been watching Chimezie play with Emeka, his RDF bot. It’s basically a Versa/4suite counterpart to Julie, the redlandbot (based, obviously, on Redland.) I can’t say anything for his code, but I do know that through people working with Emeka, I’ve seen some Versa queries recently, and I have to say that they confuse […]
encoded: Lately, I’ve been watching Chimezie play with Emeka, his RDF bot. It’s basically a Versa/4suite counterpart to Julie, the redlandbot (based, obviously, on Redland.) I can’t say anything for his code, but I do know that through people working with Emeka, I’ve seen some Versa queries recently, and I have to say that they confuse the heck out of me. I just read through the Versa Article on XML.com, and was helped not at all. The language itself makes sense when I read the examples, but I simply can’t come up with the way to do what I would in SPARQL. I’m sure that it’s really easy once you’re used to it, but to me, it seems like a query language with a 663 mode. Sure, I might be able to write it, with a reference handy, and execute it (hi Emeka!), but I sure as heck can’t read it. I think I like SPARQL because it feels familiar: the turtle patterns are just turtle statements with some variables. The triple patterns *look* like triples. Versa doesn’t have this benefit: triple patterns in Versa become something along the lines of (all() ->rdfs:label->*) rather than (?s rdfs:label ?l). I think it may just be the fact that all the extra syntax confuses me: why put all these bits in the middle of my triples? They’re triples! Spaces are enough! Anyway, this isn’t very helpful: I haven’t used Versa enough to have useful comments. Just know that reading this stuff, and even trying to wrap my head around the stuff Chimezie is ending to Emeka, I have problems. This probably is true for SPARQL/julie as well for most people – but for me it “just works”.