- From: Rinke Hoekstra <hoekstra@uva.nl>
- Date: Mon, 20 Jul 2009 11:22:02 +0200
- To: <kj@iteegosearch.com>
- Cc: <semantic-web@w3.org>
Hi Kevin, The following code uses the ARC2 php classes (see [1]) retrieve the results of a SPARQL query from a SPARQL endpoint, and creates a select block. The variables in the SPARQL query are '?concept' and '?label'. (this is a literal copy from some of my code, so there's quite a bit of clutter. The gist should be clear though). function getSelectBlock($sparql_query,$onChange,$name='conceptlist', $value_fn='concept',$label_fn='label') { // print "<pre>".htmlentities($sparql_query)."</pre>"; $rows = $this->store->query($sparql_query, 'rows'); if (!$this->store->getErrors()) { print "<select multiple size='10' class='conceptList' name='". $name."' onchange='".$onChange."'>\n"; foreach($rows as $row) { $label = $row[$label_fn]; $value = $row[$value_fn]; print "<option value='".urlencode($value)."'>".$label."</option>\n"; } print "</select>"; } else { foreach($this->store->getErrors() as $error) { print $error."<br/>"; } throw new Exception("Errors! ".$this->store->getErrors()); } } The form that contains the select block will send only the value of the selected option, which is the URI of the resource. Adding statements to the repository is repository-specific... (some support SPARQL UPDATE) Good luck, Rinke [1] http://arc.semsol.org/ On 20 jul 2009, at 11:09, Kevin Jenkins wrote: > Hi Rinke, > > Thanks for the very informative reply. It makes a lot of sense. > Between your > and Toby's replies I think I'm making sense of it now. I agree that > object > properties should be used as often as possible to keep all of the > objects > connected and thereby resulting in a much more powerful knowledge > based. You > are correct that all of my individuals are created through web > forms. I > would be very keen on seeing an example of how you create the drop- > down list > you refer to. Do you have an example of php code I could analyze to > see if > that would be a workable solution for me? I really appreciate your > help. > Thanks. kevin > > -----Original Message----- > From: semantic-web-request@w3.org [mailto:semantic-web- > request@w3.org] On > Behalf Of Rinke Hoekstra > Sent: Monday, July 20, 2009 12:48 AM > To: Toby A Inkster > Cc: kj@iteegosearch.com; semantic-web@w3.org > Subject: Re: When to use object property vs datatype property > > Hi Kevin, > > I think you are being too strict. Indeed, if individuals are only > created > through some web-form, there must be some way of adding relations > between > them, or between individuals and data. > > Why is it so hard to assert an object-property relation between e.g. > an employee and company in a web-form? > > I could easily create a drop-down list of all companies that exist > in my > triple-store. This list will show the names of companies, but when > one of > them is selected, and the form is submitted, is is actually the URI > of the > company resource that is sent back to the form handler. > > My rule of thumb is that I always use object properties, unless I > don't want > to say anything more about the value of that property. For instance, > if I > want to specify a 'name' that relates some person or company to a > name, I > can just use a datatype property since I don't really need to say > anything > else about the name. > > But relating a company to a product is different, because it may be > useful > for my application to say additional things about the product (e.g. > price, > cost, weight, name, category etc.). I need something to group all > these > additional things together, and therefore represent each product as > an OWL > individual as well. The relation between company and product should > then be > an object property. > > (NB: a datatype property for 'has_product' on a company individual > with the > value of the 'name' property of some product individual does not > relate the > company to the product according to the RDF/OWL > semantics) > > Good luck, > > Rinke > > > > On 19 jul 2009, at 10:15, Toby A Inkster wrote: > >> On 19 Jul 2009, at 07:40, Kevin Jenkins wrote: >> >>> It's my understanding that object properties link individuals via a >>> property and that datatype properties link individuals to data (such >>> as form input). [...] I have many properties in my ontology such as >>> has-company-name, has-software-product, is-employee-of etc . my >>> guess >>> is these must be datatype properties because somewhere (I guess a >>> web >>> form) somebody has to name the company, choose the software product >>> category from a list, indicate who the employer is etc. >> >> >> That's not correct. >> >> An object property is a property that takes a resource (an object) as >> its value. A datatype property is a property that takes a literal >> (string, number, date/time, boolean, etc) as its value. >> >> e.g. >> >> <#kj> rdf:type foaf:Person ; >> foaf:name "Kevin Jenkins" ; >> foaf:mbox <mailto:kj@iteegosearch.com> ; >> foaf:mbox_sha1sum "d610935545bb79ad673d5a5e7bd45a11f9b12128" ; >> foaf:knows <#alice> . >> >> In the above, foaf:mbox and foaf:knows are object properties, while >> foaf:name and foaf:mbox_sha1sum are datatype properties. (rdf:type is >> also logically an object property, though I think OWL treats it as a >> special case.) >> >> -- >> Toby A Inkster >> <mailto:mail@tobyinkster.co.uk> >> <http://tobyinkster.co.uk> >> >> >> > > > > --- > Drs Rinke Hoekstra > > Leibniz Center for Law | AI Department > Faculty of Law | Faculty of Sciences > Universiteit van Amsterdam | Vrije Universiteit > Kloveniersburgwal 48 | De Boelelaan 1081a > 1012 CX Amsterdam | 1081 HV Amsterdam > +31-(0)20-5253499 | +31-(0)20-5987752 > hoekstra@uva.nl | hoekstra@few.vu.nl > > Homepage: http://www.leibnizcenter.org/users/rinke > > > > > > --- Drs Rinke Hoekstra Leibniz Center for Law | AI Department Faculty of Law | Faculty of Sciences Universiteit van Amsterdam | Vrije Universiteit Kloveniersburgwal 48 | De Boelelaan 1081a 1012 CX Amsterdam | 1081 HV Amsterdam +31-(0)20-5253499 | +31-(0)20-5987752 hoekstra@uva.nl | hoekstra@few.vu.nl Homepage: http://www.leibnizcenter.org/users/rinke
Received on Monday, 20 July 2009 09:22:36 UTC