This page is for discussing the contents of Semantic Wiki.
Attributes and Relations vs Statements
There has been some discussion about whether there should be a separate syntax for attributes and relations. Essentially both could be considered Statements. They both state a fact. For example the attribute: <Delta of Venus'> <phone number> is <(530) 753-8639> is a statement of a fact (well at the time of this writing at least). The relation: <Delta of Venus> <has a> <Delta of Venus/Menu> is a statement of a fact as well. The only difference between these two statements is that with the first the object is literal data (the phone number) and the second the object is another real-world object (represented by a wiki page). There would be no need to have a wiki page for phone numbers.
All of this is pointing towards having a specific namespace for real-world objects (ie wiki pages) and one for literal objects.
The following comments were moved from the main Semantic WIki Page.
"Will work for attributes but not for relations" — This is what I thought at first, too, but I can't seem to think of a case where it wouldn't work (given that we always implicitly have the page we're using as a subject, and have the optional <type>). Could an example be given? For instance, the is_a::Restaurant relation could be written as Category := Restaurant, or (semantically equivalent) is_a := Restaurant. These two examples are where we have simply a <type> and a <value>, given that our general form for these things is Type Subject := Value.
Well, I was thinking about allowing back references to other wiki's or pages that do not yet exist. This feature isn't necessary though for our purposes. It might make more sense to only allow forward relations where the subject is a valid wiki page and the object is possibly a wiki page on this wiki (same namespace) or on another wiki (another namespace like wikipedia, or a California wiki, etc). WikiMedia choose a different syntax for relations because the object is _always_ interpretted as a wiki page. So a wiki link is always made. Attributes, on the other hand, are not wiki pages and require some custom formatting, parsing, etc. —Sc0ttBeardsley
So do you think we can just opt for attributes and some sort of implicit relation? Meaning, do you think we can do the basics of what we need with just the := operator? In your examples, the only need for a relation is to set an attribute to a page. It might be easiest, from an implementation and usability perspective, to just stick with attributes?
"just opt for attributes and some sort of implicit relation?" Yes, it would be easier to just allow forward relations (meaning the subject is *always* the current page).
"just stick with attributes?" I see relations as being fundamentally different than attributes. Attributes have a specific data type, need special formatting, etc. Relations on the other hand store references to objects (not their values). In our case it could be an existing wiki page on this wiki (the default), or perhaps a wiki page on some other wiki (ie wikipedia or daviswiki.org). Either way relations are always treated the same way: add the object's namespace to the object value and you have a link to that thing. If we only had attributes how would we distinguish a value from a reference? —Sc0ttBeardsley
To answer my own question all we have to do to distinguish between a value and a reference is to look at the namespace. I now think we could get away with just an attributes table and a namespace table. See below for a new ERD. —Sc0ttBeardsley
I agree! Should we remove the references to the relation syntax, then?