From: Markus <ma...@ai...> - 2006-08-21 11:44:05
|
On Monday 21 August 2006 11:00, S Page wrote: > > A more functional fix will appear in the near future. > > I checked a better (?) version into CVS. On the first page of > Special:Types, it lists the built-in datatypes before going on to list > all pages in the Type: namespace. > > If we knew every SMW install had a Type: page for each built-in > datatype, that first list wouldn't be necessary. But e.g. > wiki.ontoworld doesn't have Type:Email or Type:String pages. Perhaps > the SMW distribution should provide an XML dump of Type: pages for the > built-ins that you can Special:Import during install. (And we could > enhance Type: pages to automatically list all attributes using the > datatype, like Category: pages do.) > > Conversely, it's possible to author Type: pages that aren't usable, e.g. > wiki.ontoworld has Type:Box and Type:Vector. > > You can also query > * The value_datatype of attribute values from the smw_attributes table. > * The "has type" of attributes from smw_specialprops, which would give > the number of attributes using each datatype. > * The "corresponds to" conversion factors of datatypes from > smw_specialprops, which user-defined Type pages require. > > The complicated union and intersection of these, converting between > labels and IDs, could give the precise list of types you can > successfully use. And perhaps we should create a Special:UnusedTypes > page like Special:UnusedAttributes. > > I welcome comments and corrections, the ruder the better! :) The situation obviously needs improvement. Part of the information you list= ed=20 is not primary in this context. What we really want is a list of available= =20 types, used or not, documented or not. For each of those, it might be=20 insteresting to show the number of attributes of that type. The number of=20 data-values stored under that type is not really relevant --=20 Special:Attributes already shows this on a per-attribute basis. So we are in the situation that we would like to have all the *valid* types= ,=20 which basically are=20 (all Type:-pages that describe custom linear types) + (all built-in types) The first can currently be checked by looking for "corresponds to". The sec= ond=20 part could also be done with SQL. One way to add a short set of extra entri= es=20 to a query is to create a "temporary table" (this is just an in-memory buff= er=20 managed by MySQL DB-server-side), and to make a union of the contents of sa= id=20 table with the other results. This gives you a single SQL-query again, and= =20 you can make result-pages as usual.=20 CREATE TEMPORARY TABLE built_in_types(type_title VARCHAR(255) NOT NULL) TYP= E=20 HEAP; makes a table for built-in types, into which you can insert all known types= =20 from the internationalisation message. Then you can make a query that selec= ts=20 page_ids of corresponds_to statements from sepcialprops, joins them with th= e=20 page-table to get their name and namespace (please do not use the=20 name/namespace-entries from the specialprops or any other SMW table -- I wi= ll=20 remove those in the future), and filters out the namespace "Type:".=20 Using "OR" you can combine this with your tempory table to get all type nam= es=20 in one sorted query result. You do not have to delete the temporary table i= f=20 it is not possible in the given program-flow -- it is local to the current= =20 DB-connection and will be removed after the PHP-call ends. Note that this=20 should prevent you from using one temporary table across multiple result=20 pages.=20 An alternative way might be to put the known values of built-in type names= =20 into the SQL-query right away, since we only have a few built-ins. But I am= =20 not sure how this would work in SQL. Once you have the ordered list of type-names, you can go and find further=20 information about each of them, if desired. Does this sound like a plan? =2D- Markus =2D-=20 Markus Kr=F6tzsch Institute AIFB, University of Karlsruhe, D-76128 Karlsruhe ma...@ai... phone +49 (0)721 608 7362 www.aifb.uni-karlsruhe.de/WBS/ fax +49 (0)721 693 717 |