Sunday, December 14, 2014

Monthly Update for December (in response to the Open Apps Ecosystem monthly updates)

Over the past several months I have been wire framing EISPP, or Enterprise Information System for Peer Production. By Enterprise Information System (http://en.wikipedia.org/wiki/Enterprise_information_system) I mean a way to handle large amounts of information for business. By using the term Peer Production (http://en.wikipedia.org/wiki/Peer_production), I am describing the structure of the enterprise. I do believe that the system could be flexible enough to handle any form of enterprise, so it could be a more generic enterprise system.


The entry point may be in a browser, or in some other form that uses HTTP.  I imagine this entry point to look like this:



This entry point does not represent the entire enterprise information system, but is merely a portal to it. It is a portal to the underlying data which would exist in a federated global database. There could be many of these portals both viewing data, and performing transformations on it. Indeed, the portal pictured above may not be the only type of portal.
  
One entry point, perhaps the most user friendly, would be the natural language query. If I searched, for example, for “Car Projects with Brent Shambaugh” I would get a set of documents containing Car Projects and Brent Shambaugh, a document with the term automobile that is semantically related to car, and a document describing what I contributed to (a wheel). I would also get ontology instances, the ontologies that they used, and through following specified linked data links I could get 1st degree linked data. Since some of these triples have common subjects or objects they can form an interconnected graph. The subjects and objects are nodes, while the connections between them are predicates.

 
This would be possible by searching an ontology index, a document index, and an annotations index linking the ontologies (including triples with instances of them) with the documents. This method came from Miriam Fernandez's Thesis titled, “Semantically enhanced Information Retrieval: an ontology based approach” (http://nets.ii.uam.es/miriam/thesis.pdf). Also a SPARQL query (http://www.w3.org/TR/sparql11-overview/) or linked data browser (http://www.w3.org/wiki/TaskForces/CommunityProjects/LinkingOpenData/SemWebClients) could help find 1st degree linked data (check this).
 
There may come a point where I wish to search amongst the data that was returned through the natural language query in such a way that I follow the same semantic relations. I could do this by using Enrico Franconi et al.'s method presented in “An intelligent query interface based on ontology navigation ” (http://ceur-ws.org/Vol-565/paper3.pdf). At the beginning the query (excluding natural language equivalents) would involve the parent class Thing, as shown below:

 
Completing the query with the graph pattern “Car hasPart Reflector” would give: (cover GSS button)

 
 
Completing this query would give: (update ontology instances on right side)

What if I wanted to prune triples from the resulting query? I can illustrate this on the original query “Car Projects with Brent Shambaugh”. If I elimate all triples with predicates rdf:type with fresnel lenses (http://www.w3.org/2005/04/fresnel-info/) I obtain: (eliminate triples from ontology instances and 1st degree linked data)


  I can enhance my view by applying color coding triples with graph style sheets

I can also add triples to the graph likely using the web widgets library developed by Hollenbach et al.

An alternative way to view query results could be Dov Dori's Object Process Methodology which gives natural language equivalents for triples in the graph:


Notice that if I select the wheel of the car I see the corresponding ontology that it is from in the right hand pane (alternatively, this I might try instances from the ontology that are currently in use):

 
 
 The previous highlighting is not native to OPM. Adding the git for triples (R&WBase) (http://ceur-ws.org/Vol-996/papers/ldow2013-paper-01.pdf)
view plus a fresnel and GSS gives:

  
I can also show the case of two different contributors to the same wheel:

 
I also may want to show the case where an external agent compensates another agent for a contribution to illustrate McCarthy's Resource Event Agent Methodology (https://www.msu.edu/user/mccarth4/McCarthy.pdf) (although I am not sure if it is correct OPM form to put an arrow link between the the paid and contribute processes):



I also may show what seems to be behind this transaction occuring over the ripple network with its metadata being expressed as linked data in the PaySwarm (https://web-payments.org/) form:

 Note that the licence URIs may need to be expressed with ODRL (

I could also show another contribution to the car, such as a motor, using the REA methodology:


 
Applications are kind of tricky. There needs to be a way to go from whatever things are called in the displayed graph to whatever they are called in the database of the application, say FreeCAD. Part 2 of ISO 15926 provides a reference data library to map to and from a database. Below is a generic form of figure 1.12 on page 34 of “Introduction to ISO15926” (https://www.posccaesar.org/wiki/ISO15926Primer).

But we also need a way to relate things by different names. Perhaps this is where part 2 of ISO 15926 comes in. It is an upper ontology called EXPRESS.

I also may want to attach conversations to particular projects. I might do this using rww.io and cimba.co (https://github.com/deiu/rww.io , https://github.com/linkeddata/cimba ). RWW.io may be used with cimba and data is stored as RDF which I'm guessing could reference to triples in the projects.

What to do for next month? In addition to the doubts above (e.g. parenthesis after colons), editing slides for OPM will need to be completed. Here is starting out using entities, and structural and procedural links from OPM.



VRM slides will also need to be expanded. VRM follows VRM principles (http://cyber.law.harvard.edu/projectvrm/Main_Page).

 Also P2P Computing in the architecture section, Internet of Things (I.O.T.), faceted browsing (see Simile Longwell), triple storage (such most used locally for faster querying), and loading data will need to be explored.

What is holding me up? To an extent other things, but also how fast I can think.

What motivates me most in this time? The prospect that doing this will open up new ways of doing things that will be affordable (which will hopefully lead to diverse projects in diverse fields).







Thursday, November 13, 2014

Uniquely identifying a project (in a distributed way)

I thought about using the description of a project vocabulary . It is for software, so I might need to modify it for hardware.

It is described in the Linked Open Vocabularies site hosted by the Open Knowledge Foundation, and is created by  Edd Dumbill


The particular link is: http://lov.okfn.org/dataset/lov/details/vocabulary_doap.html

I also found the Software Discovery Index which uses unique identifiers for software projects. I might want to check this out more. The particular link is:
http://softwarediscoveryindex.org/



Thursday, November 6, 2014

An offer: N-Quads above and a directed graph (guess) below


<http://example.org/articles/#offer> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://json-ld.org/playground/Offer> .
<http://example.org/articles/#offer> <https://w3id.org/commerce#payee> <http://example.org/outsiders/foaf.rdf#me> .
<http://example.org/articles/#offer> <https://w3id.org/commerce#payeeRule> _:b0 .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#asset> <http://www.example.org/car_partOf.owl#Wheel_Of_Car> .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#assetHash> "urn:sha256:02817609f8ffb72502e002defe7a426f8d433802f866ac88fc93c318b9130840" .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#license> <http://www.tapr.org/TAPR_Open_Hardware_License_v1.0.txt> .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#licenseHash> "0d8866836917f8ef58af44accb6efab9a10610ad" .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#validFrom> "2014-02-02T03:51:08Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
<http://example.org/articles/#offer> <https://w3id.org/security#signature> _:b1 .
<http://example.org/outsiders/foaf.rdf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/commerce#Payee> .
<http://example.org/outsiders/foaf.rdf#me> <http://www.w3.org/2000/01/rdf-schema#comment> "Payment for Wheel of Car through Ripple Network." .
<http://example.org/outsiders/foaf.rdf#me> <https://w3id.org/commerce#currency> <https://w3id.org/currencies/USD> .
<http://example.org/outsiders/foaf.rdf#me> <https://w3id.org/commerce#destination> <http://bshambaugh.org/foaf.rdf#me> .
<http://example.org/outsiders/foaf.rdf#me> <https://w3id.org/commerce#rate> "120.00" .
<http://example.org/outsiders/foaf.rdf#me> <https://w3id.org/commerce#rateType> "FlatAmount" .
_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/commerce#PayeeRule> .
_:b0 <https://w3id.org/commerce#destinationOwnerType> "payment processor" .
_:b0 <https://w3id.org/commerce#maximumRate> "10" .
_:b0 <https://w3id.org/commerce#rateType> "com:InclusivePercentage" .
_:b1 <http://purl.org/dc/terms/created> "2014-02-02T03:51:08Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
_:b1 <http://purl.org/dc/terms/creator> <https://dev.payswarm.com/i/brentshambaugh/keys/1> .
_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/security#GraphSignature2012> .
_:b1 <https://w3id.org/security#signatureValue> "fYb/QH0Ot3NALFtCsRxZR0rCAu76FUKjFwfWzD+PXYj/QtjC8Bcf+0eSlpo/89w/eZbuCqQ5O5SgTHyrhwGUgLFRlwsZYWwG7dgqXBlSh/zIAOf3PQ2IXyvGEQypIwggaJoBUmvRRoE1pJcBdVGXnINu3hTevUJisomPEDV37fi77EV+yihT+FRoQ9si/gXG7PQxD/8PnJ6a+N6Ix9jknRgF1q4xRf9mlBERW8fdP2GbPa2sHcrev4QD1fEUPjBonN+UxM0FEMM9rc7+PkiFribNStrV6F3s66MBF6m7zjkvRqXDuAdL3P2gQpOat9/P5iVmK6loHIHgZPePFoFf/A==" .


Publishing an Offer from the (Web Commerce 1.0 Spec) - rev. 1

With the http://json-ld.org/playground/index.html here is some updated syntax:
(Input)

{
  "@context": "https://w3id.org/payswarm/v1",
  "id": "http://example.org/articles/#offer",
  "type": "Offer",
  "payee": [{
    "id": "http://example.org/outsiders/foaf.rdf#me",
    "type": "Payee",
    "currency": "USD",
    "destination": "http://bshambaugh.org/foaf.rdf#me",
    "com:rate": "120.00",
    "com:rateType": "FlatAmount",
    "comment": "Payment for Wheel of Car through Ripple Network."
  }],
  "payeeRule": [{
    "type": "PayeeRule",
    "com:destinationOwnerType": "payment processor",
    "com:maximumRate": "10",
    "com:rateType": "com:InclusivePercentage"
  }],
  "asset": "http://www.example.org/car_partOf.owl#Wheel_Of_Car",
  "assetHash": "urn:sha256:02817609f8ffb72502e002defe7a426f8d433802f866ac88fc93c318b9130840",
  "license": "http://www.tapr.org/TAPR_Open_Hardware_License_v1.0.txt",
  "licenseHash": "0d8866836917f8ef58af44accb6efab9a10610ad",
  "validFrom": "2014-02-02T03:51:08Z",
  "signature": {
    "type": "GraphSignature2012",
    "created": "2014-02-02T03:51:08Z",
    "creator": "https://dev.payswarm.com/i/brentshambaugh/keys/1",
    "signatureValue": "fYb/QH0Ot3NALFtCsRxZR0rCAu76FUKjFwfWzD+PXYj/QtjC8Bcf+0eSlpo/89w/eZbuCqQ5O5SgTHyrhwGUgLFRlwsZYWwG7dgqXBlSh/zIAOf3PQ2IXyvGEQypIwggaJoBUmvRRoE1pJcBdVGXnINu3hTevUJisomPEDV37fi77EV+yihT+FRoQ9si/gXG7PQxD/8PnJ6a+N6Ix9jknRgF1q4xRf9mlBERW8fdP2GbPa2sHcrev4QD1fEUPjBonN+UxM0FEMM9rc7+PkiFribNStrV6F3s66MBF6m7zjkvRqXDuAdL3P2gQpOat9/P5iVmK6loHIHgZPePFoFf/A=="
 
  }
}

(Output - Normalized)

<http://example.org/articles/#offer> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://json-ld.org/playground/Offer> .
<http://example.org/articles/#offer> <https://w3id.org/commerce#payee> <http://example.org/outsiders/foaf.rdf#me> .
<http://example.org/articles/#offer> <https://w3id.org/commerce#payeeRule> _:c14n0 .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#asset> <http://www.example.org/car_partOf.owl#Wheel_Of_Car> .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#assetHash> "urn:sha256:02817609f8ffb72502e002defe7a426f8d433802f866ac88fc93c318b9130840" .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#license> <http://www.tapr.org/TAPR_Open_Hardware_License_v1.0.txt> .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#licenseHash> "0d8866836917f8ef58af44accb6efab9a10610ad" .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#validFrom> "2014-02-02T03:51:08Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
<http://example.org/articles/#offer> <https://w3id.org/security#signature> _:c14n1 .
<http://example.org/outsiders/foaf.rdf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/commerce#Payee> .
<http://example.org/outsiders/foaf.rdf#me> <http://www.w3.org/2000/01/rdf-schema#comment> "Payment for Wheel of Car through Ripple Network." .
<http://example.org/outsiders/foaf.rdf#me> <https://w3id.org/commerce#currency> <https://w3id.org/currencies/USD> .
<http://example.org/outsiders/foaf.rdf#me> <https://w3id.org/commerce#destination> <http://bshambaugh.org/foaf.rdf#me> .
<http://example.org/outsiders/foaf.rdf#me> <https://w3id.org/commerce#rate> "120.00" .
<http://example.org/outsiders/foaf.rdf#me> <https://w3id.org/commerce#rateType> "FlatAmount" .
_:c14n0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/commerce#PayeeRule> .
_:c14n0 <https://w3id.org/commerce#destinationOwnerType> "payment processor" .
_:c14n0 <https://w3id.org/commerce#maximumRate> "10" .
_:c14n0 <https://w3id.org/commerce#rateType> "com:InclusivePercentage" .
_:c14n1 <http://purl.org/dc/terms/created> "2014-02-02T03:51:08Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
_:c14n1 <http://purl.org/dc/terms/creator> <https://dev.payswarm.com/i/brentshambaugh/keys/1> .
_:c14n1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/security#GraphSignature2012> .
_:c14n1 <https://w3id.org/security#signatureValue> "fYb/QH0Ot3NALFtCsRxZR0rCAu76FUKjFwfWzD+PXYj/QtjC8Bcf+0eSlpo/89w/eZbuCqQ5O5SgTHyrhwGUgLFRlwsZYWwG7dgqXBlSh/zIAOf3PQ2IXyvGEQypIwggaJoBUmvRRoE1pJcBdVGXnINu3hTevUJisomPEDV37fi77EV+yihT+FRoQ9si/gXG7PQxD/8PnJ6a+N6Ix9jknRgF1q4xRf9mlBERW8fdP2GbPa2sHcrev4QD1fEUPjBonN+UxM0FEMM9rc7+PkiFribNStrV6F3s66MBF6m7zjkvRqXDuAdL3P2gQpOat9/P5iVmK6loHIHgZPePFoFf/A==" .

(Output- N Quads)

<http://example.org/articles/#offer> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://json-ld.org/playground/Offer> .
<http://example.org/articles/#offer> <https://w3id.org/commerce#payee> <http://example.org/outsiders/foaf.rdf#me> .
<http://example.org/articles/#offer> <https://w3id.org/commerce#payeeRule> _:b0 .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#asset> <http://www.example.org/car_partOf.owl#Wheel_Of_Car> .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#assetHash> "urn:sha256:02817609f8ffb72502e002defe7a426f8d433802f866ac88fc93c318b9130840" .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#license> <http://www.tapr.org/TAPR_Open_Hardware_License_v1.0.txt> .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#licenseHash> "0d8866836917f8ef58af44accb6efab9a10610ad" .
<http://example.org/articles/#offer> <https://w3id.org/payswarm#validFrom> "2014-02-02T03:51:08Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
<http://example.org/articles/#offer> <https://w3id.org/security#signature> _:b1 .
<http://example.org/outsiders/foaf.rdf#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/commerce#Payee> .
<http://example.org/outsiders/foaf.rdf#me> <http://www.w3.org/2000/01/rdf-schema#comment> "Payment for Wheel of Car through Ripple Network." .
<http://example.org/outsiders/foaf.rdf#me> <https://w3id.org/commerce#currency> <https://w3id.org/currencies/USD> .
<http://example.org/outsiders/foaf.rdf#me> <https://w3id.org/commerce#destination> <http://bshambaugh.org/foaf.rdf#me> .
<http://example.org/outsiders/foaf.rdf#me> <https://w3id.org/commerce#rate> "120.00" .
<http://example.org/outsiders/foaf.rdf#me> <https://w3id.org/commerce#rateType> "FlatAmount" .
_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/commerce#PayeeRule> .
_:b0 <https://w3id.org/commerce#destinationOwnerType> "payment processor" .
_:b0 <https://w3id.org/commerce#maximumRate> "10" .
_:b0 <https://w3id.org/commerce#rateType> "com:InclusivePercentage" .
_:b1 <http://purl.org/dc/terms/created> "2014-02-02T03:51:08Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
_:b1 <http://purl.org/dc/terms/creator> <https://dev.payswarm.com/i/brentshambaugh/keys/1> .
_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/security#GraphSignature2012> .
_:b1 <https://w3id.org/security#signatureValue> "fYb/QH0Ot3NALFtCsRxZR0rCAu76FUKjFwfWzD+PXYj/QtjC8Bcf+0eSlpo/89w/eZbuCqQ5O5SgTHyrhwGUgLFRlwsZYWwG7dgqXBlSh/zIAOf3PQ2IXyvGEQypIwggaJoBUmvRRoE1pJcBdVGXnINu3hTevUJisomPEDV37fi77EV+yihT+FRoQ9si/gXG7PQxD/8PnJ6a+N6Ix9jknRgF1q4xRf9mlBERW8fdP2GbPa2sHcrev4QD1fEUPjBonN+UxM0FEMM9rc7+PkiFribNStrV6F3s66MBF6m7zjkvRqXDuAdL3P2gQpOat9/P5iVmK6loHIHgZPePFoFf/A==" .

Tuesday, November 4, 2014

Publishing an Offer from the (Web Commerce 1.0 Spec)

 I went to https://web-payments.org/specs/source/web-commerce/
and looked at Example 4 in section 4.3. I changed @context namespace from http://w3id.org/payments/v1 to  https://w3id.org/payswarm/v1 as the first namespace did not resolve in the browser. By observing the payswarm-v1.jsonld file at https://web-payments.org/contexts/payswarm-v1.jsonld (deduced from https://github.com/perma-id/w3id.org/tree/master/webpayments) and https://web-payments.org/vocabs/commerce I was able to make the following conclusions:

{
  "@context": "https://w3id.org/payswarm/v1",
  "id": "http://www.example.org/car_partOf.owl#",
  "type": "Offer",
  "payee": [
    "id": "http://example.org/outsiders/foaf.rdf#me",
    "type": "Payee",
    "currency": "USD",
    "destination": "http://bshambaugh.org/foaf.rdf#me",
    "com:rate": "120.00",
    "com:rateType": "FlatAmount",
    "comment": "Payment for Wheel of Car through Ripple Network."
  }],
  "payeeRule": [{
    "type": "PayeeRule",
    "com:destinationOwnerType": "payment processor",
    "com:maximumRate": "10",
    "com:rateType": "com:InclusivePercentage"
  }],
  "asset": "http://www.example.org/car_partOf.owl#",
  "assetHash": "urn:sha256:02817609f8ffb72502e002defe7a426f8d433802f866ac88fc93c318b9130840",
  "license": "http://www.tapr.org/TAPR_Open_Hardware_License_v1.0.txt",
  "licenseHash": "0d8866836917f8ef58af44accb6efab9a10610ad",
  "validFrom": "2014-02-02T03:51:08Z",
  "signature": {
    "type": "GraphSignature2012",
    "created": "2014-02-02T03:51:08Z",
    "creator": "https://dev.payswarm.com/i/brentshambaugh/keys/1",
    "signatureValue": "fYb/QH0Ot3NALFtCsRxZR0rCAu76FUKjFwfWzD+PXYj/QtjC8Bcf+0eSlpo/89w/eZbuCqQ5O5SgTHyrhwGUgLFRlwsZYWwG7dgqXBlSh/zIAOf3PQ2IXyvGEQypIwggaJoBUmvRRoE1pJcBdVGXnINu3hTevUJisomPEDV37fi77EV+yihT+FRoQ9si/gXG7PQxD/8PnJ6a+N6Ix9jknRgF1q4xRf9mlBERW8fdP2GbPa2sHcrev4QD1fEUPjBonN+UxM0FEMM9rc7+PkiFribNStrV6F3s66MBF6m7zjkvRqXDuAdL3P2gQpOat9/P5iVmK6loHIHgZPePFoFf/A=="
 
The assetHash, licenseHash, signatureValue, and created are taken from an earlier blog post. I could not get my payswarm client to work as the npm package ursa (or something that I do not know about) was causing trouble.