On 03/10/11 11:48, zehetner wrote:
> Would these subobjects interfere at some stage with the support of
> multi-value properties or replace them? Or will they remain an additional
> feature like the SIOs?

Multi-valued properties in SMW 1.6 are already a special kind of 
subobject. Both kinds of subobject work well together (i.e., one can 
have Type:Record properties in subobjects). It is not planned to drop 
record support.

Markus

> On Mon, 03 Oct 2011 10:02:32 +0100, Markus Krötzsch
> <mar...@semantic-mediawiki.org>  wrote:
>> Following up the discussions we had at SMWCon in Berlin, we have now
>> implemented a new feature for "internal objects" in SMW. This email
>> explains this feature and starts the discussion on some open questions
>> for it to become stable.
>>
>>
>> == Goal ==
>>
>> Allow SMW annotations to refer to objects that have their own
>> property-value pairs just like wiki pages, but that do not actually have
>
>> an article in the wiki. This can be used to "group" property-value pairs
>
>> given on one page without requiring new auxiliary pages to be created.
>> It also integrates the main functionality of the Semantic Internal
>> Objects (SIO) extension into SMW.
>>
>>
>> == Feature Overview: Current Prototype Implementation ==
>>
>> SMW now has a new "subobject" feature. For example, you can use the
>> parserfunction #subobject on some page "Example page" as follows:
>>
>> {{#subobject:street address
>> | street name=Parks Road
>> | postcode=OX1 3QD
>> | city=Oxford
>> | country=UK
>> }}
>>
>> This does the following:
>>
>> (A) create a new subobject called "Example page#_anInternalId",
>> (B) assign the property values for "street name", ..., "country" to this
>
>> subobject,
>> (C) assign the subobject "Example page#_anInternalId" as a property
>> value for "street address" to "Example page".
>>
>> You could have achieved a similar effect as follows:
>>
>> (A') create a new page called "my auxiliary page",
>> (B') edit this new page to contain the text:
>>
>>    [[street name::Parks Road]]
>>    [[postcode::OX1 3QD]]
>>    [[city::Oxford]]
>>    [[country::UK]]
>>
>> (C') edit the page "Example page" to contain the text:
>>
>>    [[street address::my auxiliary page]]
>>
>>
>> The difference when using #subobject is that you do not create a new
>> auxiliary page. Instead, a subobject of "Example page" is created by
>> SMW. Also, the function #subobject does not display anything unless an
>> error occurred that needs to be reported.
>>
>> Subobjects are named automatically by following the schema "Parent page
>> name#_someInternalId". When subobjects are displayed to users, they thus
>
>> appear like links to sections within their parent page. This can happen,
>
>> e.g., subobjects might occur in query results (example above: {{#ask:
>> [[postcode::OX1 3QD]] }}). Likewise, subobjects are also addressed by
>> this name "Parent page name#_someInternalId" in all search and export
>> interfaces in SMW. For example, one can view the data for one particular
>
>> subobject in Special:Browse.
>>
>> In general, subobjects should work like normal pages in most SMW
>> interfaces. The goal of this naming is to avoid any clashes with real
>> pages and with real sections in real pages while still allowing the same
>
>> methods to be used.
>>
>> The feature can be tested in the current SVN version but it is still
>> unstable and might change significantly (read on).
>>
>>
>> == Relation to Semantic Internal Objects ==
>>
>> The feature is very similar to the SIO extension. The difference is that
>
>> in SIO, the main property ("street address" above) points from the
>> subobject to the parent page. In the above example, "street address"
>> really means "has street address" while in SIO it would be used like "is
>
>> street address of".
>>
>> The other difference is that subobjects work with both SQL and RDF
>> stores, are exported in RDF and are compatible with interfaces like
>> Special:Browse.
>>
>>
>> == Alternative Proposal ==
>>
>> Instead of having a parser function that creates a subobject and assigns
>
>> it to a property as a value, one could also have a parser function that
>> only does the first thing and that *returns* a subobject for later use.
>> This would require some further changes but it might be more elegant.
>>
>> For example, a call like
>>
>> {{#subobject: street name=Parks Road | postcode=OX1 3QD| city=Oxford }}
>>
>> would just "create" such an object and return its name (e.g.
>> "Example_page#_someId"). Then one could use this name as a value to
>> other properties, e.g.:
>>
>> [[street address::{{#subobject: street name=Parks Road
>>       | postcode=OX1 3QD
>>       | city=Oxford
>> }}]]
>>
>> One advantage of this is that one could arbitrarily nest subobjects,
>> i.e. use subobjects as property values when declaring other subobjects
>> (SMW can already do this, just the input syntax does not support it).
>> Another advantage is that subobjects could (optionally) be named instead
>
>> of using the name generated by SMW now. For example, one could have
>>
>> {{#subobject:department_address
>>     |street name=Parks Road | postcode=OX1 3QD| city=Oxford }}
>>
>> to create a subobject called "Example page#department_address" which
>> could be used in other annotations on *any* page (this is already
>> possible with subobjects now, but since their names are generated by SMW
>
>> they might not be stable over time). In this case, it might be less
>> desirable to return the name of the subobject.
>>
>> Overall, this alternative approach would allow subobjects to be used as
>> first-class citizens of the SMW data space instead of viewing them as
>> auxiliary objects for encoding compound property values.
>>
>>
>> == Request for Comments ==
>>
>> Feedback is welcome. The first question is which approach to subobjects
>> should eventually be used. The follow-up question is how the respective
>> parser function should be called. But there might also be completely
>> different comments and questions.
>>
>>
>> Cheers,
>>
>> Markus
>>
>>
>>
> ------------------------------------------------------------------------------
>> All the data continuously generated in your IT infrastructure contains a
>> definitive record of customers, application performance, security
>> threats, fraudulent activity and more. Splunk takes this data and makes
>> sense of it. Business sense. IT sense. Common sense.
>> http://p.sf.net/sfu/splunk-d2dcopy1
>> _______________________________________________
>> Semediawiki-devel mailing list
>> Semediawiki-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/semediawiki-devel
>


------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
Semediawiki-devel mailing list
Semediawiki-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/semediawiki-devel

Reply via email to