Re: defining the semantics of lists
thomas lörtsch <[email protected]> Thu, 11 Jun 2020 00:02:07 +0200
| Newsgroups | gmane.org.w3c.semantic-web |
|---|---|
| Message-ID | <[email protected]> |
--Apple-Mail=_0868A35F-3DDB-4295-85B9-E4E6180426B9 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On 10. Jun 2020, at 22:30, Ji=C5=99=C3=AD Proch=C3=A1zka = <[email protected]> wrote: >=20 > Right, as has been pointed out by many, changing or extending RDF > semantics would be extremely difficult task, but it isn't necessary. There=E2=80=99s two things: 1) Adding a property to the Container vocabulary as _describing_ the = size of a container wouldn=E2=80=99t change the semantics of RDF. We = discussed at length in this thread what can and can=E2=80=99t be = achieved when changing the fundamentals of RDF is not an option - and I = sure think it isn=E2=80=99t. 2) The attitude towards change in this community is difficult to say the = least. When Dan Brickley posted his very interesting history lessons a = few moths ago I realized that reification had been considered for = deprecation around 2000 already. OMG. On the one hand we are trying to = build something of unprecedented size and reach, on the other hand we = can=E2=80=99t make the slightest backwards incompatible change from day = 1 on? This attitude is insane and it only leads to the standard getting = stale and eventually being replaced by soemthing new altogether - but at = a much hingher cost to everybody involved than some breaking changes = would occurr. I was a the RDF Next Steps Workshop in Stanford 2010 (it was open to = everbody and I couldn=E2=80=99t resist) and I remember well the vivid = argument that we would risk uptake and adoption that was just about to = start if we changed anything more than the most pressing technicalities. = Last year at the Berlin Workshop I heard that now it=E2=80=99s too late = for profound change as the installed base is already to big, that ship = has sailed. So I must have missed the historic millisecond, around 2016 = and a half presumably, when the stars had aligned, once and for all? = What a choke, what a farce. Occassionally dark forecasts are made that = all Semantic Web companies will go bancrupt if we introduce more than = the most pressing changes. In the meantime a new industry of now about = the same size than ours grew up - Property Graphs - on the only grounds = that they have better usability and meta modelling. So who will gp = bancrupt soon and why exactly? And a handful of companies support RDF* = already - probably because they don=E2=80=99t want to get bancrupt, not = because change is so impossibly hard and shouldn=E2=80=99t even be = attempted. > Easier would be to make your own RDF collection/container vocabulary So, I=E2=80=99d say change is good and is indeed pretty necessary. If = nobody cares and just dabbles on heir own vocabulary instead of trying = to fix the mothership RDF there won=E2=80=99t be much reason to fix it = soon enough. It would be easier for sure but not very sustainable. The situation with lists is a classic SNAFU. But lists are the easiest = part. Identifcation is broken and no one even cares anymore. "Just use = AI to disambiguate" I hear. Reification is a mess (and RDF* in its = current state might make it better, or worse) and Named Graphs have no = semantics, so there is no sound meta modelling in RDF. OTOH everybody = who doesn=E2=80=99t work on well contained single topic applications = will acknowledge that the Semantic Web needs an agreed upon facility to = model context and refication. That requires change, and it requires a = vision about how everything can fit together. And it is about time. > and > a validation language for it. The language would have its own = semantics, > possibly backed by some formal logic. The language syntax could be = RDF. > In many ways Shapes Constraint Language (SHACL)[1] could be an > inspiration (also has RDF as syntax), could be used by your language, = or > your language could be a SHACL extension. Overall, what you are going > for sounds like a generalization of an application of SHACL. A property to desribe the intended size of a Container would belong to = RDF. Constraints to enforce such a limit locally in apllications would = belong to Shacl, Shex etc. But I=E2=80=99m currently trying to figure = out if lists as proper datatypes aren=E2=80=99t a better way forward. >> But how could we enforce such constraint descriptions not just in > applications but within the OWA realms of RDF? >=20 > Do you mean make entire RDF graphs invalid just because it doesn't fit > some constrains for a particular purpose? Why would that be desirable? > Even if a graph says something which is invalid for some purpose, it > could be valid for another purpose - a simple example being RDF > visualization. Closing the world for some application shouldn=E2=80=99t inflict the = Open World around it. A dataset might have to undergo certain procedures = and scrutiny before I feed it into my application. Some applications = certainly demand such restrictivity. That doesn=E2=80=99t say anything = about the uses and usefulness of that dataset outside of such a specific = application. > As a side note, if you decide to go down the rabbit hole, you might = want > to consider handling collections restricted to members of a particular > class/datatype or their subclasses. A Series container with an explicit extension hook might be a nice idea: = immutability was just one example. But it could also be overkill. Best, Thomas > Cheers, > Jiri >=20 > [1] https://www.w3.org/TR/shacl/ >=20 > On 6/8/20 12:19 PM, thomas l=C3=B6rtsch wrote: >>> On 4. Jun 2020, at 01:40, Ji=C5=99=C3=AD Proch=C3=A1zka = <[email protected]> wrote: >>>=20 >>> This has been an interesting thread to follow, but from the start = I've >>> felt a clearly stated use case is missing. This would clear up many >>> things, possibly pointing to a solution which doesn't require = changes to >>> RDF(S) semantics at all. >>>=20 >>>> I remember someone (Pat?) rightly saying that RDF was not a data >>> structure language, but a KR (or something like that). >>>> So simply wanting the sort of things that programming languages = have >>> as data structures is not necessarily a useful thing to spend time = on. >>>=20 >>>> I much prefer predicates to be specific to the range and domain = that >>> they are working over. >>>=20 >>> Agreed, personally I think the rdf:List, RDF containers vocabularies >>> should be used mainly as base classes/properties to be subclassed in >>> domain specific schema or perhaps not at all. >>>=20 >>> That said, one might be describing things like APIs in RDF. In such >>> cases one might describe some examples of input, having to be = careful to >>> not define them with an unintended structure (for example a = branching or >>> looping list). If this was the use case, RDF authoring tools could >>> feature warnings for irregular structures. >>>=20 >>> An interesting use case is describing APIs accepting RDF data as = input. >>> Ideally it should be using a domain specific schema, but I can see = it >>> often having constructs similar to rdf:List or RDF containers. The = APIs >>> descriptions should also definite how unexpected inputs are treated. >>> This could be standardized, separately to RDF specifications. >>>=20 >>> These are the use cases which I thought of, I would like to know of >>> others. I don't think a change of RDF semantics would be needed for = these. >>=20 >> Right, no need to change the RDF semantics. It's two things however: >> A what RDF can describe >> B how descriptions can be enforced as constraints >>=20 >> A >> Lists in RDF can be described as >> - closed (rdf:List) >> - ordered (rdf:list, rdf:Seq, rdf:Bag, rdf:Alt) >> - without duplicates (rdf:Alt) >> - with preferred member (rdf:Alt) >> This is a bit messy and not all combinations are available. Adding a = 'last' attribute to Containers might ameliorate the situation. The = rdf:Series class that I proposed mainly as an example to facilitate = discussion could be extended to address all those properties and maybe = more: >>=20 >> // A new subclass of Container that very explicitly = describes >> // size, preferred alternative, ordering and duplicates. >> // Ordering and duplicates default to TRUE. >> // If no attributes are set Series corresponds to Seq. >> // This container type has the combined semantic = expressivity >> // of Seq, Bag and Alt plus the capability to describe its = size. >> // The immutable property is a hint that such a newly = defined >> // construct could indeed be used to describe a few more = things. >>=20 >> Series subClassOf Container >> last domain Series >> range ContainerMembeshipProperty >> pref domain Series >> range ContainerMembeshipProperty >> order domain Series >> range Boolean >> dupes domain Series >> range Boolean >> immutable domain Series // why not reach for the stars... >> range Boolean >>=20 >> B >> Translating those descriptions to constraints can be tricky as Peters = questions proved but it certainly can be done in one way or the other. = APIs described in RDF, OWL DL formalizations, rules, Shexl constraints = are all viable options. But how could we enforce such constraint = descriptions not just in applications but within the OWA realms of RDF? = That requires closing the world around the description. Named Graphs = come to mind. So basically: >> - define a way to guarantee sound naming semantics for Named Graphs, >> - define a way to attribute graphs with semantic extensions, >> - define such extensions (like e.g. an app friendly local CWA/NAF/UNA = walled garden) >> - teach RDF consuming applications to process data according to the = rules of such extensions locally, within those graphs >> and be done with it? >>=20 >> Thomas >>=20 >>=20 >>> Best, >>> Jiri >>>=20 >>> On 6/4/20 12:02 AM, Hugh Glaser wrote: >>>> +1 >>>>=20 >>>> I've followed the long discussion (as best I could!). >>>> And what I kept wanting to know was an example of how whatever is = being proposed might be used. >>>> I remember someone (Pat?) rightly saying that RDF was not a data = structure language, but a KR (or something like that). >>>> So simply wanting the sort of things that programming languages = have as data structures is not necessarily a useful thing to spend time = on. >>>>=20 >>>> And I think there are implications that raise questions. >>>> For example, if what you (plural) are trying to be able to do is = something like tracks on a CD, then a predicate to connect things should = be more like >>>> foo:nextTrack than simply foo:Next . >>>> How would this happen? - Can all the constructs proposed be = sub-property'ed and/or sub-classed? Or however else it happens. >>>> And then would querying work? >>>> And there might be questions such as what happens when that CD is = released with a bonus track? >>>>=20 >>>> I would certainly not want anything as general as foo:next floating = around my RDF. >>>> I much prefer predicates to be specific to the range and domain = that they are working over. >>>>=20 >>>> Mind you, I have to admit I have never used any of the rdf = Seq/Collection etc. >>>> I haven't felt the need, and I prefer to represent the knowledge as = close to its natural form as possible, rather than bend it to fit into = some generic, and possibly slightly different form. >>>>=20 >>>> It is the same problem in Lisp, of course - which is why things = like Structs and Cobol Data Division were invented. >>>> If I could be given some view of the sorts of applications you are = thinking of, I would be better able to understand whether the = suggestions being made are fit for purpose. >>>>=20 >>>> The bottom line, in case you are wondering: >>>> I'm not sure why I would need lists in RDF. >>>> And I have a nagging suspicion that people that want them are = trying to do things in programming ways, rather than stepping back and = doing the KR. >>>> But I have no evidence for that :-) >>>>=20 >>>> Best >>>> Hugh >>>>=20 >>>>> On 2 Jun 2020, at 19:00, Peter Patel-Schneider = <[email protected]> wrote: >>>>>=20 >>>>> TLDR: Without a firm notion of what chains are for and a = specification >>>>> of how they work it is not possible to determine whether they are = non- >>>>> problematic. >>>>>=20 >>>>> On Mon, 2020-06-01 at 23:11 +0200, thomas l=C3=B6rtsch wrote: >>>>>> Hi Peter, >>>>>>=20 >>>>>> my initial question when starting this thread was: what holds >>>>>> rdf:Containers back from having the same semantic weight as >>>>>> rdf:Lists? What could be done to overcome that deficit. There are >>>>>> some reasons why I was asking that and not the least was to >>>>>> understand semantics of lists - hence the subject line. With the >>>>>> question came the idea for an answer: an rdfx:length property to >>>>>> specify the length of a Container and thereby close it. With = Pat's >>>>>> help that developed into an rdfx:last property because that way = we >>>>>> don=E2=80=99t have to introduce arithmetic into the semantics. = The intention >>>>>> is exactly the same: provide a means to close rdf:Containers, = make >>>>>> them finite. Such a finite container could then be used instead = of >>>>>> rdf:Lists. It would have a less obtrusive syntax, need fewer = triples, >>>>>> perform much faster in the usual triple stores, would be easier = to >>>>>> query and could be used with OWL DL. The only real downside so = far: >>>>>> no syntactic sugar in Turtle - that would be another topic. >>>>>>=20 >>>>>> So the short answer to your questions is: the aim is to provide >>>>>> Containers with a semantics similar to rdf:Lists respectively to = find >>>>>> out what is needed to reach that goal. >>>>>>=20 >>>>>> The longer answer is: rdf:Containers intuitively provide some >>>>>> semantics already. Membership properties are ordered by integer >>>>>> values, starting with 1 and incremented by 1 for each entry. = What=E2=80=99s >>>>>> missing compared to lists is to be able to close a container, to = make >>>>>> it finite. Most of your questions can intuitively be answered = from >>>>>> there: >>>>>>=20 >>>>>>> On 1. Jun 2020, at 18:54, Peter F. Patel-Schneider < >>>>>>> [email protected]> wrote: >>>>>>>=20 >>>>>>> I've been looking at the suggestions to set up chains in RDF and = I >>>>>>> have a >>>>>>> number of questions. >>>>>>>=20 >>>>>>> What are chains supposed to be for? >>>>>>=20 >>>>>> See above. >>>>>=20 >>>>> Saying that chains are supposed to have the same semantics as = something >>>>> else doesn't say what chains are for. There are lots of things = that >>>>> chains could be for - OWL DL says that rdf:first/rdf:rest is for = syntax >>>>> that needs a sequence of elements. >>>>>=20 >>>>> You might have said that chains are for syntax, or for some more >>>>> general purpose, perhaps platonic unchangeable simple lists, but >>>>> without a purpose it is hard to determine whether any proposed >>>>> specification is correct or useable or useful. >>>>>=20 >>>>>>> What are the semantics of chains (saying a bit more than >>>>>>> rdf:Collection is not adequate)? >>>>>>=20 >>>>>> See above. >>>>>=20 >>>>> Well, containers don't have significant semantics in RDF beyond = their >>>>> triple semantics, just some informal hand waving that leaves very = many >>>>> questions unanswered. >>>>> See https://www.w3.org/TR/rdf11-mt/#rdf-containers for more on the = lack >>>>> of semantics of containers. >>>>>=20 >>>>>>> Is a chain more than a bunch of triples? >>>>>>=20 >>>>>> Yes, otherwise what would be the point? >>>>>=20 >>>>> OK, what is this extra? >>>>>=20 >>>>>>> What counts as a chain? >>>>>>> Can chains be circular? >>>>>>=20 >>>>>> No. >>>>>>=20 >>>>>>> Can they be infinite? >>>>>>=20 >>>>>> No, that=E2=80=99s the whole point, remember? >>>>>>=20 >>>>>>> Can they share heads? >>>>>>=20 >>>>>> No, there can be only one membership property :_1 >>>>>=20 >>>>> Oops, I meant sharing tails, as in two lists that share a tail. >>>>> Implementing as in RDF containers prevents sharing tails. >>>>>=20 >>>>>>> Can they be multi-tailed? >>>>>>=20 >>>>>> No, there can be only one membership property per integer >>>>>=20 >>>>> This is different, and only shows up if there is a separate tail = aspect >>>>> of chains, which is not compatible with implementing as = containers. >>>>>=20 >>>>>>> Can they have multiple values for one position? >>>>>>=20 >>>>>> Same question as before, isn=E2=80=99t it? >>>>>=20 >>>>> No, but how is this specified or enforced? What happens in an RDF >>>>> graph that contains triples like: >>>>> ex:C a rdfx:Chain . >>>>> ex:C rdf:_1 ex:a . >>>>> ex:C rdf:_1 ex:b . >>>>> ex:C rdfx:last rdf:_1. >>>>> Is this invalid syntax? Does it imply that ex:a and ex:b denote = the >>>>> same individual? >>>>>>=20 >>>>>>> Can chains be elements of chains? >>>>>>=20 >>>>>> Yes, but that is another topic >>>>>=20 >>>>> Determining whether chains can be elements of chains is important, = and >>>>> could be answered either way. >>>>>=20 >>>>>>> Can chains be ungrounded? >>>>>>=20 >>>>>> I don=E2=80=99t understand. >>>>>=20 >>>>> Can a chain be an element of itself, maybe indirectly? If so, the >>>>> chain can be called ungrounded. Is this allowed? >>>>>=20 >>>>>>> Is it possible to have a chain with no elements? >>>>>>=20 >>>>>> No, as there is no :_0 membership property. >>>>>=20 >>>>> That's very limiting. Empty chains (or lists or sets or bags) are >>>>> important. >>>>>=20 >>>>>> Maybe you mean missing list entries? Any list items at list = positions >>>>>> less or equal than the 'last' one that are not listed can be = entailed >>>>>> as being blank nodes. >>>>>=20 >>>>> OK, here is a semantic upgrade from triples, and from containers. = How >>>>> will this meaning be specified? >>>>>=20 >>>>>>=20 >>>>>>> In my view it is a good idea to determine what chains are = supposed >>>>>>> to be >>>>>>> fore and how they are supposed to work before the syntax (and = any >>>>>>> axiomatization) of chains is presented, not least so that it can = be >>>>>>> determined whether the syntax (and axiomatization, if present) >>>>>>> actually >>>>>>> supports what is wanted. >>>>>>=20 >>>>>> I think we did that already and I hope you have a clearer picture >>>>>> now. >>>>>=20 >>>>> There are still questions that need to be answered? For example, = are >>>>> two chains with the same elements the same chain? As you have = stated >>>>> above that there are some semantics beyond just triples, you need = to >>>>> say what these semantics are. >>>>>=20 >>>>>>> Making chains be rdf:Seq plus an explicit stop point appears to >>>>>>> answer some >>>>>>> of these questions, but the implications of this setup should be >>>>>>> spelled out >>>>>>> explicitly. Further not all the questions are answered. >>>>>>=20 >>>>>> Will they ever be? >>>>>=20 >>>>> Yes. You can just say that "This is the meaning of chains." That >>>>> doesn't prohibit others from using chains in situations where more >>>>> meaning is required or suitabe, but it does limit what *the* = meaning of >>>>> chains is. >>>>>=20 >>>>> In essence, you are proposing a new kind of thing, like a set. = How >>>>> does this thing work? >>>>>=20 >>>>>>> For example, what happens if there are two rdf:_<n> values in a >>>>>>> chain for a particular <n>? >>>>>>=20 >>>>>> It is an inconsistency. >>>>>> What happens if it happens to occurr all the same is another = question >>>>>> that we probably can=E2=80=99t answer. >>>>>=20 >>>>> You mean an RDF inconsistency? That seems very harsh. If any = chain in >>>>> an RDF graph has multiple values for any of its elements then the >>>>> entire graph becomes unsatisfiable. >>>>>=20 >>>>>>> (This might be particularly problematic if the two values are = both >>>>>>> container >>>>>>> membership properties.) What happens if there are values for >>>>>>> rdf:_<n> with >>>>>>> n greater than the stop point? >>>>>>=20 >>>>>> It is an inconsistency. >>>>>> What happens if it happens to occurr all the same is another = question >>>>>> that we probably can=E2=80=99t answer. >>>>>>=20 >>>>>>=20 >>>>>>> What happens if there are multiple stop points? (This seems to = be >>>>>>> particularly problematic.) >>>>>>=20 >>>>>> It is an inconsistency. >>>>>> What happens if it happens to occurr all the same is another = question >>>>>> that we probably can=E2=80=99t answer. >>>>>>=20 >>>>>>=20 >>>>>>> What happens if the value of rdfx:last is not one of the >>>>>>> rdf:_<n>? >>>>>>=20 >>>>>> If there is a bigger rdf:_<n> then it is an incosistency, see = above. >>>>>=20 >>>>> So any unusual aspects of a chain render the entire RDF graph >>>>> meaningless. That seems even more harsh. >>>>>=20 >>>>>=20 >>>>>>> What happens if a chain is one of its own elements? >>>>>>=20 >>>>>> The question makes no sense to me. There are infintely many ways = to >>>>>> construct infinitely large or infnitely deep nested structures at = any >>>>>> list item position. Why do you ask for that specific one? Is it = an >>>>>> achievable goal to develop a definition that successfully rules = out >>>>>> all pathological variants? >>>>>=20 >>>>> This is something that is easy to do in RDF and similar patterns = are >>>>> common in RDF graphs. Is the following acceptable as a chain: >>>>> ex:C a rdfx:Chain . >>>>> ex:C rdf:_1 ex:C . >>>>> ex:C rdf:last rdf:_1 . >>>>>=20 >>>>> This is something that can be problematic, depending on what the >>>>> meaning of chains is supposed to be. >>>>>=20 >>>>> Adding a new thing to RDF requires consideration of how it = interacts >>>>> with the rest of RDF, including its "say anything about anything" >>>>> philosophy. >>>>>=20 >>>>>=20 >>>>>>> Are chains complicated because of the infinite vocabulary = required? >>>>>>=20 >>>>>> That would be a question that I would hope you could answer. >>>>>=20 >>>>> This question cannot be answered without a specification of what = chains >>>>> are supposed to be. In some specifications the infinite = vocabulary >>>>> isn't more of a problem than it is in RDF. In others it might me. >>>>>=20 >>>>>>> One way to "specify" chains, of course, is to just say that they >>>>>>> are a set of >>>>>>> triples, and no more. I don't think that this is what is = desired >>>>>>> here, though. >>>>>>=20 >>>>>> I don=E2=80=99t think it is helpful or promising or even possible = to rule out >>>>>> explicitly everything that you don=E2=80=99t think is desired. I = hope however >>>>>> that you have a better idea now of the issue at hand and we can = get >>>>>> to the real business. >>>>>=20 >>>>> I disagree strongly. The specification of chains could be very = weak - >>>>> just triples, for example. That specification is viable, but >>>>> apparently not what you want. Other specifications might add >>>>> entailments, but then the interactions of these entailments with = the >>>>> rest of RDF needs to be investigated. It's very much like adding = a >>>>> new construct to a programming language - its interactions with = the >>>>> other constructs of the language need to be analyzed to see what >>>>> problems come up. Without a firm specification of the construct = it is >>>>> not possible to determine what problems it will create. >>>>>=20 >>>>>> Pat tried his best to teach me that RDF only _describes_, not >>>>>> _prescribes_ things - and lists are just another thing. Now, I = surely >>>>>> need more time to fully wrap my head around that but it seems = that >>>>>> all your questions and all my answers aim at perscribing, not >>>>>> describing. I noticed how the RDF Semantics document dances = around >>>>>> that topic by clarifying that it can=E2=80=99t preclude all sorts = of >>>>>> pathological containers and collections. Therefor I tried to come = up >>>>>> with the least intrusive way to describe an intent about some >>>>>> container, namely that it has ony a certain number of members. >>>>>> Everything else comes from the integer order of the membership >>>>>> properties. That was good enough for the last 20 years so it = should >>>>>> be good for the future too. I can wholeheartedly assure that my >>>>>> honest intent is only to describe that some list of mine is = finite >>>>>> and not prescribe something about anybody elses list. >>>>>>=20 >>>>>> OWL DL makes some remarks what it expects from rdf:Lists, namely: >>>>>> "When a list pattern is matched to G, all list variables _:xi and >>>>>> _:xj with i =E2=89=A0 j MUST be matched to different nodes; = furthermore, it >>>>>> MUST NOT be possible to match the list pattern to two maximal = subsets >>>>>> of G such that some list variable in the first pattern instance = is >>>>>> matched to the same node as some (possibly different) variable in = the >>>>>> second pattern instance. This is necessary in order to detect >>>>>> malformed lists such as lists with internal cycles, lists that = share >>>>>> tails, and lists that cross." >>>>>> = https://www.w3.org/TR/2012/REC-owl2-mapping-to-rdf-20121211/#Mapping_from_= RDF_Graphs_to_the_Structural_Specification >>>>>>=20 >>>>>> This is certainly more concise and complete than what I could = come up >>>>>> with right now but essentially it=E2=80=99s not rocket science = either, it=E2=80=99s >>>>>> plain text. If that=E2=80=99s all that=E2=80=99s needed, then: = yes, I can do that too >>>>>> for rdf:Containers with a 'last' property. And the gist of it can = be >>>>>> found above. >>>>>=20 >>>>> OWL DL only handles some RDF graphs, and is quite explicit on = which RDF >>>>> graphs are not suitable for OWL DL. So OWL DL doesn't have to = handle >>>>> all RDF graphs, which is not the case here. >>>>>=20 >>>>>> I hope all this is enough so that you can now answer the question = if >>>>>> such a 'last' property on rdf:Containers would break anything in = OWL >>>>>> DL, catapult the ontology out of DL or otherwise look fishy and >>>>>> suspicious to you. >>>>>=20 >>>>> Again, as far as OWL DL is concerned, only certain RDF graphs are >>>>> allowable. As far as I can tell, some of these graphs could = contain >>>>> chains. >>>>>=20 >>>>>>=20 >>>>>> Thomas >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>>> peter >>>>>>>=20 >>>>>>>=20 >>>>>>>=20 >>>>>>> On 5/24/20 11:29 AM, thomas l=C3=B6rtsch wrote: >>>>>>>> [Lots of earlier messages and some of this message snipped.] >>>>>>>> I do now understand how the OWA prohibts any explicit closing = of >>>>>>>> a list in RDF, how RDF is all about _describing_ things, how = only >>>>>>>> single triples can be a bearer of truth, how RDF terms = themselves >>>>>>>> are not to be messed with and how the whole endeavour of formal >>>>>>>> semantics under an OWA is walking a very thin line between what >>>>>>>> may be inferred and what cannot be ruled out. Maybe. [0] >>>>>>>> However I also lost practically all faith in the formal = semantics >>>>>>>> of Collections and Containers alike. If not even the simplest >>>>>>>> syntactic constraints - only one head, no branching - can be >>>>>>>> enforced then why bother at all with the semantics of a length >>>>>>>> attribute? >>>>>>>>=20 >>>>>>>> Why even consider an arithmetic extension? Not withstanding its >>>>>>>> usefulness in other contexts I=E2=80=99m not convinced that = some >>>>>>>> arithmetic extension can ground the semantics of an >>>>>>>> rdfx:hasLength property when the rdf:Container it describes has >>>>>>>> so little formal standing to build on. >>>>>>>>=20 >>>>>>>> One could make rdfx:hasLength an owl:AnnotationProperty so its >>>>>>>> semantics would definitely be reduced to handwaving, providing = a >>>>>>>> hint to applications if some list probably is complete. Closing = a >>>>>>>> list was deemed useful before but it was implemented with a >>>>>>>> verbose syntax and in OWL DL it's off limits for users. Lists = are >>>>>>>> so important in practice that IMO that=E2=80=99s reason enough = to >>>>>>>> introduce something along those lines, even with _very_ limited >>>>>>>> formal semantics. >>>>>>>>=20 >>>>>>>> I was also pondering the graph based approach that Cory = proposed >>>>>>>> but for a basic construct like lists (and trees and tables that >>>>>>>> can easily be built from it) it seems a waste. Graphs should be >>>>>>>> used for all kinds of stuff, even for structural features like = n- >>>>>>>> ary relations, but lists - rather not. At least that=E2=80=99s = my current >>>>>>>> thinking. >>>>>>>> I think it can be useful in a bigger context like being able to >>>>>>>> express that in some application/source/universeOfDiscourse all >>>>>>>> lists are closed. But I=E2=80=99d rather embed that in a = semantic >>>>>>>> extension that fixes a few more things and formally defines a >>>>>>>> Closed World Scenarios that applications often assume and >>>>>>>> require. >>>>>>>>=20 >>>>>>>> Pat has in earlier mails suggested to mark the last item of a >>>>>>>> list instead of providing a length attribute. That didn=E2=80=99t= really >>>>>>>> catch on with me because I lacked an idea how to do it. = Meanwhile >>>>>>>> the following vocabulary extension bubbled up in my head: >>>>>>>>=20 >>>>>>>> rdfx:Chain rdfs:subClassOf rdfs:Container . >>>>>>>> rdfx:last rdfs:domain rdfx:Chain . >>>>>>>> rdfx:last rdfs:range rdfs:ContainerMembershipProperty . >>>>>>>>=20 >>>>>>>> _:L rdf:_1 "a" . >>>>>>>> _:L rdf:_2 "b" . >>>>>>>> _:L rdf:_3 "c" . >>>>>>>> _:L rdfx:last rdf:_3 . >>>>>>>>=20 >>>>>>>> I sort of like it but I=E2=80=99m not convinced that it's = really more >>>>>>>> elegant. >>>>>>>> Fundamentally it doesn=E2=80=99t seem to make much difference: >>>>>>>> - Containers still provide only a semantically weak base >>>>>>>> - a missing 2nd slot would still need to be filled >>>>>>>> - a surplus 4th slot would still need to be ignored >>>>>>>>=20 >>>>>>>> And maybe the counting business on = ContainermembershipProperties >>>>>>>> would still require an arithmetic extension? Which would still >>>>>>>> not be worth the trouble because it would only stand on >>>>>>>> Collections=E2=80=99 shifting semantic sands? >>>>>>>>=20 >>>>>>>>=20 >>>>>>>> BTW: I don=E2=80=99t like the name "Chain". I would prefer = "Series" but >>>>>>>> I=E2=80=99m not a native speaker and not sure if it captures = the intended >>>>>>>> purpose well enough. Also "Seq" and "Ser" are easy to confuse >>>>>>>> (but "Ser" gets filed one after "Seq", so that=E2=80=99s = good!). "Fin de >>>>>>>> Seq" would of course be even nicer. >>>>>>>>=20 >>>>>>>>=20 >>>>>>>> Thomas >>>>>>>>=20 >>>>>>>>=20 >>>>>>>> [0] And that the RDF Semantics at = https://www.w3.org/TR/rdf11-mt/ >>>>>>>> use the term "intent" although I got ridiculed for introducing >>>>>>>> it a few mails ago: "The intended mode of use is that things of >>>>>>>> type rdf:Bag are considered to be=E2=80=A6 " etc. Ha! >>>>>>>>=20 >>>>>>> [Lots of previous messages snipped.] >>>>=20 >>>=20 >>=20 >=20 --Apple-Mail=_0868A35F-3DDB-4295-85B9-E4E6180426B9 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEErH3iu3JH91ghipX+B3pOudHwOeQFAl7hWF8ACgkQB3pOudHw OeSLOBAAo5khqbdJcpLG3hO6mUb880bph0kWkIPLQuanvMJp4Y248VnVw5/G4m36 GAKb0yvISLD6Ib7buWvLsDjJJtYtcaAef/nfWDmoUUT5/4/Dy/gySTMfmJQu7wJ9 7Fn9la911P6mFJyGbV11h10bXtabI76BC+u7BMbIXF65sxvGrg2l+8KNIbaFpa6n Yzey0peLuyTz87ldDrN4u2rWFtz4IZ6igEvxgsAmQkJxaCA0WwZ0K17EGhAfAUwi 4TB20FGcMe76UuwGpv4IP9BsfzV4XGcnbQCsBhSCLrPBi3opHjcBNL1lAUgwIuB2 UQHxN2Y8wl2DVbXyZ81eFXMhBdGLrdh+DdZUlgO25cEpLswFltf3lkxO84VTyMUe BUEwFKunweC0D7J7IrORx5QtTR7lTlYDMXo6s7k58FhW8Rfwz9BpmiBiE/Nza4k+ a+32E4K1m0uzu4srYqXv1Anw1Yh/8+H2xPdvB8dbraSn4QN5LJJXm9nk7tKYc3Fs ZKWH8qJaAe16I0kV/EcP9HOjOnMWyhk9HXDor9Br7srMr65qmaCHQNG5CIYNARKv XGNsRWgDzw3yDVKjReJ7za7Iy5o0MgTeUBDvwhyATgL2w+ifgo9lO7rBBL8A5hY9 snSS4FVBHWPDoLfo0NHT1soEv+69lqK0t4OIv0SmHZj1dbFMDIQ= =ok5p -----END PGP SIGNATURE----- --Apple-Mail=_0868A35F-3DDB-4295-85B9-E4E6180426B9--